Remove null_block_symbol
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2019 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "common/vec.h"
53 #include "stack.h"
54 #include "common/gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66
67 /* Define whether or not the C operator '/' truncates towards zero for
68    differently signed operands (truncation direction is undefined in C).
69    Copied from valarith.c.  */
70
71 #ifndef TRUNCATION_TOWARDS_ZERO
72 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
73 #endif
74
75 static struct type *desc_base_type (struct type *);
76
77 static struct type *desc_bounds_type (struct type *);
78
79 static struct value *desc_bounds (struct value *);
80
81 static int fat_pntr_bounds_bitpos (struct type *);
82
83 static int fat_pntr_bounds_bitsize (struct type *);
84
85 static struct type *desc_data_target_type (struct type *);
86
87 static struct value *desc_data (struct value *);
88
89 static int fat_pntr_data_bitpos (struct type *);
90
91 static int fat_pntr_data_bitsize (struct type *);
92
93 static struct value *desc_one_bound (struct value *, int, int);
94
95 static int desc_bound_bitpos (struct type *, int, int);
96
97 static int desc_bound_bitsize (struct type *, int, int);
98
99 static struct type *desc_index_type (struct type *, int);
100
101 static int desc_arity (struct type *);
102
103 static int ada_type_match (struct type *, struct type *, int);
104
105 static int ada_args_match (struct symbol *, struct value **, int);
106
107 static struct value *make_array_descriptor (struct type *, struct value *);
108
109 static void ada_add_block_symbols (struct obstack *,
110                                    const struct block *,
111                                    const lookup_name_info &lookup_name,
112                                    domain_enum, struct objfile *);
113
114 static void ada_add_all_symbols (struct obstack *, const struct block *,
115                                  const lookup_name_info &lookup_name,
116                                  domain_enum, int, int *);
117
118 static int is_nonfunction (struct block_symbol *, int);
119
120 static void add_defn_to_vec (struct obstack *, struct symbol *,
121                              const struct block *);
122
123 static int num_defns_collected (struct obstack *);
124
125 static struct block_symbol *defns_collected (struct obstack *, int);
126
127 static struct value *resolve_subexp (expression_up *, int *, int,
128                                      struct type *);
129
130 static void replace_operator_with_call (expression_up *, int, int, int,
131                                         struct symbol *, const struct block *);
132
133 static int possible_user_operator_p (enum exp_opcode, struct value **);
134
135 static const char *ada_op_name (enum exp_opcode);
136
137 static const char *ada_decoded_op_name (enum exp_opcode);
138
139 static int numeric_type_p (struct type *);
140
141 static int integer_type_p (struct type *);
142
143 static int scalar_type_p (struct type *);
144
145 static int discrete_type_p (struct type *);
146
147 static enum ada_renaming_category parse_old_style_renaming (struct type *,
148                                                             const char **,
149                                                             int *,
150                                                             const char **);
151
152 static struct symbol *find_old_style_renaming_symbol (const char *,
153                                                       const struct block *);
154
155 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
156                                                 int, int);
157
158 static struct value *evaluate_subexp_type (struct expression *, int *);
159
160 static struct type *ada_find_parallel_type_with_name (struct type *,
161                                                       const char *);
162
163 static int is_dynamic_field (struct type *, int);
164
165 static struct type *to_fixed_variant_branch_type (struct type *,
166                                                   const gdb_byte *,
167                                                   CORE_ADDR, struct value *);
168
169 static struct type *to_fixed_array_type (struct type *, struct value *, int);
170
171 static struct type *to_fixed_range_type (struct type *, struct value *);
172
173 static struct type *to_static_fixed_type (struct type *);
174 static struct type *static_unwrap_type (struct type *type);
175
176 static struct value *unwrap_value (struct value *);
177
178 static struct type *constrained_packed_array_type (struct type *, long *);
179
180 static struct type *decode_constrained_packed_array_type (struct type *);
181
182 static long decode_packed_array_bitsize (struct type *);
183
184 static struct value *decode_constrained_packed_array (struct value *);
185
186 static int ada_is_packed_array_type  (struct type *);
187
188 static int ada_is_unconstrained_packed_array_type (struct type *);
189
190 static struct value *value_subscript_packed (struct value *, int,
191                                              struct value **);
192
193 static struct value *coerce_unspec_val_to_type (struct value *,
194                                                 struct type *);
195
196 static int lesseq_defined_than (struct symbol *, struct symbol *);
197
198 static int equiv_types (struct type *, struct type *);
199
200 static int is_name_suffix (const char *);
201
202 static int advance_wild_match (const char **, const char *, int);
203
204 static bool wild_match (const char *name, const char *patn);
205
206 static struct value *ada_coerce_ref (struct value *);
207
208 static LONGEST pos_atr (struct value *);
209
210 static struct value *value_pos_atr (struct type *, struct value *);
211
212 static struct value *value_val_atr (struct type *, struct value *);
213
214 static struct symbol *standard_lookup (const char *, const struct block *,
215                                        domain_enum);
216
217 static struct value *ada_search_struct_field (const char *, struct value *, int,
218                                               struct type *);
219
220 static struct value *ada_value_primitive_field (struct value *, int, int,
221                                                 struct type *);
222
223 static int find_struct_field (const char *, struct type *, int,
224                               struct type **, int *, int *, int *, int *);
225
226 static int ada_resolve_function (struct block_symbol *, int,
227                                  struct value **, int, const char *,
228                                  struct type *);
229
230 static int ada_is_direct_array_type (struct type *);
231
232 static void ada_language_arch_info (struct gdbarch *,
233                                     struct language_arch_info *);
234
235 static struct value *ada_index_struct_field (int, struct value *, int,
236                                              struct type *);
237
238 static struct value *assign_aggregate (struct value *, struct value *, 
239                                        struct expression *,
240                                        int *, enum noside);
241
242 static void aggregate_assign_from_choices (struct value *, struct value *, 
243                                            struct expression *,
244                                            int *, LONGEST *, int *,
245                                            int, LONGEST, LONGEST);
246
247 static void aggregate_assign_positional (struct value *, struct value *,
248                                          struct expression *,
249                                          int *, LONGEST *, int *, int,
250                                          LONGEST, LONGEST);
251
252
253 static void aggregate_assign_others (struct value *, struct value *,
254                                      struct expression *,
255                                      int *, LONGEST *, int, LONGEST, LONGEST);
256
257
258 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
259
260
261 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
262                                           int *, enum noside);
263
264 static void ada_forward_operator_length (struct expression *, int, int *,
265                                          int *);
266
267 static struct type *ada_find_any_type (const char *name);
268
269 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
270   (const lookup_name_info &lookup_name);
271
272 \f
273
274 /* The result of a symbol lookup to be stored in our symbol cache.  */
275
276 struct cache_entry
277 {
278   /* The name used to perform the lookup.  */
279   const char *name;
280   /* The namespace used during the lookup.  */
281   domain_enum domain;
282   /* The symbol returned by the lookup, or NULL if no matching symbol
283      was found.  */
284   struct symbol *sym;
285   /* The block where the symbol was found, or NULL if no matching
286      symbol was found.  */
287   const struct block *block;
288   /* A pointer to the next entry with the same hash.  */
289   struct cache_entry *next;
290 };
291
292 /* The Ada symbol cache, used to store the result of Ada-mode symbol
293    lookups in the course of executing the user's commands.
294
295    The cache is implemented using a simple, fixed-sized hash.
296    The size is fixed on the grounds that there are not likely to be
297    all that many symbols looked up during any given session, regardless
298    of the size of the symbol table.  If we decide to go to a resizable
299    table, let's just use the stuff from libiberty instead.  */
300
301 #define HASH_SIZE 1009
302
303 struct ada_symbol_cache
304 {
305   /* An obstack used to store the entries in our cache.  */
306   struct obstack cache_space;
307
308   /* The root of the hash table used to implement our symbol cache.  */
309   struct cache_entry *root[HASH_SIZE];
310 };
311
312 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
313
314 /* Maximum-sized dynamic type.  */
315 static unsigned int varsize_limit;
316
317 static const char ada_completer_word_break_characters[] =
318 #ifdef VMS
319   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
320 #else
321   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
322 #endif
323
324 /* The name of the symbol to use to get the name of the main subprogram.  */
325 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
326   = "__gnat_ada_main_program_name";
327
328 /* Limit on the number of warnings to raise per expression evaluation.  */
329 static int warning_limit = 2;
330
331 /* Number of warning messages issued; reset to 0 by cleanups after
332    expression evaluation.  */
333 static int warnings_issued = 0;
334
335 static const char *known_runtime_file_name_patterns[] = {
336   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
337 };
338
339 static const char *known_auxiliary_function_name_patterns[] = {
340   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
341 };
342
343 /* Maintenance-related settings for this module.  */
344
345 static struct cmd_list_element *maint_set_ada_cmdlist;
346 static struct cmd_list_element *maint_show_ada_cmdlist;
347
348 /* Implement the "maintenance set ada" (prefix) command.  */
349
350 static void
351 maint_set_ada_cmd (const char *args, int from_tty)
352 {
353   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
354              gdb_stdout);
355 }
356
357 /* Implement the "maintenance show ada" (prefix) command.  */
358
359 static void
360 maint_show_ada_cmd (const char *args, int from_tty)
361 {
362   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
363 }
364
365 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
366
367 static int ada_ignore_descriptive_types_p = 0;
368
369                         /* Inferior-specific data.  */
370
371 /* Per-inferior data for this module.  */
372
373 struct ada_inferior_data
374 {
375   /* The ada__tags__type_specific_data type, which is used when decoding
376      tagged types.  With older versions of GNAT, this type was directly
377      accessible through a component ("tsd") in the object tag.  But this
378      is no longer the case, so we cache it for each inferior.  */
379   struct type *tsd_type;
380
381   /* The exception_support_info data.  This data is used to determine
382      how to implement support for Ada exception catchpoints in a given
383      inferior.  */
384   const struct exception_support_info *exception_info;
385 };
386
387 /* Our key to this module's inferior data.  */
388 static const struct inferior_data *ada_inferior_data;
389
390 /* A cleanup routine for our inferior data.  */
391 static void
392 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
393 {
394   struct ada_inferior_data *data;
395
396   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
397   if (data != NULL)
398     xfree (data);
399 }
400
401 /* Return our inferior data for the given inferior (INF).
402
403    This function always returns a valid pointer to an allocated
404    ada_inferior_data structure.  If INF's inferior data has not
405    been previously set, this functions creates a new one with all
406    fields set to zero, sets INF's inferior to it, and then returns
407    a pointer to that newly allocated ada_inferior_data.  */
408
409 static struct ada_inferior_data *
410 get_ada_inferior_data (struct inferior *inf)
411 {
412   struct ada_inferior_data *data;
413
414   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
415   if (data == NULL)
416     {
417       data = XCNEW (struct ada_inferior_data);
418       set_inferior_data (inf, ada_inferior_data, data);
419     }
420
421   return data;
422 }
423
424 /* Perform all necessary cleanups regarding our module's inferior data
425    that is required after the inferior INF just exited.  */
426
427 static void
428 ada_inferior_exit (struct inferior *inf)
429 {
430   ada_inferior_data_cleanup (inf, NULL);
431   set_inferior_data (inf, ada_inferior_data, NULL);
432 }
433
434
435                         /* program-space-specific data.  */
436
437 /* This module's per-program-space data.  */
438 struct ada_pspace_data
439 {
440   /* The Ada symbol cache.  */
441   struct ada_symbol_cache *sym_cache;
442 };
443
444 /* Key to our per-program-space data.  */
445 static const struct program_space_data *ada_pspace_data_handle;
446
447 /* Return this module's data for the given program space (PSPACE).
448    If not is found, add a zero'ed one now.
449
450    This function always returns a valid object.  */
451
452 static struct ada_pspace_data *
453 get_ada_pspace_data (struct program_space *pspace)
454 {
455   struct ada_pspace_data *data;
456
457   data = ((struct ada_pspace_data *)
458           program_space_data (pspace, ada_pspace_data_handle));
459   if (data == NULL)
460     {
461       data = XCNEW (struct ada_pspace_data);
462       set_program_space_data (pspace, ada_pspace_data_handle, data);
463     }
464
465   return data;
466 }
467
468 /* The cleanup callback for this module's per-program-space data.  */
469
470 static void
471 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
472 {
473   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
474
475   if (pspace_data->sym_cache != NULL)
476     ada_free_symbol_cache (pspace_data->sym_cache);
477   xfree (pspace_data);
478 }
479
480                         /* Utilities */
481
482 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
483    all typedef layers have been peeled.  Otherwise, return TYPE.
484
485    Normally, we really expect a typedef type to only have 1 typedef layer.
486    In other words, we really expect the target type of a typedef type to be
487    a non-typedef type.  This is particularly true for Ada units, because
488    the language does not have a typedef vs not-typedef distinction.
489    In that respect, the Ada compiler has been trying to eliminate as many
490    typedef definitions in the debugging information, since they generally
491    do not bring any extra information (we still use typedef under certain
492    circumstances related mostly to the GNAT encoding).
493
494    Unfortunately, we have seen situations where the debugging information
495    generated by the compiler leads to such multiple typedef layers.  For
496    instance, consider the following example with stabs:
497
498      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
499      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
500
501    This is an error in the debugging information which causes type
502    pck__float_array___XUP to be defined twice, and the second time,
503    it is defined as a typedef of a typedef.
504
505    This is on the fringe of legality as far as debugging information is
506    concerned, and certainly unexpected.  But it is easy to handle these
507    situations correctly, so we can afford to be lenient in this case.  */
508
509 static struct type *
510 ada_typedef_target_type (struct type *type)
511 {
512   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
513     type = TYPE_TARGET_TYPE (type);
514   return type;
515 }
516
517 /* Given DECODED_NAME a string holding a symbol name in its
518    decoded form (ie using the Ada dotted notation), returns
519    its unqualified name.  */
520
521 static const char *
522 ada_unqualified_name (const char *decoded_name)
523 {
524   const char *result;
525   
526   /* If the decoded name starts with '<', it means that the encoded
527      name does not follow standard naming conventions, and thus that
528      it is not your typical Ada symbol name.  Trying to unqualify it
529      is therefore pointless and possibly erroneous.  */
530   if (decoded_name[0] == '<')
531     return decoded_name;
532
533   result = strrchr (decoded_name, '.');
534   if (result != NULL)
535     result++;                   /* Skip the dot...  */
536   else
537     result = decoded_name;
538
539   return result;
540 }
541
542 /* Return a string starting with '<', followed by STR, and '>'.  */
543
544 static std::string
545 add_angle_brackets (const char *str)
546 {
547   return string_printf ("<%s>", str);
548 }
549
550 static const char *
551 ada_get_gdb_completer_word_break_characters (void)
552 {
553   return ada_completer_word_break_characters;
554 }
555
556 /* Print an array element index using the Ada syntax.  */
557
558 static void
559 ada_print_array_index (struct value *index_value, struct ui_file *stream,
560                        const struct value_print_options *options)
561 {
562   LA_VALUE_PRINT (index_value, stream, options);
563   fprintf_filtered (stream, " => ");
564 }
565
566 /* la_watch_location_expression for Ada.  */
567
568 gdb::unique_xmalloc_ptr<char>
569 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
570 {
571   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
572   std::string name = type_to_string (type);
573   return gdb::unique_xmalloc_ptr<char>
574     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
575 }
576
577 /* Assuming VECT points to an array of *SIZE objects of size
578    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
579    updating *SIZE as necessary and returning the (new) array.  */
580
581 void *
582 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
583 {
584   if (*size < min_size)
585     {
586       *size *= 2;
587       if (*size < min_size)
588         *size = min_size;
589       vect = xrealloc (vect, *size * element_size);
590     }
591   return vect;
592 }
593
594 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
595    suffix of FIELD_NAME beginning "___".  */
596
597 static int
598 field_name_match (const char *field_name, const char *target)
599 {
600   int len = strlen (target);
601
602   return
603     (strncmp (field_name, target, len) == 0
604      && (field_name[len] == '\0'
605          || (startswith (field_name + len, "___")
606              && strcmp (field_name + strlen (field_name) - 6,
607                         "___XVN") != 0)));
608 }
609
610
611 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
612    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
613    and return its index.  This function also handles fields whose name
614    have ___ suffixes because the compiler sometimes alters their name
615    by adding such a suffix to represent fields with certain constraints.
616    If the field could not be found, return a negative number if
617    MAYBE_MISSING is set.  Otherwise raise an error.  */
618
619 int
620 ada_get_field_index (const struct type *type, const char *field_name,
621                      int maybe_missing)
622 {
623   int fieldno;
624   struct type *struct_type = check_typedef ((struct type *) type);
625
626   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
627     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
628       return fieldno;
629
630   if (!maybe_missing)
631     error (_("Unable to find field %s in struct %s.  Aborting"),
632            field_name, TYPE_NAME (struct_type));
633
634   return -1;
635 }
636
637 /* The length of the prefix of NAME prior to any "___" suffix.  */
638
639 int
640 ada_name_prefix_len (const char *name)
641 {
642   if (name == NULL)
643     return 0;
644   else
645     {
646       const char *p = strstr (name, "___");
647
648       if (p == NULL)
649         return strlen (name);
650       else
651         return p - name;
652     }
653 }
654
655 /* Return non-zero if SUFFIX is a suffix of STR.
656    Return zero if STR is null.  */
657
658 static int
659 is_suffix (const char *str, const char *suffix)
660 {
661   int len1, len2;
662
663   if (str == NULL)
664     return 0;
665   len1 = strlen (str);
666   len2 = strlen (suffix);
667   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
668 }
669
670 /* The contents of value VAL, treated as a value of type TYPE.  The
671    result is an lval in memory if VAL is.  */
672
673 static struct value *
674 coerce_unspec_val_to_type (struct value *val, struct type *type)
675 {
676   type = ada_check_typedef (type);
677   if (value_type (val) == type)
678     return val;
679   else
680     {
681       struct value *result;
682
683       /* Make sure that the object size is not unreasonable before
684          trying to allocate some memory for it.  */
685       ada_ensure_varsize_limit (type);
686
687       if (value_lazy (val)
688           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
689         result = allocate_value_lazy (type);
690       else
691         {
692           result = allocate_value (type);
693           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
694         }
695       set_value_component_location (result, val);
696       set_value_bitsize (result, value_bitsize (val));
697       set_value_bitpos (result, value_bitpos (val));
698       set_value_address (result, value_address (val));
699       return result;
700     }
701 }
702
703 static const gdb_byte *
704 cond_offset_host (const gdb_byte *valaddr, long offset)
705 {
706   if (valaddr == NULL)
707     return NULL;
708   else
709     return valaddr + offset;
710 }
711
712 static CORE_ADDR
713 cond_offset_target (CORE_ADDR address, long offset)
714 {
715   if (address == 0)
716     return 0;
717   else
718     return address + offset;
719 }
720
721 /* Issue a warning (as for the definition of warning in utils.c, but
722    with exactly one argument rather than ...), unless the limit on the
723    number of warnings has passed during the evaluation of the current
724    expression.  */
725
726 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
727    provided by "complaint".  */
728 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
729
730 static void
731 lim_warning (const char *format, ...)
732 {
733   va_list args;
734
735   va_start (args, format);
736   warnings_issued += 1;
737   if (warnings_issued <= warning_limit)
738     vwarning (format, args);
739
740   va_end (args);
741 }
742
743 /* Issue an error if the size of an object of type T is unreasonable,
744    i.e. if it would be a bad idea to allocate a value of this type in
745    GDB.  */
746
747 void
748 ada_ensure_varsize_limit (const struct type *type)
749 {
750   if (TYPE_LENGTH (type) > varsize_limit)
751     error (_("object size is larger than varsize-limit"));
752 }
753
754 /* Maximum value of a SIZE-byte signed integer type.  */
755 static LONGEST
756 max_of_size (int size)
757 {
758   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
759
760   return top_bit | (top_bit - 1);
761 }
762
763 /* Minimum value of a SIZE-byte signed integer type.  */
764 static LONGEST
765 min_of_size (int size)
766 {
767   return -max_of_size (size) - 1;
768 }
769
770 /* Maximum value of a SIZE-byte unsigned integer type.  */
771 static ULONGEST
772 umax_of_size (int size)
773 {
774   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
775
776   return top_bit | (top_bit - 1);
777 }
778
779 /* Maximum value of integral type T, as a signed quantity.  */
780 static LONGEST
781 max_of_type (struct type *t)
782 {
783   if (TYPE_UNSIGNED (t))
784     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
785   else
786     return max_of_size (TYPE_LENGTH (t));
787 }
788
789 /* Minimum value of integral type T, as a signed quantity.  */
790 static LONGEST
791 min_of_type (struct type *t)
792 {
793   if (TYPE_UNSIGNED (t)) 
794     return 0;
795   else
796     return min_of_size (TYPE_LENGTH (t));
797 }
798
799 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
800 LONGEST
801 ada_discrete_type_high_bound (struct type *type)
802 {
803   type = resolve_dynamic_type (type, NULL, 0);
804   switch (TYPE_CODE (type))
805     {
806     case TYPE_CODE_RANGE:
807       return TYPE_HIGH_BOUND (type);
808     case TYPE_CODE_ENUM:
809       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
810     case TYPE_CODE_BOOL:
811       return 1;
812     case TYPE_CODE_CHAR:
813     case TYPE_CODE_INT:
814       return max_of_type (type);
815     default:
816       error (_("Unexpected type in ada_discrete_type_high_bound."));
817     }
818 }
819
820 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
821 LONGEST
822 ada_discrete_type_low_bound (struct type *type)
823 {
824   type = resolve_dynamic_type (type, NULL, 0);
825   switch (TYPE_CODE (type))
826     {
827     case TYPE_CODE_RANGE:
828       return TYPE_LOW_BOUND (type);
829     case TYPE_CODE_ENUM:
830       return TYPE_FIELD_ENUMVAL (type, 0);
831     case TYPE_CODE_BOOL:
832       return 0;
833     case TYPE_CODE_CHAR:
834     case TYPE_CODE_INT:
835       return min_of_type (type);
836     default:
837       error (_("Unexpected type in ada_discrete_type_low_bound."));
838     }
839 }
840
841 /* The identity on non-range types.  For range types, the underlying
842    non-range scalar type.  */
843
844 static struct type *
845 get_base_type (struct type *type)
846 {
847   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
848     {
849       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
850         return type;
851       type = TYPE_TARGET_TYPE (type);
852     }
853   return type;
854 }
855
856 /* Return a decoded version of the given VALUE.  This means returning
857    a value whose type is obtained by applying all the GNAT-specific
858    encondings, making the resulting type a static but standard description
859    of the initial type.  */
860
861 struct value *
862 ada_get_decoded_value (struct value *value)
863 {
864   struct type *type = ada_check_typedef (value_type (value));
865
866   if (ada_is_array_descriptor_type (type)
867       || (ada_is_constrained_packed_array_type (type)
868           && TYPE_CODE (type) != TYPE_CODE_PTR))
869     {
870       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
871         value = ada_coerce_to_simple_array_ptr (value);
872       else
873         value = ada_coerce_to_simple_array (value);
874     }
875   else
876     value = ada_to_fixed_value (value);
877
878   return value;
879 }
880
881 /* Same as ada_get_decoded_value, but with the given TYPE.
882    Because there is no associated actual value for this type,
883    the resulting type might be a best-effort approximation in
884    the case of dynamic types.  */
885
886 struct type *
887 ada_get_decoded_type (struct type *type)
888 {
889   type = to_static_fixed_type (type);
890   if (ada_is_constrained_packed_array_type (type))
891     type = ada_coerce_to_simple_array_type (type);
892   return type;
893 }
894
895 \f
896
897                                 /* Language Selection */
898
899 /* If the main program is in Ada, return language_ada, otherwise return LANG
900    (the main program is in Ada iif the adainit symbol is found).  */
901
902 enum language
903 ada_update_initial_language (enum language lang)
904 {
905   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
906                              (struct objfile *) NULL).minsym != NULL)
907     return language_ada;
908
909   return lang;
910 }
911
912 /* If the main procedure is written in Ada, then return its name.
913    The result is good until the next call.  Return NULL if the main
914    procedure doesn't appear to be in Ada.  */
915
916 char *
917 ada_main_name (void)
918 {
919   struct bound_minimal_symbol msym;
920   static gdb::unique_xmalloc_ptr<char> main_program_name;
921
922   /* For Ada, the name of the main procedure is stored in a specific
923      string constant, generated by the binder.  Look for that symbol,
924      extract its address, and then read that string.  If we didn't find
925      that string, then most probably the main procedure is not written
926      in Ada.  */
927   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
928
929   if (msym.minsym != NULL)
930     {
931       CORE_ADDR main_program_name_addr;
932       int err_code;
933
934       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
935       if (main_program_name_addr == 0)
936         error (_("Invalid address for Ada main program name."));
937
938       target_read_string (main_program_name_addr, &main_program_name,
939                           1024, &err_code);
940
941       if (err_code != 0)
942         return NULL;
943       return main_program_name.get ();
944     }
945
946   /* The main procedure doesn't seem to be in Ada.  */
947   return NULL;
948 }
949 \f
950                                 /* Symbols */
951
952 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
953    of NULLs.  */
954
955 const struct ada_opname_map ada_opname_table[] = {
956   {"Oadd", "\"+\"", BINOP_ADD},
957   {"Osubtract", "\"-\"", BINOP_SUB},
958   {"Omultiply", "\"*\"", BINOP_MUL},
959   {"Odivide", "\"/\"", BINOP_DIV},
960   {"Omod", "\"mod\"", BINOP_MOD},
961   {"Orem", "\"rem\"", BINOP_REM},
962   {"Oexpon", "\"**\"", BINOP_EXP},
963   {"Olt", "\"<\"", BINOP_LESS},
964   {"Ole", "\"<=\"", BINOP_LEQ},
965   {"Ogt", "\">\"", BINOP_GTR},
966   {"Oge", "\">=\"", BINOP_GEQ},
967   {"Oeq", "\"=\"", BINOP_EQUAL},
968   {"One", "\"/=\"", BINOP_NOTEQUAL},
969   {"Oand", "\"and\"", BINOP_BITWISE_AND},
970   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
971   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
972   {"Oconcat", "\"&\"", BINOP_CONCAT},
973   {"Oabs", "\"abs\"", UNOP_ABS},
974   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
975   {"Oadd", "\"+\"", UNOP_PLUS},
976   {"Osubtract", "\"-\"", UNOP_NEG},
977   {NULL, NULL}
978 };
979
980 /* The "encoded" form of DECODED, according to GNAT conventions.  The
981    result is valid until the next call to ada_encode.  If
982    THROW_ERRORS, throw an error if invalid operator name is found.
983    Otherwise, return NULL in that case.  */
984
985 static char *
986 ada_encode_1 (const char *decoded, bool throw_errors)
987 {
988   static char *encoding_buffer = NULL;
989   static size_t encoding_buffer_size = 0;
990   const char *p;
991   int k;
992
993   if (decoded == NULL)
994     return NULL;
995
996   GROW_VECT (encoding_buffer, encoding_buffer_size,
997              2 * strlen (decoded) + 10);
998
999   k = 0;
1000   for (p = decoded; *p != '\0'; p += 1)
1001     {
1002       if (*p == '.')
1003         {
1004           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1005           k += 2;
1006         }
1007       else if (*p == '"')
1008         {
1009           const struct ada_opname_map *mapping;
1010
1011           for (mapping = ada_opname_table;
1012                mapping->encoded != NULL
1013                && !startswith (p, mapping->decoded); mapping += 1)
1014             ;
1015           if (mapping->encoded == NULL)
1016             {
1017               if (throw_errors)
1018                 error (_("invalid Ada operator name: %s"), p);
1019               else
1020                 return NULL;
1021             }
1022           strcpy (encoding_buffer + k, mapping->encoded);
1023           k += strlen (mapping->encoded);
1024           break;
1025         }
1026       else
1027         {
1028           encoding_buffer[k] = *p;
1029           k += 1;
1030         }
1031     }
1032
1033   encoding_buffer[k] = '\0';
1034   return encoding_buffer;
1035 }
1036
1037 /* The "encoded" form of DECODED, according to GNAT conventions.
1038    The result is valid until the next call to ada_encode.  */
1039
1040 char *
1041 ada_encode (const char *decoded)
1042 {
1043   return ada_encode_1 (decoded, true);
1044 }
1045
1046 /* Return NAME folded to lower case, or, if surrounded by single
1047    quotes, unfolded, but with the quotes stripped away.  Result good
1048    to next call.  */
1049
1050 char *
1051 ada_fold_name (const char *name)
1052 {
1053   static char *fold_buffer = NULL;
1054   static size_t fold_buffer_size = 0;
1055
1056   int len = strlen (name);
1057   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1058
1059   if (name[0] == '\'')
1060     {
1061       strncpy (fold_buffer, name + 1, len - 2);
1062       fold_buffer[len - 2] = '\000';
1063     }
1064   else
1065     {
1066       int i;
1067
1068       for (i = 0; i <= len; i += 1)
1069         fold_buffer[i] = tolower (name[i]);
1070     }
1071
1072   return fold_buffer;
1073 }
1074
1075 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1076
1077 static int
1078 is_lower_alphanum (const char c)
1079 {
1080   return (isdigit (c) || (isalpha (c) && islower (c)));
1081 }
1082
1083 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1084    This function saves in LEN the length of that same symbol name but
1085    without either of these suffixes:
1086      . .{DIGIT}+
1087      . ${DIGIT}+
1088      . ___{DIGIT}+
1089      . __{DIGIT}+.
1090
1091    These are suffixes introduced by the compiler for entities such as
1092    nested subprogram for instance, in order to avoid name clashes.
1093    They do not serve any purpose for the debugger.  */
1094
1095 static void
1096 ada_remove_trailing_digits (const char *encoded, int *len)
1097 {
1098   if (*len > 1 && isdigit (encoded[*len - 1]))
1099     {
1100       int i = *len - 2;
1101
1102       while (i > 0 && isdigit (encoded[i]))
1103         i--;
1104       if (i >= 0 && encoded[i] == '.')
1105         *len = i;
1106       else if (i >= 0 && encoded[i] == '$')
1107         *len = i;
1108       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1109         *len = i - 2;
1110       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1111         *len = i - 1;
1112     }
1113 }
1114
1115 /* Remove the suffix introduced by the compiler for protected object
1116    subprograms.  */
1117
1118 static void
1119 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1120 {
1121   /* Remove trailing N.  */
1122
1123   /* Protected entry subprograms are broken into two
1124      separate subprograms: The first one is unprotected, and has
1125      a 'N' suffix; the second is the protected version, and has
1126      the 'P' suffix.  The second calls the first one after handling
1127      the protection.  Since the P subprograms are internally generated,
1128      we leave these names undecoded, giving the user a clue that this
1129      entity is internal.  */
1130
1131   if (*len > 1
1132       && encoded[*len - 1] == 'N'
1133       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1134     *len = *len - 1;
1135 }
1136
1137 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1138
1139 static void
1140 ada_remove_Xbn_suffix (const char *encoded, int *len)
1141 {
1142   int i = *len - 1;
1143
1144   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1145     i--;
1146
1147   if (encoded[i] != 'X')
1148     return;
1149
1150   if (i == 0)
1151     return;
1152
1153   if (isalnum (encoded[i-1]))
1154     *len = i;
1155 }
1156
1157 /* If ENCODED follows the GNAT entity encoding conventions, then return
1158    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1159    replaced by ENCODED.
1160
1161    The resulting string is valid until the next call of ada_decode.
1162    If the string is unchanged by decoding, the original string pointer
1163    is returned.  */
1164
1165 const char *
1166 ada_decode (const char *encoded)
1167 {
1168   int i, j;
1169   int len0;
1170   const char *p;
1171   char *decoded;
1172   int at_start_name;
1173   static char *decoding_buffer = NULL;
1174   static size_t decoding_buffer_size = 0;
1175
1176   /* With function descriptors on PPC64, the value of a symbol named
1177      ".FN", if it exists, is the entry point of the function "FN".  */
1178   if (encoded[0] == '.')
1179     encoded += 1;
1180
1181   /* The name of the Ada main procedure starts with "_ada_".
1182      This prefix is not part of the decoded name, so skip this part
1183      if we see this prefix.  */
1184   if (startswith (encoded, "_ada_"))
1185     encoded += 5;
1186
1187   /* If the name starts with '_', then it is not a properly encoded
1188      name, so do not attempt to decode it.  Similarly, if the name
1189      starts with '<', the name should not be decoded.  */
1190   if (encoded[0] == '_' || encoded[0] == '<')
1191     goto Suppress;
1192
1193   len0 = strlen (encoded);
1194
1195   ada_remove_trailing_digits (encoded, &len0);
1196   ada_remove_po_subprogram_suffix (encoded, &len0);
1197
1198   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1199      the suffix is located before the current "end" of ENCODED.  We want
1200      to avoid re-matching parts of ENCODED that have previously been
1201      marked as discarded (by decrementing LEN0).  */
1202   p = strstr (encoded, "___");
1203   if (p != NULL && p - encoded < len0 - 3)
1204     {
1205       if (p[3] == 'X')
1206         len0 = p - encoded;
1207       else
1208         goto Suppress;
1209     }
1210
1211   /* Remove any trailing TKB suffix.  It tells us that this symbol
1212      is for the body of a task, but that information does not actually
1213      appear in the decoded name.  */
1214
1215   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1216     len0 -= 3;
1217
1218   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1219      from the TKB suffix because it is used for non-anonymous task
1220      bodies.  */
1221
1222   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1223     len0 -= 2;
1224
1225   /* Remove trailing "B" suffixes.  */
1226   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1227
1228   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1229     len0 -= 1;
1230
1231   /* Make decoded big enough for possible expansion by operator name.  */
1232
1233   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1234   decoded = decoding_buffer;
1235
1236   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1237
1238   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1239     {
1240       i = len0 - 2;
1241       while ((i >= 0 && isdigit (encoded[i]))
1242              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1243         i -= 1;
1244       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1245         len0 = i - 1;
1246       else if (encoded[i] == '$')
1247         len0 = i;
1248     }
1249
1250   /* The first few characters that are not alphabetic are not part
1251      of any encoding we use, so we can copy them over verbatim.  */
1252
1253   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1254     decoded[j] = encoded[i];
1255
1256   at_start_name = 1;
1257   while (i < len0)
1258     {
1259       /* Is this a symbol function?  */
1260       if (at_start_name && encoded[i] == 'O')
1261         {
1262           int k;
1263
1264           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1265             {
1266               int op_len = strlen (ada_opname_table[k].encoded);
1267               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1268                             op_len - 1) == 0)
1269                   && !isalnum (encoded[i + op_len]))
1270                 {
1271                   strcpy (decoded + j, ada_opname_table[k].decoded);
1272                   at_start_name = 0;
1273                   i += op_len;
1274                   j += strlen (ada_opname_table[k].decoded);
1275                   break;
1276                 }
1277             }
1278           if (ada_opname_table[k].encoded != NULL)
1279             continue;
1280         }
1281       at_start_name = 0;
1282
1283       /* Replace "TK__" with "__", which will eventually be translated
1284          into "." (just below).  */
1285
1286       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1287         i += 2;
1288
1289       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1290          be translated into "." (just below).  These are internal names
1291          generated for anonymous blocks inside which our symbol is nested.  */
1292
1293       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1294           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1295           && isdigit (encoded [i+4]))
1296         {
1297           int k = i + 5;
1298           
1299           while (k < len0 && isdigit (encoded[k]))
1300             k++;  /* Skip any extra digit.  */
1301
1302           /* Double-check that the "__B_{DIGITS}+" sequence we found
1303              is indeed followed by "__".  */
1304           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1305             i = k;
1306         }
1307
1308       /* Remove _E{DIGITS}+[sb] */
1309
1310       /* Just as for protected object subprograms, there are 2 categories
1311          of subprograms created by the compiler for each entry.  The first
1312          one implements the actual entry code, and has a suffix following
1313          the convention above; the second one implements the barrier and
1314          uses the same convention as above, except that the 'E' is replaced
1315          by a 'B'.
1316
1317          Just as above, we do not decode the name of barrier functions
1318          to give the user a clue that the code he is debugging has been
1319          internally generated.  */
1320
1321       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1322           && isdigit (encoded[i+2]))
1323         {
1324           int k = i + 3;
1325
1326           while (k < len0 && isdigit (encoded[k]))
1327             k++;
1328
1329           if (k < len0
1330               && (encoded[k] == 'b' || encoded[k] == 's'))
1331             {
1332               k++;
1333               /* Just as an extra precaution, make sure that if this
1334                  suffix is followed by anything else, it is a '_'.
1335                  Otherwise, we matched this sequence by accident.  */
1336               if (k == len0
1337                   || (k < len0 && encoded[k] == '_'))
1338                 i = k;
1339             }
1340         }
1341
1342       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1343          the GNAT front-end in protected object subprograms.  */
1344
1345       if (i < len0 + 3
1346           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1347         {
1348           /* Backtrack a bit up until we reach either the begining of
1349              the encoded name, or "__".  Make sure that we only find
1350              digits or lowercase characters.  */
1351           const char *ptr = encoded + i - 1;
1352
1353           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1354             ptr--;
1355           if (ptr < encoded
1356               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1357             i++;
1358         }
1359
1360       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1361         {
1362           /* This is a X[bn]* sequence not separated from the previous
1363              part of the name with a non-alpha-numeric character (in other
1364              words, immediately following an alpha-numeric character), then
1365              verify that it is placed at the end of the encoded name.  If
1366              not, then the encoding is not valid and we should abort the
1367              decoding.  Otherwise, just skip it, it is used in body-nested
1368              package names.  */
1369           do
1370             i += 1;
1371           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1372           if (i < len0)
1373             goto Suppress;
1374         }
1375       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1376         {
1377          /* Replace '__' by '.'.  */
1378           decoded[j] = '.';
1379           at_start_name = 1;
1380           i += 2;
1381           j += 1;
1382         }
1383       else
1384         {
1385           /* It's a character part of the decoded name, so just copy it
1386              over.  */
1387           decoded[j] = encoded[i];
1388           i += 1;
1389           j += 1;
1390         }
1391     }
1392   decoded[j] = '\000';
1393
1394   /* Decoded names should never contain any uppercase character.
1395      Double-check this, and abort the decoding if we find one.  */
1396
1397   for (i = 0; decoded[i] != '\0'; i += 1)
1398     if (isupper (decoded[i]) || decoded[i] == ' ')
1399       goto Suppress;
1400
1401   if (strcmp (decoded, encoded) == 0)
1402     return encoded;
1403   else
1404     return decoded;
1405
1406 Suppress:
1407   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1408   decoded = decoding_buffer;
1409   if (encoded[0] == '<')
1410     strcpy (decoded, encoded);
1411   else
1412     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1413   return decoded;
1414
1415 }
1416
1417 /* Table for keeping permanent unique copies of decoded names.  Once
1418    allocated, names in this table are never released.  While this is a
1419    storage leak, it should not be significant unless there are massive
1420    changes in the set of decoded names in successive versions of a 
1421    symbol table loaded during a single session.  */
1422 static struct htab *decoded_names_store;
1423
1424 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1425    in the language-specific part of GSYMBOL, if it has not been
1426    previously computed.  Tries to save the decoded name in the same
1427    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1428    in any case, the decoded symbol has a lifetime at least that of
1429    GSYMBOL).
1430    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1431    const, but nevertheless modified to a semantically equivalent form
1432    when a decoded name is cached in it.  */
1433
1434 const char *
1435 ada_decode_symbol (const struct general_symbol_info *arg)
1436 {
1437   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1438   const char **resultp =
1439     &gsymbol->language_specific.demangled_name;
1440
1441   if (!gsymbol->ada_mangled)
1442     {
1443       const char *decoded = ada_decode (gsymbol->name);
1444       struct obstack *obstack = gsymbol->language_specific.obstack;
1445
1446       gsymbol->ada_mangled = 1;
1447
1448       if (obstack != NULL)
1449         *resultp
1450           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1451       else
1452         {
1453           /* Sometimes, we can't find a corresponding objfile, in
1454              which case, we put the result on the heap.  Since we only
1455              decode when needed, we hope this usually does not cause a
1456              significant memory leak (FIXME).  */
1457
1458           char **slot = (char **) htab_find_slot (decoded_names_store,
1459                                                   decoded, INSERT);
1460
1461           if (*slot == NULL)
1462             *slot = xstrdup (decoded);
1463           *resultp = *slot;
1464         }
1465     }
1466
1467   return *resultp;
1468 }
1469
1470 static char *
1471 ada_la_decode (const char *encoded, int options)
1472 {
1473   return xstrdup (ada_decode (encoded));
1474 }
1475
1476 /* Implement la_sniff_from_mangled_name for Ada.  */
1477
1478 static int
1479 ada_sniff_from_mangled_name (const char *mangled, char **out)
1480 {
1481   const char *demangled = ada_decode (mangled);
1482
1483   *out = NULL;
1484
1485   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1486     {
1487       /* Set the gsymbol language to Ada, but still return 0.
1488          Two reasons for that:
1489
1490          1. For Ada, we prefer computing the symbol's decoded name
1491          on the fly rather than pre-compute it, in order to save
1492          memory (Ada projects are typically very large).
1493
1494          2. There are some areas in the definition of the GNAT
1495          encoding where, with a bit of bad luck, we might be able
1496          to decode a non-Ada symbol, generating an incorrect
1497          demangled name (Eg: names ending with "TB" for instance
1498          are identified as task bodies and so stripped from
1499          the decoded name returned).
1500
1501          Returning 1, here, but not setting *DEMANGLED, helps us get a
1502          little bit of the best of both worlds.  Because we're last,
1503          we should not affect any of the other languages that were
1504          able to demangle the symbol before us; we get to correctly
1505          tag Ada symbols as such; and even if we incorrectly tagged a
1506          non-Ada symbol, which should be rare, any routing through the
1507          Ada language should be transparent (Ada tries to behave much
1508          like C/C++ with non-Ada symbols).  */
1509       return 1;
1510     }
1511
1512   return 0;
1513 }
1514
1515 \f
1516
1517                                 /* Arrays */
1518
1519 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1520    generated by the GNAT compiler to describe the index type used
1521    for each dimension of an array, check whether it follows the latest
1522    known encoding.  If not, fix it up to conform to the latest encoding.
1523    Otherwise, do nothing.  This function also does nothing if
1524    INDEX_DESC_TYPE is NULL.
1525
1526    The GNAT encoding used to describle the array index type evolved a bit.
1527    Initially, the information would be provided through the name of each
1528    field of the structure type only, while the type of these fields was
1529    described as unspecified and irrelevant.  The debugger was then expected
1530    to perform a global type lookup using the name of that field in order
1531    to get access to the full index type description.  Because these global
1532    lookups can be very expensive, the encoding was later enhanced to make
1533    the global lookup unnecessary by defining the field type as being
1534    the full index type description.
1535
1536    The purpose of this routine is to allow us to support older versions
1537    of the compiler by detecting the use of the older encoding, and by
1538    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1539    we essentially replace each field's meaningless type by the associated
1540    index subtype).  */
1541
1542 void
1543 ada_fixup_array_indexes_type (struct type *index_desc_type)
1544 {
1545   int i;
1546
1547   if (index_desc_type == NULL)
1548     return;
1549   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1550
1551   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1552      to check one field only, no need to check them all).  If not, return
1553      now.
1554
1555      If our INDEX_DESC_TYPE was generated using the older encoding,
1556      the field type should be a meaningless integer type whose name
1557      is not equal to the field name.  */
1558   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1559       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1560                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1561     return;
1562
1563   /* Fixup each field of INDEX_DESC_TYPE.  */
1564   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1565    {
1566      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1567      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1568
1569      if (raw_type)
1570        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1571    }
1572 }
1573
1574 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1575
1576 static const char *bound_name[] = {
1577   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1578   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1579 };
1580
1581 /* Maximum number of array dimensions we are prepared to handle.  */
1582
1583 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1584
1585
1586 /* The desc_* routines return primitive portions of array descriptors
1587    (fat pointers).  */
1588
1589 /* The descriptor or array type, if any, indicated by TYPE; removes
1590    level of indirection, if needed.  */
1591
1592 static struct type *
1593 desc_base_type (struct type *type)
1594 {
1595   if (type == NULL)
1596     return NULL;
1597   type = ada_check_typedef (type);
1598   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1599     type = ada_typedef_target_type (type);
1600
1601   if (type != NULL
1602       && (TYPE_CODE (type) == TYPE_CODE_PTR
1603           || TYPE_CODE (type) == TYPE_CODE_REF))
1604     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1605   else
1606     return type;
1607 }
1608
1609 /* True iff TYPE indicates a "thin" array pointer type.  */
1610
1611 static int
1612 is_thin_pntr (struct type *type)
1613 {
1614   return
1615     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1616     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1617 }
1618
1619 /* The descriptor type for thin pointer type TYPE.  */
1620
1621 static struct type *
1622 thin_descriptor_type (struct type *type)
1623 {
1624   struct type *base_type = desc_base_type (type);
1625
1626   if (base_type == NULL)
1627     return NULL;
1628   if (is_suffix (ada_type_name (base_type), "___XVE"))
1629     return base_type;
1630   else
1631     {
1632       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1633
1634       if (alt_type == NULL)
1635         return base_type;
1636       else
1637         return alt_type;
1638     }
1639 }
1640
1641 /* A pointer to the array data for thin-pointer value VAL.  */
1642
1643 static struct value *
1644 thin_data_pntr (struct value *val)
1645 {
1646   struct type *type = ada_check_typedef (value_type (val));
1647   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1648
1649   data_type = lookup_pointer_type (data_type);
1650
1651   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1652     return value_cast (data_type, value_copy (val));
1653   else
1654     return value_from_longest (data_type, value_address (val));
1655 }
1656
1657 /* True iff TYPE indicates a "thick" array pointer type.  */
1658
1659 static int
1660 is_thick_pntr (struct type *type)
1661 {
1662   type = desc_base_type (type);
1663   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1664           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1665 }
1666
1667 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1668    pointer to one, the type of its bounds data; otherwise, NULL.  */
1669
1670 static struct type *
1671 desc_bounds_type (struct type *type)
1672 {
1673   struct type *r;
1674
1675   type = desc_base_type (type);
1676
1677   if (type == NULL)
1678     return NULL;
1679   else if (is_thin_pntr (type))
1680     {
1681       type = thin_descriptor_type (type);
1682       if (type == NULL)
1683         return NULL;
1684       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1685       if (r != NULL)
1686         return ada_check_typedef (r);
1687     }
1688   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1689     {
1690       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1691       if (r != NULL)
1692         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1693     }
1694   return NULL;
1695 }
1696
1697 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1698    one, a pointer to its bounds data.   Otherwise NULL.  */
1699
1700 static struct value *
1701 desc_bounds (struct value *arr)
1702 {
1703   struct type *type = ada_check_typedef (value_type (arr));
1704
1705   if (is_thin_pntr (type))
1706     {
1707       struct type *bounds_type =
1708         desc_bounds_type (thin_descriptor_type (type));
1709       LONGEST addr;
1710
1711       if (bounds_type == NULL)
1712         error (_("Bad GNAT array descriptor"));
1713
1714       /* NOTE: The following calculation is not really kosher, but
1715          since desc_type is an XVE-encoded type (and shouldn't be),
1716          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1717       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1718         addr = value_as_long (arr);
1719       else
1720         addr = value_address (arr);
1721
1722       return
1723         value_from_longest (lookup_pointer_type (bounds_type),
1724                             addr - TYPE_LENGTH (bounds_type));
1725     }
1726
1727   else if (is_thick_pntr (type))
1728     {
1729       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1730                                                _("Bad GNAT array descriptor"));
1731       struct type *p_bounds_type = value_type (p_bounds);
1732
1733       if (p_bounds_type
1734           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1735         {
1736           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1737
1738           if (TYPE_STUB (target_type))
1739             p_bounds = value_cast (lookup_pointer_type
1740                                    (ada_check_typedef (target_type)),
1741                                    p_bounds);
1742         }
1743       else
1744         error (_("Bad GNAT array descriptor"));
1745
1746       return p_bounds;
1747     }
1748   else
1749     return NULL;
1750 }
1751
1752 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1753    position of the field containing the address of the bounds data.  */
1754
1755 static int
1756 fat_pntr_bounds_bitpos (struct type *type)
1757 {
1758   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1759 }
1760
1761 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1762    size of the field containing the address of the bounds data.  */
1763
1764 static int
1765 fat_pntr_bounds_bitsize (struct type *type)
1766 {
1767   type = desc_base_type (type);
1768
1769   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1770     return TYPE_FIELD_BITSIZE (type, 1);
1771   else
1772     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1773 }
1774
1775 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1776    pointer to one, the type of its array data (a array-with-no-bounds type);
1777    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1778    data.  */
1779
1780 static struct type *
1781 desc_data_target_type (struct type *type)
1782 {
1783   type = desc_base_type (type);
1784
1785   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1786   if (is_thin_pntr (type))
1787     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1788   else if (is_thick_pntr (type))
1789     {
1790       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1791
1792       if (data_type
1793           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1794         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1795     }
1796
1797   return NULL;
1798 }
1799
1800 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1801    its array data.  */
1802
1803 static struct value *
1804 desc_data (struct value *arr)
1805 {
1806   struct type *type = value_type (arr);
1807
1808   if (is_thin_pntr (type))
1809     return thin_data_pntr (arr);
1810   else if (is_thick_pntr (type))
1811     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1812                              _("Bad GNAT array descriptor"));
1813   else
1814     return NULL;
1815 }
1816
1817
1818 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1819    position of the field containing the address of the data.  */
1820
1821 static int
1822 fat_pntr_data_bitpos (struct type *type)
1823 {
1824   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1825 }
1826
1827 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1828    size of the field containing the address of the data.  */
1829
1830 static int
1831 fat_pntr_data_bitsize (struct type *type)
1832 {
1833   type = desc_base_type (type);
1834
1835   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1836     return TYPE_FIELD_BITSIZE (type, 0);
1837   else
1838     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1839 }
1840
1841 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1842    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1843    bound, if WHICH is 1.  The first bound is I=1.  */
1844
1845 static struct value *
1846 desc_one_bound (struct value *bounds, int i, int which)
1847 {
1848   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1849                            _("Bad GNAT array descriptor bounds"));
1850 }
1851
1852 /* If BOUNDS is an array-bounds structure type, return the bit position
1853    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1854    bound, if WHICH is 1.  The first bound is I=1.  */
1855
1856 static int
1857 desc_bound_bitpos (struct type *type, int i, int which)
1858 {
1859   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1860 }
1861
1862 /* If BOUNDS is an array-bounds structure type, return the bit field size
1863    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1864    bound, if WHICH is 1.  The first bound is I=1.  */
1865
1866 static int
1867 desc_bound_bitsize (struct type *type, int i, int which)
1868 {
1869   type = desc_base_type (type);
1870
1871   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1872     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1873   else
1874     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1875 }
1876
1877 /* If TYPE is the type of an array-bounds structure, the type of its
1878    Ith bound (numbering from 1).  Otherwise, NULL.  */
1879
1880 static struct type *
1881 desc_index_type (struct type *type, int i)
1882 {
1883   type = desc_base_type (type);
1884
1885   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1886     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1887   else
1888     return NULL;
1889 }
1890
1891 /* The number of index positions in the array-bounds type TYPE.
1892    Return 0 if TYPE is NULL.  */
1893
1894 static int
1895 desc_arity (struct type *type)
1896 {
1897   type = desc_base_type (type);
1898
1899   if (type != NULL)
1900     return TYPE_NFIELDS (type) / 2;
1901   return 0;
1902 }
1903
1904 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1905    an array descriptor type (representing an unconstrained array
1906    type).  */
1907
1908 static int
1909 ada_is_direct_array_type (struct type *type)
1910 {
1911   if (type == NULL)
1912     return 0;
1913   type = ada_check_typedef (type);
1914   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1915           || ada_is_array_descriptor_type (type));
1916 }
1917
1918 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1919  * to one.  */
1920
1921 static int
1922 ada_is_array_type (struct type *type)
1923 {
1924   while (type != NULL 
1925          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1926              || TYPE_CODE (type) == TYPE_CODE_REF))
1927     type = TYPE_TARGET_TYPE (type);
1928   return ada_is_direct_array_type (type);
1929 }
1930
1931 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1932
1933 int
1934 ada_is_simple_array_type (struct type *type)
1935 {
1936   if (type == NULL)
1937     return 0;
1938   type = ada_check_typedef (type);
1939   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1940           || (TYPE_CODE (type) == TYPE_CODE_PTR
1941               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1942                  == TYPE_CODE_ARRAY));
1943 }
1944
1945 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1946
1947 int
1948 ada_is_array_descriptor_type (struct type *type)
1949 {
1950   struct type *data_type = desc_data_target_type (type);
1951
1952   if (type == NULL)
1953     return 0;
1954   type = ada_check_typedef (type);
1955   return (data_type != NULL
1956           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1957           && desc_arity (desc_bounds_type (type)) > 0);
1958 }
1959
1960 /* Non-zero iff type is a partially mal-formed GNAT array
1961    descriptor.  FIXME: This is to compensate for some problems with
1962    debugging output from GNAT.  Re-examine periodically to see if it
1963    is still needed.  */
1964
1965 int
1966 ada_is_bogus_array_descriptor (struct type *type)
1967 {
1968   return
1969     type != NULL
1970     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1971     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1972         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1973     && !ada_is_array_descriptor_type (type);
1974 }
1975
1976
1977 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1978    (fat pointer) returns the type of the array data described---specifically,
1979    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1980    in from the descriptor; otherwise, they are left unspecified.  If
1981    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1982    returns NULL.  The result is simply the type of ARR if ARR is not
1983    a descriptor.  */
1984 struct type *
1985 ada_type_of_array (struct value *arr, int bounds)
1986 {
1987   if (ada_is_constrained_packed_array_type (value_type (arr)))
1988     return decode_constrained_packed_array_type (value_type (arr));
1989
1990   if (!ada_is_array_descriptor_type (value_type (arr)))
1991     return value_type (arr);
1992
1993   if (!bounds)
1994     {
1995       struct type *array_type =
1996         ada_check_typedef (desc_data_target_type (value_type (arr)));
1997
1998       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1999         TYPE_FIELD_BITSIZE (array_type, 0) =
2000           decode_packed_array_bitsize (value_type (arr));
2001       
2002       return array_type;
2003     }
2004   else
2005     {
2006       struct type *elt_type;
2007       int arity;
2008       struct value *descriptor;
2009
2010       elt_type = ada_array_element_type (value_type (arr), -1);
2011       arity = ada_array_arity (value_type (arr));
2012
2013       if (elt_type == NULL || arity == 0)
2014         return ada_check_typedef (value_type (arr));
2015
2016       descriptor = desc_bounds (arr);
2017       if (value_as_long (descriptor) == 0)
2018         return NULL;
2019       while (arity > 0)
2020         {
2021           struct type *range_type = alloc_type_copy (value_type (arr));
2022           struct type *array_type = alloc_type_copy (value_type (arr));
2023           struct value *low = desc_one_bound (descriptor, arity, 0);
2024           struct value *high = desc_one_bound (descriptor, arity, 1);
2025
2026           arity -= 1;
2027           create_static_range_type (range_type, value_type (low),
2028                                     longest_to_int (value_as_long (low)),
2029                                     longest_to_int (value_as_long (high)));
2030           elt_type = create_array_type (array_type, elt_type, range_type);
2031
2032           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2033             {
2034               /* We need to store the element packed bitsize, as well as
2035                  recompute the array size, because it was previously
2036                  computed based on the unpacked element size.  */
2037               LONGEST lo = value_as_long (low);
2038               LONGEST hi = value_as_long (high);
2039
2040               TYPE_FIELD_BITSIZE (elt_type, 0) =
2041                 decode_packed_array_bitsize (value_type (arr));
2042               /* If the array has no element, then the size is already
2043                  zero, and does not need to be recomputed.  */
2044               if (lo < hi)
2045                 {
2046                   int array_bitsize =
2047                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2048
2049                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2050                 }
2051             }
2052         }
2053
2054       return lookup_pointer_type (elt_type);
2055     }
2056 }
2057
2058 /* If ARR does not represent an array, returns ARR unchanged.
2059    Otherwise, returns either a standard GDB array with bounds set
2060    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2061    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2062
2063 struct value *
2064 ada_coerce_to_simple_array_ptr (struct value *arr)
2065 {
2066   if (ada_is_array_descriptor_type (value_type (arr)))
2067     {
2068       struct type *arrType = ada_type_of_array (arr, 1);
2069
2070       if (arrType == NULL)
2071         return NULL;
2072       return value_cast (arrType, value_copy (desc_data (arr)));
2073     }
2074   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2075     return decode_constrained_packed_array (arr);
2076   else
2077     return arr;
2078 }
2079
2080 /* If ARR does not represent an array, returns ARR unchanged.
2081    Otherwise, returns a standard GDB array describing ARR (which may
2082    be ARR itself if it already is in the proper form).  */
2083
2084 struct value *
2085 ada_coerce_to_simple_array (struct value *arr)
2086 {
2087   if (ada_is_array_descriptor_type (value_type (arr)))
2088     {
2089       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2090
2091       if (arrVal == NULL)
2092         error (_("Bounds unavailable for null array pointer."));
2093       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2094       return value_ind (arrVal);
2095     }
2096   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2097     return decode_constrained_packed_array (arr);
2098   else
2099     return arr;
2100 }
2101
2102 /* If TYPE represents a GNAT array type, return it translated to an
2103    ordinary GDB array type (possibly with BITSIZE fields indicating
2104    packing).  For other types, is the identity.  */
2105
2106 struct type *
2107 ada_coerce_to_simple_array_type (struct type *type)
2108 {
2109   if (ada_is_constrained_packed_array_type (type))
2110     return decode_constrained_packed_array_type (type);
2111
2112   if (ada_is_array_descriptor_type (type))
2113     return ada_check_typedef (desc_data_target_type (type));
2114
2115   return type;
2116 }
2117
2118 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2119
2120 static int
2121 ada_is_packed_array_type  (struct type *type)
2122 {
2123   if (type == NULL)
2124     return 0;
2125   type = desc_base_type (type);
2126   type = ada_check_typedef (type);
2127   return
2128     ada_type_name (type) != NULL
2129     && strstr (ada_type_name (type), "___XP") != NULL;
2130 }
2131
2132 /* Non-zero iff TYPE represents a standard GNAT constrained
2133    packed-array type.  */
2134
2135 int
2136 ada_is_constrained_packed_array_type (struct type *type)
2137 {
2138   return ada_is_packed_array_type (type)
2139     && !ada_is_array_descriptor_type (type);
2140 }
2141
2142 /* Non-zero iff TYPE represents an array descriptor for a
2143    unconstrained packed-array type.  */
2144
2145 static int
2146 ada_is_unconstrained_packed_array_type (struct type *type)
2147 {
2148   return ada_is_packed_array_type (type)
2149     && ada_is_array_descriptor_type (type);
2150 }
2151
2152 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2153    return the size of its elements in bits.  */
2154
2155 static long
2156 decode_packed_array_bitsize (struct type *type)
2157 {
2158   const char *raw_name;
2159   const char *tail;
2160   long bits;
2161
2162   /* Access to arrays implemented as fat pointers are encoded as a typedef
2163      of the fat pointer type.  We need the name of the fat pointer type
2164      to do the decoding, so strip the typedef layer.  */
2165   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2166     type = ada_typedef_target_type (type);
2167
2168   raw_name = ada_type_name (ada_check_typedef (type));
2169   if (!raw_name)
2170     raw_name = ada_type_name (desc_base_type (type));
2171
2172   if (!raw_name)
2173     return 0;
2174
2175   tail = strstr (raw_name, "___XP");
2176   gdb_assert (tail != NULL);
2177
2178   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2179     {
2180       lim_warning
2181         (_("could not understand bit size information on packed array"));
2182       return 0;
2183     }
2184
2185   return bits;
2186 }
2187
2188 /* Given that TYPE is a standard GDB array type with all bounds filled
2189    in, and that the element size of its ultimate scalar constituents
2190    (that is, either its elements, or, if it is an array of arrays, its
2191    elements' elements, etc.) is *ELT_BITS, return an identical type,
2192    but with the bit sizes of its elements (and those of any
2193    constituent arrays) recorded in the BITSIZE components of its
2194    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2195    in bits.
2196
2197    Note that, for arrays whose index type has an XA encoding where
2198    a bound references a record discriminant, getting that discriminant,
2199    and therefore the actual value of that bound, is not possible
2200    because none of the given parameters gives us access to the record.
2201    This function assumes that it is OK in the context where it is being
2202    used to return an array whose bounds are still dynamic and where
2203    the length is arbitrary.  */
2204
2205 static struct type *
2206 constrained_packed_array_type (struct type *type, long *elt_bits)
2207 {
2208   struct type *new_elt_type;
2209   struct type *new_type;
2210   struct type *index_type_desc;
2211   struct type *index_type;
2212   LONGEST low_bound, high_bound;
2213
2214   type = ada_check_typedef (type);
2215   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2216     return type;
2217
2218   index_type_desc = ada_find_parallel_type (type, "___XA");
2219   if (index_type_desc)
2220     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2221                                       NULL);
2222   else
2223     index_type = TYPE_INDEX_TYPE (type);
2224
2225   new_type = alloc_type_copy (type);
2226   new_elt_type =
2227     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2228                                    elt_bits);
2229   create_array_type (new_type, new_elt_type, index_type);
2230   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2231   TYPE_NAME (new_type) = ada_type_name (type);
2232
2233   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2234        && is_dynamic_type (check_typedef (index_type)))
2235       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2236     low_bound = high_bound = 0;
2237   if (high_bound < low_bound)
2238     *elt_bits = TYPE_LENGTH (new_type) = 0;
2239   else
2240     {
2241       *elt_bits *= (high_bound - low_bound + 1);
2242       TYPE_LENGTH (new_type) =
2243         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2244     }
2245
2246   TYPE_FIXED_INSTANCE (new_type) = 1;
2247   return new_type;
2248 }
2249
2250 /* The array type encoded by TYPE, where
2251    ada_is_constrained_packed_array_type (TYPE).  */
2252
2253 static struct type *
2254 decode_constrained_packed_array_type (struct type *type)
2255 {
2256   const char *raw_name = ada_type_name (ada_check_typedef (type));
2257   char *name;
2258   const char *tail;
2259   struct type *shadow_type;
2260   long bits;
2261
2262   if (!raw_name)
2263     raw_name = ada_type_name (desc_base_type (type));
2264
2265   if (!raw_name)
2266     return NULL;
2267
2268   name = (char *) alloca (strlen (raw_name) + 1);
2269   tail = strstr (raw_name, "___XP");
2270   type = desc_base_type (type);
2271
2272   memcpy (name, raw_name, tail - raw_name);
2273   name[tail - raw_name] = '\000';
2274
2275   shadow_type = ada_find_parallel_type_with_name (type, name);
2276
2277   if (shadow_type == NULL)
2278     {
2279       lim_warning (_("could not find bounds information on packed array"));
2280       return NULL;
2281     }
2282   shadow_type = check_typedef (shadow_type);
2283
2284   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2285     {
2286       lim_warning (_("could not understand bounds "
2287                      "information on packed array"));
2288       return NULL;
2289     }
2290
2291   bits = decode_packed_array_bitsize (type);
2292   return constrained_packed_array_type (shadow_type, &bits);
2293 }
2294
2295 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2296    array, returns a simple array that denotes that array.  Its type is a
2297    standard GDB array type except that the BITSIZEs of the array
2298    target types are set to the number of bits in each element, and the
2299    type length is set appropriately.  */
2300
2301 static struct value *
2302 decode_constrained_packed_array (struct value *arr)
2303 {
2304   struct type *type;
2305
2306   /* If our value is a pointer, then dereference it. Likewise if
2307      the value is a reference.  Make sure that this operation does not
2308      cause the target type to be fixed, as this would indirectly cause
2309      this array to be decoded.  The rest of the routine assumes that
2310      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2311      and "value_ind" routines to perform the dereferencing, as opposed
2312      to using "ada_coerce_ref" or "ada_value_ind".  */
2313   arr = coerce_ref (arr);
2314   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2315     arr = value_ind (arr);
2316
2317   type = decode_constrained_packed_array_type (value_type (arr));
2318   if (type == NULL)
2319     {
2320       error (_("can't unpack array"));
2321       return NULL;
2322     }
2323
2324   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2325       && ada_is_modular_type (value_type (arr)))
2326     {
2327        /* This is a (right-justified) modular type representing a packed
2328          array with no wrapper.  In order to interpret the value through
2329          the (left-justified) packed array type we just built, we must
2330          first left-justify it.  */
2331       int bit_size, bit_pos;
2332       ULONGEST mod;
2333
2334       mod = ada_modulus (value_type (arr)) - 1;
2335       bit_size = 0;
2336       while (mod > 0)
2337         {
2338           bit_size += 1;
2339           mod >>= 1;
2340         }
2341       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2342       arr = ada_value_primitive_packed_val (arr, NULL,
2343                                             bit_pos / HOST_CHAR_BIT,
2344                                             bit_pos % HOST_CHAR_BIT,
2345                                             bit_size,
2346                                             type);
2347     }
2348
2349   return coerce_unspec_val_to_type (arr, type);
2350 }
2351
2352
2353 /* The value of the element of packed array ARR at the ARITY indices
2354    given in IND.   ARR must be a simple array.  */
2355
2356 static struct value *
2357 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2358 {
2359   int i;
2360   int bits, elt_off, bit_off;
2361   long elt_total_bit_offset;
2362   struct type *elt_type;
2363   struct value *v;
2364
2365   bits = 0;
2366   elt_total_bit_offset = 0;
2367   elt_type = ada_check_typedef (value_type (arr));
2368   for (i = 0; i < arity; i += 1)
2369     {
2370       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2371           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2372         error
2373           (_("attempt to do packed indexing of "
2374              "something other than a packed array"));
2375       else
2376         {
2377           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2378           LONGEST lowerbound, upperbound;
2379           LONGEST idx;
2380
2381           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2382             {
2383               lim_warning (_("don't know bounds of array"));
2384               lowerbound = upperbound = 0;
2385             }
2386
2387           idx = pos_atr (ind[i]);
2388           if (idx < lowerbound || idx > upperbound)
2389             lim_warning (_("packed array index %ld out of bounds"),
2390                          (long) idx);
2391           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2392           elt_total_bit_offset += (idx - lowerbound) * bits;
2393           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2394         }
2395     }
2396   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2397   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2398
2399   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2400                                       bits, elt_type);
2401   return v;
2402 }
2403
2404 /* Non-zero iff TYPE includes negative integer values.  */
2405
2406 static int
2407 has_negatives (struct type *type)
2408 {
2409   switch (TYPE_CODE (type))
2410     {
2411     default:
2412       return 0;
2413     case TYPE_CODE_INT:
2414       return !TYPE_UNSIGNED (type);
2415     case TYPE_CODE_RANGE:
2416       return TYPE_LOW_BOUND (type) < 0;
2417     }
2418 }
2419
2420 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2421    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2422    the unpacked buffer.
2423
2424    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2425    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2426
2427    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2428    zero otherwise.
2429
2430    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2431
2432    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2433
2434 static void
2435 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2436                           gdb_byte *unpacked, int unpacked_len,
2437                           int is_big_endian, int is_signed_type,
2438                           int is_scalar)
2439 {
2440   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2441   int src_idx;                  /* Index into the source area */
2442   int src_bytes_left;           /* Number of source bytes left to process.  */
2443   int srcBitsLeft;              /* Number of source bits left to move */
2444   int unusedLS;                 /* Number of bits in next significant
2445                                    byte of source that are unused */
2446
2447   int unpacked_idx;             /* Index into the unpacked buffer */
2448   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2449
2450   unsigned long accum;          /* Staging area for bits being transferred */
2451   int accumSize;                /* Number of meaningful bits in accum */
2452   unsigned char sign;
2453
2454   /* Transmit bytes from least to most significant; delta is the direction
2455      the indices move.  */
2456   int delta = is_big_endian ? -1 : 1;
2457
2458   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2459      bits from SRC.  .*/
2460   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2461     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2462            bit_size, unpacked_len);
2463
2464   srcBitsLeft = bit_size;
2465   src_bytes_left = src_len;
2466   unpacked_bytes_left = unpacked_len;
2467   sign = 0;
2468
2469   if (is_big_endian)
2470     {
2471       src_idx = src_len - 1;
2472       if (is_signed_type
2473           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2474         sign = ~0;
2475
2476       unusedLS =
2477         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2478         % HOST_CHAR_BIT;
2479
2480       if (is_scalar)
2481         {
2482           accumSize = 0;
2483           unpacked_idx = unpacked_len - 1;
2484         }
2485       else
2486         {
2487           /* Non-scalar values must be aligned at a byte boundary...  */
2488           accumSize =
2489             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2490           /* ... And are placed at the beginning (most-significant) bytes
2491              of the target.  */
2492           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2493           unpacked_bytes_left = unpacked_idx + 1;
2494         }
2495     }
2496   else
2497     {
2498       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2499
2500       src_idx = unpacked_idx = 0;
2501       unusedLS = bit_offset;
2502       accumSize = 0;
2503
2504       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2505         sign = ~0;
2506     }
2507
2508   accum = 0;
2509   while (src_bytes_left > 0)
2510     {
2511       /* Mask for removing bits of the next source byte that are not
2512          part of the value.  */
2513       unsigned int unusedMSMask =
2514         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2515         1;
2516       /* Sign-extend bits for this byte.  */
2517       unsigned int signMask = sign & ~unusedMSMask;
2518
2519       accum |=
2520         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2521       accumSize += HOST_CHAR_BIT - unusedLS;
2522       if (accumSize >= HOST_CHAR_BIT)
2523         {
2524           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2525           accumSize -= HOST_CHAR_BIT;
2526           accum >>= HOST_CHAR_BIT;
2527           unpacked_bytes_left -= 1;
2528           unpacked_idx += delta;
2529         }
2530       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2531       unusedLS = 0;
2532       src_bytes_left -= 1;
2533       src_idx += delta;
2534     }
2535   while (unpacked_bytes_left > 0)
2536     {
2537       accum |= sign << accumSize;
2538       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2539       accumSize -= HOST_CHAR_BIT;
2540       if (accumSize < 0)
2541         accumSize = 0;
2542       accum >>= HOST_CHAR_BIT;
2543       unpacked_bytes_left -= 1;
2544       unpacked_idx += delta;
2545     }
2546 }
2547
2548 /* Create a new value of type TYPE from the contents of OBJ starting
2549    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2550    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2551    assigning through the result will set the field fetched from.
2552    VALADDR is ignored unless OBJ is NULL, in which case,
2553    VALADDR+OFFSET must address the start of storage containing the 
2554    packed value.  The value returned  in this case is never an lval.
2555    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2556
2557 struct value *
2558 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2559                                 long offset, int bit_offset, int bit_size,
2560                                 struct type *type)
2561 {
2562   struct value *v;
2563   const gdb_byte *src;                /* First byte containing data to unpack */
2564   gdb_byte *unpacked;
2565   const int is_scalar = is_scalar_type (type);
2566   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2567   gdb::byte_vector staging;
2568
2569   type = ada_check_typedef (type);
2570
2571   if (obj == NULL)
2572     src = valaddr + offset;
2573   else
2574     src = value_contents (obj) + offset;
2575
2576   if (is_dynamic_type (type))
2577     {
2578       /* The length of TYPE might by dynamic, so we need to resolve
2579          TYPE in order to know its actual size, which we then use
2580          to create the contents buffer of the value we return.
2581          The difficulty is that the data containing our object is
2582          packed, and therefore maybe not at a byte boundary.  So, what
2583          we do, is unpack the data into a byte-aligned buffer, and then
2584          use that buffer as our object's value for resolving the type.  */
2585       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2586       staging.resize (staging_len);
2587
2588       ada_unpack_from_contents (src, bit_offset, bit_size,
2589                                 staging.data (), staging.size (),
2590                                 is_big_endian, has_negatives (type),
2591                                 is_scalar);
2592       type = resolve_dynamic_type (type, staging.data (), 0);
2593       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2594         {
2595           /* This happens when the length of the object is dynamic,
2596              and is actually smaller than the space reserved for it.
2597              For instance, in an array of variant records, the bit_size
2598              we're given is the array stride, which is constant and
2599              normally equal to the maximum size of its element.
2600              But, in reality, each element only actually spans a portion
2601              of that stride.  */
2602           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2603         }
2604     }
2605
2606   if (obj == NULL)
2607     {
2608       v = allocate_value (type);
2609       src = valaddr + offset;
2610     }
2611   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2612     {
2613       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2614       gdb_byte *buf;
2615
2616       v = value_at (type, value_address (obj) + offset);
2617       buf = (gdb_byte *) alloca (src_len);
2618       read_memory (value_address (v), buf, src_len);
2619       src = buf;
2620     }
2621   else
2622     {
2623       v = allocate_value (type);
2624       src = value_contents (obj) + offset;
2625     }
2626
2627   if (obj != NULL)
2628     {
2629       long new_offset = offset;
2630
2631       set_value_component_location (v, obj);
2632       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2633       set_value_bitsize (v, bit_size);
2634       if (value_bitpos (v) >= HOST_CHAR_BIT)
2635         {
2636           ++new_offset;
2637           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2638         }
2639       set_value_offset (v, new_offset);
2640
2641       /* Also set the parent value.  This is needed when trying to
2642          assign a new value (in inferior memory).  */
2643       set_value_parent (v, obj);
2644     }
2645   else
2646     set_value_bitsize (v, bit_size);
2647   unpacked = value_contents_writeable (v);
2648
2649   if (bit_size == 0)
2650     {
2651       memset (unpacked, 0, TYPE_LENGTH (type));
2652       return v;
2653     }
2654
2655   if (staging.size () == TYPE_LENGTH (type))
2656     {
2657       /* Small short-cut: If we've unpacked the data into a buffer
2658          of the same size as TYPE's length, then we can reuse that,
2659          instead of doing the unpacking again.  */
2660       memcpy (unpacked, staging.data (), staging.size ());
2661     }
2662   else
2663     ada_unpack_from_contents (src, bit_offset, bit_size,
2664                               unpacked, TYPE_LENGTH (type),
2665                               is_big_endian, has_negatives (type), is_scalar);
2666
2667   return v;
2668 }
2669
2670 /* Store the contents of FROMVAL into the location of TOVAL.
2671    Return a new value with the location of TOVAL and contents of
2672    FROMVAL.   Handles assignment into packed fields that have
2673    floating-point or non-scalar types.  */
2674
2675 static struct value *
2676 ada_value_assign (struct value *toval, struct value *fromval)
2677 {
2678   struct type *type = value_type (toval);
2679   int bits = value_bitsize (toval);
2680
2681   toval = ada_coerce_ref (toval);
2682   fromval = ada_coerce_ref (fromval);
2683
2684   if (ada_is_direct_array_type (value_type (toval)))
2685     toval = ada_coerce_to_simple_array (toval);
2686   if (ada_is_direct_array_type (value_type (fromval)))
2687     fromval = ada_coerce_to_simple_array (fromval);
2688
2689   if (!deprecated_value_modifiable (toval))
2690     error (_("Left operand of assignment is not a modifiable lvalue."));
2691
2692   if (VALUE_LVAL (toval) == lval_memory
2693       && bits > 0
2694       && (TYPE_CODE (type) == TYPE_CODE_FLT
2695           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2696     {
2697       int len = (value_bitpos (toval)
2698                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2699       int from_size;
2700       gdb_byte *buffer = (gdb_byte *) alloca (len);
2701       struct value *val;
2702       CORE_ADDR to_addr = value_address (toval);
2703
2704       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2705         fromval = value_cast (type, fromval);
2706
2707       read_memory (to_addr, buffer, len);
2708       from_size = value_bitsize (fromval);
2709       if (from_size == 0)
2710         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2711       if (gdbarch_bits_big_endian (get_type_arch (type)))
2712         copy_bitwise (buffer, value_bitpos (toval),
2713                       value_contents (fromval), from_size - bits, bits, 1);
2714       else
2715         copy_bitwise (buffer, value_bitpos (toval),
2716                       value_contents (fromval), 0, bits, 0);
2717       write_memory_with_notification (to_addr, buffer, len);
2718
2719       val = value_copy (toval);
2720       memcpy (value_contents_raw (val), value_contents (fromval),
2721               TYPE_LENGTH (type));
2722       deprecated_set_value_type (val, type);
2723
2724       return val;
2725     }
2726
2727   return value_assign (toval, fromval);
2728 }
2729
2730
2731 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2732    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2733    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2734    COMPONENT, and not the inferior's memory.  The current contents
2735    of COMPONENT are ignored.
2736
2737    Although not part of the initial design, this function also works
2738    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2739    had a null address, and COMPONENT had an address which is equal to
2740    its offset inside CONTAINER.  */
2741
2742 static void
2743 value_assign_to_component (struct value *container, struct value *component,
2744                            struct value *val)
2745 {
2746   LONGEST offset_in_container =
2747     (LONGEST)  (value_address (component) - value_address (container));
2748   int bit_offset_in_container =
2749     value_bitpos (component) - value_bitpos (container);
2750   int bits;
2751
2752   val = value_cast (value_type (component), val);
2753
2754   if (value_bitsize (component) == 0)
2755     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2756   else
2757     bits = value_bitsize (component);
2758
2759   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2760     {
2761       int src_offset;
2762
2763       if (is_scalar_type (check_typedef (value_type (component))))
2764         src_offset
2765           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2766       else
2767         src_offset = 0;
2768       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2769                     value_bitpos (container) + bit_offset_in_container,
2770                     value_contents (val), src_offset, bits, 1);
2771     }
2772   else
2773     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2774                   value_bitpos (container) + bit_offset_in_container,
2775                   value_contents (val), 0, bits, 0);
2776 }
2777
2778 /* Determine if TYPE is an access to an unconstrained array.  */
2779
2780 bool
2781 ada_is_access_to_unconstrained_array (struct type *type)
2782 {
2783   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2784           && is_thick_pntr (ada_typedef_target_type (type)));
2785 }
2786
2787 /* The value of the element of array ARR at the ARITY indices given in IND.
2788    ARR may be either a simple array, GNAT array descriptor, or pointer
2789    thereto.  */
2790
2791 struct value *
2792 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2793 {
2794   int k;
2795   struct value *elt;
2796   struct type *elt_type;
2797
2798   elt = ada_coerce_to_simple_array (arr);
2799
2800   elt_type = ada_check_typedef (value_type (elt));
2801   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2802       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2803     return value_subscript_packed (elt, arity, ind);
2804
2805   for (k = 0; k < arity; k += 1)
2806     {
2807       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2808
2809       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2810         error (_("too many subscripts (%d expected)"), k);
2811
2812       elt = value_subscript (elt, pos_atr (ind[k]));
2813
2814       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2815           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2816         {
2817           /* The element is a typedef to an unconstrained array,
2818              except that the value_subscript call stripped the
2819              typedef layer.  The typedef layer is GNAT's way to
2820              specify that the element is, at the source level, an
2821              access to the unconstrained array, rather than the
2822              unconstrained array.  So, we need to restore that
2823              typedef layer, which we can do by forcing the element's
2824              type back to its original type. Otherwise, the returned
2825              value is going to be printed as the array, rather
2826              than as an access.  Another symptom of the same issue
2827              would be that an expression trying to dereference the
2828              element would also be improperly rejected.  */
2829           deprecated_set_value_type (elt, saved_elt_type);
2830         }
2831
2832       elt_type = ada_check_typedef (value_type (elt));
2833     }
2834
2835   return elt;
2836 }
2837
2838 /* Assuming ARR is a pointer to a GDB array, the value of the element
2839    of *ARR at the ARITY indices given in IND.
2840    Does not read the entire array into memory.
2841
2842    Note: Unlike what one would expect, this function is used instead of
2843    ada_value_subscript for basically all non-packed array types.  The reason
2844    for this is that a side effect of doing our own pointer arithmetics instead
2845    of relying on value_subscript is that there is no implicit typedef peeling.
2846    This is important for arrays of array accesses, where it allows us to
2847    preserve the fact that the array's element is an array access, where the
2848    access part os encoded in a typedef layer.  */
2849
2850 static struct value *
2851 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2852 {
2853   int k;
2854   struct value *array_ind = ada_value_ind (arr);
2855   struct type *type
2856     = check_typedef (value_enclosing_type (array_ind));
2857
2858   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2859       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2860     return value_subscript_packed (array_ind, arity, ind);
2861
2862   for (k = 0; k < arity; k += 1)
2863     {
2864       LONGEST lwb, upb;
2865       struct value *lwb_value;
2866
2867       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2868         error (_("too many subscripts (%d expected)"), k);
2869       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2870                         value_copy (arr));
2871       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2872       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2873       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2874       type = TYPE_TARGET_TYPE (type);
2875     }
2876
2877   return value_ind (arr);
2878 }
2879
2880 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2881    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2882    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2883    this array is LOW, as per Ada rules.  */
2884 static struct value *
2885 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2886                           int low, int high)
2887 {
2888   struct type *type0 = ada_check_typedef (type);
2889   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2890   struct type *index_type
2891     = create_static_range_type (NULL, base_index_type, low, high);
2892   struct type *slice_type = create_array_type_with_stride
2893                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2894                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2895                                TYPE_FIELD_BITSIZE (type0, 0));
2896   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2897   LONGEST base_low_pos, low_pos;
2898   CORE_ADDR base;
2899
2900   if (!discrete_position (base_index_type, low, &low_pos)
2901       || !discrete_position (base_index_type, base_low, &base_low_pos))
2902     {
2903       warning (_("unable to get positions in slice, use bounds instead"));
2904       low_pos = low;
2905       base_low_pos = base_low;
2906     }
2907
2908   base = value_as_address (array_ptr)
2909     + ((low_pos - base_low_pos)
2910        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2911   return value_at_lazy (slice_type, base);
2912 }
2913
2914
2915 static struct value *
2916 ada_value_slice (struct value *array, int low, int high)
2917 {
2918   struct type *type = ada_check_typedef (value_type (array));
2919   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2920   struct type *index_type
2921     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2922   struct type *slice_type = create_array_type_with_stride
2923                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2924                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2925                                TYPE_FIELD_BITSIZE (type, 0));
2926   LONGEST low_pos, high_pos;
2927
2928   if (!discrete_position (base_index_type, low, &low_pos)
2929       || !discrete_position (base_index_type, high, &high_pos))
2930     {
2931       warning (_("unable to get positions in slice, use bounds instead"));
2932       low_pos = low;
2933       high_pos = high;
2934     }
2935
2936   return value_cast (slice_type,
2937                      value_slice (array, low, high_pos - low_pos + 1));
2938 }
2939
2940 /* If type is a record type in the form of a standard GNAT array
2941    descriptor, returns the number of dimensions for type.  If arr is a
2942    simple array, returns the number of "array of"s that prefix its
2943    type designation.  Otherwise, returns 0.  */
2944
2945 int
2946 ada_array_arity (struct type *type)
2947 {
2948   int arity;
2949
2950   if (type == NULL)
2951     return 0;
2952
2953   type = desc_base_type (type);
2954
2955   arity = 0;
2956   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2957     return desc_arity (desc_bounds_type (type));
2958   else
2959     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2960       {
2961         arity += 1;
2962         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2963       }
2964
2965   return arity;
2966 }
2967
2968 /* If TYPE is a record type in the form of a standard GNAT array
2969    descriptor or a simple array type, returns the element type for
2970    TYPE after indexing by NINDICES indices, or by all indices if
2971    NINDICES is -1.  Otherwise, returns NULL.  */
2972
2973 struct type *
2974 ada_array_element_type (struct type *type, int nindices)
2975 {
2976   type = desc_base_type (type);
2977
2978   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2979     {
2980       int k;
2981       struct type *p_array_type;
2982
2983       p_array_type = desc_data_target_type (type);
2984
2985       k = ada_array_arity (type);
2986       if (k == 0)
2987         return NULL;
2988
2989       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2990       if (nindices >= 0 && k > nindices)
2991         k = nindices;
2992       while (k > 0 && p_array_type != NULL)
2993         {
2994           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2995           k -= 1;
2996         }
2997       return p_array_type;
2998     }
2999   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3000     {
3001       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3002         {
3003           type = TYPE_TARGET_TYPE (type);
3004           nindices -= 1;
3005         }
3006       return type;
3007     }
3008
3009   return NULL;
3010 }
3011
3012 /* The type of nth index in arrays of given type (n numbering from 1).
3013    Does not examine memory.  Throws an error if N is invalid or TYPE
3014    is not an array type.  NAME is the name of the Ada attribute being
3015    evaluated ('range, 'first, 'last, or 'length); it is used in building
3016    the error message.  */
3017
3018 static struct type *
3019 ada_index_type (struct type *type, int n, const char *name)
3020 {
3021   struct type *result_type;
3022
3023   type = desc_base_type (type);
3024
3025   if (n < 0 || n > ada_array_arity (type))
3026     error (_("invalid dimension number to '%s"), name);
3027
3028   if (ada_is_simple_array_type (type))
3029     {
3030       int i;
3031
3032       for (i = 1; i < n; i += 1)
3033         type = TYPE_TARGET_TYPE (type);
3034       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3035       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3036          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3037          perhaps stabsread.c would make more sense.  */
3038       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3039         result_type = NULL;
3040     }
3041   else
3042     {
3043       result_type = desc_index_type (desc_bounds_type (type), n);
3044       if (result_type == NULL)
3045         error (_("attempt to take bound of something that is not an array"));
3046     }
3047
3048   return result_type;
3049 }
3050
3051 /* Given that arr is an array type, returns the lower bound of the
3052    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3053    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3054    array-descriptor type.  It works for other arrays with bounds supplied
3055    by run-time quantities other than discriminants.  */
3056
3057 static LONGEST
3058 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3059 {
3060   struct type *type, *index_type_desc, *index_type;
3061   int i;
3062
3063   gdb_assert (which == 0 || which == 1);
3064
3065   if (ada_is_constrained_packed_array_type (arr_type))
3066     arr_type = decode_constrained_packed_array_type (arr_type);
3067
3068   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3069     return (LONGEST) - which;
3070
3071   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3072     type = TYPE_TARGET_TYPE (arr_type);
3073   else
3074     type = arr_type;
3075
3076   if (TYPE_FIXED_INSTANCE (type))
3077     {
3078       /* The array has already been fixed, so we do not need to
3079          check the parallel ___XA type again.  That encoding has
3080          already been applied, so ignore it now.  */
3081       index_type_desc = NULL;
3082     }
3083   else
3084     {
3085       index_type_desc = ada_find_parallel_type (type, "___XA");
3086       ada_fixup_array_indexes_type (index_type_desc);
3087     }
3088
3089   if (index_type_desc != NULL)
3090     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3091                                       NULL);
3092   else
3093     {
3094       struct type *elt_type = check_typedef (type);
3095
3096       for (i = 1; i < n; i++)
3097         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3098
3099       index_type = TYPE_INDEX_TYPE (elt_type);
3100     }
3101
3102   return
3103     (LONGEST) (which == 0
3104                ? ada_discrete_type_low_bound (index_type)
3105                : ada_discrete_type_high_bound (index_type));
3106 }
3107
3108 /* Given that arr is an array value, returns the lower bound of the
3109    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3110    WHICH is 1.  This routine will also work for arrays with bounds
3111    supplied by run-time quantities other than discriminants.  */
3112
3113 static LONGEST
3114 ada_array_bound (struct value *arr, int n, int which)
3115 {
3116   struct type *arr_type;
3117
3118   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3119     arr = value_ind (arr);
3120   arr_type = value_enclosing_type (arr);
3121
3122   if (ada_is_constrained_packed_array_type (arr_type))
3123     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3124   else if (ada_is_simple_array_type (arr_type))
3125     return ada_array_bound_from_type (arr_type, n, which);
3126   else
3127     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3128 }
3129
3130 /* Given that arr is an array value, returns the length of the
3131    nth index.  This routine will also work for arrays with bounds
3132    supplied by run-time quantities other than discriminants.
3133    Does not work for arrays indexed by enumeration types with representation
3134    clauses at the moment.  */
3135
3136 static LONGEST
3137 ada_array_length (struct value *arr, int n)
3138 {
3139   struct type *arr_type, *index_type;
3140   int low, high;
3141
3142   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3143     arr = value_ind (arr);
3144   arr_type = value_enclosing_type (arr);
3145
3146   if (ada_is_constrained_packed_array_type (arr_type))
3147     return ada_array_length (decode_constrained_packed_array (arr), n);
3148
3149   if (ada_is_simple_array_type (arr_type))
3150     {
3151       low = ada_array_bound_from_type (arr_type, n, 0);
3152       high = ada_array_bound_from_type (arr_type, n, 1);
3153     }
3154   else
3155     {
3156       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3157       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3158     }
3159
3160   arr_type = check_typedef (arr_type);
3161   index_type = ada_index_type (arr_type, n, "length");
3162   if (index_type != NULL)
3163     {
3164       struct type *base_type;
3165       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3166         base_type = TYPE_TARGET_TYPE (index_type);
3167       else
3168         base_type = index_type;
3169
3170       low = pos_atr (value_from_longest (base_type, low));
3171       high = pos_atr (value_from_longest (base_type, high));
3172     }
3173   return high - low + 1;
3174 }
3175
3176 /* An array whose type is that of ARR_TYPE (an array type), with
3177    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3178    less than LOW, then LOW-1 is used.  */
3179
3180 static struct value *
3181 empty_array (struct type *arr_type, int low, int high)
3182 {
3183   struct type *arr_type0 = ada_check_typedef (arr_type);
3184   struct type *index_type
3185     = create_static_range_type
3186         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3187          high < low ? low - 1 : high);
3188   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3189
3190   return allocate_value (create_array_type (NULL, elt_type, index_type));
3191 }
3192 \f
3193
3194                                 /* Name resolution */
3195
3196 /* The "decoded" name for the user-definable Ada operator corresponding
3197    to OP.  */
3198
3199 static const char *
3200 ada_decoded_op_name (enum exp_opcode op)
3201 {
3202   int i;
3203
3204   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3205     {
3206       if (ada_opname_table[i].op == op)
3207         return ada_opname_table[i].decoded;
3208     }
3209   error (_("Could not find operator name for opcode"));
3210 }
3211
3212
3213 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3214    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3215    undefined namespace) and converts operators that are
3216    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3217    non-null, it provides a preferred result type [at the moment, only
3218    type void has any effect---causing procedures to be preferred over
3219    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3220    return type is preferred.  May change (expand) *EXP.  */
3221
3222 static void
3223 resolve (expression_up *expp, int void_context_p)
3224 {
3225   struct type *context_type = NULL;
3226   int pc = 0;
3227
3228   if (void_context_p)
3229     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3230
3231   resolve_subexp (expp, &pc, 1, context_type);
3232 }
3233
3234 /* Resolve the operator of the subexpression beginning at
3235    position *POS of *EXPP.  "Resolving" consists of replacing
3236    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3237    with their resolutions, replacing built-in operators with
3238    function calls to user-defined operators, where appropriate, and,
3239    when DEPROCEDURE_P is non-zero, converting function-valued variables
3240    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3241    are as in ada_resolve, above.  */
3242
3243 static struct value *
3244 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3245                 struct type *context_type)
3246 {
3247   int pc = *pos;
3248   int i;
3249   struct expression *exp;       /* Convenience: == *expp.  */
3250   enum exp_opcode op = (*expp)->elts[pc].opcode;
3251   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3252   int nargs;                    /* Number of operands.  */
3253   int oplen;
3254
3255   argvec = NULL;
3256   nargs = 0;
3257   exp = expp->get ();
3258
3259   /* Pass one: resolve operands, saving their types and updating *pos,
3260      if needed.  */
3261   switch (op)
3262     {
3263     case OP_FUNCALL:
3264       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3265           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3266         *pos += 7;
3267       else
3268         {
3269           *pos += 3;
3270           resolve_subexp (expp, pos, 0, NULL);
3271         }
3272       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3273       break;
3274
3275     case UNOP_ADDR:
3276       *pos += 1;
3277       resolve_subexp (expp, pos, 0, NULL);
3278       break;
3279
3280     case UNOP_QUAL:
3281       *pos += 3;
3282       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3283       break;
3284
3285     case OP_ATR_MODULUS:
3286     case OP_ATR_SIZE:
3287     case OP_ATR_TAG:
3288     case OP_ATR_FIRST:
3289     case OP_ATR_LAST:
3290     case OP_ATR_LENGTH:
3291     case OP_ATR_POS:
3292     case OP_ATR_VAL:
3293     case OP_ATR_MIN:
3294     case OP_ATR_MAX:
3295     case TERNOP_IN_RANGE:
3296     case BINOP_IN_BOUNDS:
3297     case UNOP_IN_RANGE:
3298     case OP_AGGREGATE:
3299     case OP_OTHERS:
3300     case OP_CHOICES:
3301     case OP_POSITIONAL:
3302     case OP_DISCRETE_RANGE:
3303     case OP_NAME:
3304       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3305       *pos += oplen;
3306       break;
3307
3308     case BINOP_ASSIGN:
3309       {
3310         struct value *arg1;
3311
3312         *pos += 1;
3313         arg1 = resolve_subexp (expp, pos, 0, NULL);
3314         if (arg1 == NULL)
3315           resolve_subexp (expp, pos, 1, NULL);
3316         else
3317           resolve_subexp (expp, pos, 1, value_type (arg1));
3318         break;
3319       }
3320
3321     case UNOP_CAST:
3322       *pos += 3;
3323       nargs = 1;
3324       break;
3325
3326     case BINOP_ADD:
3327     case BINOP_SUB:
3328     case BINOP_MUL:
3329     case BINOP_DIV:
3330     case BINOP_REM:
3331     case BINOP_MOD:
3332     case BINOP_EXP:
3333     case BINOP_CONCAT:
3334     case BINOP_LOGICAL_AND:
3335     case BINOP_LOGICAL_OR:
3336     case BINOP_BITWISE_AND:
3337     case BINOP_BITWISE_IOR:
3338     case BINOP_BITWISE_XOR:
3339
3340     case BINOP_EQUAL:
3341     case BINOP_NOTEQUAL:
3342     case BINOP_LESS:
3343     case BINOP_GTR:
3344     case BINOP_LEQ:
3345     case BINOP_GEQ:
3346
3347     case BINOP_REPEAT:
3348     case BINOP_SUBSCRIPT:
3349     case BINOP_COMMA:
3350       *pos += 1;
3351       nargs = 2;
3352       break;
3353
3354     case UNOP_NEG:
3355     case UNOP_PLUS:
3356     case UNOP_LOGICAL_NOT:
3357     case UNOP_ABS:
3358     case UNOP_IND:
3359       *pos += 1;
3360       nargs = 1;
3361       break;
3362
3363     case OP_LONG:
3364     case OP_FLOAT:
3365     case OP_VAR_VALUE:
3366     case OP_VAR_MSYM_VALUE:
3367       *pos += 4;
3368       break;
3369
3370     case OP_TYPE:
3371     case OP_BOOL:
3372     case OP_LAST:
3373     case OP_INTERNALVAR:
3374       *pos += 3;
3375       break;
3376
3377     case UNOP_MEMVAL:
3378       *pos += 3;
3379       nargs = 1;
3380       break;
3381
3382     case OP_REGISTER:
3383       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3384       break;
3385
3386     case STRUCTOP_STRUCT:
3387       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3388       nargs = 1;
3389       break;
3390
3391     case TERNOP_SLICE:
3392       *pos += 1;
3393       nargs = 3;
3394       break;
3395
3396     case OP_STRING:
3397       break;
3398
3399     default:
3400       error (_("Unexpected operator during name resolution"));
3401     }
3402
3403   argvec = XALLOCAVEC (struct value *, nargs + 1);
3404   for (i = 0; i < nargs; i += 1)
3405     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3406   argvec[i] = NULL;
3407   exp = expp->get ();
3408
3409   /* Pass two: perform any resolution on principal operator.  */
3410   switch (op)
3411     {
3412     default:
3413       break;
3414
3415     case OP_VAR_VALUE:
3416       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3417         {
3418           std::vector<struct block_symbol> candidates;
3419           int n_candidates;
3420
3421           n_candidates =
3422             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3423                                     (exp->elts[pc + 2].symbol),
3424                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3425                                     &candidates);
3426
3427           if (n_candidates > 1)
3428             {
3429               /* Types tend to get re-introduced locally, so if there
3430                  are any local symbols that are not types, first filter
3431                  out all types.  */
3432               int j;
3433               for (j = 0; j < n_candidates; j += 1)
3434                 switch (SYMBOL_CLASS (candidates[j].symbol))
3435                   {
3436                   case LOC_REGISTER:
3437                   case LOC_ARG:
3438                   case LOC_REF_ARG:
3439                   case LOC_REGPARM_ADDR:
3440                   case LOC_LOCAL:
3441                   case LOC_COMPUTED:
3442                     goto FoundNonType;
3443                   default:
3444                     break;
3445                   }
3446             FoundNonType:
3447               if (j < n_candidates)
3448                 {
3449                   j = 0;
3450                   while (j < n_candidates)
3451                     {
3452                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3453                         {
3454                           candidates[j] = candidates[n_candidates - 1];
3455                           n_candidates -= 1;
3456                         }
3457                       else
3458                         j += 1;
3459                     }
3460                 }
3461             }
3462
3463           if (n_candidates == 0)
3464             error (_("No definition found for %s"),
3465                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3466           else if (n_candidates == 1)
3467             i = 0;
3468           else if (deprocedure_p
3469                    && !is_nonfunction (candidates.data (), n_candidates))
3470             {
3471               i = ada_resolve_function
3472                 (candidates.data (), n_candidates, NULL, 0,
3473                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3474                  context_type);
3475               if (i < 0)
3476                 error (_("Could not find a match for %s"),
3477                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3478             }
3479           else
3480             {
3481               printf_filtered (_("Multiple matches for %s\n"),
3482                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3483               user_select_syms (candidates.data (), n_candidates, 1);
3484               i = 0;
3485             }
3486
3487           exp->elts[pc + 1].block = candidates[i].block;
3488           exp->elts[pc + 2].symbol = candidates[i].symbol;
3489           innermost_block.update (candidates[i]);
3490         }
3491
3492       if (deprocedure_p
3493           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3494               == TYPE_CODE_FUNC))
3495         {
3496           replace_operator_with_call (expp, pc, 0, 4,
3497                                       exp->elts[pc + 2].symbol,
3498                                       exp->elts[pc + 1].block);
3499           exp = expp->get ();
3500         }
3501       break;
3502
3503     case OP_FUNCALL:
3504       {
3505         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3506             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3507           {
3508             std::vector<struct block_symbol> candidates;
3509             int n_candidates;
3510
3511             n_candidates =
3512               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3513                                       (exp->elts[pc + 5].symbol),
3514                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3515                                       &candidates);
3516
3517             if (n_candidates == 1)
3518               i = 0;
3519             else
3520               {
3521                 i = ada_resolve_function
3522                   (candidates.data (), n_candidates,
3523                    argvec, nargs,
3524                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3525                    context_type);
3526                 if (i < 0)
3527                   error (_("Could not find a match for %s"),
3528                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3529               }
3530
3531             exp->elts[pc + 4].block = candidates[i].block;
3532             exp->elts[pc + 5].symbol = candidates[i].symbol;
3533             innermost_block.update (candidates[i]);
3534           }
3535       }
3536       break;
3537     case BINOP_ADD:
3538     case BINOP_SUB:
3539     case BINOP_MUL:
3540     case BINOP_DIV:
3541     case BINOP_REM:
3542     case BINOP_MOD:
3543     case BINOP_CONCAT:
3544     case BINOP_BITWISE_AND:
3545     case BINOP_BITWISE_IOR:
3546     case BINOP_BITWISE_XOR:
3547     case BINOP_EQUAL:
3548     case BINOP_NOTEQUAL:
3549     case BINOP_LESS:
3550     case BINOP_GTR:
3551     case BINOP_LEQ:
3552     case BINOP_GEQ:
3553     case BINOP_EXP:
3554     case UNOP_NEG:
3555     case UNOP_PLUS:
3556     case UNOP_LOGICAL_NOT:
3557     case UNOP_ABS:
3558       if (possible_user_operator_p (op, argvec))
3559         {
3560           std::vector<struct block_symbol> candidates;
3561           int n_candidates;
3562
3563           n_candidates =
3564             ada_lookup_symbol_list (ada_decoded_op_name (op),
3565                                     NULL, VAR_DOMAIN,
3566                                     &candidates);
3567
3568           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3569                                     nargs, ada_decoded_op_name (op), NULL);
3570           if (i < 0)
3571             break;
3572
3573           replace_operator_with_call (expp, pc, nargs, 1,
3574                                       candidates[i].symbol,
3575                                       candidates[i].block);
3576           exp = expp->get ();
3577         }
3578       break;
3579
3580     case OP_TYPE:
3581     case OP_REGISTER:
3582       return NULL;
3583     }
3584
3585   *pos = pc;
3586   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3587     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3588                                     exp->elts[pc + 1].objfile,
3589                                     exp->elts[pc + 2].msymbol);
3590   else
3591     return evaluate_subexp_type (exp, pos);
3592 }
3593
3594 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3595    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3596    a non-pointer.  */
3597 /* The term "match" here is rather loose.  The match is heuristic and
3598    liberal.  */
3599
3600 static int
3601 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3602 {
3603   ftype = ada_check_typedef (ftype);
3604   atype = ada_check_typedef (atype);
3605
3606   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3607     ftype = TYPE_TARGET_TYPE (ftype);
3608   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3609     atype = TYPE_TARGET_TYPE (atype);
3610
3611   switch (TYPE_CODE (ftype))
3612     {
3613     default:
3614       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3615     case TYPE_CODE_PTR:
3616       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3617         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3618                                TYPE_TARGET_TYPE (atype), 0);
3619       else
3620         return (may_deref
3621                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3622     case TYPE_CODE_INT:
3623     case TYPE_CODE_ENUM:
3624     case TYPE_CODE_RANGE:
3625       switch (TYPE_CODE (atype))
3626         {
3627         case TYPE_CODE_INT:
3628         case TYPE_CODE_ENUM:
3629         case TYPE_CODE_RANGE:
3630           return 1;
3631         default:
3632           return 0;
3633         }
3634
3635     case TYPE_CODE_ARRAY:
3636       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3637               || ada_is_array_descriptor_type (atype));
3638
3639     case TYPE_CODE_STRUCT:
3640       if (ada_is_array_descriptor_type (ftype))
3641         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3642                 || ada_is_array_descriptor_type (atype));
3643       else
3644         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3645                 && !ada_is_array_descriptor_type (atype));
3646
3647     case TYPE_CODE_UNION:
3648     case TYPE_CODE_FLT:
3649       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3650     }
3651 }
3652
3653 /* Return non-zero if the formals of FUNC "sufficiently match" the
3654    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3655    may also be an enumeral, in which case it is treated as a 0-
3656    argument function.  */
3657
3658 static int
3659 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3660 {
3661   int i;
3662   struct type *func_type = SYMBOL_TYPE (func);
3663
3664   if (SYMBOL_CLASS (func) == LOC_CONST
3665       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3666     return (n_actuals == 0);
3667   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3668     return 0;
3669
3670   if (TYPE_NFIELDS (func_type) != n_actuals)
3671     return 0;
3672
3673   for (i = 0; i < n_actuals; i += 1)
3674     {
3675       if (actuals[i] == NULL)
3676         return 0;
3677       else
3678         {
3679           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3680                                                                    i));
3681           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3682
3683           if (!ada_type_match (ftype, atype, 1))
3684             return 0;
3685         }
3686     }
3687   return 1;
3688 }
3689
3690 /* False iff function type FUNC_TYPE definitely does not produce a value
3691    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3692    FUNC_TYPE is not a valid function type with a non-null return type
3693    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3694
3695 static int
3696 return_match (struct type *func_type, struct type *context_type)
3697 {
3698   struct type *return_type;
3699
3700   if (func_type == NULL)
3701     return 1;
3702
3703   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3704     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3705   else
3706     return_type = get_base_type (func_type);
3707   if (return_type == NULL)
3708     return 1;
3709
3710   context_type = get_base_type (context_type);
3711
3712   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3713     return context_type == NULL || return_type == context_type;
3714   else if (context_type == NULL)
3715     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3716   else
3717     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3718 }
3719
3720
3721 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3722    function (if any) that matches the types of the NARGS arguments in
3723    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3724    that returns that type, then eliminate matches that don't.  If
3725    CONTEXT_TYPE is void and there is at least one match that does not
3726    return void, eliminate all matches that do.
3727
3728    Asks the user if there is more than one match remaining.  Returns -1
3729    if there is no such symbol or none is selected.  NAME is used
3730    solely for messages.  May re-arrange and modify SYMS in
3731    the process; the index returned is for the modified vector.  */
3732
3733 static int
3734 ada_resolve_function (struct block_symbol syms[],
3735                       int nsyms, struct value **args, int nargs,
3736                       const char *name, struct type *context_type)
3737 {
3738   int fallback;
3739   int k;
3740   int m;                        /* Number of hits */
3741
3742   m = 0;
3743   /* In the first pass of the loop, we only accept functions matching
3744      context_type.  If none are found, we add a second pass of the loop
3745      where every function is accepted.  */
3746   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3747     {
3748       for (k = 0; k < nsyms; k += 1)
3749         {
3750           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3751
3752           if (ada_args_match (syms[k].symbol, args, nargs)
3753               && (fallback || return_match (type, context_type)))
3754             {
3755               syms[m] = syms[k];
3756               m += 1;
3757             }
3758         }
3759     }
3760
3761   /* If we got multiple matches, ask the user which one to use.  Don't do this
3762      interactive thing during completion, though, as the purpose of the
3763      completion is providing a list of all possible matches.  Prompting the
3764      user to filter it down would be completely unexpected in this case.  */
3765   if (m == 0)
3766     return -1;
3767   else if (m > 1 && !parse_completion)
3768     {
3769       printf_filtered (_("Multiple matches for %s\n"), name);
3770       user_select_syms (syms, m, 1);
3771       return 0;
3772     }
3773   return 0;
3774 }
3775
3776 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3777    in a listing of choices during disambiguation (see sort_choices, below).
3778    The idea is that overloadings of a subprogram name from the
3779    same package should sort in their source order.  We settle for ordering
3780    such symbols by their trailing number (__N  or $N).  */
3781
3782 static int
3783 encoded_ordered_before (const char *N0, const char *N1)
3784 {
3785   if (N1 == NULL)
3786     return 0;
3787   else if (N0 == NULL)
3788     return 1;
3789   else
3790     {
3791       int k0, k1;
3792
3793       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3794         ;
3795       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3796         ;
3797       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3798           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3799         {
3800           int n0, n1;
3801
3802           n0 = k0;
3803           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3804             n0 -= 1;
3805           n1 = k1;
3806           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3807             n1 -= 1;
3808           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3809             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3810         }
3811       return (strcmp (N0, N1) < 0);
3812     }
3813 }
3814
3815 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3816    encoded names.  */
3817
3818 static void
3819 sort_choices (struct block_symbol syms[], int nsyms)
3820 {
3821   int i;
3822
3823   for (i = 1; i < nsyms; i += 1)
3824     {
3825       struct block_symbol sym = syms[i];
3826       int j;
3827
3828       for (j = i - 1; j >= 0; j -= 1)
3829         {
3830           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3831                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3832             break;
3833           syms[j + 1] = syms[j];
3834         }
3835       syms[j + 1] = sym;
3836     }
3837 }
3838
3839 /* Whether GDB should display formals and return types for functions in the
3840    overloads selection menu.  */
3841 static int print_signatures = 1;
3842
3843 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3844    all but functions, the signature is just the name of the symbol.  For
3845    functions, this is the name of the function, the list of types for formals
3846    and the return type (if any).  */
3847
3848 static void
3849 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3850                             const struct type_print_options *flags)
3851 {
3852   struct type *type = SYMBOL_TYPE (sym);
3853
3854   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3855   if (!print_signatures
3856       || type == NULL
3857       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3858     return;
3859
3860   if (TYPE_NFIELDS (type) > 0)
3861     {
3862       int i;
3863
3864       fprintf_filtered (stream, " (");
3865       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3866         {
3867           if (i > 0)
3868             fprintf_filtered (stream, "; ");
3869           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3870                           flags);
3871         }
3872       fprintf_filtered (stream, ")");
3873     }
3874   if (TYPE_TARGET_TYPE (type) != NULL
3875       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3876     {
3877       fprintf_filtered (stream, " return ");
3878       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3879     }
3880 }
3881
3882 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3883    by asking the user (if necessary), returning the number selected, 
3884    and setting the first elements of SYMS items.  Error if no symbols
3885    selected.  */
3886
3887 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3888    to be re-integrated one of these days.  */
3889
3890 int
3891 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3892 {
3893   int i;
3894   int *chosen = XALLOCAVEC (int , nsyms);
3895   int n_chosen;
3896   int first_choice = (max_results == 1) ? 1 : 2;
3897   const char *select_mode = multiple_symbols_select_mode ();
3898
3899   if (max_results < 1)
3900     error (_("Request to select 0 symbols!"));
3901   if (nsyms <= 1)
3902     return nsyms;
3903
3904   if (select_mode == multiple_symbols_cancel)
3905     error (_("\
3906 canceled because the command is ambiguous\n\
3907 See set/show multiple-symbol."));
3908
3909   /* If select_mode is "all", then return all possible symbols.
3910      Only do that if more than one symbol can be selected, of course.
3911      Otherwise, display the menu as usual.  */
3912   if (select_mode == multiple_symbols_all && max_results > 1)
3913     return nsyms;
3914
3915   printf_filtered (_("[0] cancel\n"));
3916   if (max_results > 1)
3917     printf_filtered (_("[1] all\n"));
3918
3919   sort_choices (syms, nsyms);
3920
3921   for (i = 0; i < nsyms; i += 1)
3922     {
3923       if (syms[i].symbol == NULL)
3924         continue;
3925
3926       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3927         {
3928           struct symtab_and_line sal =
3929             find_function_start_sal (syms[i].symbol, 1);
3930
3931           printf_filtered ("[%d] ", i + first_choice);
3932           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3933                                       &type_print_raw_options);
3934           if (sal.symtab == NULL)
3935             printf_filtered (_(" at <no source file available>:%d\n"),
3936                              sal.line);
3937           else
3938             printf_filtered (_(" at %s:%d\n"),
3939                              symtab_to_filename_for_display (sal.symtab),
3940                              sal.line);
3941           continue;
3942         }
3943       else
3944         {
3945           int is_enumeral =
3946             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3947              && SYMBOL_TYPE (syms[i].symbol) != NULL
3948              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3949           struct symtab *symtab = NULL;
3950
3951           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3952             symtab = symbol_symtab (syms[i].symbol);
3953
3954           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3955             {
3956               printf_filtered ("[%d] ", i + first_choice);
3957               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3958                                           &type_print_raw_options);
3959               printf_filtered (_(" at %s:%d\n"),
3960                                symtab_to_filename_for_display (symtab),
3961                                SYMBOL_LINE (syms[i].symbol));
3962             }
3963           else if (is_enumeral
3964                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3965             {
3966               printf_filtered (("[%d] "), i + first_choice);
3967               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3968                               gdb_stdout, -1, 0, &type_print_raw_options);
3969               printf_filtered (_("'(%s) (enumeral)\n"),
3970                                SYMBOL_PRINT_NAME (syms[i].symbol));
3971             }
3972           else
3973             {
3974               printf_filtered ("[%d] ", i + first_choice);
3975               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3976                                           &type_print_raw_options);
3977
3978               if (symtab != NULL)
3979                 printf_filtered (is_enumeral
3980                                  ? _(" in %s (enumeral)\n")
3981                                  : _(" at %s:?\n"),
3982                                  symtab_to_filename_for_display (symtab));
3983               else
3984                 printf_filtered (is_enumeral
3985                                  ? _(" (enumeral)\n")
3986                                  : _(" at ?\n"));
3987             }
3988         }
3989     }
3990
3991   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3992                              "overload-choice");
3993
3994   for (i = 0; i < n_chosen; i += 1)
3995     syms[i] = syms[chosen[i]];
3996
3997   return n_chosen;
3998 }
3999
4000 /* Read and validate a set of numeric choices from the user in the
4001    range 0 .. N_CHOICES-1.  Place the results in increasing
4002    order in CHOICES[0 .. N-1], and return N.
4003
4004    The user types choices as a sequence of numbers on one line
4005    separated by blanks, encoding them as follows:
4006
4007      + A choice of 0 means to cancel the selection, throwing an error.
4008      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4009      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4010
4011    The user is not allowed to choose more than MAX_RESULTS values.
4012
4013    ANNOTATION_SUFFIX, if present, is used to annotate the input
4014    prompts (for use with the -f switch).  */
4015
4016 int
4017 get_selections (int *choices, int n_choices, int max_results,
4018                 int is_all_choice, const char *annotation_suffix)
4019 {
4020   char *args;
4021   const char *prompt;
4022   int n_chosen;
4023   int first_choice = is_all_choice ? 2 : 1;
4024
4025   prompt = getenv ("PS2");
4026   if (prompt == NULL)
4027     prompt = "> ";
4028
4029   args = command_line_input (prompt, annotation_suffix);
4030
4031   if (args == NULL)
4032     error_no_arg (_("one or more choice numbers"));
4033
4034   n_chosen = 0;
4035
4036   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4037      order, as given in args.  Choices are validated.  */
4038   while (1)
4039     {
4040       char *args2;
4041       int choice, j;
4042
4043       args = skip_spaces (args);
4044       if (*args == '\0' && n_chosen == 0)
4045         error_no_arg (_("one or more choice numbers"));
4046       else if (*args == '\0')
4047         break;
4048
4049       choice = strtol (args, &args2, 10);
4050       if (args == args2 || choice < 0
4051           || choice > n_choices + first_choice - 1)
4052         error (_("Argument must be choice number"));
4053       args = args2;
4054
4055       if (choice == 0)
4056         error (_("cancelled"));
4057
4058       if (choice < first_choice)
4059         {
4060           n_chosen = n_choices;
4061           for (j = 0; j < n_choices; j += 1)
4062             choices[j] = j;
4063           break;
4064         }
4065       choice -= first_choice;
4066
4067       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4068         {
4069         }
4070
4071       if (j < 0 || choice != choices[j])
4072         {
4073           int k;
4074
4075           for (k = n_chosen - 1; k > j; k -= 1)
4076             choices[k + 1] = choices[k];
4077           choices[j + 1] = choice;
4078           n_chosen += 1;
4079         }
4080     }
4081
4082   if (n_chosen > max_results)
4083     error (_("Select no more than %d of the above"), max_results);
4084
4085   return n_chosen;
4086 }
4087
4088 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4089    on the function identified by SYM and BLOCK, and taking NARGS
4090    arguments.  Update *EXPP as needed to hold more space.  */
4091
4092 static void
4093 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4094                             int oplen, struct symbol *sym,
4095                             const struct block *block)
4096 {
4097   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4098      symbol, -oplen for operator being replaced).  */
4099   struct expression *newexp = (struct expression *)
4100     xzalloc (sizeof (struct expression)
4101              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4102   struct expression *exp = expp->get ();
4103
4104   newexp->nelts = exp->nelts + 7 - oplen;
4105   newexp->language_defn = exp->language_defn;
4106   newexp->gdbarch = exp->gdbarch;
4107   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4108   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4109           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4110
4111   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4112   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4113
4114   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4115   newexp->elts[pc + 4].block = block;
4116   newexp->elts[pc + 5].symbol = sym;
4117
4118   expp->reset (newexp);
4119 }
4120
4121 /* Type-class predicates */
4122
4123 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4124    or FLOAT).  */
4125
4126 static int
4127 numeric_type_p (struct type *type)
4128 {
4129   if (type == NULL)
4130     return 0;
4131   else
4132     {
4133       switch (TYPE_CODE (type))
4134         {
4135         case TYPE_CODE_INT:
4136         case TYPE_CODE_FLT:
4137           return 1;
4138         case TYPE_CODE_RANGE:
4139           return (type == TYPE_TARGET_TYPE (type)
4140                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4141         default:
4142           return 0;
4143         }
4144     }
4145 }
4146
4147 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4148
4149 static int
4150 integer_type_p (struct type *type)
4151 {
4152   if (type == NULL)
4153     return 0;
4154   else
4155     {
4156       switch (TYPE_CODE (type))
4157         {
4158         case TYPE_CODE_INT:
4159           return 1;
4160         case TYPE_CODE_RANGE:
4161           return (type == TYPE_TARGET_TYPE (type)
4162                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4163         default:
4164           return 0;
4165         }
4166     }
4167 }
4168
4169 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4170
4171 static int
4172 scalar_type_p (struct type *type)
4173 {
4174   if (type == NULL)
4175     return 0;
4176   else
4177     {
4178       switch (TYPE_CODE (type))
4179         {
4180         case TYPE_CODE_INT:
4181         case TYPE_CODE_RANGE:
4182         case TYPE_CODE_ENUM:
4183         case TYPE_CODE_FLT:
4184           return 1;
4185         default:
4186           return 0;
4187         }
4188     }
4189 }
4190
4191 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4192
4193 static int
4194 discrete_type_p (struct type *type)
4195 {
4196   if (type == NULL)
4197     return 0;
4198   else
4199     {
4200       switch (TYPE_CODE (type))
4201         {
4202         case TYPE_CODE_INT:
4203         case TYPE_CODE_RANGE:
4204         case TYPE_CODE_ENUM:
4205         case TYPE_CODE_BOOL:
4206           return 1;
4207         default:
4208           return 0;
4209         }
4210     }
4211 }
4212
4213 /* Returns non-zero if OP with operands in the vector ARGS could be
4214    a user-defined function.  Errs on the side of pre-defined operators
4215    (i.e., result 0).  */
4216
4217 static int
4218 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4219 {
4220   struct type *type0 =
4221     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4222   struct type *type1 =
4223     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4224
4225   if (type0 == NULL)
4226     return 0;
4227
4228   switch (op)
4229     {
4230     default:
4231       return 0;
4232
4233     case BINOP_ADD:
4234     case BINOP_SUB:
4235     case BINOP_MUL:
4236     case BINOP_DIV:
4237       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4238
4239     case BINOP_REM:
4240     case BINOP_MOD:
4241     case BINOP_BITWISE_AND:
4242     case BINOP_BITWISE_IOR:
4243     case BINOP_BITWISE_XOR:
4244       return (!(integer_type_p (type0) && integer_type_p (type1)));
4245
4246     case BINOP_EQUAL:
4247     case BINOP_NOTEQUAL:
4248     case BINOP_LESS:
4249     case BINOP_GTR:
4250     case BINOP_LEQ:
4251     case BINOP_GEQ:
4252       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4253
4254     case BINOP_CONCAT:
4255       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4256
4257     case BINOP_EXP:
4258       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4259
4260     case UNOP_NEG:
4261     case UNOP_PLUS:
4262     case UNOP_LOGICAL_NOT:
4263     case UNOP_ABS:
4264       return (!numeric_type_p (type0));
4265
4266     }
4267 }
4268 \f
4269                                 /* Renaming */
4270
4271 /* NOTES: 
4272
4273    1. In the following, we assume that a renaming type's name may
4274       have an ___XD suffix.  It would be nice if this went away at some
4275       point.
4276    2. We handle both the (old) purely type-based representation of 
4277       renamings and the (new) variable-based encoding.  At some point,
4278       it is devoutly to be hoped that the former goes away 
4279       (FIXME: hilfinger-2007-07-09).
4280    3. Subprogram renamings are not implemented, although the XRS
4281       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4282
4283 /* If SYM encodes a renaming, 
4284
4285        <renaming> renames <renamed entity>,
4286
4287    sets *LEN to the length of the renamed entity's name,
4288    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4289    the string describing the subcomponent selected from the renamed
4290    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4291    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4292    are undefined).  Otherwise, returns a value indicating the category
4293    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4294    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4295    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4296    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4297    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4298    may be NULL, in which case they are not assigned.
4299
4300    [Currently, however, GCC does not generate subprogram renamings.]  */
4301
4302 enum ada_renaming_category
4303 ada_parse_renaming (struct symbol *sym,
4304                     const char **renamed_entity, int *len, 
4305                     const char **renaming_expr)
4306 {
4307   enum ada_renaming_category kind;
4308   const char *info;
4309   const char *suffix;
4310
4311   if (sym == NULL)
4312     return ADA_NOT_RENAMING;
4313   switch (SYMBOL_CLASS (sym)) 
4314     {
4315     default:
4316       return ADA_NOT_RENAMING;
4317     case LOC_TYPEDEF:
4318       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4319                                        renamed_entity, len, renaming_expr);
4320     case LOC_LOCAL:
4321     case LOC_STATIC:
4322     case LOC_COMPUTED:
4323     case LOC_OPTIMIZED_OUT:
4324       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4325       if (info == NULL)
4326         return ADA_NOT_RENAMING;
4327       switch (info[5])
4328         {
4329         case '_':
4330           kind = ADA_OBJECT_RENAMING;
4331           info += 6;
4332           break;
4333         case 'E':
4334           kind = ADA_EXCEPTION_RENAMING;
4335           info += 7;
4336           break;
4337         case 'P':
4338           kind = ADA_PACKAGE_RENAMING;
4339           info += 7;
4340           break;
4341         case 'S':
4342           kind = ADA_SUBPROGRAM_RENAMING;
4343           info += 7;
4344           break;
4345         default:
4346           return ADA_NOT_RENAMING;
4347         }
4348     }
4349
4350   if (renamed_entity != NULL)
4351     *renamed_entity = info;
4352   suffix = strstr (info, "___XE");
4353   if (suffix == NULL || suffix == info)
4354     return ADA_NOT_RENAMING;
4355   if (len != NULL)
4356     *len = strlen (info) - strlen (suffix);
4357   suffix += 5;
4358   if (renaming_expr != NULL)
4359     *renaming_expr = suffix;
4360   return kind;
4361 }
4362
4363 /* Assuming TYPE encodes a renaming according to the old encoding in
4364    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4365    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4366    ADA_NOT_RENAMING otherwise.  */
4367 static enum ada_renaming_category
4368 parse_old_style_renaming (struct type *type,
4369                           const char **renamed_entity, int *len, 
4370                           const char **renaming_expr)
4371 {
4372   enum ada_renaming_category kind;
4373   const char *name;
4374   const char *info;
4375   const char *suffix;
4376
4377   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4378       || TYPE_NFIELDS (type) != 1)
4379     return ADA_NOT_RENAMING;
4380
4381   name = TYPE_NAME (type);
4382   if (name == NULL)
4383     return ADA_NOT_RENAMING;
4384   
4385   name = strstr (name, "___XR");
4386   if (name == NULL)
4387     return ADA_NOT_RENAMING;
4388   switch (name[5])
4389     {
4390     case '\0':
4391     case '_':
4392       kind = ADA_OBJECT_RENAMING;
4393       break;
4394     case 'E':
4395       kind = ADA_EXCEPTION_RENAMING;
4396       break;
4397     case 'P':
4398       kind = ADA_PACKAGE_RENAMING;
4399       break;
4400     case 'S':
4401       kind = ADA_SUBPROGRAM_RENAMING;
4402       break;
4403     default:
4404       return ADA_NOT_RENAMING;
4405     }
4406
4407   info = TYPE_FIELD_NAME (type, 0);
4408   if (info == NULL)
4409     return ADA_NOT_RENAMING;
4410   if (renamed_entity != NULL)
4411     *renamed_entity = info;
4412   suffix = strstr (info, "___XE");
4413   if (renaming_expr != NULL)
4414     *renaming_expr = suffix + 5;
4415   if (suffix == NULL || suffix == info)
4416     return ADA_NOT_RENAMING;
4417   if (len != NULL)
4418     *len = suffix - info;
4419   return kind;
4420 }
4421
4422 /* Compute the value of the given RENAMING_SYM, which is expected to
4423    be a symbol encoding a renaming expression.  BLOCK is the block
4424    used to evaluate the renaming.  */
4425
4426 static struct value *
4427 ada_read_renaming_var_value (struct symbol *renaming_sym,
4428                              const struct block *block)
4429 {
4430   const char *sym_name;
4431
4432   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4433   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4434   return evaluate_expression (expr.get ());
4435 }
4436 \f
4437
4438                                 /* Evaluation: Function Calls */
4439
4440 /* Return an lvalue containing the value VAL.  This is the identity on
4441    lvalues, and otherwise has the side-effect of allocating memory
4442    in the inferior where a copy of the value contents is copied.  */
4443
4444 static struct value *
4445 ensure_lval (struct value *val)
4446 {
4447   if (VALUE_LVAL (val) == not_lval
4448       || VALUE_LVAL (val) == lval_internalvar)
4449     {
4450       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4451       const CORE_ADDR addr =
4452         value_as_long (value_allocate_space_in_inferior (len));
4453
4454       VALUE_LVAL (val) = lval_memory;
4455       set_value_address (val, addr);
4456       write_memory (addr, value_contents (val), len);
4457     }
4458
4459   return val;
4460 }
4461
4462 /* Return the value ACTUAL, converted to be an appropriate value for a
4463    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4464    allocating any necessary descriptors (fat pointers), or copies of
4465    values not residing in memory, updating it as needed.  */
4466
4467 struct value *
4468 ada_convert_actual (struct value *actual, struct type *formal_type0)
4469 {
4470   struct type *actual_type = ada_check_typedef (value_type (actual));
4471   struct type *formal_type = ada_check_typedef (formal_type0);
4472   struct type *formal_target =
4473     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4474     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4475   struct type *actual_target =
4476     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4477     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4478
4479   if (ada_is_array_descriptor_type (formal_target)
4480       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4481     return make_array_descriptor (formal_type, actual);
4482   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4483            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4484     {
4485       struct value *result;
4486
4487       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4488           && ada_is_array_descriptor_type (actual_target))
4489         result = desc_data (actual);
4490       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4491         {
4492           if (VALUE_LVAL (actual) != lval_memory)
4493             {
4494               struct value *val;
4495
4496               actual_type = ada_check_typedef (value_type (actual));
4497               val = allocate_value (actual_type);
4498               memcpy ((char *) value_contents_raw (val),
4499                       (char *) value_contents (actual),
4500                       TYPE_LENGTH (actual_type));
4501               actual = ensure_lval (val);
4502             }
4503           result = value_addr (actual);
4504         }
4505       else
4506         return actual;
4507       return value_cast_pointers (formal_type, result, 0);
4508     }
4509   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4510     return ada_value_ind (actual);
4511   else if (ada_is_aligner_type (formal_type))
4512     {
4513       /* We need to turn this parameter into an aligner type
4514          as well.  */
4515       struct value *aligner = allocate_value (formal_type);
4516       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4517
4518       value_assign_to_component (aligner, component, actual);
4519       return aligner;
4520     }
4521
4522   return actual;
4523 }
4524
4525 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4526    type TYPE.  This is usually an inefficient no-op except on some targets
4527    (such as AVR) where the representation of a pointer and an address
4528    differs.  */
4529
4530 static CORE_ADDR
4531 value_pointer (struct value *value, struct type *type)
4532 {
4533   struct gdbarch *gdbarch = get_type_arch (type);
4534   unsigned len = TYPE_LENGTH (type);
4535   gdb_byte *buf = (gdb_byte *) alloca (len);
4536   CORE_ADDR addr;
4537
4538   addr = value_address (value);
4539   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4540   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4541   return addr;
4542 }
4543
4544
4545 /* Push a descriptor of type TYPE for array value ARR on the stack at
4546    *SP, updating *SP to reflect the new descriptor.  Return either
4547    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4548    to-descriptor type rather than a descriptor type), a struct value *
4549    representing a pointer to this descriptor.  */
4550
4551 static struct value *
4552 make_array_descriptor (struct type *type, struct value *arr)
4553 {
4554   struct type *bounds_type = desc_bounds_type (type);
4555   struct type *desc_type = desc_base_type (type);
4556   struct value *descriptor = allocate_value (desc_type);
4557   struct value *bounds = allocate_value (bounds_type);
4558   int i;
4559
4560   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4561        i > 0; i -= 1)
4562     {
4563       modify_field (value_type (bounds), value_contents_writeable (bounds),
4564                     ada_array_bound (arr, i, 0),
4565                     desc_bound_bitpos (bounds_type, i, 0),
4566                     desc_bound_bitsize (bounds_type, i, 0));
4567       modify_field (value_type (bounds), value_contents_writeable (bounds),
4568                     ada_array_bound (arr, i, 1),
4569                     desc_bound_bitpos (bounds_type, i, 1),
4570                     desc_bound_bitsize (bounds_type, i, 1));
4571     }
4572
4573   bounds = ensure_lval (bounds);
4574
4575   modify_field (value_type (descriptor),
4576                 value_contents_writeable (descriptor),
4577                 value_pointer (ensure_lval (arr),
4578                                TYPE_FIELD_TYPE (desc_type, 0)),
4579                 fat_pntr_data_bitpos (desc_type),
4580                 fat_pntr_data_bitsize (desc_type));
4581
4582   modify_field (value_type (descriptor),
4583                 value_contents_writeable (descriptor),
4584                 value_pointer (bounds,
4585                                TYPE_FIELD_TYPE (desc_type, 1)),
4586                 fat_pntr_bounds_bitpos (desc_type),
4587                 fat_pntr_bounds_bitsize (desc_type));
4588
4589   descriptor = ensure_lval (descriptor);
4590
4591   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4592     return value_addr (descriptor);
4593   else
4594     return descriptor;
4595 }
4596 \f
4597                                 /* Symbol Cache Module */
4598
4599 /* Performance measurements made as of 2010-01-15 indicate that
4600    this cache does bring some noticeable improvements.  Depending
4601    on the type of entity being printed, the cache can make it as much
4602    as an order of magnitude faster than without it.
4603
4604    The descriptive type DWARF extension has significantly reduced
4605    the need for this cache, at least when DWARF is being used.  However,
4606    even in this case, some expensive name-based symbol searches are still
4607    sometimes necessary - to find an XVZ variable, mostly.  */
4608
4609 /* Initialize the contents of SYM_CACHE.  */
4610
4611 static void
4612 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4613 {
4614   obstack_init (&sym_cache->cache_space);
4615   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4616 }
4617
4618 /* Free the memory used by SYM_CACHE.  */
4619
4620 static void
4621 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4622 {
4623   obstack_free (&sym_cache->cache_space, NULL);
4624   xfree (sym_cache);
4625 }
4626
4627 /* Return the symbol cache associated to the given program space PSPACE.
4628    If not allocated for this PSPACE yet, allocate and initialize one.  */
4629
4630 static struct ada_symbol_cache *
4631 ada_get_symbol_cache (struct program_space *pspace)
4632 {
4633   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4634
4635   if (pspace_data->sym_cache == NULL)
4636     {
4637       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4638       ada_init_symbol_cache (pspace_data->sym_cache);
4639     }
4640
4641   return pspace_data->sym_cache;
4642 }
4643
4644 /* Clear all entries from the symbol cache.  */
4645
4646 static void
4647 ada_clear_symbol_cache (void)
4648 {
4649   struct ada_symbol_cache *sym_cache
4650     = ada_get_symbol_cache (current_program_space);
4651
4652   obstack_free (&sym_cache->cache_space, NULL);
4653   ada_init_symbol_cache (sym_cache);
4654 }
4655
4656 /* Search our cache for an entry matching NAME and DOMAIN.
4657    Return it if found, or NULL otherwise.  */
4658
4659 static struct cache_entry **
4660 find_entry (const char *name, domain_enum domain)
4661 {
4662   struct ada_symbol_cache *sym_cache
4663     = ada_get_symbol_cache (current_program_space);
4664   int h = msymbol_hash (name) % HASH_SIZE;
4665   struct cache_entry **e;
4666
4667   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4668     {
4669       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4670         return e;
4671     }
4672   return NULL;
4673 }
4674
4675 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4676    Return 1 if found, 0 otherwise.
4677
4678    If an entry was found and SYM is not NULL, set *SYM to the entry's
4679    SYM.  Same principle for BLOCK if not NULL.  */
4680
4681 static int
4682 lookup_cached_symbol (const char *name, domain_enum domain,
4683                       struct symbol **sym, const struct block **block)
4684 {
4685   struct cache_entry **e = find_entry (name, domain);
4686
4687   if (e == NULL)
4688     return 0;
4689   if (sym != NULL)
4690     *sym = (*e)->sym;
4691   if (block != NULL)
4692     *block = (*e)->block;
4693   return 1;
4694 }
4695
4696 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4697    in domain DOMAIN, save this result in our symbol cache.  */
4698
4699 static void
4700 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4701               const struct block *block)
4702 {
4703   struct ada_symbol_cache *sym_cache
4704     = ada_get_symbol_cache (current_program_space);
4705   int h;
4706   char *copy;
4707   struct cache_entry *e;
4708
4709   /* Symbols for builtin types don't have a block.
4710      For now don't cache such symbols.  */
4711   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4712     return;
4713
4714   /* If the symbol is a local symbol, then do not cache it, as a search
4715      for that symbol depends on the context.  To determine whether
4716      the symbol is local or not, we check the block where we found it
4717      against the global and static blocks of its associated symtab.  */
4718   if (sym
4719       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4720                             GLOBAL_BLOCK) != block
4721       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4722                             STATIC_BLOCK) != block)
4723     return;
4724
4725   h = msymbol_hash (name) % HASH_SIZE;
4726   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4727   e->next = sym_cache->root[h];
4728   sym_cache->root[h] = e;
4729   e->name = copy
4730     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4731   strcpy (copy, name);
4732   e->sym = sym;
4733   e->domain = domain;
4734   e->block = block;
4735 }
4736 \f
4737                                 /* Symbol Lookup */
4738
4739 /* Return the symbol name match type that should be used used when
4740    searching for all symbols matching LOOKUP_NAME.
4741
4742    LOOKUP_NAME is expected to be a symbol name after transformation
4743    for Ada lookups.  */
4744
4745 static symbol_name_match_type
4746 name_match_type_from_name (const char *lookup_name)
4747 {
4748   return (strstr (lookup_name, "__") == NULL
4749           ? symbol_name_match_type::WILD
4750           : symbol_name_match_type::FULL);
4751 }
4752
4753 /* Return the result of a standard (literal, C-like) lookup of NAME in
4754    given DOMAIN, visible from lexical block BLOCK.  */
4755
4756 static struct symbol *
4757 standard_lookup (const char *name, const struct block *block,
4758                  domain_enum domain)
4759 {
4760   /* Initialize it just to avoid a GCC false warning.  */
4761   struct block_symbol sym = {};
4762
4763   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4764     return sym.symbol;
4765   ada_lookup_encoded_symbol (name, block, domain, &sym);
4766   cache_symbol (name, domain, sym.symbol, sym.block);
4767   return sym.symbol;
4768 }
4769
4770
4771 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4772    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4773    since they contend in overloading in the same way.  */
4774 static int
4775 is_nonfunction (struct block_symbol syms[], int n)
4776 {
4777   int i;
4778
4779   for (i = 0; i < n; i += 1)
4780     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4781         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4782             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4783       return 1;
4784
4785   return 0;
4786 }
4787
4788 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4789    struct types.  Otherwise, they may not.  */
4790
4791 static int
4792 equiv_types (struct type *type0, struct type *type1)
4793 {
4794   if (type0 == type1)
4795     return 1;
4796   if (type0 == NULL || type1 == NULL
4797       || TYPE_CODE (type0) != TYPE_CODE (type1))
4798     return 0;
4799   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4800        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4801       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4802       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4803     return 1;
4804
4805   return 0;
4806 }
4807
4808 /* True iff SYM0 represents the same entity as SYM1, or one that is
4809    no more defined than that of SYM1.  */
4810
4811 static int
4812 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4813 {
4814   if (sym0 == sym1)
4815     return 1;
4816   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4817       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4818     return 0;
4819
4820   switch (SYMBOL_CLASS (sym0))
4821     {
4822     case LOC_UNDEF:
4823       return 1;
4824     case LOC_TYPEDEF:
4825       {
4826         struct type *type0 = SYMBOL_TYPE (sym0);
4827         struct type *type1 = SYMBOL_TYPE (sym1);
4828         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4829         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4830         int len0 = strlen (name0);
4831
4832         return
4833           TYPE_CODE (type0) == TYPE_CODE (type1)
4834           && (equiv_types (type0, type1)
4835               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4836                   && startswith (name1 + len0, "___XV")));
4837       }
4838     case LOC_CONST:
4839       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4840         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4841     default:
4842       return 0;
4843     }
4844 }
4845
4846 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4847    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4848
4849 static void
4850 add_defn_to_vec (struct obstack *obstackp,
4851                  struct symbol *sym,
4852                  const struct block *block)
4853 {
4854   int i;
4855   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4856
4857   /* Do not try to complete stub types, as the debugger is probably
4858      already scanning all symbols matching a certain name at the
4859      time when this function is called.  Trying to replace the stub
4860      type by its associated full type will cause us to restart a scan
4861      which may lead to an infinite recursion.  Instead, the client
4862      collecting the matching symbols will end up collecting several
4863      matches, with at least one of them complete.  It can then filter
4864      out the stub ones if needed.  */
4865
4866   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4867     {
4868       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4869         return;
4870       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4871         {
4872           prevDefns[i].symbol = sym;
4873           prevDefns[i].block = block;
4874           return;
4875         }
4876     }
4877
4878   {
4879     struct block_symbol info;
4880
4881     info.symbol = sym;
4882     info.block = block;
4883     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4884   }
4885 }
4886
4887 /* Number of block_symbol structures currently collected in current vector in
4888    OBSTACKP.  */
4889
4890 static int
4891 num_defns_collected (struct obstack *obstackp)
4892 {
4893   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4894 }
4895
4896 /* Vector of block_symbol structures currently collected in current vector in
4897    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4898
4899 static struct block_symbol *
4900 defns_collected (struct obstack *obstackp, int finish)
4901 {
4902   if (finish)
4903     return (struct block_symbol *) obstack_finish (obstackp);
4904   else
4905     return (struct block_symbol *) obstack_base (obstackp);
4906 }
4907
4908 /* Return a bound minimal symbol matching NAME according to Ada
4909    decoding rules.  Returns an invalid symbol if there is no such
4910    minimal symbol.  Names prefixed with "standard__" are handled
4911    specially: "standard__" is first stripped off, and only static and
4912    global symbols are searched.  */
4913
4914 struct bound_minimal_symbol
4915 ada_lookup_simple_minsym (const char *name)
4916 {
4917   struct bound_minimal_symbol result;
4918
4919   memset (&result, 0, sizeof (result));
4920
4921   symbol_name_match_type match_type = name_match_type_from_name (name);
4922   lookup_name_info lookup_name (name, match_type);
4923
4924   symbol_name_matcher_ftype *match_name
4925     = ada_get_symbol_name_matcher (lookup_name);
4926
4927   for (objfile *objfile : current_program_space->objfiles ())
4928     {
4929       for (minimal_symbol *msymbol : objfile->msymbols ())
4930         {
4931           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4932               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4933             {
4934               result.minsym = msymbol;
4935               result.objfile = objfile;
4936               break;
4937             }
4938         }
4939     }
4940
4941   return result;
4942 }
4943
4944 /* For all subprograms that statically enclose the subprogram of the
4945    selected frame, add symbols matching identifier NAME in DOMAIN
4946    and their blocks to the list of data in OBSTACKP, as for
4947    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4948    with a wildcard prefix.  */
4949
4950 static void
4951 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4952                                   const lookup_name_info &lookup_name,
4953                                   domain_enum domain)
4954 {
4955 }
4956
4957 /* True if TYPE is definitely an artificial type supplied to a symbol
4958    for which no debugging information was given in the symbol file.  */
4959
4960 static int
4961 is_nondebugging_type (struct type *type)
4962 {
4963   const char *name = ada_type_name (type);
4964
4965   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4966 }
4967
4968 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4969    that are deemed "identical" for practical purposes.
4970
4971    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4972    types and that their number of enumerals is identical (in other
4973    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4974
4975 static int
4976 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4977 {
4978   int i;
4979
4980   /* The heuristic we use here is fairly conservative.  We consider
4981      that 2 enumerate types are identical if they have the same
4982      number of enumerals and that all enumerals have the same
4983      underlying value and name.  */
4984
4985   /* All enums in the type should have an identical underlying value.  */
4986   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4987     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4988       return 0;
4989
4990   /* All enumerals should also have the same name (modulo any numerical
4991      suffix).  */
4992   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4993     {
4994       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4995       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4996       int len_1 = strlen (name_1);
4997       int len_2 = strlen (name_2);
4998
4999       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5000       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5001       if (len_1 != len_2
5002           || strncmp (TYPE_FIELD_NAME (type1, i),
5003                       TYPE_FIELD_NAME (type2, i),
5004                       len_1) != 0)
5005         return 0;
5006     }
5007
5008   return 1;
5009 }
5010
5011 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5012    that are deemed "identical" for practical purposes.  Sometimes,
5013    enumerals are not strictly identical, but their types are so similar
5014    that they can be considered identical.
5015
5016    For instance, consider the following code:
5017
5018       type Color is (Black, Red, Green, Blue, White);
5019       type RGB_Color is new Color range Red .. Blue;
5020
5021    Type RGB_Color is a subrange of an implicit type which is a copy
5022    of type Color. If we call that implicit type RGB_ColorB ("B" is
5023    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5024    As a result, when an expression references any of the enumeral
5025    by name (Eg. "print green"), the expression is technically
5026    ambiguous and the user should be asked to disambiguate. But
5027    doing so would only hinder the user, since it wouldn't matter
5028    what choice he makes, the outcome would always be the same.
5029    So, for practical purposes, we consider them as the same.  */
5030
5031 static int
5032 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5033 {
5034   int i;
5035
5036   /* Before performing a thorough comparison check of each type,
5037      we perform a series of inexpensive checks.  We expect that these
5038      checks will quickly fail in the vast majority of cases, and thus
5039      help prevent the unnecessary use of a more expensive comparison.
5040      Said comparison also expects us to make some of these checks
5041      (see ada_identical_enum_types_p).  */
5042
5043   /* Quick check: All symbols should have an enum type.  */
5044   for (i = 0; i < syms.size (); i++)
5045     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5046       return 0;
5047
5048   /* Quick check: They should all have the same value.  */
5049   for (i = 1; i < syms.size (); i++)
5050     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5051       return 0;
5052
5053   /* Quick check: They should all have the same number of enumerals.  */
5054   for (i = 1; i < syms.size (); i++)
5055     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5056         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5057       return 0;
5058
5059   /* All the sanity checks passed, so we might have a set of
5060      identical enumeration types.  Perform a more complete
5061      comparison of the type of each symbol.  */
5062   for (i = 1; i < syms.size (); i++)
5063     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5064                                      SYMBOL_TYPE (syms[0].symbol)))
5065       return 0;
5066
5067   return 1;
5068 }
5069
5070 /* Remove any non-debugging symbols in SYMS that definitely
5071    duplicate other symbols in the list (The only case I know of where
5072    this happens is when object files containing stabs-in-ecoff are
5073    linked with files containing ordinary ecoff debugging symbols (or no
5074    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5075    Returns the number of items in the modified list.  */
5076
5077 static int
5078 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5079 {
5080   int i, j;
5081
5082   /* We should never be called with less than 2 symbols, as there
5083      cannot be any extra symbol in that case.  But it's easy to
5084      handle, since we have nothing to do in that case.  */
5085   if (syms->size () < 2)
5086     return syms->size ();
5087
5088   i = 0;
5089   while (i < syms->size ())
5090     {
5091       int remove_p = 0;
5092
5093       /* If two symbols have the same name and one of them is a stub type,
5094          the get rid of the stub.  */
5095
5096       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5097           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5098         {
5099           for (j = 0; j < syms->size (); j++)
5100             {
5101               if (j != i
5102                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5103                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5104                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5105                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5106                 remove_p = 1;
5107             }
5108         }
5109
5110       /* Two symbols with the same name, same class and same address
5111          should be identical.  */
5112
5113       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5114           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5115           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5116         {
5117           for (j = 0; j < syms->size (); j += 1)
5118             {
5119               if (i != j
5120                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5121                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5122                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5123                   && SYMBOL_CLASS ((*syms)[i].symbol)
5124                        == SYMBOL_CLASS ((*syms)[j].symbol)
5125                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5126                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5127                 remove_p = 1;
5128             }
5129         }
5130       
5131       if (remove_p)
5132         syms->erase (syms->begin () + i);
5133
5134       i += 1;
5135     }
5136
5137   /* If all the remaining symbols are identical enumerals, then
5138      just keep the first one and discard the rest.
5139
5140      Unlike what we did previously, we do not discard any entry
5141      unless they are ALL identical.  This is because the symbol
5142      comparison is not a strict comparison, but rather a practical
5143      comparison.  If all symbols are considered identical, then
5144      we can just go ahead and use the first one and discard the rest.
5145      But if we cannot reduce the list to a single element, we have
5146      to ask the user to disambiguate anyways.  And if we have to
5147      present a multiple-choice menu, it's less confusing if the list
5148      isn't missing some choices that were identical and yet distinct.  */
5149   if (symbols_are_identical_enums (*syms))
5150     syms->resize (1);
5151
5152   return syms->size ();
5153 }
5154
5155 /* Given a type that corresponds to a renaming entity, use the type name
5156    to extract the scope (package name or function name, fully qualified,
5157    and following the GNAT encoding convention) where this renaming has been
5158    defined.  */
5159
5160 static std::string
5161 xget_renaming_scope (struct type *renaming_type)
5162 {
5163   /* The renaming types adhere to the following convention:
5164      <scope>__<rename>___<XR extension>.
5165      So, to extract the scope, we search for the "___XR" extension,
5166      and then backtrack until we find the first "__".  */
5167
5168   const char *name = TYPE_NAME (renaming_type);
5169   const char *suffix = strstr (name, "___XR");
5170   const char *last;
5171
5172   /* Now, backtrack a bit until we find the first "__".  Start looking
5173      at suffix - 3, as the <rename> part is at least one character long.  */
5174
5175   for (last = suffix - 3; last > name; last--)
5176     if (last[0] == '_' && last[1] == '_')
5177       break;
5178
5179   /* Make a copy of scope and return it.  */
5180   return std::string (name, last);
5181 }
5182
5183 /* Return nonzero if NAME corresponds to a package name.  */
5184
5185 static int
5186 is_package_name (const char *name)
5187 {
5188   /* Here, We take advantage of the fact that no symbols are generated
5189      for packages, while symbols are generated for each function.
5190      So the condition for NAME represent a package becomes equivalent
5191      to NAME not existing in our list of symbols.  There is only one
5192      small complication with library-level functions (see below).  */
5193
5194   /* If it is a function that has not been defined at library level,
5195      then we should be able to look it up in the symbols.  */
5196   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5197     return 0;
5198
5199   /* Library-level function names start with "_ada_".  See if function
5200      "_ada_" followed by NAME can be found.  */
5201
5202   /* Do a quick check that NAME does not contain "__", since library-level
5203      functions names cannot contain "__" in them.  */
5204   if (strstr (name, "__") != NULL)
5205     return 0;
5206
5207   std::string fun_name = string_printf ("_ada_%s", name);
5208
5209   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5210 }
5211
5212 /* Return nonzero if SYM corresponds to a renaming entity that is
5213    not visible from FUNCTION_NAME.  */
5214
5215 static int
5216 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5217 {
5218   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5219     return 0;
5220
5221   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5222
5223   /* If the rename has been defined in a package, then it is visible.  */
5224   if (is_package_name (scope.c_str ()))
5225     return 0;
5226
5227   /* Check that the rename is in the current function scope by checking
5228      that its name starts with SCOPE.  */
5229
5230   /* If the function name starts with "_ada_", it means that it is
5231      a library-level function.  Strip this prefix before doing the
5232      comparison, as the encoding for the renaming does not contain
5233      this prefix.  */
5234   if (startswith (function_name, "_ada_"))
5235     function_name += 5;
5236
5237   return !startswith (function_name, scope.c_str ());
5238 }
5239
5240 /* Remove entries from SYMS that corresponds to a renaming entity that
5241    is not visible from the function associated with CURRENT_BLOCK or
5242    that is superfluous due to the presence of more specific renaming
5243    information.  Places surviving symbols in the initial entries of
5244    SYMS and returns the number of surviving symbols.
5245    
5246    Rationale:
5247    First, in cases where an object renaming is implemented as a
5248    reference variable, GNAT may produce both the actual reference
5249    variable and the renaming encoding.  In this case, we discard the
5250    latter.
5251
5252    Second, GNAT emits a type following a specified encoding for each renaming
5253    entity.  Unfortunately, STABS currently does not support the definition
5254    of types that are local to a given lexical block, so all renamings types
5255    are emitted at library level.  As a consequence, if an application
5256    contains two renaming entities using the same name, and a user tries to
5257    print the value of one of these entities, the result of the ada symbol
5258    lookup will also contain the wrong renaming type.
5259
5260    This function partially covers for this limitation by attempting to
5261    remove from the SYMS list renaming symbols that should be visible
5262    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5263    method with the current information available.  The implementation
5264    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5265    
5266       - When the user tries to print a rename in a function while there
5267         is another rename entity defined in a package:  Normally, the
5268         rename in the function has precedence over the rename in the
5269         package, so the latter should be removed from the list.  This is
5270         currently not the case.
5271         
5272       - This function will incorrectly remove valid renames if
5273         the CURRENT_BLOCK corresponds to a function which symbol name
5274         has been changed by an "Export" pragma.  As a consequence,
5275         the user will be unable to print such rename entities.  */
5276
5277 static int
5278 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5279                              const struct block *current_block)
5280 {
5281   struct symbol *current_function;
5282   const char *current_function_name;
5283   int i;
5284   int is_new_style_renaming;
5285
5286   /* If there is both a renaming foo___XR... encoded as a variable and
5287      a simple variable foo in the same block, discard the latter.
5288      First, zero out such symbols, then compress.  */
5289   is_new_style_renaming = 0;
5290   for (i = 0; i < syms->size (); i += 1)
5291     {
5292       struct symbol *sym = (*syms)[i].symbol;
5293       const struct block *block = (*syms)[i].block;
5294       const char *name;
5295       const char *suffix;
5296
5297       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5298         continue;
5299       name = SYMBOL_LINKAGE_NAME (sym);
5300       suffix = strstr (name, "___XR");
5301
5302       if (suffix != NULL)
5303         {
5304           int name_len = suffix - name;
5305           int j;
5306
5307           is_new_style_renaming = 1;
5308           for (j = 0; j < syms->size (); j += 1)
5309             if (i != j && (*syms)[j].symbol != NULL
5310                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5311                             name_len) == 0
5312                 && block == (*syms)[j].block)
5313               (*syms)[j].symbol = NULL;
5314         }
5315     }
5316   if (is_new_style_renaming)
5317     {
5318       int j, k;
5319
5320       for (j = k = 0; j < syms->size (); j += 1)
5321         if ((*syms)[j].symbol != NULL)
5322             {
5323               (*syms)[k] = (*syms)[j];
5324               k += 1;
5325             }
5326       return k;
5327     }
5328
5329   /* Extract the function name associated to CURRENT_BLOCK.
5330      Abort if unable to do so.  */
5331
5332   if (current_block == NULL)
5333     return syms->size ();
5334
5335   current_function = block_linkage_function (current_block);
5336   if (current_function == NULL)
5337     return syms->size ();
5338
5339   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5340   if (current_function_name == NULL)
5341     return syms->size ();
5342
5343   /* Check each of the symbols, and remove it from the list if it is
5344      a type corresponding to a renaming that is out of the scope of
5345      the current block.  */
5346
5347   i = 0;
5348   while (i < syms->size ())
5349     {
5350       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5351           == ADA_OBJECT_RENAMING
5352           && old_renaming_is_invisible ((*syms)[i].symbol,
5353                                         current_function_name))
5354         syms->erase (syms->begin () + i);
5355       else
5356         i += 1;
5357     }
5358
5359   return syms->size ();
5360 }
5361
5362 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5363    whose name and domain match NAME and DOMAIN respectively.
5364    If no match was found, then extend the search to "enclosing"
5365    routines (in other words, if we're inside a nested function,
5366    search the symbols defined inside the enclosing functions).
5367    If WILD_MATCH_P is nonzero, perform the naming matching in
5368    "wild" mode (see function "wild_match" for more info).
5369
5370    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5371
5372 static void
5373 ada_add_local_symbols (struct obstack *obstackp,
5374                        const lookup_name_info &lookup_name,
5375                        const struct block *block, domain_enum domain)
5376 {
5377   int block_depth = 0;
5378
5379   while (block != NULL)
5380     {
5381       block_depth += 1;
5382       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5383
5384       /* If we found a non-function match, assume that's the one.  */
5385       if (is_nonfunction (defns_collected (obstackp, 0),
5386                           num_defns_collected (obstackp)))
5387         return;
5388
5389       block = BLOCK_SUPERBLOCK (block);
5390     }
5391
5392   /* If no luck so far, try to find NAME as a local symbol in some lexically
5393      enclosing subprogram.  */
5394   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5395     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5396 }
5397
5398 /* An object of this type is used as the user_data argument when
5399    calling the map_matching_symbols method.  */
5400
5401 struct match_data
5402 {
5403   struct objfile *objfile;
5404   struct obstack *obstackp;
5405   struct symbol *arg_sym;
5406   int found_sym;
5407 };
5408
5409 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5410    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5411    containing the obstack that collects the symbol list, the file that SYM
5412    must come from, a flag indicating whether a non-argument symbol has
5413    been found in the current block, and the last argument symbol
5414    passed in SYM within the current block (if any).  When SYM is null,
5415    marking the end of a block, the argument symbol is added if no
5416    other has been found.  */
5417
5418 static int
5419 aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
5420                           void *data0)
5421 {
5422   struct match_data *data = (struct match_data *) data0;
5423   
5424   if (sym == NULL)
5425     {
5426       if (!data->found_sym && data->arg_sym != NULL) 
5427         add_defn_to_vec (data->obstackp,
5428                          fixup_symbol_section (data->arg_sym, data->objfile),
5429                          block);
5430       data->found_sym = 0;
5431       data->arg_sym = NULL;
5432     }
5433   else 
5434     {
5435       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5436         return 0;
5437       else if (SYMBOL_IS_ARGUMENT (sym))
5438         data->arg_sym = sym;
5439       else
5440         {
5441           data->found_sym = 1;
5442           add_defn_to_vec (data->obstackp,
5443                            fixup_symbol_section (sym, data->objfile),
5444                            block);
5445         }
5446     }
5447   return 0;
5448 }
5449
5450 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5451    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5452    symbols to OBSTACKP.  Return whether we found such symbols.  */
5453
5454 static int
5455 ada_add_block_renamings (struct obstack *obstackp,
5456                          const struct block *block,
5457                          const lookup_name_info &lookup_name,
5458                          domain_enum domain)
5459 {
5460   struct using_direct *renaming;
5461   int defns_mark = num_defns_collected (obstackp);
5462
5463   symbol_name_matcher_ftype *name_match
5464     = ada_get_symbol_name_matcher (lookup_name);
5465
5466   for (renaming = block_using (block);
5467        renaming != NULL;
5468        renaming = renaming->next)
5469     {
5470       const char *r_name;
5471
5472       /* Avoid infinite recursions: skip this renaming if we are actually
5473          already traversing it.
5474
5475          Currently, symbol lookup in Ada don't use the namespace machinery from
5476          C++/Fortran support: skip namespace imports that use them.  */
5477       if (renaming->searched
5478           || (renaming->import_src != NULL
5479               && renaming->import_src[0] != '\0')
5480           || (renaming->import_dest != NULL
5481               && renaming->import_dest[0] != '\0'))
5482         continue;
5483       renaming->searched = 1;
5484
5485       /* TODO: here, we perform another name-based symbol lookup, which can
5486          pull its own multiple overloads.  In theory, we should be able to do
5487          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5488          not a simple name.  But in order to do this, we would need to enhance
5489          the DWARF reader to associate a symbol to this renaming, instead of a
5490          name.  So, for now, we do something simpler: re-use the C++/Fortran
5491          namespace machinery.  */
5492       r_name = (renaming->alias != NULL
5493                 ? renaming->alias
5494                 : renaming->declaration);
5495       if (name_match (r_name, lookup_name, NULL))
5496         {
5497           lookup_name_info decl_lookup_name (renaming->declaration,
5498                                              lookup_name.match_type ());
5499           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5500                                1, NULL);
5501         }
5502       renaming->searched = 0;
5503     }
5504   return num_defns_collected (obstackp) != defns_mark;
5505 }
5506
5507 /* Implements compare_names, but only applying the comparision using
5508    the given CASING.  */
5509
5510 static int
5511 compare_names_with_case (const char *string1, const char *string2,
5512                          enum case_sensitivity casing)
5513 {
5514   while (*string1 != '\0' && *string2 != '\0')
5515     {
5516       char c1, c2;
5517
5518       if (isspace (*string1) || isspace (*string2))
5519         return strcmp_iw_ordered (string1, string2);
5520
5521       if (casing == case_sensitive_off)
5522         {
5523           c1 = tolower (*string1);
5524           c2 = tolower (*string2);
5525         }
5526       else
5527         {
5528           c1 = *string1;
5529           c2 = *string2;
5530         }
5531       if (c1 != c2)
5532         break;
5533
5534       string1 += 1;
5535       string2 += 1;
5536     }
5537
5538   switch (*string1)
5539     {
5540     case '(':
5541       return strcmp_iw_ordered (string1, string2);
5542     case '_':
5543       if (*string2 == '\0')
5544         {
5545           if (is_name_suffix (string1))
5546             return 0;
5547           else
5548             return 1;
5549         }
5550       /* FALLTHROUGH */
5551     default:
5552       if (*string2 == '(')
5553         return strcmp_iw_ordered (string1, string2);
5554       else
5555         {
5556           if (casing == case_sensitive_off)
5557             return tolower (*string1) - tolower (*string2);
5558           else
5559             return *string1 - *string2;
5560         }
5561     }
5562 }
5563
5564 /* Compare STRING1 to STRING2, with results as for strcmp.
5565    Compatible with strcmp_iw_ordered in that...
5566
5567        strcmp_iw_ordered (STRING1, STRING2) <= 0
5568
5569    ... implies...
5570
5571        compare_names (STRING1, STRING2) <= 0
5572
5573    (they may differ as to what symbols compare equal).  */
5574
5575 static int
5576 compare_names (const char *string1, const char *string2)
5577 {
5578   int result;
5579
5580   /* Similar to what strcmp_iw_ordered does, we need to perform
5581      a case-insensitive comparison first, and only resort to
5582      a second, case-sensitive, comparison if the first one was
5583      not sufficient to differentiate the two strings.  */
5584
5585   result = compare_names_with_case (string1, string2, case_sensitive_off);
5586   if (result == 0)
5587     result = compare_names_with_case (string1, string2, case_sensitive_on);
5588
5589   return result;
5590 }
5591
5592 /* Convenience function to get at the Ada encoded lookup name for
5593    LOOKUP_NAME, as a C string.  */
5594
5595 static const char *
5596 ada_lookup_name (const lookup_name_info &lookup_name)
5597 {
5598   return lookup_name.ada ().lookup_name ().c_str ();
5599 }
5600
5601 /* Add to OBSTACKP all non-local symbols whose name and domain match
5602    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5603    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5604    symbols otherwise.  */
5605
5606 static void
5607 add_nonlocal_symbols (struct obstack *obstackp,
5608                       const lookup_name_info &lookup_name,
5609                       domain_enum domain, int global)
5610 {
5611   struct match_data data;
5612
5613   memset (&data, 0, sizeof data);
5614   data.obstackp = obstackp;
5615
5616   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5617
5618   for (objfile *objfile : current_program_space->objfiles ())
5619     {
5620       data.objfile = objfile;
5621
5622       if (is_wild_match)
5623         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5624                                                domain, global,
5625                                                aux_add_nonlocal_symbols, &data,
5626                                                symbol_name_match_type::WILD,
5627                                                NULL);
5628       else
5629         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5630                                                domain, global,
5631                                                aux_add_nonlocal_symbols, &data,
5632                                                symbol_name_match_type::FULL,
5633                                                compare_names);
5634
5635       for (compunit_symtab *cu : objfile->compunits ())
5636         {
5637           const struct block *global_block
5638             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5639
5640           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5641                                        domain))
5642             data.found_sym = 1;
5643         }
5644     }
5645
5646   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5647     {
5648       const char *name = ada_lookup_name (lookup_name);
5649       std::string name1 = std::string ("<_ada_") + name + '>';
5650
5651       for (objfile *objfile : current_program_space->objfiles ())
5652         {
5653           data.objfile = objfile;
5654           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5655                                                  domain, global,
5656                                                  aux_add_nonlocal_symbols,
5657                                                  &data,
5658                                                  symbol_name_match_type::FULL,
5659                                                  compare_names);
5660         }
5661     }           
5662 }
5663
5664 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5665    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5666    returning the number of matches.  Add these to OBSTACKP.
5667
5668    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5669    symbol match within the nest of blocks whose innermost member is BLOCK,
5670    is the one match returned (no other matches in that or
5671    enclosing blocks is returned).  If there are any matches in or
5672    surrounding BLOCK, then these alone are returned.
5673
5674    Names prefixed with "standard__" are handled specially:
5675    "standard__" is first stripped off (by the lookup_name
5676    constructor), and only static and global symbols are searched.
5677
5678    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5679    to lookup global symbols.  */
5680
5681 static void
5682 ada_add_all_symbols (struct obstack *obstackp,
5683                      const struct block *block,
5684                      const lookup_name_info &lookup_name,
5685                      domain_enum domain,
5686                      int full_search,
5687                      int *made_global_lookup_p)
5688 {
5689   struct symbol *sym;
5690
5691   if (made_global_lookup_p)
5692     *made_global_lookup_p = 0;
5693
5694   /* Special case: If the user specifies a symbol name inside package
5695      Standard, do a non-wild matching of the symbol name without
5696      the "standard__" prefix.  This was primarily introduced in order
5697      to allow the user to specifically access the standard exceptions
5698      using, for instance, Standard.Constraint_Error when Constraint_Error
5699      is ambiguous (due to the user defining its own Constraint_Error
5700      entity inside its program).  */
5701   if (lookup_name.ada ().standard_p ())
5702     block = NULL;
5703
5704   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5705
5706   if (block != NULL)
5707     {
5708       if (full_search)
5709         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5710       else
5711         {
5712           /* In the !full_search case we're are being called by
5713              ada_iterate_over_symbols, and we don't want to search
5714              superblocks.  */
5715           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5716         }
5717       if (num_defns_collected (obstackp) > 0 || !full_search)
5718         return;
5719     }
5720
5721   /* No non-global symbols found.  Check our cache to see if we have
5722      already performed this search before.  If we have, then return
5723      the same result.  */
5724
5725   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5726                             domain, &sym, &block))
5727     {
5728       if (sym != NULL)
5729         add_defn_to_vec (obstackp, sym, block);
5730       return;
5731     }
5732
5733   if (made_global_lookup_p)
5734     *made_global_lookup_p = 1;
5735
5736   /* Search symbols from all global blocks.  */
5737  
5738   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5739
5740   /* Now add symbols from all per-file blocks if we've gotten no hits
5741      (not strictly correct, but perhaps better than an error).  */
5742
5743   if (num_defns_collected (obstackp) == 0)
5744     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5745 }
5746
5747 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5748    is non-zero, enclosing scope and in global scopes, returning the number of
5749    matches.
5750    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5751    found and the blocks and symbol tables (if any) in which they were
5752    found.
5753
5754    When full_search is non-zero, any non-function/non-enumeral
5755    symbol match within the nest of blocks whose innermost member is BLOCK,
5756    is the one match returned (no other matches in that or
5757    enclosing blocks is returned).  If there are any matches in or
5758    surrounding BLOCK, then these alone are returned.
5759
5760    Names prefixed with "standard__" are handled specially: "standard__"
5761    is first stripped off, and only static and global symbols are searched.  */
5762
5763 static int
5764 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5765                                const struct block *block,
5766                                domain_enum domain,
5767                                std::vector<struct block_symbol> *results,
5768                                int full_search)
5769 {
5770   int syms_from_global_search;
5771   int ndefns;
5772   auto_obstack obstack;
5773
5774   ada_add_all_symbols (&obstack, block, lookup_name,
5775                        domain, full_search, &syms_from_global_search);
5776
5777   ndefns = num_defns_collected (&obstack);
5778
5779   struct block_symbol *base = defns_collected (&obstack, 1);
5780   for (int i = 0; i < ndefns; ++i)
5781     results->push_back (base[i]);
5782
5783   ndefns = remove_extra_symbols (results);
5784
5785   if (ndefns == 0 && full_search && syms_from_global_search)
5786     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5787
5788   if (ndefns == 1 && full_search && syms_from_global_search)
5789     cache_symbol (ada_lookup_name (lookup_name), domain,
5790                   (*results)[0].symbol, (*results)[0].block);
5791
5792   ndefns = remove_irrelevant_renamings (results, block);
5793
5794   return ndefns;
5795 }
5796
5797 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5798    in global scopes, returning the number of matches, and filling *RESULTS
5799    with (SYM,BLOCK) tuples.
5800
5801    See ada_lookup_symbol_list_worker for further details.  */
5802
5803 int
5804 ada_lookup_symbol_list (const char *name, const struct block *block,
5805                         domain_enum domain,
5806                         std::vector<struct block_symbol> *results)
5807 {
5808   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5809   lookup_name_info lookup_name (name, name_match_type);
5810
5811   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5812 }
5813
5814 /* Implementation of the la_iterate_over_symbols method.  */
5815
5816 static void
5817 ada_iterate_over_symbols
5818   (const struct block *block, const lookup_name_info &name,
5819    domain_enum domain,
5820    gdb::function_view<symbol_found_callback_ftype> callback)
5821 {
5822   int ndefs, i;
5823   std::vector<struct block_symbol> results;
5824
5825   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5826
5827   for (i = 0; i < ndefs; ++i)
5828     {
5829       if (!callback (&results[i]))
5830         break;
5831     }
5832 }
5833
5834 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5835    to 1, but choosing the first symbol found if there are multiple
5836    choices.
5837
5838    The result is stored in *INFO, which must be non-NULL.
5839    If no match is found, INFO->SYM is set to NULL.  */
5840
5841 void
5842 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5843                            domain_enum domain,
5844                            struct block_symbol *info)
5845 {
5846   /* Since we already have an encoded name, wrap it in '<>' to force a
5847      verbatim match.  Otherwise, if the name happens to not look like
5848      an encoded name (because it doesn't include a "__"),
5849      ada_lookup_name_info would re-encode/fold it again, and that
5850      would e.g., incorrectly lowercase object renaming names like
5851      "R28b" -> "r28b".  */
5852   std::string verbatim = std::string ("<") + name + '>';
5853
5854   gdb_assert (info != NULL);
5855   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5856 }
5857
5858 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5859    scope and in global scopes, or NULL if none.  NAME is folded and
5860    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5861    choosing the first symbol if there are multiple choices.
5862    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5863
5864 struct block_symbol
5865 ada_lookup_symbol (const char *name, const struct block *block0,
5866                    domain_enum domain, int *is_a_field_of_this)
5867 {
5868   if (is_a_field_of_this != NULL)
5869     *is_a_field_of_this = 0;
5870
5871   std::vector<struct block_symbol> candidates;
5872   int n_candidates;
5873
5874   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5875
5876   if (n_candidates == 0)
5877     return {};
5878
5879   block_symbol info = candidates[0];
5880   info.symbol = fixup_symbol_section (info.symbol, NULL);
5881   return info;
5882 }
5883
5884 static struct block_symbol
5885 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5886                             const char *name,
5887                             const struct block *block,
5888                             const domain_enum domain)
5889 {
5890   struct block_symbol sym;
5891
5892   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5893   if (sym.symbol != NULL)
5894     return sym;
5895
5896   /* If we haven't found a match at this point, try the primitive
5897      types.  In other languages, this search is performed before
5898      searching for global symbols in order to short-circuit that
5899      global-symbol search if it happens that the name corresponds
5900      to a primitive type.  But we cannot do the same in Ada, because
5901      it is perfectly legitimate for a program to declare a type which
5902      has the same name as a standard type.  If looking up a type in
5903      that situation, we have traditionally ignored the primitive type
5904      in favor of user-defined types.  This is why, unlike most other
5905      languages, we search the primitive types this late and only after
5906      having searched the global symbols without success.  */
5907
5908   if (domain == VAR_DOMAIN)
5909     {
5910       struct gdbarch *gdbarch;
5911
5912       if (block == NULL)
5913         gdbarch = target_gdbarch ();
5914       else
5915         gdbarch = block_gdbarch (block);
5916       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5917       if (sym.symbol != NULL)
5918         return sym;
5919     }
5920
5921   return {};
5922 }
5923
5924
5925 /* True iff STR is a possible encoded suffix of a normal Ada name
5926    that is to be ignored for matching purposes.  Suffixes of parallel
5927    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5928    are given by any of the regular expressions:
5929
5930    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5931    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5932    TKB              [subprogram suffix for task bodies]
5933    _E[0-9]+[bs]$    [protected object entry suffixes]
5934    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5935
5936    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5937    match is performed.  This sequence is used to differentiate homonyms,
5938    is an optional part of a valid name suffix.  */
5939
5940 static int
5941 is_name_suffix (const char *str)
5942 {
5943   int k;
5944   const char *matching;
5945   const int len = strlen (str);
5946
5947   /* Skip optional leading __[0-9]+.  */
5948
5949   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5950     {
5951       str += 3;
5952       while (isdigit (str[0]))
5953         str += 1;
5954     }
5955   
5956   /* [.$][0-9]+ */
5957
5958   if (str[0] == '.' || str[0] == '$')
5959     {
5960       matching = str + 1;
5961       while (isdigit (matching[0]))
5962         matching += 1;
5963       if (matching[0] == '\0')
5964         return 1;
5965     }
5966
5967   /* ___[0-9]+ */
5968
5969   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5970     {
5971       matching = str + 3;
5972       while (isdigit (matching[0]))
5973         matching += 1;
5974       if (matching[0] == '\0')
5975         return 1;
5976     }
5977
5978   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5979
5980   if (strcmp (str, "TKB") == 0)
5981     return 1;
5982
5983 #if 0
5984   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5985      with a N at the end.  Unfortunately, the compiler uses the same
5986      convention for other internal types it creates.  So treating
5987      all entity names that end with an "N" as a name suffix causes
5988      some regressions.  For instance, consider the case of an enumerated
5989      type.  To support the 'Image attribute, it creates an array whose
5990      name ends with N.
5991      Having a single character like this as a suffix carrying some
5992      information is a bit risky.  Perhaps we should change the encoding
5993      to be something like "_N" instead.  In the meantime, do not do
5994      the following check.  */
5995   /* Protected Object Subprograms */
5996   if (len == 1 && str [0] == 'N')
5997     return 1;
5998 #endif
5999
6000   /* _E[0-9]+[bs]$ */
6001   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6002     {
6003       matching = str + 3;
6004       while (isdigit (matching[0]))
6005         matching += 1;
6006       if ((matching[0] == 'b' || matching[0] == 's')
6007           && matching [1] == '\0')
6008         return 1;
6009     }
6010
6011   /* ??? We should not modify STR directly, as we are doing below.  This
6012      is fine in this case, but may become problematic later if we find
6013      that this alternative did not work, and want to try matching
6014      another one from the begining of STR.  Since we modified it, we
6015      won't be able to find the begining of the string anymore!  */
6016   if (str[0] == 'X')
6017     {
6018       str += 1;
6019       while (str[0] != '_' && str[0] != '\0')
6020         {
6021           if (str[0] != 'n' && str[0] != 'b')
6022             return 0;
6023           str += 1;
6024         }
6025     }
6026
6027   if (str[0] == '\000')
6028     return 1;
6029
6030   if (str[0] == '_')
6031     {
6032       if (str[1] != '_' || str[2] == '\000')
6033         return 0;
6034       if (str[2] == '_')
6035         {
6036           if (strcmp (str + 3, "JM") == 0)
6037             return 1;
6038           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6039              the LJM suffix in favor of the JM one.  But we will
6040              still accept LJM as a valid suffix for a reasonable
6041              amount of time, just to allow ourselves to debug programs
6042              compiled using an older version of GNAT.  */
6043           if (strcmp (str + 3, "LJM") == 0)
6044             return 1;
6045           if (str[3] != 'X')
6046             return 0;
6047           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6048               || str[4] == 'U' || str[4] == 'P')
6049             return 1;
6050           if (str[4] == 'R' && str[5] != 'T')
6051             return 1;
6052           return 0;
6053         }
6054       if (!isdigit (str[2]))
6055         return 0;
6056       for (k = 3; str[k] != '\0'; k += 1)
6057         if (!isdigit (str[k]) && str[k] != '_')
6058           return 0;
6059       return 1;
6060     }
6061   if (str[0] == '$' && isdigit (str[1]))
6062     {
6063       for (k = 2; str[k] != '\0'; k += 1)
6064         if (!isdigit (str[k]) && str[k] != '_')
6065           return 0;
6066       return 1;
6067     }
6068   return 0;
6069 }
6070
6071 /* Return non-zero if the string starting at NAME and ending before
6072    NAME_END contains no capital letters.  */
6073
6074 static int
6075 is_valid_name_for_wild_match (const char *name0)
6076 {
6077   const char *decoded_name = ada_decode (name0);
6078   int i;
6079
6080   /* If the decoded name starts with an angle bracket, it means that
6081      NAME0 does not follow the GNAT encoding format.  It should then
6082      not be allowed as a possible wild match.  */
6083   if (decoded_name[0] == '<')
6084     return 0;
6085
6086   for (i=0; decoded_name[i] != '\0'; i++)
6087     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6088       return 0;
6089
6090   return 1;
6091 }
6092
6093 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6094    that could start a simple name.  Assumes that *NAMEP points into
6095    the string beginning at NAME0.  */
6096
6097 static int
6098 advance_wild_match (const char **namep, const char *name0, int target0)
6099 {
6100   const char *name = *namep;
6101
6102   while (1)
6103     {
6104       int t0, t1;
6105
6106       t0 = *name;
6107       if (t0 == '_')
6108         {
6109           t1 = name[1];
6110           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6111             {
6112               name += 1;
6113               if (name == name0 + 5 && startswith (name0, "_ada"))
6114                 break;
6115               else
6116                 name += 1;
6117             }
6118           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6119                                  || name[2] == target0))
6120             {
6121               name += 2;
6122               break;
6123             }
6124           else
6125             return 0;
6126         }
6127       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6128         name += 1;
6129       else
6130         return 0;
6131     }
6132
6133   *namep = name;
6134   return 1;
6135 }
6136
6137 /* Return true iff NAME encodes a name of the form prefix.PATN.
6138    Ignores any informational suffixes of NAME (i.e., for which
6139    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6140    simple name.  */
6141
6142 static bool
6143 wild_match (const char *name, const char *patn)
6144 {
6145   const char *p;
6146   const char *name0 = name;
6147
6148   while (1)
6149     {
6150       const char *match = name;
6151
6152       if (*name == *patn)
6153         {
6154           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6155             if (*p != *name)
6156               break;
6157           if (*p == '\0' && is_name_suffix (name))
6158             return match == name0 || is_valid_name_for_wild_match (name0);
6159
6160           if (name[-1] == '_')
6161             name -= 1;
6162         }
6163       if (!advance_wild_match (&name, name0, *patn))
6164         return false;
6165     }
6166 }
6167
6168 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6169    any trailing suffixes that encode debugging information or leading
6170    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6171    information that is ignored).  */
6172
6173 static bool
6174 full_match (const char *sym_name, const char *search_name)
6175 {
6176   size_t search_name_len = strlen (search_name);
6177
6178   if (strncmp (sym_name, search_name, search_name_len) == 0
6179       && is_name_suffix (sym_name + search_name_len))
6180     return true;
6181
6182   if (startswith (sym_name, "_ada_")
6183       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6184       && is_name_suffix (sym_name + search_name_len + 5))
6185     return true;
6186
6187   return false;
6188 }
6189
6190 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6191    *defn_symbols, updating the list of symbols in OBSTACKP (if
6192    necessary).  OBJFILE is the section containing BLOCK.  */
6193
6194 static void
6195 ada_add_block_symbols (struct obstack *obstackp,
6196                        const struct block *block,
6197                        const lookup_name_info &lookup_name,
6198                        domain_enum domain, struct objfile *objfile)
6199 {
6200   struct block_iterator iter;
6201   /* A matching argument symbol, if any.  */
6202   struct symbol *arg_sym;
6203   /* Set true when we find a matching non-argument symbol.  */
6204   int found_sym;
6205   struct symbol *sym;
6206
6207   arg_sym = NULL;
6208   found_sym = 0;
6209   for (sym = block_iter_match_first (block, lookup_name, &iter);
6210        sym != NULL;
6211        sym = block_iter_match_next (lookup_name, &iter))
6212     {
6213       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6214                                  SYMBOL_DOMAIN (sym), domain))
6215         {
6216           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6217             {
6218               if (SYMBOL_IS_ARGUMENT (sym))
6219                 arg_sym = sym;
6220               else
6221                 {
6222                   found_sym = 1;
6223                   add_defn_to_vec (obstackp,
6224                                    fixup_symbol_section (sym, objfile),
6225                                    block);
6226                 }
6227             }
6228         }
6229     }
6230
6231   /* Handle renamings.  */
6232
6233   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6234     found_sym = 1;
6235
6236   if (!found_sym && arg_sym != NULL)
6237     {
6238       add_defn_to_vec (obstackp,
6239                        fixup_symbol_section (arg_sym, objfile),
6240                        block);
6241     }
6242
6243   if (!lookup_name.ada ().wild_match_p ())
6244     {
6245       arg_sym = NULL;
6246       found_sym = 0;
6247       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6248       const char *name = ada_lookup_name.c_str ();
6249       size_t name_len = ada_lookup_name.size ();
6250
6251       ALL_BLOCK_SYMBOLS (block, iter, sym)
6252       {
6253         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6254                                    SYMBOL_DOMAIN (sym), domain))
6255           {
6256             int cmp;
6257
6258             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6259             if (cmp == 0)
6260               {
6261                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6262                 if (cmp == 0)
6263                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6264                                  name_len);
6265               }
6266
6267             if (cmp == 0
6268                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6269               {
6270                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6271                   {
6272                     if (SYMBOL_IS_ARGUMENT (sym))
6273                       arg_sym = sym;
6274                     else
6275                       {
6276                         found_sym = 1;
6277                         add_defn_to_vec (obstackp,
6278                                          fixup_symbol_section (sym, objfile),
6279                                          block);
6280                       }
6281                   }
6282               }
6283           }
6284       }
6285
6286       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6287          They aren't parameters, right?  */
6288       if (!found_sym && arg_sym != NULL)
6289         {
6290           add_defn_to_vec (obstackp,
6291                            fixup_symbol_section (arg_sym, objfile),
6292                            block);
6293         }
6294     }
6295 }
6296 \f
6297
6298                                 /* Symbol Completion */
6299
6300 /* See symtab.h.  */
6301
6302 bool
6303 ada_lookup_name_info::matches
6304   (const char *sym_name,
6305    symbol_name_match_type match_type,
6306    completion_match_result *comp_match_res) const
6307 {
6308   bool match = false;
6309   const char *text = m_encoded_name.c_str ();
6310   size_t text_len = m_encoded_name.size ();
6311
6312   /* First, test against the fully qualified name of the symbol.  */
6313
6314   if (strncmp (sym_name, text, text_len) == 0)
6315     match = true;
6316
6317   if (match && !m_encoded_p)
6318     {
6319       /* One needed check before declaring a positive match is to verify
6320          that iff we are doing a verbatim match, the decoded version
6321          of the symbol name starts with '<'.  Otherwise, this symbol name
6322          is not a suitable completion.  */
6323       const char *sym_name_copy = sym_name;
6324       bool has_angle_bracket;
6325
6326       sym_name = ada_decode (sym_name);
6327       has_angle_bracket = (sym_name[0] == '<');
6328       match = (has_angle_bracket == m_verbatim_p);
6329       sym_name = sym_name_copy;
6330     }
6331
6332   if (match && !m_verbatim_p)
6333     {
6334       /* When doing non-verbatim match, another check that needs to
6335          be done is to verify that the potentially matching symbol name
6336          does not include capital letters, because the ada-mode would
6337          not be able to understand these symbol names without the
6338          angle bracket notation.  */
6339       const char *tmp;
6340
6341       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6342       if (*tmp != '\0')
6343         match = false;
6344     }
6345
6346   /* Second: Try wild matching...  */
6347
6348   if (!match && m_wild_match_p)
6349     {
6350       /* Since we are doing wild matching, this means that TEXT
6351          may represent an unqualified symbol name.  We therefore must
6352          also compare TEXT against the unqualified name of the symbol.  */
6353       sym_name = ada_unqualified_name (ada_decode (sym_name));
6354
6355       if (strncmp (sym_name, text, text_len) == 0)
6356         match = true;
6357     }
6358
6359   /* Finally: If we found a match, prepare the result to return.  */
6360
6361   if (!match)
6362     return false;
6363
6364   if (comp_match_res != NULL)
6365     {
6366       std::string &match_str = comp_match_res->match.storage ();
6367
6368       if (!m_encoded_p)
6369         match_str = ada_decode (sym_name);
6370       else
6371         {
6372           if (m_verbatim_p)
6373             match_str = add_angle_brackets (sym_name);
6374           else
6375             match_str = sym_name;
6376
6377         }
6378
6379       comp_match_res->set_match (match_str.c_str ());
6380     }
6381
6382   return true;
6383 }
6384
6385 /* Add the list of possible symbol names completing TEXT to TRACKER.
6386    WORD is the entire command on which completion is made.  */
6387
6388 static void
6389 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6390                                        complete_symbol_mode mode,
6391                                        symbol_name_match_type name_match_type,
6392                                        const char *text, const char *word,
6393                                        enum type_code code)
6394 {
6395   struct symbol *sym;
6396   const struct block *b, *surrounding_static_block = 0;
6397   struct block_iterator iter;
6398
6399   gdb_assert (code == TYPE_CODE_UNDEF);
6400
6401   lookup_name_info lookup_name (text, name_match_type, true);
6402
6403   /* First, look at the partial symtab symbols.  */
6404   expand_symtabs_matching (NULL,
6405                            lookup_name,
6406                            NULL,
6407                            NULL,
6408                            ALL_DOMAIN);
6409
6410   /* At this point scan through the misc symbol vectors and add each
6411      symbol you find to the list.  Eventually we want to ignore
6412      anything that isn't a text symbol (everything else will be
6413      handled by the psymtab code above).  */
6414
6415   for (objfile *objfile : current_program_space->objfiles ())
6416     {
6417       for (minimal_symbol *msymbol : objfile->msymbols ())
6418         {
6419           QUIT;
6420
6421           if (completion_skip_symbol (mode, msymbol))
6422             continue;
6423
6424           language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6425
6426           /* Ada minimal symbols won't have their language set to Ada.  If
6427              we let completion_list_add_name compare using the
6428              default/C-like matcher, then when completing e.g., symbols in a
6429              package named "pck", we'd match internal Ada symbols like
6430              "pckS", which are invalid in an Ada expression, unless you wrap
6431              them in '<' '>' to request a verbatim match.
6432
6433              Unfortunately, some Ada encoded names successfully demangle as
6434              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6435              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6436              with the wrong language set.  Paper over that issue here.  */
6437           if (symbol_language == language_auto
6438               || symbol_language == language_cplus)
6439             symbol_language = language_ada;
6440
6441           completion_list_add_name (tracker,
6442                                     symbol_language,
6443                                     MSYMBOL_LINKAGE_NAME (msymbol),
6444                                     lookup_name, text, word);
6445         }
6446     }
6447
6448   /* Search upwards from currently selected frame (so that we can
6449      complete on local vars.  */
6450
6451   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6452     {
6453       if (!BLOCK_SUPERBLOCK (b))
6454         surrounding_static_block = b;   /* For elmin of dups */
6455
6456       ALL_BLOCK_SYMBOLS (b, iter, sym)
6457       {
6458         if (completion_skip_symbol (mode, sym))
6459           continue;
6460
6461         completion_list_add_name (tracker,
6462                                   SYMBOL_LANGUAGE (sym),
6463                                   SYMBOL_LINKAGE_NAME (sym),
6464                                   lookup_name, text, word);
6465       }
6466     }
6467
6468   /* Go through the symtabs and check the externs and statics for
6469      symbols which match.  */
6470
6471   for (objfile *objfile : current_program_space->objfiles ())
6472     {
6473       for (compunit_symtab *s : objfile->compunits ())
6474         {
6475           QUIT;
6476           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6477           ALL_BLOCK_SYMBOLS (b, iter, sym)
6478             {
6479               if (completion_skip_symbol (mode, sym))
6480                 continue;
6481
6482               completion_list_add_name (tracker,
6483                                         SYMBOL_LANGUAGE (sym),
6484                                         SYMBOL_LINKAGE_NAME (sym),
6485                                         lookup_name, text, word);
6486             }
6487         }
6488     }
6489
6490   for (objfile *objfile : current_program_space->objfiles ())
6491     {
6492       for (compunit_symtab *s : objfile->compunits ())
6493         {
6494           QUIT;
6495           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6496           /* Don't do this block twice.  */
6497           if (b == surrounding_static_block)
6498             continue;
6499           ALL_BLOCK_SYMBOLS (b, iter, sym)
6500             {
6501               if (completion_skip_symbol (mode, sym))
6502                 continue;
6503
6504               completion_list_add_name (tracker,
6505                                         SYMBOL_LANGUAGE (sym),
6506                                         SYMBOL_LINKAGE_NAME (sym),
6507                                         lookup_name, text, word);
6508             }
6509         }
6510     }
6511 }
6512
6513                                 /* Field Access */
6514
6515 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6516    for tagged types.  */
6517
6518 static int
6519 ada_is_dispatch_table_ptr_type (struct type *type)
6520 {
6521   const char *name;
6522
6523   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6524     return 0;
6525
6526   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6527   if (name == NULL)
6528     return 0;
6529
6530   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6531 }
6532
6533 /* Return non-zero if TYPE is an interface tag.  */
6534
6535 static int
6536 ada_is_interface_tag (struct type *type)
6537 {
6538   const char *name = TYPE_NAME (type);
6539
6540   if (name == NULL)
6541     return 0;
6542
6543   return (strcmp (name, "ada__tags__interface_tag") == 0);
6544 }
6545
6546 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6547    to be invisible to users.  */
6548
6549 int
6550 ada_is_ignored_field (struct type *type, int field_num)
6551 {
6552   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6553     return 1;
6554
6555   /* Check the name of that field.  */
6556   {
6557     const char *name = TYPE_FIELD_NAME (type, field_num);
6558
6559     /* Anonymous field names should not be printed.
6560        brobecker/2007-02-20: I don't think this can actually happen
6561        but we don't want to print the value of annonymous fields anyway.  */
6562     if (name == NULL)
6563       return 1;
6564
6565     /* Normally, fields whose name start with an underscore ("_")
6566        are fields that have been internally generated by the compiler,
6567        and thus should not be printed.  The "_parent" field is special,
6568        however: This is a field internally generated by the compiler
6569        for tagged types, and it contains the components inherited from
6570        the parent type.  This field should not be printed as is, but
6571        should not be ignored either.  */
6572     if (name[0] == '_' && !startswith (name, "_parent"))
6573       return 1;
6574   }
6575
6576   /* If this is the dispatch table of a tagged type or an interface tag,
6577      then ignore.  */
6578   if (ada_is_tagged_type (type, 1)
6579       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6580           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6581     return 1;
6582
6583   /* Not a special field, so it should not be ignored.  */
6584   return 0;
6585 }
6586
6587 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6588    pointer or reference type whose ultimate target has a tag field.  */
6589
6590 int
6591 ada_is_tagged_type (struct type *type, int refok)
6592 {
6593   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6594 }
6595
6596 /* True iff TYPE represents the type of X'Tag */
6597
6598 int
6599 ada_is_tag_type (struct type *type)
6600 {
6601   type = ada_check_typedef (type);
6602
6603   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6604     return 0;
6605   else
6606     {
6607       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6608
6609       return (name != NULL
6610               && strcmp (name, "ada__tags__dispatch_table") == 0);
6611     }
6612 }
6613
6614 /* The type of the tag on VAL.  */
6615
6616 struct type *
6617 ada_tag_type (struct value *val)
6618 {
6619   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6620 }
6621
6622 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6623    retired at Ada 05).  */
6624
6625 static int
6626 is_ada95_tag (struct value *tag)
6627 {
6628   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6629 }
6630
6631 /* The value of the tag on VAL.  */
6632
6633 struct value *
6634 ada_value_tag (struct value *val)
6635 {
6636   return ada_value_struct_elt (val, "_tag", 0);
6637 }
6638
6639 /* The value of the tag on the object of type TYPE whose contents are
6640    saved at VALADDR, if it is non-null, or is at memory address
6641    ADDRESS.  */
6642
6643 static struct value *
6644 value_tag_from_contents_and_address (struct type *type,
6645                                      const gdb_byte *valaddr,
6646                                      CORE_ADDR address)
6647 {
6648   int tag_byte_offset;
6649   struct type *tag_type;
6650
6651   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6652                          NULL, NULL, NULL))
6653     {
6654       const gdb_byte *valaddr1 = ((valaddr == NULL)
6655                                   ? NULL
6656                                   : valaddr + tag_byte_offset);
6657       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6658
6659       return value_from_contents_and_address (tag_type, valaddr1, address1);
6660     }
6661   return NULL;
6662 }
6663
6664 static struct type *
6665 type_from_tag (struct value *tag)
6666 {
6667   const char *type_name = ada_tag_name (tag);
6668
6669   if (type_name != NULL)
6670     return ada_find_any_type (ada_encode (type_name));
6671   return NULL;
6672 }
6673
6674 /* Given a value OBJ of a tagged type, return a value of this
6675    type at the base address of the object.  The base address, as
6676    defined in Ada.Tags, it is the address of the primary tag of
6677    the object, and therefore where the field values of its full
6678    view can be fetched.  */
6679
6680 struct value *
6681 ada_tag_value_at_base_address (struct value *obj)
6682 {
6683   struct value *val;
6684   LONGEST offset_to_top = 0;
6685   struct type *ptr_type, *obj_type;
6686   struct value *tag;
6687   CORE_ADDR base_address;
6688
6689   obj_type = value_type (obj);
6690
6691   /* It is the responsability of the caller to deref pointers.  */
6692
6693   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6694       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6695     return obj;
6696
6697   tag = ada_value_tag (obj);
6698   if (!tag)
6699     return obj;
6700
6701   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6702
6703   if (is_ada95_tag (tag))
6704     return obj;
6705
6706   ptr_type = language_lookup_primitive_type
6707     (language_def (language_ada), target_gdbarch(), "storage_offset");
6708   ptr_type = lookup_pointer_type (ptr_type);
6709   val = value_cast (ptr_type, tag);
6710   if (!val)
6711     return obj;
6712
6713   /* It is perfectly possible that an exception be raised while
6714      trying to determine the base address, just like for the tag;
6715      see ada_tag_name for more details.  We do not print the error
6716      message for the same reason.  */
6717
6718   TRY
6719     {
6720       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6721     }
6722
6723   CATCH (e, RETURN_MASK_ERROR)
6724     {
6725       return obj;
6726     }
6727   END_CATCH
6728
6729   /* If offset is null, nothing to do.  */
6730
6731   if (offset_to_top == 0)
6732     return obj;
6733
6734   /* -1 is a special case in Ada.Tags; however, what should be done
6735      is not quite clear from the documentation.  So do nothing for
6736      now.  */
6737
6738   if (offset_to_top == -1)
6739     return obj;
6740
6741   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6742      from the base address.  This was however incompatible with
6743      C++ dispatch table: C++ uses a *negative* value to *add*
6744      to the base address.  Ada's convention has therefore been
6745      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6746      use the same convention.  Here, we support both cases by
6747      checking the sign of OFFSET_TO_TOP.  */
6748
6749   if (offset_to_top > 0)
6750     offset_to_top = -offset_to_top;
6751
6752   base_address = value_address (obj) + offset_to_top;
6753   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6754
6755   /* Make sure that we have a proper tag at the new address.
6756      Otherwise, offset_to_top is bogus (which can happen when
6757      the object is not initialized yet).  */
6758
6759   if (!tag)
6760     return obj;
6761
6762   obj_type = type_from_tag (tag);
6763
6764   if (!obj_type)
6765     return obj;
6766
6767   return value_from_contents_and_address (obj_type, NULL, base_address);
6768 }
6769
6770 /* Return the "ada__tags__type_specific_data" type.  */
6771
6772 static struct type *
6773 ada_get_tsd_type (struct inferior *inf)
6774 {
6775   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6776
6777   if (data->tsd_type == 0)
6778     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6779   return data->tsd_type;
6780 }
6781
6782 /* Return the TSD (type-specific data) associated to the given TAG.
6783    TAG is assumed to be the tag of a tagged-type entity.
6784
6785    May return NULL if we are unable to get the TSD.  */
6786
6787 static struct value *
6788 ada_get_tsd_from_tag (struct value *tag)
6789 {
6790   struct value *val;
6791   struct type *type;
6792
6793   /* First option: The TSD is simply stored as a field of our TAG.
6794      Only older versions of GNAT would use this format, but we have
6795      to test it first, because there are no visible markers for
6796      the current approach except the absence of that field.  */
6797
6798   val = ada_value_struct_elt (tag, "tsd", 1);
6799   if (val)
6800     return val;
6801
6802   /* Try the second representation for the dispatch table (in which
6803      there is no explicit 'tsd' field in the referent of the tag pointer,
6804      and instead the tsd pointer is stored just before the dispatch
6805      table.  */
6806
6807   type = ada_get_tsd_type (current_inferior());
6808   if (type == NULL)
6809     return NULL;
6810   type = lookup_pointer_type (lookup_pointer_type (type));
6811   val = value_cast (type, tag);
6812   if (val == NULL)
6813     return NULL;
6814   return value_ind (value_ptradd (val, -1));
6815 }
6816
6817 /* Given the TSD of a tag (type-specific data), return a string
6818    containing the name of the associated type.
6819
6820    The returned value is good until the next call.  May return NULL
6821    if we are unable to determine the tag name.  */
6822
6823 static char *
6824 ada_tag_name_from_tsd (struct value *tsd)
6825 {
6826   static char name[1024];
6827   char *p;
6828   struct value *val;
6829
6830   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6831   if (val == NULL)
6832     return NULL;
6833   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6834   for (p = name; *p != '\0'; p += 1)
6835     if (isalpha (*p))
6836       *p = tolower (*p);
6837   return name;
6838 }
6839
6840 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6841    a C string.
6842
6843    Return NULL if the TAG is not an Ada tag, or if we were unable to
6844    determine the name of that tag.  The result is good until the next
6845    call.  */
6846
6847 const char *
6848 ada_tag_name (struct value *tag)
6849 {
6850   char *name = NULL;
6851
6852   if (!ada_is_tag_type (value_type (tag)))
6853     return NULL;
6854
6855   /* It is perfectly possible that an exception be raised while trying
6856      to determine the TAG's name, even under normal circumstances:
6857      The associated variable may be uninitialized or corrupted, for
6858      instance. We do not let any exception propagate past this point.
6859      instead we return NULL.
6860
6861      We also do not print the error message either (which often is very
6862      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6863      the caller print a more meaningful message if necessary.  */
6864   TRY
6865     {
6866       struct value *tsd = ada_get_tsd_from_tag (tag);
6867
6868       if (tsd != NULL)
6869         name = ada_tag_name_from_tsd (tsd);
6870     }
6871   CATCH (e, RETURN_MASK_ERROR)
6872     {
6873     }
6874   END_CATCH
6875
6876   return name;
6877 }
6878
6879 /* The parent type of TYPE, or NULL if none.  */
6880
6881 struct type *
6882 ada_parent_type (struct type *type)
6883 {
6884   int i;
6885
6886   type = ada_check_typedef (type);
6887
6888   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6889     return NULL;
6890
6891   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6892     if (ada_is_parent_field (type, i))
6893       {
6894         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6895
6896         /* If the _parent field is a pointer, then dereference it.  */
6897         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6898           parent_type = TYPE_TARGET_TYPE (parent_type);
6899         /* If there is a parallel XVS type, get the actual base type.  */
6900         parent_type = ada_get_base_type (parent_type);
6901
6902         return ada_check_typedef (parent_type);
6903       }
6904
6905   return NULL;
6906 }
6907
6908 /* True iff field number FIELD_NUM of structure type TYPE contains the
6909    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6910    a structure type with at least FIELD_NUM+1 fields.  */
6911
6912 int
6913 ada_is_parent_field (struct type *type, int field_num)
6914 {
6915   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6916
6917   return (name != NULL
6918           && (startswith (name, "PARENT")
6919               || startswith (name, "_parent")));
6920 }
6921
6922 /* True iff field number FIELD_NUM of structure type TYPE is a
6923    transparent wrapper field (which should be silently traversed when doing
6924    field selection and flattened when printing).  Assumes TYPE is a
6925    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6926    structures.  */
6927
6928 int
6929 ada_is_wrapper_field (struct type *type, int field_num)
6930 {
6931   const char *name = TYPE_FIELD_NAME (type, field_num);
6932
6933   if (name != NULL && strcmp (name, "RETVAL") == 0)
6934     {
6935       /* This happens in functions with "out" or "in out" parameters
6936          which are passed by copy.  For such functions, GNAT describes
6937          the function's return type as being a struct where the return
6938          value is in a field called RETVAL, and where the other "out"
6939          or "in out" parameters are fields of that struct.  This is not
6940          a wrapper.  */
6941       return 0;
6942     }
6943
6944   return (name != NULL
6945           && (startswith (name, "PARENT")
6946               || strcmp (name, "REP") == 0
6947               || startswith (name, "_parent")
6948               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6949 }
6950
6951 /* True iff field number FIELD_NUM of structure or union type TYPE
6952    is a variant wrapper.  Assumes TYPE is a structure type with at least
6953    FIELD_NUM+1 fields.  */
6954
6955 int
6956 ada_is_variant_part (struct type *type, int field_num)
6957 {
6958   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6959
6960   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6961           || (is_dynamic_field (type, field_num)
6962               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6963                   == TYPE_CODE_UNION)));
6964 }
6965
6966 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6967    whose discriminants are contained in the record type OUTER_TYPE,
6968    returns the type of the controlling discriminant for the variant.
6969    May return NULL if the type could not be found.  */
6970
6971 struct type *
6972 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6973 {
6974   const char *name = ada_variant_discrim_name (var_type);
6975
6976   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6977 }
6978
6979 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6980    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6981    represents a 'when others' clause; otherwise 0.  */
6982
6983 int
6984 ada_is_others_clause (struct type *type, int field_num)
6985 {
6986   const char *name = TYPE_FIELD_NAME (type, field_num);
6987
6988   return (name != NULL && name[0] == 'O');
6989 }
6990
6991 /* Assuming that TYPE0 is the type of the variant part of a record,
6992    returns the name of the discriminant controlling the variant.
6993    The value is valid until the next call to ada_variant_discrim_name.  */
6994
6995 const char *
6996 ada_variant_discrim_name (struct type *type0)
6997 {
6998   static char *result = NULL;
6999   static size_t result_len = 0;
7000   struct type *type;
7001   const char *name;
7002   const char *discrim_end;
7003   const char *discrim_start;
7004
7005   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7006     type = TYPE_TARGET_TYPE (type0);
7007   else
7008     type = type0;
7009
7010   name = ada_type_name (type);
7011
7012   if (name == NULL || name[0] == '\000')
7013     return "";
7014
7015   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7016        discrim_end -= 1)
7017     {
7018       if (startswith (discrim_end, "___XVN"))
7019         break;
7020     }
7021   if (discrim_end == name)
7022     return "";
7023
7024   for (discrim_start = discrim_end; discrim_start != name + 3;
7025        discrim_start -= 1)
7026     {
7027       if (discrim_start == name + 1)
7028         return "";
7029       if ((discrim_start > name + 3
7030            && startswith (discrim_start - 3, "___"))
7031           || discrim_start[-1] == '.')
7032         break;
7033     }
7034
7035   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7036   strncpy (result, discrim_start, discrim_end - discrim_start);
7037   result[discrim_end - discrim_start] = '\0';
7038   return result;
7039 }
7040
7041 /* Scan STR for a subtype-encoded number, beginning at position K.
7042    Put the position of the character just past the number scanned in
7043    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7044    Return 1 if there was a valid number at the given position, and 0
7045    otherwise.  A "subtype-encoded" number consists of the absolute value
7046    in decimal, followed by the letter 'm' to indicate a negative number.
7047    Assumes 0m does not occur.  */
7048
7049 int
7050 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7051 {
7052   ULONGEST RU;
7053
7054   if (!isdigit (str[k]))
7055     return 0;
7056
7057   /* Do it the hard way so as not to make any assumption about
7058      the relationship of unsigned long (%lu scan format code) and
7059      LONGEST.  */
7060   RU = 0;
7061   while (isdigit (str[k]))
7062     {
7063       RU = RU * 10 + (str[k] - '0');
7064       k += 1;
7065     }
7066
7067   if (str[k] == 'm')
7068     {
7069       if (R != NULL)
7070         *R = (-(LONGEST) (RU - 1)) - 1;
7071       k += 1;
7072     }
7073   else if (R != NULL)
7074     *R = (LONGEST) RU;
7075
7076   /* NOTE on the above: Technically, C does not say what the results of
7077      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7078      number representable as a LONGEST (although either would probably work
7079      in most implementations).  When RU>0, the locution in the then branch
7080      above is always equivalent to the negative of RU.  */
7081
7082   if (new_k != NULL)
7083     *new_k = k;
7084   return 1;
7085 }
7086
7087 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7088    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7089    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7090
7091 int
7092 ada_in_variant (LONGEST val, struct type *type, int field_num)
7093 {
7094   const char *name = TYPE_FIELD_NAME (type, field_num);
7095   int p;
7096
7097   p = 0;
7098   while (1)
7099     {
7100       switch (name[p])
7101         {
7102         case '\0':
7103           return 0;
7104         case 'S':
7105           {
7106             LONGEST W;
7107
7108             if (!ada_scan_number (name, p + 1, &W, &p))
7109               return 0;
7110             if (val == W)
7111               return 1;
7112             break;
7113           }
7114         case 'R':
7115           {
7116             LONGEST L, U;
7117
7118             if (!ada_scan_number (name, p + 1, &L, &p)
7119                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7120               return 0;
7121             if (val >= L && val <= U)
7122               return 1;
7123             break;
7124           }
7125         case 'O':
7126           return 1;
7127         default:
7128           return 0;
7129         }
7130     }
7131 }
7132
7133 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7134
7135 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7136    ARG_TYPE, extract and return the value of one of its (non-static)
7137    fields.  FIELDNO says which field.   Differs from value_primitive_field
7138    only in that it can handle packed values of arbitrary type.  */
7139
7140 static struct value *
7141 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7142                            struct type *arg_type)
7143 {
7144   struct type *type;
7145
7146   arg_type = ada_check_typedef (arg_type);
7147   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7148
7149   /* Handle packed fields.  */
7150
7151   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7152     {
7153       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7154       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7155
7156       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7157                                              offset + bit_pos / 8,
7158                                              bit_pos % 8, bit_size, type);
7159     }
7160   else
7161     return value_primitive_field (arg1, offset, fieldno, arg_type);
7162 }
7163
7164 /* Find field with name NAME in object of type TYPE.  If found, 
7165    set the following for each argument that is non-null:
7166     - *FIELD_TYPE_P to the field's type; 
7167     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7168       an object of that type;
7169     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7170     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7171       0 otherwise;
7172    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7173    fields up to but not including the desired field, or by the total
7174    number of fields if not found.   A NULL value of NAME never
7175    matches; the function just counts visible fields in this case.
7176    
7177    Notice that we need to handle when a tagged record hierarchy
7178    has some components with the same name, like in this scenario:
7179
7180       type Top_T is tagged record
7181          N : Integer := 1;
7182          U : Integer := 974;
7183          A : Integer := 48;
7184       end record;
7185
7186       type Middle_T is new Top.Top_T with record
7187          N : Character := 'a';
7188          C : Integer := 3;
7189       end record;
7190
7191      type Bottom_T is new Middle.Middle_T with record
7192         N : Float := 4.0;
7193         C : Character := '5';
7194         X : Integer := 6;
7195         A : Character := 'J';
7196      end record;
7197
7198    Let's say we now have a variable declared and initialized as follow:
7199
7200      TC : Top_A := new Bottom_T;
7201
7202    And then we use this variable to call this function
7203
7204      procedure Assign (Obj: in out Top_T; TV : Integer);
7205
7206    as follow:
7207
7208       Assign (Top_T (B), 12);
7209
7210    Now, we're in the debugger, and we're inside that procedure
7211    then and we want to print the value of obj.c:
7212
7213    Usually, the tagged record or one of the parent type owns the
7214    component to print and there's no issue but in this particular
7215    case, what does it mean to ask for Obj.C? Since the actual
7216    type for object is type Bottom_T, it could mean two things: type
7217    component C from the Middle_T view, but also component C from
7218    Bottom_T.  So in that "undefined" case, when the component is
7219    not found in the non-resolved type (which includes all the
7220    components of the parent type), then resolve it and see if we
7221    get better luck once expanded.
7222
7223    In the case of homonyms in the derived tagged type, we don't
7224    guaranty anything, and pick the one that's easiest for us
7225    to program.
7226
7227    Returns 1 if found, 0 otherwise.  */
7228
7229 static int
7230 find_struct_field (const char *name, struct type *type, int offset,
7231                    struct type **field_type_p,
7232                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7233                    int *index_p)
7234 {
7235   int i;
7236   int parent_offset = -1;
7237
7238   type = ada_check_typedef (type);
7239
7240   if (field_type_p != NULL)
7241     *field_type_p = NULL;
7242   if (byte_offset_p != NULL)
7243     *byte_offset_p = 0;
7244   if (bit_offset_p != NULL)
7245     *bit_offset_p = 0;
7246   if (bit_size_p != NULL)
7247     *bit_size_p = 0;
7248
7249   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7250     {
7251       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7252       int fld_offset = offset + bit_pos / 8;
7253       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7254
7255       if (t_field_name == NULL)
7256         continue;
7257
7258       else if (ada_is_parent_field (type, i))
7259         {
7260           /* This is a field pointing us to the parent type of a tagged
7261              type.  As hinted in this function's documentation, we give
7262              preference to fields in the current record first, so what
7263              we do here is just record the index of this field before
7264              we skip it.  If it turns out we couldn't find our field
7265              in the current record, then we'll get back to it and search
7266              inside it whether the field might exist in the parent.  */
7267
7268           parent_offset = i;
7269           continue;
7270         }
7271
7272       else if (name != NULL && field_name_match (t_field_name, name))
7273         {
7274           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7275
7276           if (field_type_p != NULL)
7277             *field_type_p = TYPE_FIELD_TYPE (type, i);
7278           if (byte_offset_p != NULL)
7279             *byte_offset_p = fld_offset;
7280           if (bit_offset_p != NULL)
7281             *bit_offset_p = bit_pos % 8;
7282           if (bit_size_p != NULL)
7283             *bit_size_p = bit_size;
7284           return 1;
7285         }
7286       else if (ada_is_wrapper_field (type, i))
7287         {
7288           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7289                                  field_type_p, byte_offset_p, bit_offset_p,
7290                                  bit_size_p, index_p))
7291             return 1;
7292         }
7293       else if (ada_is_variant_part (type, i))
7294         {
7295           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7296              fixed type?? */
7297           int j;
7298           struct type *field_type
7299             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7300
7301           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7302             {
7303               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7304                                      fld_offset
7305                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7306                                      field_type_p, byte_offset_p,
7307                                      bit_offset_p, bit_size_p, index_p))
7308                 return 1;
7309             }
7310         }
7311       else if (index_p != NULL)
7312         *index_p += 1;
7313     }
7314
7315   /* Field not found so far.  If this is a tagged type which
7316      has a parent, try finding that field in the parent now.  */
7317
7318   if (parent_offset != -1)
7319     {
7320       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7321       int fld_offset = offset + bit_pos / 8;
7322
7323       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7324                              fld_offset, field_type_p, byte_offset_p,
7325                              bit_offset_p, bit_size_p, index_p))
7326         return 1;
7327     }
7328
7329   return 0;
7330 }
7331
7332 /* Number of user-visible fields in record type TYPE.  */
7333
7334 static int
7335 num_visible_fields (struct type *type)
7336 {
7337   int n;
7338
7339   n = 0;
7340   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7341   return n;
7342 }
7343
7344 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7345    and search in it assuming it has (class) type TYPE.
7346    If found, return value, else return NULL.
7347
7348    Searches recursively through wrapper fields (e.g., '_parent').
7349
7350    In the case of homonyms in the tagged types, please refer to the
7351    long explanation in find_struct_field's function documentation.  */
7352
7353 static struct value *
7354 ada_search_struct_field (const char *name, struct value *arg, int offset,
7355                          struct type *type)
7356 {
7357   int i;
7358   int parent_offset = -1;
7359
7360   type = ada_check_typedef (type);
7361   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7362     {
7363       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7364
7365       if (t_field_name == NULL)
7366         continue;
7367
7368       else if (ada_is_parent_field (type, i))
7369         {
7370           /* This is a field pointing us to the parent type of a tagged
7371              type.  As hinted in this function's documentation, we give
7372              preference to fields in the current record first, so what
7373              we do here is just record the index of this field before
7374              we skip it.  If it turns out we couldn't find our field
7375              in the current record, then we'll get back to it and search
7376              inside it whether the field might exist in the parent.  */
7377
7378           parent_offset = i;
7379           continue;
7380         }
7381
7382       else if (field_name_match (t_field_name, name))
7383         return ada_value_primitive_field (arg, offset, i, type);
7384
7385       else if (ada_is_wrapper_field (type, i))
7386         {
7387           struct value *v =     /* Do not let indent join lines here.  */
7388             ada_search_struct_field (name, arg,
7389                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7390                                      TYPE_FIELD_TYPE (type, i));
7391
7392           if (v != NULL)
7393             return v;
7394         }
7395
7396       else if (ada_is_variant_part (type, i))
7397         {
7398           /* PNH: Do we ever get here?  See find_struct_field.  */
7399           int j;
7400           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7401                                                                         i));
7402           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7403
7404           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7405             {
7406               struct value *v = ada_search_struct_field /* Force line
7407                                                            break.  */
7408                 (name, arg,
7409                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7410                  TYPE_FIELD_TYPE (field_type, j));
7411
7412               if (v != NULL)
7413                 return v;
7414             }
7415         }
7416     }
7417
7418   /* Field not found so far.  If this is a tagged type which
7419      has a parent, try finding that field in the parent now.  */
7420
7421   if (parent_offset != -1)
7422     {
7423       struct value *v = ada_search_struct_field (
7424         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7425         TYPE_FIELD_TYPE (type, parent_offset));
7426
7427       if (v != NULL)
7428         return v;
7429     }
7430
7431   return NULL;
7432 }
7433
7434 static struct value *ada_index_struct_field_1 (int *, struct value *,
7435                                                int, struct type *);
7436
7437
7438 /* Return field #INDEX in ARG, where the index is that returned by
7439  * find_struct_field through its INDEX_P argument.  Adjust the address
7440  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7441  * If found, return value, else return NULL.  */
7442
7443 static struct value *
7444 ada_index_struct_field (int index, struct value *arg, int offset,
7445                         struct type *type)
7446 {
7447   return ada_index_struct_field_1 (&index, arg, offset, type);
7448 }
7449
7450
7451 /* Auxiliary function for ada_index_struct_field.  Like
7452  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7453  * *INDEX_P.  */
7454
7455 static struct value *
7456 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7457                           struct type *type)
7458 {
7459   int i;
7460   type = ada_check_typedef (type);
7461
7462   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7463     {
7464       if (TYPE_FIELD_NAME (type, i) == NULL)
7465         continue;
7466       else if (ada_is_wrapper_field (type, i))
7467         {
7468           struct value *v =     /* Do not let indent join lines here.  */
7469             ada_index_struct_field_1 (index_p, arg,
7470                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7471                                       TYPE_FIELD_TYPE (type, i));
7472
7473           if (v != NULL)
7474             return v;
7475         }
7476
7477       else if (ada_is_variant_part (type, i))
7478         {
7479           /* PNH: Do we ever get here?  See ada_search_struct_field,
7480              find_struct_field.  */
7481           error (_("Cannot assign this kind of variant record"));
7482         }
7483       else if (*index_p == 0)
7484         return ada_value_primitive_field (arg, offset, i, type);
7485       else
7486         *index_p -= 1;
7487     }
7488   return NULL;
7489 }
7490
7491 /* Given ARG, a value of type (pointer or reference to a)*
7492    structure/union, extract the component named NAME from the ultimate
7493    target structure/union and return it as a value with its
7494    appropriate type.
7495
7496    The routine searches for NAME among all members of the structure itself
7497    and (recursively) among all members of any wrapper members
7498    (e.g., '_parent').
7499
7500    If NO_ERR, then simply return NULL in case of error, rather than 
7501    calling error.  */
7502
7503 struct value *
7504 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7505 {
7506   struct type *t, *t1;
7507   struct value *v;
7508   int check_tag;
7509
7510   v = NULL;
7511   t1 = t = ada_check_typedef (value_type (arg));
7512   if (TYPE_CODE (t) == TYPE_CODE_REF)
7513     {
7514       t1 = TYPE_TARGET_TYPE (t);
7515       if (t1 == NULL)
7516         goto BadValue;
7517       t1 = ada_check_typedef (t1);
7518       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7519         {
7520           arg = coerce_ref (arg);
7521           t = t1;
7522         }
7523     }
7524
7525   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7526     {
7527       t1 = TYPE_TARGET_TYPE (t);
7528       if (t1 == NULL)
7529         goto BadValue;
7530       t1 = ada_check_typedef (t1);
7531       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7532         {
7533           arg = value_ind (arg);
7534           t = t1;
7535         }
7536       else
7537         break;
7538     }
7539
7540   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7541     goto BadValue;
7542
7543   if (t1 == t)
7544     v = ada_search_struct_field (name, arg, 0, t);
7545   else
7546     {
7547       int bit_offset, bit_size, byte_offset;
7548       struct type *field_type;
7549       CORE_ADDR address;
7550
7551       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7552         address = value_address (ada_value_ind (arg));
7553       else
7554         address = value_address (ada_coerce_ref (arg));
7555
7556       /* Check to see if this is a tagged type.  We also need to handle
7557          the case where the type is a reference to a tagged type, but
7558          we have to be careful to exclude pointers to tagged types.
7559          The latter should be shown as usual (as a pointer), whereas
7560          a reference should mostly be transparent to the user.  */
7561
7562       if (ada_is_tagged_type (t1, 0)
7563           || (TYPE_CODE (t1) == TYPE_CODE_REF
7564               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7565         {
7566           /* We first try to find the searched field in the current type.
7567              If not found then let's look in the fixed type.  */
7568
7569           if (!find_struct_field (name, t1, 0,
7570                                   &field_type, &byte_offset, &bit_offset,
7571                                   &bit_size, NULL))
7572             check_tag = 1;
7573           else
7574             check_tag = 0;
7575         }
7576       else
7577         check_tag = 0;
7578
7579       /* Convert to fixed type in all cases, so that we have proper
7580          offsets to each field in unconstrained record types.  */
7581       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7582                               address, NULL, check_tag);
7583
7584       if (find_struct_field (name, t1, 0,
7585                              &field_type, &byte_offset, &bit_offset,
7586                              &bit_size, NULL))
7587         {
7588           if (bit_size != 0)
7589             {
7590               if (TYPE_CODE (t) == TYPE_CODE_REF)
7591                 arg = ada_coerce_ref (arg);
7592               else
7593                 arg = ada_value_ind (arg);
7594               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7595                                                   bit_offset, bit_size,
7596                                                   field_type);
7597             }
7598           else
7599             v = value_at_lazy (field_type, address + byte_offset);
7600         }
7601     }
7602
7603   if (v != NULL || no_err)
7604     return v;
7605   else
7606     error (_("There is no member named %s."), name);
7607
7608  BadValue:
7609   if (no_err)
7610     return NULL;
7611   else
7612     error (_("Attempt to extract a component of "
7613              "a value that is not a record."));
7614 }
7615
7616 /* Return a string representation of type TYPE.  */
7617
7618 static std::string
7619 type_as_string (struct type *type)
7620 {
7621   string_file tmp_stream;
7622
7623   type_print (type, "", &tmp_stream, -1);
7624
7625   return std::move (tmp_stream.string ());
7626 }
7627
7628 /* Given a type TYPE, look up the type of the component of type named NAME.
7629    If DISPP is non-null, add its byte displacement from the beginning of a
7630    structure (pointed to by a value) of type TYPE to *DISPP (does not
7631    work for packed fields).
7632
7633    Matches any field whose name has NAME as a prefix, possibly
7634    followed by "___".
7635
7636    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7637    be a (pointer or reference)+ to a struct or union, and the
7638    ultimate target type will be searched.
7639
7640    Looks recursively into variant clauses and parent types.
7641
7642    In the case of homonyms in the tagged types, please refer to the
7643    long explanation in find_struct_field's function documentation.
7644
7645    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7646    TYPE is not a type of the right kind.  */
7647
7648 static struct type *
7649 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7650                             int noerr)
7651 {
7652   int i;
7653   int parent_offset = -1;
7654
7655   if (name == NULL)
7656     goto BadName;
7657
7658   if (refok && type != NULL)
7659     while (1)
7660       {
7661         type = ada_check_typedef (type);
7662         if (TYPE_CODE (type) != TYPE_CODE_PTR
7663             && TYPE_CODE (type) != TYPE_CODE_REF)
7664           break;
7665         type = TYPE_TARGET_TYPE (type);
7666       }
7667
7668   if (type == NULL
7669       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7670           && TYPE_CODE (type) != TYPE_CODE_UNION))
7671     {
7672       if (noerr)
7673         return NULL;
7674
7675       error (_("Type %s is not a structure or union type"),
7676              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7677     }
7678
7679   type = to_static_fixed_type (type);
7680
7681   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7682     {
7683       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7684       struct type *t;
7685
7686       if (t_field_name == NULL)
7687         continue;
7688
7689       else if (ada_is_parent_field (type, i))
7690         {
7691           /* This is a field pointing us to the parent type of a tagged
7692              type.  As hinted in this function's documentation, we give
7693              preference to fields in the current record first, so what
7694              we do here is just record the index of this field before
7695              we skip it.  If it turns out we couldn't find our field
7696              in the current record, then we'll get back to it and search
7697              inside it whether the field might exist in the parent.  */
7698
7699           parent_offset = i;
7700           continue;
7701         }
7702
7703       else if (field_name_match (t_field_name, name))
7704         return TYPE_FIELD_TYPE (type, i);
7705
7706       else if (ada_is_wrapper_field (type, i))
7707         {
7708           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7709                                           0, 1);
7710           if (t != NULL)
7711             return t;
7712         }
7713
7714       else if (ada_is_variant_part (type, i))
7715         {
7716           int j;
7717           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7718                                                                         i));
7719
7720           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7721             {
7722               /* FIXME pnh 2008/01/26: We check for a field that is
7723                  NOT wrapped in a struct, since the compiler sometimes
7724                  generates these for unchecked variant types.  Revisit
7725                  if the compiler changes this practice.  */
7726               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7727
7728               if (v_field_name != NULL 
7729                   && field_name_match (v_field_name, name))
7730                 t = TYPE_FIELD_TYPE (field_type, j);
7731               else
7732                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7733                                                                  j),
7734                                                 name, 0, 1);
7735
7736               if (t != NULL)
7737                 return t;
7738             }
7739         }
7740
7741     }
7742
7743     /* Field not found so far.  If this is a tagged type which
7744        has a parent, try finding that field in the parent now.  */
7745
7746     if (parent_offset != -1)
7747       {
7748         struct type *t;
7749
7750         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7751                                         name, 0, 1);
7752         if (t != NULL)
7753           return t;
7754       }
7755
7756 BadName:
7757   if (!noerr)
7758     {
7759       const char *name_str = name != NULL ? name : _("<null>");
7760
7761       error (_("Type %s has no component named %s"),
7762              type_as_string (type).c_str (), name_str);
7763     }
7764
7765   return NULL;
7766 }
7767
7768 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7769    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7770    represents an unchecked union (that is, the variant part of a
7771    record that is named in an Unchecked_Union pragma).  */
7772
7773 static int
7774 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7775 {
7776   const char *discrim_name = ada_variant_discrim_name (var_type);
7777
7778   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7779 }
7780
7781
7782 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7783    within a value of type OUTER_TYPE that is stored in GDB at
7784    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7785    numbering from 0) is applicable.  Returns -1 if none are.  */
7786
7787 int
7788 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7789                            const gdb_byte *outer_valaddr)
7790 {
7791   int others_clause;
7792   int i;
7793   const char *discrim_name = ada_variant_discrim_name (var_type);
7794   struct value *outer;
7795   struct value *discrim;
7796   LONGEST discrim_val;
7797
7798   /* Using plain value_from_contents_and_address here causes problems
7799      because we will end up trying to resolve a type that is currently
7800      being constructed.  */
7801   outer = value_from_contents_and_address_unresolved (outer_type,
7802                                                       outer_valaddr, 0);
7803   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7804   if (discrim == NULL)
7805     return -1;
7806   discrim_val = value_as_long (discrim);
7807
7808   others_clause = -1;
7809   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7810     {
7811       if (ada_is_others_clause (var_type, i))
7812         others_clause = i;
7813       else if (ada_in_variant (discrim_val, var_type, i))
7814         return i;
7815     }
7816
7817   return others_clause;
7818 }
7819 \f
7820
7821
7822                                 /* Dynamic-Sized Records */
7823
7824 /* Strategy: The type ostensibly attached to a value with dynamic size
7825    (i.e., a size that is not statically recorded in the debugging
7826    data) does not accurately reflect the size or layout of the value.
7827    Our strategy is to convert these values to values with accurate,
7828    conventional types that are constructed on the fly.  */
7829
7830 /* There is a subtle and tricky problem here.  In general, we cannot
7831    determine the size of dynamic records without its data.  However,
7832    the 'struct value' data structure, which GDB uses to represent
7833    quantities in the inferior process (the target), requires the size
7834    of the type at the time of its allocation in order to reserve space
7835    for GDB's internal copy of the data.  That's why the
7836    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7837    rather than struct value*s.
7838
7839    However, GDB's internal history variables ($1, $2, etc.) are
7840    struct value*s containing internal copies of the data that are not, in
7841    general, the same as the data at their corresponding addresses in
7842    the target.  Fortunately, the types we give to these values are all
7843    conventional, fixed-size types (as per the strategy described
7844    above), so that we don't usually have to perform the
7845    'to_fixed_xxx_type' conversions to look at their values.
7846    Unfortunately, there is one exception: if one of the internal
7847    history variables is an array whose elements are unconstrained
7848    records, then we will need to create distinct fixed types for each
7849    element selected.  */
7850
7851 /* The upshot of all of this is that many routines take a (type, host
7852    address, target address) triple as arguments to represent a value.
7853    The host address, if non-null, is supposed to contain an internal
7854    copy of the relevant data; otherwise, the program is to consult the
7855    target at the target address.  */
7856
7857 /* Assuming that VAL0 represents a pointer value, the result of
7858    dereferencing it.  Differs from value_ind in its treatment of
7859    dynamic-sized types.  */
7860
7861 struct value *
7862 ada_value_ind (struct value *val0)
7863 {
7864   struct value *val = value_ind (val0);
7865
7866   if (ada_is_tagged_type (value_type (val), 0))
7867     val = ada_tag_value_at_base_address (val);
7868
7869   return ada_to_fixed_value (val);
7870 }
7871
7872 /* The value resulting from dereferencing any "reference to"
7873    qualifiers on VAL0.  */
7874
7875 static struct value *
7876 ada_coerce_ref (struct value *val0)
7877 {
7878   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7879     {
7880       struct value *val = val0;
7881
7882       val = coerce_ref (val);
7883
7884       if (ada_is_tagged_type (value_type (val), 0))
7885         val = ada_tag_value_at_base_address (val);
7886
7887       return ada_to_fixed_value (val);
7888     }
7889   else
7890     return val0;
7891 }
7892
7893 /* Return OFF rounded upward if necessary to a multiple of
7894    ALIGNMENT (a power of 2).  */
7895
7896 static unsigned int
7897 align_value (unsigned int off, unsigned int alignment)
7898 {
7899   return (off + alignment - 1) & ~(alignment - 1);
7900 }
7901
7902 /* Return the bit alignment required for field #F of template type TYPE.  */
7903
7904 static unsigned int
7905 field_alignment (struct type *type, int f)
7906 {
7907   const char *name = TYPE_FIELD_NAME (type, f);
7908   int len;
7909   int align_offset;
7910
7911   /* The field name should never be null, unless the debugging information
7912      is somehow malformed.  In this case, we assume the field does not
7913      require any alignment.  */
7914   if (name == NULL)
7915     return 1;
7916
7917   len = strlen (name);
7918
7919   if (!isdigit (name[len - 1]))
7920     return 1;
7921
7922   if (isdigit (name[len - 2]))
7923     align_offset = len - 2;
7924   else
7925     align_offset = len - 1;
7926
7927   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7928     return TARGET_CHAR_BIT;
7929
7930   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7931 }
7932
7933 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7934
7935 static struct symbol *
7936 ada_find_any_type_symbol (const char *name)
7937 {
7938   struct symbol *sym;
7939
7940   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7941   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7942     return sym;
7943
7944   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7945   return sym;
7946 }
7947
7948 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7949    solely for types defined by debug info, it will not search the GDB
7950    primitive types.  */
7951
7952 static struct type *
7953 ada_find_any_type (const char *name)
7954 {
7955   struct symbol *sym = ada_find_any_type_symbol (name);
7956
7957   if (sym != NULL)
7958     return SYMBOL_TYPE (sym);
7959
7960   return NULL;
7961 }
7962
7963 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7964    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7965    symbol, in which case it is returned.  Otherwise, this looks for
7966    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7967    Return symbol if found, and NULL otherwise.  */
7968
7969 struct symbol *
7970 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7971 {
7972   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7973   struct symbol *sym;
7974
7975   if (strstr (name, "___XR") != NULL)
7976      return name_sym;
7977
7978   sym = find_old_style_renaming_symbol (name, block);
7979
7980   if (sym != NULL)
7981     return sym;
7982
7983   /* Not right yet.  FIXME pnh 7/20/2007.  */
7984   sym = ada_find_any_type_symbol (name);
7985   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7986     return sym;
7987   else
7988     return NULL;
7989 }
7990
7991 static struct symbol *
7992 find_old_style_renaming_symbol (const char *name, const struct block *block)
7993 {
7994   const struct symbol *function_sym = block_linkage_function (block);
7995   char *rename;
7996
7997   if (function_sym != NULL)
7998     {
7999       /* If the symbol is defined inside a function, NAME is not fully
8000          qualified.  This means we need to prepend the function name
8001          as well as adding the ``___XR'' suffix to build the name of
8002          the associated renaming symbol.  */
8003       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8004       /* Function names sometimes contain suffixes used
8005          for instance to qualify nested subprograms.  When building
8006          the XR type name, we need to make sure that this suffix is
8007          not included.  So do not include any suffix in the function
8008          name length below.  */
8009       int function_name_len = ada_name_prefix_len (function_name);
8010       const int rename_len = function_name_len + 2      /*  "__" */
8011         + strlen (name) + 6 /* "___XR\0" */ ;
8012
8013       /* Strip the suffix if necessary.  */
8014       ada_remove_trailing_digits (function_name, &function_name_len);
8015       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8016       ada_remove_Xbn_suffix (function_name, &function_name_len);
8017
8018       /* Library-level functions are a special case, as GNAT adds
8019          a ``_ada_'' prefix to the function name to avoid namespace
8020          pollution.  However, the renaming symbols themselves do not
8021          have this prefix, so we need to skip this prefix if present.  */
8022       if (function_name_len > 5 /* "_ada_" */
8023           && strstr (function_name, "_ada_") == function_name)
8024         {
8025           function_name += 5;
8026           function_name_len -= 5;
8027         }
8028
8029       rename = (char *) alloca (rename_len * sizeof (char));
8030       strncpy (rename, function_name, function_name_len);
8031       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8032                  "__%s___XR", name);
8033     }
8034   else
8035     {
8036       const int rename_len = strlen (name) + 6;
8037
8038       rename = (char *) alloca (rename_len * sizeof (char));
8039       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8040     }
8041
8042   return ada_find_any_type_symbol (rename);
8043 }
8044
8045 /* Because of GNAT encoding conventions, several GDB symbols may match a
8046    given type name.  If the type denoted by TYPE0 is to be preferred to
8047    that of TYPE1 for purposes of type printing, return non-zero;
8048    otherwise return 0.  */
8049
8050 int
8051 ada_prefer_type (struct type *type0, struct type *type1)
8052 {
8053   if (type1 == NULL)
8054     return 1;
8055   else if (type0 == NULL)
8056     return 0;
8057   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8058     return 1;
8059   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8060     return 0;
8061   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8062     return 1;
8063   else if (ada_is_constrained_packed_array_type (type0))
8064     return 1;
8065   else if (ada_is_array_descriptor_type (type0)
8066            && !ada_is_array_descriptor_type (type1))
8067     return 1;
8068   else
8069     {
8070       const char *type0_name = TYPE_NAME (type0);
8071       const char *type1_name = TYPE_NAME (type1);
8072
8073       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8074           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8075         return 1;
8076     }
8077   return 0;
8078 }
8079
8080 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8081    null.  */
8082
8083 const char *
8084 ada_type_name (struct type *type)
8085 {
8086   if (type == NULL)
8087     return NULL;
8088   return TYPE_NAME (type);
8089 }
8090
8091 /* Search the list of "descriptive" types associated to TYPE for a type
8092    whose name is NAME.  */
8093
8094 static struct type *
8095 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8096 {
8097   struct type *result, *tmp;
8098
8099   if (ada_ignore_descriptive_types_p)
8100     return NULL;
8101
8102   /* If there no descriptive-type info, then there is no parallel type
8103      to be found.  */
8104   if (!HAVE_GNAT_AUX_INFO (type))
8105     return NULL;
8106
8107   result = TYPE_DESCRIPTIVE_TYPE (type);
8108   while (result != NULL)
8109     {
8110       const char *result_name = ada_type_name (result);
8111
8112       if (result_name == NULL)
8113         {
8114           warning (_("unexpected null name on descriptive type"));
8115           return NULL;
8116         }
8117
8118       /* If the names match, stop.  */
8119       if (strcmp (result_name, name) == 0)
8120         break;
8121
8122       /* Otherwise, look at the next item on the list, if any.  */
8123       if (HAVE_GNAT_AUX_INFO (result))
8124         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8125       else
8126         tmp = NULL;
8127
8128       /* If not found either, try after having resolved the typedef.  */
8129       if (tmp != NULL)
8130         result = tmp;
8131       else
8132         {
8133           result = check_typedef (result);
8134           if (HAVE_GNAT_AUX_INFO (result))
8135             result = TYPE_DESCRIPTIVE_TYPE (result);
8136           else
8137             result = NULL;
8138         }
8139     }
8140
8141   /* If we didn't find a match, see whether this is a packed array.  With
8142      older compilers, the descriptive type information is either absent or
8143      irrelevant when it comes to packed arrays so the above lookup fails.
8144      Fall back to using a parallel lookup by name in this case.  */
8145   if (result == NULL && ada_is_constrained_packed_array_type (type))
8146     return ada_find_any_type (name);
8147
8148   return result;
8149 }
8150
8151 /* Find a parallel type to TYPE with the specified NAME, using the
8152    descriptive type taken from the debugging information, if available,
8153    and otherwise using the (slower) name-based method.  */
8154
8155 static struct type *
8156 ada_find_parallel_type_with_name (struct type *type, const char *name)
8157 {
8158   struct type *result = NULL;
8159
8160   if (HAVE_GNAT_AUX_INFO (type))
8161     result = find_parallel_type_by_descriptive_type (type, name);
8162   else
8163     result = ada_find_any_type (name);
8164
8165   return result;
8166 }
8167
8168 /* Same as above, but specify the name of the parallel type by appending
8169    SUFFIX to the name of TYPE.  */
8170
8171 struct type *
8172 ada_find_parallel_type (struct type *type, const char *suffix)
8173 {
8174   char *name;
8175   const char *type_name = ada_type_name (type);
8176   int len;
8177
8178   if (type_name == NULL)
8179     return NULL;
8180
8181   len = strlen (type_name);
8182
8183   name = (char *) alloca (len + strlen (suffix) + 1);
8184
8185   strcpy (name, type_name);
8186   strcpy (name + len, suffix);
8187
8188   return ada_find_parallel_type_with_name (type, name);
8189 }
8190
8191 /* If TYPE is a variable-size record type, return the corresponding template
8192    type describing its fields.  Otherwise, return NULL.  */
8193
8194 static struct type *
8195 dynamic_template_type (struct type *type)
8196 {
8197   type = ada_check_typedef (type);
8198
8199   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8200       || ada_type_name (type) == NULL)
8201     return NULL;
8202   else
8203     {
8204       int len = strlen (ada_type_name (type));
8205
8206       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8207         return type;
8208       else
8209         return ada_find_parallel_type (type, "___XVE");
8210     }
8211 }
8212
8213 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8214    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8215
8216 static int
8217 is_dynamic_field (struct type *templ_type, int field_num)
8218 {
8219   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8220
8221   return name != NULL
8222     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8223     && strstr (name, "___XVL") != NULL;
8224 }
8225
8226 /* The index of the variant field of TYPE, or -1 if TYPE does not
8227    represent a variant record type.  */
8228
8229 static int
8230 variant_field_index (struct type *type)
8231 {
8232   int f;
8233
8234   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8235     return -1;
8236
8237   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8238     {
8239       if (ada_is_variant_part (type, f))
8240         return f;
8241     }
8242   return -1;
8243 }
8244
8245 /* A record type with no fields.  */
8246
8247 static struct type *
8248 empty_record (struct type *templ)
8249 {
8250   struct type *type = alloc_type_copy (templ);
8251
8252   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8253   TYPE_NFIELDS (type) = 0;
8254   TYPE_FIELDS (type) = NULL;
8255   INIT_CPLUS_SPECIFIC (type);
8256   TYPE_NAME (type) = "<empty>";
8257   TYPE_LENGTH (type) = 0;
8258   return type;
8259 }
8260
8261 /* An ordinary record type (with fixed-length fields) that describes
8262    the value of type TYPE at VALADDR or ADDRESS (see comments at
8263    the beginning of this section) VAL according to GNAT conventions.
8264    DVAL0 should describe the (portion of a) record that contains any
8265    necessary discriminants.  It should be NULL if value_type (VAL) is
8266    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8267    variant field (unless unchecked) is replaced by a particular branch
8268    of the variant.
8269
8270    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8271    length are not statically known are discarded.  As a consequence,
8272    VALADDR, ADDRESS and DVAL0 are ignored.
8273
8274    NOTE: Limitations: For now, we assume that dynamic fields and
8275    variants occupy whole numbers of bytes.  However, they need not be
8276    byte-aligned.  */
8277
8278 struct type *
8279 ada_template_to_fixed_record_type_1 (struct type *type,
8280                                      const gdb_byte *valaddr,
8281                                      CORE_ADDR address, struct value *dval0,
8282                                      int keep_dynamic_fields)
8283 {
8284   struct value *mark = value_mark ();
8285   struct value *dval;
8286   struct type *rtype;
8287   int nfields, bit_len;
8288   int variant_field;
8289   long off;
8290   int fld_bit_len;
8291   int f;
8292
8293   /* Compute the number of fields in this record type that are going
8294      to be processed: unless keep_dynamic_fields, this includes only
8295      fields whose position and length are static will be processed.  */
8296   if (keep_dynamic_fields)
8297     nfields = TYPE_NFIELDS (type);
8298   else
8299     {
8300       nfields = 0;
8301       while (nfields < TYPE_NFIELDS (type)
8302              && !ada_is_variant_part (type, nfields)
8303              && !is_dynamic_field (type, nfields))
8304         nfields++;
8305     }
8306
8307   rtype = alloc_type_copy (type);
8308   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8309   INIT_CPLUS_SPECIFIC (rtype);
8310   TYPE_NFIELDS (rtype) = nfields;
8311   TYPE_FIELDS (rtype) = (struct field *)
8312     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8313   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8314   TYPE_NAME (rtype) = ada_type_name (type);
8315   TYPE_FIXED_INSTANCE (rtype) = 1;
8316
8317   off = 0;
8318   bit_len = 0;
8319   variant_field = -1;
8320
8321   for (f = 0; f < nfields; f += 1)
8322     {
8323       off = align_value (off, field_alignment (type, f))
8324         + TYPE_FIELD_BITPOS (type, f);
8325       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8326       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8327
8328       if (ada_is_variant_part (type, f))
8329         {
8330           variant_field = f;
8331           fld_bit_len = 0;
8332         }
8333       else if (is_dynamic_field (type, f))
8334         {
8335           const gdb_byte *field_valaddr = valaddr;
8336           CORE_ADDR field_address = address;
8337           struct type *field_type =
8338             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8339
8340           if (dval0 == NULL)
8341             {
8342               /* rtype's length is computed based on the run-time
8343                  value of discriminants.  If the discriminants are not
8344                  initialized, the type size may be completely bogus and
8345                  GDB may fail to allocate a value for it.  So check the
8346                  size first before creating the value.  */
8347               ada_ensure_varsize_limit (rtype);
8348               /* Using plain value_from_contents_and_address here
8349                  causes problems because we will end up trying to
8350                  resolve a type that is currently being
8351                  constructed.  */
8352               dval = value_from_contents_and_address_unresolved (rtype,
8353                                                                  valaddr,
8354                                                                  address);
8355               rtype = value_type (dval);
8356             }
8357           else
8358             dval = dval0;
8359
8360           /* If the type referenced by this field is an aligner type, we need
8361              to unwrap that aligner type, because its size might not be set.
8362              Keeping the aligner type would cause us to compute the wrong
8363              size for this field, impacting the offset of the all the fields
8364              that follow this one.  */
8365           if (ada_is_aligner_type (field_type))
8366             {
8367               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8368
8369               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8370               field_address = cond_offset_target (field_address, field_offset);
8371               field_type = ada_aligned_type (field_type);
8372             }
8373
8374           field_valaddr = cond_offset_host (field_valaddr,
8375                                             off / TARGET_CHAR_BIT);
8376           field_address = cond_offset_target (field_address,
8377                                               off / TARGET_CHAR_BIT);
8378
8379           /* Get the fixed type of the field.  Note that, in this case,
8380              we do not want to get the real type out of the tag: if
8381              the current field is the parent part of a tagged record,
8382              we will get the tag of the object.  Clearly wrong: the real
8383              type of the parent is not the real type of the child.  We
8384              would end up in an infinite loop.  */
8385           field_type = ada_get_base_type (field_type);
8386           field_type = ada_to_fixed_type (field_type, field_valaddr,
8387                                           field_address, dval, 0);
8388           /* If the field size is already larger than the maximum
8389              object size, then the record itself will necessarily
8390              be larger than the maximum object size.  We need to make
8391              this check now, because the size might be so ridiculously
8392              large (due to an uninitialized variable in the inferior)
8393              that it would cause an overflow when adding it to the
8394              record size.  */
8395           ada_ensure_varsize_limit (field_type);
8396
8397           TYPE_FIELD_TYPE (rtype, f) = field_type;
8398           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8399           /* The multiplication can potentially overflow.  But because
8400              the field length has been size-checked just above, and
8401              assuming that the maximum size is a reasonable value,
8402              an overflow should not happen in practice.  So rather than
8403              adding overflow recovery code to this already complex code,
8404              we just assume that it's not going to happen.  */
8405           fld_bit_len =
8406             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8407         }
8408       else
8409         {
8410           /* Note: If this field's type is a typedef, it is important
8411              to preserve the typedef layer.
8412
8413              Otherwise, we might be transforming a typedef to a fat
8414              pointer (encoding a pointer to an unconstrained array),
8415              into a basic fat pointer (encoding an unconstrained
8416              array).  As both types are implemented using the same
8417              structure, the typedef is the only clue which allows us
8418              to distinguish between the two options.  Stripping it
8419              would prevent us from printing this field appropriately.  */
8420           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8421           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8422           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8423             fld_bit_len =
8424               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8425           else
8426             {
8427               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8428
8429               /* We need to be careful of typedefs when computing
8430                  the length of our field.  If this is a typedef,
8431                  get the length of the target type, not the length
8432                  of the typedef.  */
8433               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8434                 field_type = ada_typedef_target_type (field_type);
8435
8436               fld_bit_len =
8437                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8438             }
8439         }
8440       if (off + fld_bit_len > bit_len)
8441         bit_len = off + fld_bit_len;
8442       off += fld_bit_len;
8443       TYPE_LENGTH (rtype) =
8444         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8445     }
8446
8447   /* We handle the variant part, if any, at the end because of certain
8448      odd cases in which it is re-ordered so as NOT to be the last field of
8449      the record.  This can happen in the presence of representation
8450      clauses.  */
8451   if (variant_field >= 0)
8452     {
8453       struct type *branch_type;
8454
8455       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8456
8457       if (dval0 == NULL)
8458         {
8459           /* Using plain value_from_contents_and_address here causes
8460              problems because we will end up trying to resolve a type
8461              that is currently being constructed.  */
8462           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8463                                                              address);
8464           rtype = value_type (dval);
8465         }
8466       else
8467         dval = dval0;
8468
8469       branch_type =
8470         to_fixed_variant_branch_type
8471         (TYPE_FIELD_TYPE (type, variant_field),
8472          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8473          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8474       if (branch_type == NULL)
8475         {
8476           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8477             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8478           TYPE_NFIELDS (rtype) -= 1;
8479         }
8480       else
8481         {
8482           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8483           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8484           fld_bit_len =
8485             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8486             TARGET_CHAR_BIT;
8487           if (off + fld_bit_len > bit_len)
8488             bit_len = off + fld_bit_len;
8489           TYPE_LENGTH (rtype) =
8490             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8491         }
8492     }
8493
8494   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8495      should contain the alignment of that record, which should be a strictly
8496      positive value.  If null or negative, then something is wrong, most
8497      probably in the debug info.  In that case, we don't round up the size
8498      of the resulting type.  If this record is not part of another structure,
8499      the current RTYPE length might be good enough for our purposes.  */
8500   if (TYPE_LENGTH (type) <= 0)
8501     {
8502       if (TYPE_NAME (rtype))
8503         warning (_("Invalid type size for `%s' detected: %d."),
8504                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8505       else
8506         warning (_("Invalid type size for <unnamed> detected: %d."),
8507                  TYPE_LENGTH (type));
8508     }
8509   else
8510     {
8511       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8512                                          TYPE_LENGTH (type));
8513     }
8514
8515   value_free_to_mark (mark);
8516   if (TYPE_LENGTH (rtype) > varsize_limit)
8517     error (_("record type with dynamic size is larger than varsize-limit"));
8518   return rtype;
8519 }
8520
8521 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8522    of 1.  */
8523
8524 static struct type *
8525 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8526                                CORE_ADDR address, struct value *dval0)
8527 {
8528   return ada_template_to_fixed_record_type_1 (type, valaddr,
8529                                               address, dval0, 1);
8530 }
8531
8532 /* An ordinary record type in which ___XVL-convention fields and
8533    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8534    static approximations, containing all possible fields.  Uses
8535    no runtime values.  Useless for use in values, but that's OK,
8536    since the results are used only for type determinations.   Works on both
8537    structs and unions.  Representation note: to save space, we memorize
8538    the result of this function in the TYPE_TARGET_TYPE of the
8539    template type.  */
8540
8541 static struct type *
8542 template_to_static_fixed_type (struct type *type0)
8543 {
8544   struct type *type;
8545   int nfields;
8546   int f;
8547
8548   /* No need no do anything if the input type is already fixed.  */
8549   if (TYPE_FIXED_INSTANCE (type0))
8550     return type0;
8551
8552   /* Likewise if we already have computed the static approximation.  */
8553   if (TYPE_TARGET_TYPE (type0) != NULL)
8554     return TYPE_TARGET_TYPE (type0);
8555
8556   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8557   type = type0;
8558   nfields = TYPE_NFIELDS (type0);
8559
8560   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8561      recompute all over next time.  */
8562   TYPE_TARGET_TYPE (type0) = type;
8563
8564   for (f = 0; f < nfields; f += 1)
8565     {
8566       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8567       struct type *new_type;
8568
8569       if (is_dynamic_field (type0, f))
8570         {
8571           field_type = ada_check_typedef (field_type);
8572           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8573         }
8574       else
8575         new_type = static_unwrap_type (field_type);
8576
8577       if (new_type != field_type)
8578         {
8579           /* Clone TYPE0 only the first time we get a new field type.  */
8580           if (type == type0)
8581             {
8582               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8583               TYPE_CODE (type) = TYPE_CODE (type0);
8584               INIT_CPLUS_SPECIFIC (type);
8585               TYPE_NFIELDS (type) = nfields;
8586               TYPE_FIELDS (type) = (struct field *)
8587                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8588               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8589                       sizeof (struct field) * nfields);
8590               TYPE_NAME (type) = ada_type_name (type0);
8591               TYPE_FIXED_INSTANCE (type) = 1;
8592               TYPE_LENGTH (type) = 0;
8593             }
8594           TYPE_FIELD_TYPE (type, f) = new_type;
8595           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8596         }
8597     }
8598
8599   return type;
8600 }
8601
8602 /* Given an object of type TYPE whose contents are at VALADDR and
8603    whose address in memory is ADDRESS, returns a revision of TYPE,
8604    which should be a non-dynamic-sized record, in which the variant
8605    part, if any, is replaced with the appropriate branch.  Looks
8606    for discriminant values in DVAL0, which can be NULL if the record
8607    contains the necessary discriminant values.  */
8608
8609 static struct type *
8610 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8611                                    CORE_ADDR address, struct value *dval0)
8612 {
8613   struct value *mark = value_mark ();
8614   struct value *dval;
8615   struct type *rtype;
8616   struct type *branch_type;
8617   int nfields = TYPE_NFIELDS (type);
8618   int variant_field = variant_field_index (type);
8619
8620   if (variant_field == -1)
8621     return type;
8622
8623   if (dval0 == NULL)
8624     {
8625       dval = value_from_contents_and_address (type, valaddr, address);
8626       type = value_type (dval);
8627     }
8628   else
8629     dval = dval0;
8630
8631   rtype = alloc_type_copy (type);
8632   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8633   INIT_CPLUS_SPECIFIC (rtype);
8634   TYPE_NFIELDS (rtype) = nfields;
8635   TYPE_FIELDS (rtype) =
8636     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8637   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8638           sizeof (struct field) * nfields);
8639   TYPE_NAME (rtype) = ada_type_name (type);
8640   TYPE_FIXED_INSTANCE (rtype) = 1;
8641   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8642
8643   branch_type = to_fixed_variant_branch_type
8644     (TYPE_FIELD_TYPE (type, variant_field),
8645      cond_offset_host (valaddr,
8646                        TYPE_FIELD_BITPOS (type, variant_field)
8647                        / TARGET_CHAR_BIT),
8648      cond_offset_target (address,
8649                          TYPE_FIELD_BITPOS (type, variant_field)
8650                          / TARGET_CHAR_BIT), dval);
8651   if (branch_type == NULL)
8652     {
8653       int f;
8654
8655       for (f = variant_field + 1; f < nfields; f += 1)
8656         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8657       TYPE_NFIELDS (rtype) -= 1;
8658     }
8659   else
8660     {
8661       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8662       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8663       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8664       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8665     }
8666   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8667
8668   value_free_to_mark (mark);
8669   return rtype;
8670 }
8671
8672 /* An ordinary record type (with fixed-length fields) that describes
8673    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8674    beginning of this section].   Any necessary discriminants' values
8675    should be in DVAL, a record value; it may be NULL if the object
8676    at ADDR itself contains any necessary discriminant values.
8677    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8678    values from the record are needed.  Except in the case that DVAL,
8679    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8680    unchecked) is replaced by a particular branch of the variant.
8681
8682    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8683    is questionable and may be removed.  It can arise during the
8684    processing of an unconstrained-array-of-record type where all the
8685    variant branches have exactly the same size.  This is because in
8686    such cases, the compiler does not bother to use the XVS convention
8687    when encoding the record.  I am currently dubious of this
8688    shortcut and suspect the compiler should be altered.  FIXME.  */
8689
8690 static struct type *
8691 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8692                       CORE_ADDR address, struct value *dval)
8693 {
8694   struct type *templ_type;
8695
8696   if (TYPE_FIXED_INSTANCE (type0))
8697     return type0;
8698
8699   templ_type = dynamic_template_type (type0);
8700
8701   if (templ_type != NULL)
8702     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8703   else if (variant_field_index (type0) >= 0)
8704     {
8705       if (dval == NULL && valaddr == NULL && address == 0)
8706         return type0;
8707       return to_record_with_fixed_variant_part (type0, valaddr, address,
8708                                                 dval);
8709     }
8710   else
8711     {
8712       TYPE_FIXED_INSTANCE (type0) = 1;
8713       return type0;
8714     }
8715
8716 }
8717
8718 /* An ordinary record type (with fixed-length fields) that describes
8719    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8720    union type.  Any necessary discriminants' values should be in DVAL,
8721    a record value.  That is, this routine selects the appropriate
8722    branch of the union at ADDR according to the discriminant value
8723    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8724    it represents a variant subject to a pragma Unchecked_Union.  */
8725
8726 static struct type *
8727 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8728                               CORE_ADDR address, struct value *dval)
8729 {
8730   int which;
8731   struct type *templ_type;
8732   struct type *var_type;
8733
8734   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8735     var_type = TYPE_TARGET_TYPE (var_type0);
8736   else
8737     var_type = var_type0;
8738
8739   templ_type = ada_find_parallel_type (var_type, "___XVU");
8740
8741   if (templ_type != NULL)
8742     var_type = templ_type;
8743
8744   if (is_unchecked_variant (var_type, value_type (dval)))
8745       return var_type0;
8746   which =
8747     ada_which_variant_applies (var_type,
8748                                value_type (dval), value_contents (dval));
8749
8750   if (which < 0)
8751     return empty_record (var_type);
8752   else if (is_dynamic_field (var_type, which))
8753     return to_fixed_record_type
8754       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8755        valaddr, address, dval);
8756   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8757     return
8758       to_fixed_record_type
8759       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8760   else
8761     return TYPE_FIELD_TYPE (var_type, which);
8762 }
8763
8764 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8765    ENCODING_TYPE, a type following the GNAT conventions for discrete
8766    type encodings, only carries redundant information.  */
8767
8768 static int
8769 ada_is_redundant_range_encoding (struct type *range_type,
8770                                  struct type *encoding_type)
8771 {
8772   const char *bounds_str;
8773   int n;
8774   LONGEST lo, hi;
8775
8776   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8777
8778   if (TYPE_CODE (get_base_type (range_type))
8779       != TYPE_CODE (get_base_type (encoding_type)))
8780     {
8781       /* The compiler probably used a simple base type to describe
8782          the range type instead of the range's actual base type,
8783          expecting us to get the real base type from the encoding
8784          anyway.  In this situation, the encoding cannot be ignored
8785          as redundant.  */
8786       return 0;
8787     }
8788
8789   if (is_dynamic_type (range_type))
8790     return 0;
8791
8792   if (TYPE_NAME (encoding_type) == NULL)
8793     return 0;
8794
8795   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8796   if (bounds_str == NULL)
8797     return 0;
8798
8799   n = 8; /* Skip "___XDLU_".  */
8800   if (!ada_scan_number (bounds_str, n, &lo, &n))
8801     return 0;
8802   if (TYPE_LOW_BOUND (range_type) != lo)
8803     return 0;
8804
8805   n += 2; /* Skip the "__" separator between the two bounds.  */
8806   if (!ada_scan_number (bounds_str, n, &hi, &n))
8807     return 0;
8808   if (TYPE_HIGH_BOUND (range_type) != hi)
8809     return 0;
8810
8811   return 1;
8812 }
8813
8814 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8815    a type following the GNAT encoding for describing array type
8816    indices, only carries redundant information.  */
8817
8818 static int
8819 ada_is_redundant_index_type_desc (struct type *array_type,
8820                                   struct type *desc_type)
8821 {
8822   struct type *this_layer = check_typedef (array_type);
8823   int i;
8824
8825   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8826     {
8827       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8828                                             TYPE_FIELD_TYPE (desc_type, i)))
8829         return 0;
8830       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8831     }
8832
8833   return 1;
8834 }
8835
8836 /* Assuming that TYPE0 is an array type describing the type of a value
8837    at ADDR, and that DVAL describes a record containing any
8838    discriminants used in TYPE0, returns a type for the value that
8839    contains no dynamic components (that is, no components whose sizes
8840    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8841    true, gives an error message if the resulting type's size is over
8842    varsize_limit.  */
8843
8844 static struct type *
8845 to_fixed_array_type (struct type *type0, struct value *dval,
8846                      int ignore_too_big)
8847 {
8848   struct type *index_type_desc;
8849   struct type *result;
8850   int constrained_packed_array_p;
8851   static const char *xa_suffix = "___XA";
8852
8853   type0 = ada_check_typedef (type0);
8854   if (TYPE_FIXED_INSTANCE (type0))
8855     return type0;
8856
8857   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8858   if (constrained_packed_array_p)
8859     type0 = decode_constrained_packed_array_type (type0);
8860
8861   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8862
8863   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8864      encoding suffixed with 'P' may still be generated.  If so,
8865      it should be used to find the XA type.  */
8866
8867   if (index_type_desc == NULL)
8868     {
8869       const char *type_name = ada_type_name (type0);
8870
8871       if (type_name != NULL)
8872         {
8873           const int len = strlen (type_name);
8874           char *name = (char *) alloca (len + strlen (xa_suffix));
8875
8876           if (type_name[len - 1] == 'P')
8877             {
8878               strcpy (name, type_name);
8879               strcpy (name + len - 1, xa_suffix);
8880               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8881             }
8882         }
8883     }
8884
8885   ada_fixup_array_indexes_type (index_type_desc);
8886   if (index_type_desc != NULL
8887       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8888     {
8889       /* Ignore this ___XA parallel type, as it does not bring any
8890          useful information.  This allows us to avoid creating fixed
8891          versions of the array's index types, which would be identical
8892          to the original ones.  This, in turn, can also help avoid
8893          the creation of fixed versions of the array itself.  */
8894       index_type_desc = NULL;
8895     }
8896
8897   if (index_type_desc == NULL)
8898     {
8899       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8900
8901       /* NOTE: elt_type---the fixed version of elt_type0---should never
8902          depend on the contents of the array in properly constructed
8903          debugging data.  */
8904       /* Create a fixed version of the array element type.
8905          We're not providing the address of an element here,
8906          and thus the actual object value cannot be inspected to do
8907          the conversion.  This should not be a problem, since arrays of
8908          unconstrained objects are not allowed.  In particular, all
8909          the elements of an array of a tagged type should all be of
8910          the same type specified in the debugging info.  No need to
8911          consult the object tag.  */
8912       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8913
8914       /* Make sure we always create a new array type when dealing with
8915          packed array types, since we're going to fix-up the array
8916          type length and element bitsize a little further down.  */
8917       if (elt_type0 == elt_type && !constrained_packed_array_p)
8918         result = type0;
8919       else
8920         result = create_array_type (alloc_type_copy (type0),
8921                                     elt_type, TYPE_INDEX_TYPE (type0));
8922     }
8923   else
8924     {
8925       int i;
8926       struct type *elt_type0;
8927
8928       elt_type0 = type0;
8929       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8930         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8931
8932       /* NOTE: result---the fixed version of elt_type0---should never
8933          depend on the contents of the array in properly constructed
8934          debugging data.  */
8935       /* Create a fixed version of the array element type.
8936          We're not providing the address of an element here,
8937          and thus the actual object value cannot be inspected to do
8938          the conversion.  This should not be a problem, since arrays of
8939          unconstrained objects are not allowed.  In particular, all
8940          the elements of an array of a tagged type should all be of
8941          the same type specified in the debugging info.  No need to
8942          consult the object tag.  */
8943       result =
8944         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8945
8946       elt_type0 = type0;
8947       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8948         {
8949           struct type *range_type =
8950             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8951
8952           result = create_array_type (alloc_type_copy (elt_type0),
8953                                       result, range_type);
8954           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8955         }
8956       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8957         error (_("array type with dynamic size is larger than varsize-limit"));
8958     }
8959
8960   /* We want to preserve the type name.  This can be useful when
8961      trying to get the type name of a value that has already been
8962      printed (for instance, if the user did "print VAR; whatis $".  */
8963   TYPE_NAME (result) = TYPE_NAME (type0);
8964
8965   if (constrained_packed_array_p)
8966     {
8967       /* So far, the resulting type has been created as if the original
8968          type was a regular (non-packed) array type.  As a result, the
8969          bitsize of the array elements needs to be set again, and the array
8970          length needs to be recomputed based on that bitsize.  */
8971       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8972       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8973
8974       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8975       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8976       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8977         TYPE_LENGTH (result)++;
8978     }
8979
8980   TYPE_FIXED_INSTANCE (result) = 1;
8981   return result;
8982 }
8983
8984
8985 /* A standard type (containing no dynamically sized components)
8986    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8987    DVAL describes a record containing any discriminants used in TYPE0,
8988    and may be NULL if there are none, or if the object of type TYPE at
8989    ADDRESS or in VALADDR contains these discriminants.
8990    
8991    If CHECK_TAG is not null, in the case of tagged types, this function
8992    attempts to locate the object's tag and use it to compute the actual
8993    type.  However, when ADDRESS is null, we cannot use it to determine the
8994    location of the tag, and therefore compute the tagged type's actual type.
8995    So we return the tagged type without consulting the tag.  */
8996    
8997 static struct type *
8998 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8999                    CORE_ADDR address, struct value *dval, int check_tag)
9000 {
9001   type = ada_check_typedef (type);
9002   switch (TYPE_CODE (type))
9003     {
9004     default:
9005       return type;
9006     case TYPE_CODE_STRUCT:
9007       {
9008         struct type *static_type = to_static_fixed_type (type);
9009         struct type *fixed_record_type =
9010           to_fixed_record_type (type, valaddr, address, NULL);
9011
9012         /* If STATIC_TYPE is a tagged type and we know the object's address,
9013            then we can determine its tag, and compute the object's actual
9014            type from there.  Note that we have to use the fixed record
9015            type (the parent part of the record may have dynamic fields
9016            and the way the location of _tag is expressed may depend on
9017            them).  */
9018
9019         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9020           {
9021             struct value *tag =
9022               value_tag_from_contents_and_address
9023               (fixed_record_type,
9024                valaddr,
9025                address);
9026             struct type *real_type = type_from_tag (tag);
9027             struct value *obj =
9028               value_from_contents_and_address (fixed_record_type,
9029                                                valaddr,
9030                                                address);
9031             fixed_record_type = value_type (obj);
9032             if (real_type != NULL)
9033               return to_fixed_record_type
9034                 (real_type, NULL,
9035                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9036           }
9037
9038         /* Check to see if there is a parallel ___XVZ variable.
9039            If there is, then it provides the actual size of our type.  */
9040         else if (ada_type_name (fixed_record_type) != NULL)
9041           {
9042             const char *name = ada_type_name (fixed_record_type);
9043             char *xvz_name
9044               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9045             bool xvz_found = false;
9046             LONGEST size;
9047
9048             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9049             TRY
9050               {
9051                 xvz_found = get_int_var_value (xvz_name, size);
9052               }
9053             CATCH (except, RETURN_MASK_ERROR)
9054               {
9055                 /* We found the variable, but somehow failed to read
9056                    its value.  Rethrow the same error, but with a little
9057                    bit more information, to help the user understand
9058                    what went wrong (Eg: the variable might have been
9059                    optimized out).  */
9060                 throw_error (except.error,
9061                              _("unable to read value of %s (%s)"),
9062                              xvz_name, except.message);
9063               }
9064             END_CATCH
9065
9066             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9067               {
9068                 fixed_record_type = copy_type (fixed_record_type);
9069                 TYPE_LENGTH (fixed_record_type) = size;
9070
9071                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9072                    observed this when the debugging info is STABS, and
9073                    apparently it is something that is hard to fix.
9074
9075                    In practice, we don't need the actual type definition
9076                    at all, because the presence of the XVZ variable allows us
9077                    to assume that there must be a XVS type as well, which we
9078                    should be able to use later, when we need the actual type
9079                    definition.
9080
9081                    In the meantime, pretend that the "fixed" type we are
9082                    returning is NOT a stub, because this can cause trouble
9083                    when using this type to create new types targeting it.
9084                    Indeed, the associated creation routines often check
9085                    whether the target type is a stub and will try to replace
9086                    it, thus using a type with the wrong size.  This, in turn,
9087                    might cause the new type to have the wrong size too.
9088                    Consider the case of an array, for instance, where the size
9089                    of the array is computed from the number of elements in
9090                    our array multiplied by the size of its element.  */
9091                 TYPE_STUB (fixed_record_type) = 0;
9092               }
9093           }
9094         return fixed_record_type;
9095       }
9096     case TYPE_CODE_ARRAY:
9097       return to_fixed_array_type (type, dval, 1);
9098     case TYPE_CODE_UNION:
9099       if (dval == NULL)
9100         return type;
9101       else
9102         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9103     }
9104 }
9105
9106 /* The same as ada_to_fixed_type_1, except that it preserves the type
9107    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9108
9109    The typedef layer needs be preserved in order to differentiate between
9110    arrays and array pointers when both types are implemented using the same
9111    fat pointer.  In the array pointer case, the pointer is encoded as
9112    a typedef of the pointer type.  For instance, considering:
9113
9114           type String_Access is access String;
9115           S1 : String_Access := null;
9116
9117    To the debugger, S1 is defined as a typedef of type String.  But
9118    to the user, it is a pointer.  So if the user tries to print S1,
9119    we should not dereference the array, but print the array address
9120    instead.
9121
9122    If we didn't preserve the typedef layer, we would lose the fact that
9123    the type is to be presented as a pointer (needs de-reference before
9124    being printed).  And we would also use the source-level type name.  */
9125
9126 struct type *
9127 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9128                    CORE_ADDR address, struct value *dval, int check_tag)
9129
9130 {
9131   struct type *fixed_type =
9132     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9133
9134   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9135       then preserve the typedef layer.
9136
9137       Implementation note: We can only check the main-type portion of
9138       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9139       from TYPE now returns a type that has the same instance flags
9140       as TYPE.  For instance, if TYPE is a "typedef const", and its
9141       target type is a "struct", then the typedef elimination will return
9142       a "const" version of the target type.  See check_typedef for more
9143       details about how the typedef layer elimination is done.
9144
9145       brobecker/2010-11-19: It seems to me that the only case where it is
9146       useful to preserve the typedef layer is when dealing with fat pointers.
9147       Perhaps, we could add a check for that and preserve the typedef layer
9148       only in that situation.  But this seems unecessary so far, probably
9149       because we call check_typedef/ada_check_typedef pretty much everywhere.
9150       */
9151   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9152       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9153           == TYPE_MAIN_TYPE (fixed_type)))
9154     return type;
9155
9156   return fixed_type;
9157 }
9158
9159 /* A standard (static-sized) type corresponding as well as possible to
9160    TYPE0, but based on no runtime data.  */
9161
9162 static struct type *
9163 to_static_fixed_type (struct type *type0)
9164 {
9165   struct type *type;
9166
9167   if (type0 == NULL)
9168     return NULL;
9169
9170   if (TYPE_FIXED_INSTANCE (type0))
9171     return type0;
9172
9173   type0 = ada_check_typedef (type0);
9174
9175   switch (TYPE_CODE (type0))
9176     {
9177     default:
9178       return type0;
9179     case TYPE_CODE_STRUCT:
9180       type = dynamic_template_type (type0);
9181       if (type != NULL)
9182         return template_to_static_fixed_type (type);
9183       else
9184         return template_to_static_fixed_type (type0);
9185     case TYPE_CODE_UNION:
9186       type = ada_find_parallel_type (type0, "___XVU");
9187       if (type != NULL)
9188         return template_to_static_fixed_type (type);
9189       else
9190         return template_to_static_fixed_type (type0);
9191     }
9192 }
9193
9194 /* A static approximation of TYPE with all type wrappers removed.  */
9195
9196 static struct type *
9197 static_unwrap_type (struct type *type)
9198 {
9199   if (ada_is_aligner_type (type))
9200     {
9201       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9202       if (ada_type_name (type1) == NULL)
9203         TYPE_NAME (type1) = ada_type_name (type);
9204
9205       return static_unwrap_type (type1);
9206     }
9207   else
9208     {
9209       struct type *raw_real_type = ada_get_base_type (type);
9210
9211       if (raw_real_type == type)
9212         return type;
9213       else
9214         return to_static_fixed_type (raw_real_type);
9215     }
9216 }
9217
9218 /* In some cases, incomplete and private types require
9219    cross-references that are not resolved as records (for example,
9220       type Foo;
9221       type FooP is access Foo;
9222       V: FooP;
9223       type Foo is array ...;
9224    ).  In these cases, since there is no mechanism for producing
9225    cross-references to such types, we instead substitute for FooP a
9226    stub enumeration type that is nowhere resolved, and whose tag is
9227    the name of the actual type.  Call these types "non-record stubs".  */
9228
9229 /* A type equivalent to TYPE that is not a non-record stub, if one
9230    exists, otherwise TYPE.  */
9231
9232 struct type *
9233 ada_check_typedef (struct type *type)
9234 {
9235   if (type == NULL)
9236     return NULL;
9237
9238   /* If our type is an access to an unconstrained array, which is encoded
9239      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9240      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9241      what allows us to distinguish between fat pointers that represent
9242      array types, and fat pointers that represent array access types
9243      (in both cases, the compiler implements them as fat pointers).  */
9244   if (ada_is_access_to_unconstrained_array (type))
9245     return type;
9246
9247   type = check_typedef (type);
9248   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9249       || !TYPE_STUB (type)
9250       || TYPE_NAME (type) == NULL)
9251     return type;
9252   else
9253     {
9254       const char *name = TYPE_NAME (type);
9255       struct type *type1 = ada_find_any_type (name);
9256
9257       if (type1 == NULL)
9258         return type;
9259
9260       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9261          stubs pointing to arrays, as we don't create symbols for array
9262          types, only for the typedef-to-array types).  If that's the case,
9263          strip the typedef layer.  */
9264       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9265         type1 = ada_check_typedef (type1);
9266
9267       return type1;
9268     }
9269 }
9270
9271 /* A value representing the data at VALADDR/ADDRESS as described by
9272    type TYPE0, but with a standard (static-sized) type that correctly
9273    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9274    type, then return VAL0 [this feature is simply to avoid redundant
9275    creation of struct values].  */
9276
9277 static struct value *
9278 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9279                            struct value *val0)
9280 {
9281   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9282
9283   if (type == type0 && val0 != NULL)
9284     return val0;
9285
9286   if (VALUE_LVAL (val0) != lval_memory)
9287     {
9288       /* Our value does not live in memory; it could be a convenience
9289          variable, for instance.  Create a not_lval value using val0's
9290          contents.  */
9291       return value_from_contents (type, value_contents (val0));
9292     }
9293
9294   return value_from_contents_and_address (type, 0, address);
9295 }
9296
9297 /* A value representing VAL, but with a standard (static-sized) type
9298    that correctly describes it.  Does not necessarily create a new
9299    value.  */
9300
9301 struct value *
9302 ada_to_fixed_value (struct value *val)
9303 {
9304   val = unwrap_value (val);
9305   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9306   return val;
9307 }
9308 \f
9309
9310 /* Attributes */
9311
9312 /* Table mapping attribute numbers to names.
9313    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9314
9315 static const char *attribute_names[] = {
9316   "<?>",
9317
9318   "first",
9319   "last",
9320   "length",
9321   "image",
9322   "max",
9323   "min",
9324   "modulus",
9325   "pos",
9326   "size",
9327   "tag",
9328   "val",
9329   0
9330 };
9331
9332 const char *
9333 ada_attribute_name (enum exp_opcode n)
9334 {
9335   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9336     return attribute_names[n - OP_ATR_FIRST + 1];
9337   else
9338     return attribute_names[0];
9339 }
9340
9341 /* Evaluate the 'POS attribute applied to ARG.  */
9342
9343 static LONGEST
9344 pos_atr (struct value *arg)
9345 {
9346   struct value *val = coerce_ref (arg);
9347   struct type *type = value_type (val);
9348   LONGEST result;
9349
9350   if (!discrete_type_p (type))
9351     error (_("'POS only defined on discrete types"));
9352
9353   if (!discrete_position (type, value_as_long (val), &result))
9354     error (_("enumeration value is invalid: can't find 'POS"));
9355
9356   return result;
9357 }
9358
9359 static struct value *
9360 value_pos_atr (struct type *type, struct value *arg)
9361 {
9362   return value_from_longest (type, pos_atr (arg));
9363 }
9364
9365 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9366
9367 static struct value *
9368 value_val_atr (struct type *type, struct value *arg)
9369 {
9370   if (!discrete_type_p (type))
9371     error (_("'VAL only defined on discrete types"));
9372   if (!integer_type_p (value_type (arg)))
9373     error (_("'VAL requires integral argument"));
9374
9375   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9376     {
9377       long pos = value_as_long (arg);
9378
9379       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9380         error (_("argument to 'VAL out of range"));
9381       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9382     }
9383   else
9384     return value_from_longest (type, value_as_long (arg));
9385 }
9386 \f
9387
9388                                 /* Evaluation */
9389
9390 /* True if TYPE appears to be an Ada character type.
9391    [At the moment, this is true only for Character and Wide_Character;
9392    It is a heuristic test that could stand improvement].  */
9393
9394 int
9395 ada_is_character_type (struct type *type)
9396 {
9397   const char *name;
9398
9399   /* If the type code says it's a character, then assume it really is,
9400      and don't check any further.  */
9401   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9402     return 1;
9403   
9404   /* Otherwise, assume it's a character type iff it is a discrete type
9405      with a known character type name.  */
9406   name = ada_type_name (type);
9407   return (name != NULL
9408           && (TYPE_CODE (type) == TYPE_CODE_INT
9409               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9410           && (strcmp (name, "character") == 0
9411               || strcmp (name, "wide_character") == 0
9412               || strcmp (name, "wide_wide_character") == 0
9413               || strcmp (name, "unsigned char") == 0));
9414 }
9415
9416 /* True if TYPE appears to be an Ada string type.  */
9417
9418 int
9419 ada_is_string_type (struct type *type)
9420 {
9421   type = ada_check_typedef (type);
9422   if (type != NULL
9423       && TYPE_CODE (type) != TYPE_CODE_PTR
9424       && (ada_is_simple_array_type (type)
9425           || ada_is_array_descriptor_type (type))
9426       && ada_array_arity (type) == 1)
9427     {
9428       struct type *elttype = ada_array_element_type (type, 1);
9429
9430       return ada_is_character_type (elttype);
9431     }
9432   else
9433     return 0;
9434 }
9435
9436 /* The compiler sometimes provides a parallel XVS type for a given
9437    PAD type.  Normally, it is safe to follow the PAD type directly,
9438    but older versions of the compiler have a bug that causes the offset
9439    of its "F" field to be wrong.  Following that field in that case
9440    would lead to incorrect results, but this can be worked around
9441    by ignoring the PAD type and using the associated XVS type instead.
9442
9443    Set to True if the debugger should trust the contents of PAD types.
9444    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9445 static int trust_pad_over_xvs = 1;
9446
9447 /* True if TYPE is a struct type introduced by the compiler to force the
9448    alignment of a value.  Such types have a single field with a
9449    distinctive name.  */
9450
9451 int
9452 ada_is_aligner_type (struct type *type)
9453 {
9454   type = ada_check_typedef (type);
9455
9456   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9457     return 0;
9458
9459   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9460           && TYPE_NFIELDS (type) == 1
9461           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9462 }
9463
9464 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9465    the parallel type.  */
9466
9467 struct type *
9468 ada_get_base_type (struct type *raw_type)
9469 {
9470   struct type *real_type_namer;
9471   struct type *raw_real_type;
9472
9473   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9474     return raw_type;
9475
9476   if (ada_is_aligner_type (raw_type))
9477     /* The encoding specifies that we should always use the aligner type.
9478        So, even if this aligner type has an associated XVS type, we should
9479        simply ignore it.
9480
9481        According to the compiler gurus, an XVS type parallel to an aligner
9482        type may exist because of a stabs limitation.  In stabs, aligner
9483        types are empty because the field has a variable-sized type, and
9484        thus cannot actually be used as an aligner type.  As a result,
9485        we need the associated parallel XVS type to decode the type.
9486        Since the policy in the compiler is to not change the internal
9487        representation based on the debugging info format, we sometimes
9488        end up having a redundant XVS type parallel to the aligner type.  */
9489     return raw_type;
9490
9491   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9492   if (real_type_namer == NULL
9493       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9494       || TYPE_NFIELDS (real_type_namer) != 1)
9495     return raw_type;
9496
9497   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9498     {
9499       /* This is an older encoding form where the base type needs to be
9500          looked up by name.  We prefer the newer enconding because it is
9501          more efficient.  */
9502       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9503       if (raw_real_type == NULL)
9504         return raw_type;
9505       else
9506         return raw_real_type;
9507     }
9508
9509   /* The field in our XVS type is a reference to the base type.  */
9510   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9511 }
9512
9513 /* The type of value designated by TYPE, with all aligners removed.  */
9514
9515 struct type *
9516 ada_aligned_type (struct type *type)
9517 {
9518   if (ada_is_aligner_type (type))
9519     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9520   else
9521     return ada_get_base_type (type);
9522 }
9523
9524
9525 /* The address of the aligned value in an object at address VALADDR
9526    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9527
9528 const gdb_byte *
9529 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9530 {
9531   if (ada_is_aligner_type (type))
9532     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9533                                    valaddr +
9534                                    TYPE_FIELD_BITPOS (type,
9535                                                       0) / TARGET_CHAR_BIT);
9536   else
9537     return valaddr;
9538 }
9539
9540
9541
9542 /* The printed representation of an enumeration literal with encoded
9543    name NAME.  The value is good to the next call of ada_enum_name.  */
9544 const char *
9545 ada_enum_name (const char *name)
9546 {
9547   static char *result;
9548   static size_t result_len = 0;
9549   const char *tmp;
9550
9551   /* First, unqualify the enumeration name:
9552      1. Search for the last '.' character.  If we find one, then skip
9553      all the preceding characters, the unqualified name starts
9554      right after that dot.
9555      2. Otherwise, we may be debugging on a target where the compiler
9556      translates dots into "__".  Search forward for double underscores,
9557      but stop searching when we hit an overloading suffix, which is
9558      of the form "__" followed by digits.  */
9559
9560   tmp = strrchr (name, '.');
9561   if (tmp != NULL)
9562     name = tmp + 1;
9563   else
9564     {
9565       while ((tmp = strstr (name, "__")) != NULL)
9566         {
9567           if (isdigit (tmp[2]))
9568             break;
9569           else
9570             name = tmp + 2;
9571         }
9572     }
9573
9574   if (name[0] == 'Q')
9575     {
9576       int v;
9577
9578       if (name[1] == 'U' || name[1] == 'W')
9579         {
9580           if (sscanf (name + 2, "%x", &v) != 1)
9581             return name;
9582         }
9583       else
9584         return name;
9585
9586       GROW_VECT (result, result_len, 16);
9587       if (isascii (v) && isprint (v))
9588         xsnprintf (result, result_len, "'%c'", v);
9589       else if (name[1] == 'U')
9590         xsnprintf (result, result_len, "[\"%02x\"]", v);
9591       else
9592         xsnprintf (result, result_len, "[\"%04x\"]", v);
9593
9594       return result;
9595     }
9596   else
9597     {
9598       tmp = strstr (name, "__");
9599       if (tmp == NULL)
9600         tmp = strstr (name, "$");
9601       if (tmp != NULL)
9602         {
9603           GROW_VECT (result, result_len, tmp - name + 1);
9604           strncpy (result, name, tmp - name);
9605           result[tmp - name] = '\0';
9606           return result;
9607         }
9608
9609       return name;
9610     }
9611 }
9612
9613 /* Evaluate the subexpression of EXP starting at *POS as for
9614    evaluate_type, updating *POS to point just past the evaluated
9615    expression.  */
9616
9617 static struct value *
9618 evaluate_subexp_type (struct expression *exp, int *pos)
9619 {
9620   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9621 }
9622
9623 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9624    value it wraps.  */
9625
9626 static struct value *
9627 unwrap_value (struct value *val)
9628 {
9629   struct type *type = ada_check_typedef (value_type (val));
9630
9631   if (ada_is_aligner_type (type))
9632     {
9633       struct value *v = ada_value_struct_elt (val, "F", 0);
9634       struct type *val_type = ada_check_typedef (value_type (v));
9635
9636       if (ada_type_name (val_type) == NULL)
9637         TYPE_NAME (val_type) = ada_type_name (type);
9638
9639       return unwrap_value (v);
9640     }
9641   else
9642     {
9643       struct type *raw_real_type =
9644         ada_check_typedef (ada_get_base_type (type));
9645
9646       /* If there is no parallel XVS or XVE type, then the value is
9647          already unwrapped.  Return it without further modification.  */
9648       if ((type == raw_real_type)
9649           && ada_find_parallel_type (type, "___XVE") == NULL)
9650         return val;
9651
9652       return
9653         coerce_unspec_val_to_type
9654         (val, ada_to_fixed_type (raw_real_type, 0,
9655                                  value_address (val),
9656                                  NULL, 1));
9657     }
9658 }
9659
9660 static struct value *
9661 cast_from_fixed (struct type *type, struct value *arg)
9662 {
9663   struct value *scale = ada_scaling_factor (value_type (arg));
9664   arg = value_cast (value_type (scale), arg);
9665
9666   arg = value_binop (arg, scale, BINOP_MUL);
9667   return value_cast (type, arg);
9668 }
9669
9670 static struct value *
9671 cast_to_fixed (struct type *type, struct value *arg)
9672 {
9673   if (type == value_type (arg))
9674     return arg;
9675
9676   struct value *scale = ada_scaling_factor (type);
9677   if (ada_is_fixed_point_type (value_type (arg)))
9678     arg = cast_from_fixed (value_type (scale), arg);
9679   else
9680     arg = value_cast (value_type (scale), arg);
9681
9682   arg = value_binop (arg, scale, BINOP_DIV);
9683   return value_cast (type, arg);
9684 }
9685
9686 /* Given two array types T1 and T2, return nonzero iff both arrays
9687    contain the same number of elements.  */
9688
9689 static int
9690 ada_same_array_size_p (struct type *t1, struct type *t2)
9691 {
9692   LONGEST lo1, hi1, lo2, hi2;
9693
9694   /* Get the array bounds in order to verify that the size of
9695      the two arrays match.  */
9696   if (!get_array_bounds (t1, &lo1, &hi1)
9697       || !get_array_bounds (t2, &lo2, &hi2))
9698     error (_("unable to determine array bounds"));
9699
9700   /* To make things easier for size comparison, normalize a bit
9701      the case of empty arrays by making sure that the difference
9702      between upper bound and lower bound is always -1.  */
9703   if (lo1 > hi1)
9704     hi1 = lo1 - 1;
9705   if (lo2 > hi2)
9706     hi2 = lo2 - 1;
9707
9708   return (hi1 - lo1 == hi2 - lo2);
9709 }
9710
9711 /* Assuming that VAL is an array of integrals, and TYPE represents
9712    an array with the same number of elements, but with wider integral
9713    elements, return an array "casted" to TYPE.  In practice, this
9714    means that the returned array is built by casting each element
9715    of the original array into TYPE's (wider) element type.  */
9716
9717 static struct value *
9718 ada_promote_array_of_integrals (struct type *type, struct value *val)
9719 {
9720   struct type *elt_type = TYPE_TARGET_TYPE (type);
9721   LONGEST lo, hi;
9722   struct value *res;
9723   LONGEST i;
9724
9725   /* Verify that both val and type are arrays of scalars, and
9726      that the size of val's elements is smaller than the size
9727      of type's element.  */
9728   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9729   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9730   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9731   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9732   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9733               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9734
9735   if (!get_array_bounds (type, &lo, &hi))
9736     error (_("unable to determine array bounds"));
9737
9738   res = allocate_value (type);
9739
9740   /* Promote each array element.  */
9741   for (i = 0; i < hi - lo + 1; i++)
9742     {
9743       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9744
9745       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9746               value_contents_all (elt), TYPE_LENGTH (elt_type));
9747     }
9748
9749   return res;
9750 }
9751
9752 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9753    return the converted value.  */
9754
9755 static struct value *
9756 coerce_for_assign (struct type *type, struct value *val)
9757 {
9758   struct type *type2 = value_type (val);
9759
9760   if (type == type2)
9761     return val;
9762
9763   type2 = ada_check_typedef (type2);
9764   type = ada_check_typedef (type);
9765
9766   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9767       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9768     {
9769       val = ada_value_ind (val);
9770       type2 = value_type (val);
9771     }
9772
9773   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9774       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9775     {
9776       if (!ada_same_array_size_p (type, type2))
9777         error (_("cannot assign arrays of different length"));
9778
9779       if (is_integral_type (TYPE_TARGET_TYPE (type))
9780           && is_integral_type (TYPE_TARGET_TYPE (type2))
9781           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9782                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9783         {
9784           /* Allow implicit promotion of the array elements to
9785              a wider type.  */
9786           return ada_promote_array_of_integrals (type, val);
9787         }
9788
9789       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9790           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9791         error (_("Incompatible types in assignment"));
9792       deprecated_set_value_type (val, type);
9793     }
9794   return val;
9795 }
9796
9797 static struct value *
9798 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9799 {
9800   struct value *val;
9801   struct type *type1, *type2;
9802   LONGEST v, v1, v2;
9803
9804   arg1 = coerce_ref (arg1);
9805   arg2 = coerce_ref (arg2);
9806   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9807   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9808
9809   if (TYPE_CODE (type1) != TYPE_CODE_INT
9810       || TYPE_CODE (type2) != TYPE_CODE_INT)
9811     return value_binop (arg1, arg2, op);
9812
9813   switch (op)
9814     {
9815     case BINOP_MOD:
9816     case BINOP_DIV:
9817     case BINOP_REM:
9818       break;
9819     default:
9820       return value_binop (arg1, arg2, op);
9821     }
9822
9823   v2 = value_as_long (arg2);
9824   if (v2 == 0)
9825     error (_("second operand of %s must not be zero."), op_string (op));
9826
9827   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9828     return value_binop (arg1, arg2, op);
9829
9830   v1 = value_as_long (arg1);
9831   switch (op)
9832     {
9833     case BINOP_DIV:
9834       v = v1 / v2;
9835       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9836         v += v > 0 ? -1 : 1;
9837       break;
9838     case BINOP_REM:
9839       v = v1 % v2;
9840       if (v * v1 < 0)
9841         v -= v2;
9842       break;
9843     default:
9844       /* Should not reach this point.  */
9845       v = 0;
9846     }
9847
9848   val = allocate_value (type1);
9849   store_unsigned_integer (value_contents_raw (val),
9850                           TYPE_LENGTH (value_type (val)),
9851                           gdbarch_byte_order (get_type_arch (type1)), v);
9852   return val;
9853 }
9854
9855 static int
9856 ada_value_equal (struct value *arg1, struct value *arg2)
9857 {
9858   if (ada_is_direct_array_type (value_type (arg1))
9859       || ada_is_direct_array_type (value_type (arg2)))
9860     {
9861       struct type *arg1_type, *arg2_type;
9862
9863       /* Automatically dereference any array reference before
9864          we attempt to perform the comparison.  */
9865       arg1 = ada_coerce_ref (arg1);
9866       arg2 = ada_coerce_ref (arg2);
9867
9868       arg1 = ada_coerce_to_simple_array (arg1);
9869       arg2 = ada_coerce_to_simple_array (arg2);
9870
9871       arg1_type = ada_check_typedef (value_type (arg1));
9872       arg2_type = ada_check_typedef (value_type (arg2));
9873
9874       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9875           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9876         error (_("Attempt to compare array with non-array"));
9877       /* FIXME: The following works only for types whose
9878          representations use all bits (no padding or undefined bits)
9879          and do not have user-defined equality.  */
9880       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9881               && memcmp (value_contents (arg1), value_contents (arg2),
9882                          TYPE_LENGTH (arg1_type)) == 0);
9883     }
9884   return value_equal (arg1, arg2);
9885 }
9886
9887 /* Total number of component associations in the aggregate starting at
9888    index PC in EXP.  Assumes that index PC is the start of an
9889    OP_AGGREGATE.  */
9890
9891 static int
9892 num_component_specs (struct expression *exp, int pc)
9893 {
9894   int n, m, i;
9895
9896   m = exp->elts[pc + 1].longconst;
9897   pc += 3;
9898   n = 0;
9899   for (i = 0; i < m; i += 1)
9900     {
9901       switch (exp->elts[pc].opcode) 
9902         {
9903         default:
9904           n += 1;
9905           break;
9906         case OP_CHOICES:
9907           n += exp->elts[pc + 1].longconst;
9908           break;
9909         }
9910       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9911     }
9912   return n;
9913 }
9914
9915 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9916    component of LHS (a simple array or a record), updating *POS past
9917    the expression, assuming that LHS is contained in CONTAINER.  Does
9918    not modify the inferior's memory, nor does it modify LHS (unless
9919    LHS == CONTAINER).  */
9920
9921 static void
9922 assign_component (struct value *container, struct value *lhs, LONGEST index,
9923                   struct expression *exp, int *pos)
9924 {
9925   struct value *mark = value_mark ();
9926   struct value *elt;
9927   struct type *lhs_type = check_typedef (value_type (lhs));
9928
9929   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9930     {
9931       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9932       struct value *index_val = value_from_longest (index_type, index);
9933
9934       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9935     }
9936   else
9937     {
9938       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9939       elt = ada_to_fixed_value (elt);
9940     }
9941
9942   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9943     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9944   else
9945     value_assign_to_component (container, elt, 
9946                                ada_evaluate_subexp (NULL, exp, pos, 
9947                                                     EVAL_NORMAL));
9948
9949   value_free_to_mark (mark);
9950 }
9951
9952 /* Assuming that LHS represents an lvalue having a record or array
9953    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9954    of that aggregate's value to LHS, advancing *POS past the
9955    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9956    lvalue containing LHS (possibly LHS itself).  Does not modify
9957    the inferior's memory, nor does it modify the contents of 
9958    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9959
9960 static struct value *
9961 assign_aggregate (struct value *container, 
9962                   struct value *lhs, struct expression *exp, 
9963                   int *pos, enum noside noside)
9964 {
9965   struct type *lhs_type;
9966   int n = exp->elts[*pos+1].longconst;
9967   LONGEST low_index, high_index;
9968   int num_specs;
9969   LONGEST *indices;
9970   int max_indices, num_indices;
9971   int i;
9972
9973   *pos += 3;
9974   if (noside != EVAL_NORMAL)
9975     {
9976       for (i = 0; i < n; i += 1)
9977         ada_evaluate_subexp (NULL, exp, pos, noside);
9978       return container;
9979     }
9980
9981   container = ada_coerce_ref (container);
9982   if (ada_is_direct_array_type (value_type (container)))
9983     container = ada_coerce_to_simple_array (container);
9984   lhs = ada_coerce_ref (lhs);
9985   if (!deprecated_value_modifiable (lhs))
9986     error (_("Left operand of assignment is not a modifiable lvalue."));
9987
9988   lhs_type = check_typedef (value_type (lhs));
9989   if (ada_is_direct_array_type (lhs_type))
9990     {
9991       lhs = ada_coerce_to_simple_array (lhs);
9992       lhs_type = check_typedef (value_type (lhs));
9993       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9994       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9995     }
9996   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9997     {
9998       low_index = 0;
9999       high_index = num_visible_fields (lhs_type) - 1;
10000     }
10001   else
10002     error (_("Left-hand side must be array or record."));
10003
10004   num_specs = num_component_specs (exp, *pos - 3);
10005   max_indices = 4 * num_specs + 4;
10006   indices = XALLOCAVEC (LONGEST, max_indices);
10007   indices[0] = indices[1] = low_index - 1;
10008   indices[2] = indices[3] = high_index + 1;
10009   num_indices = 4;
10010
10011   for (i = 0; i < n; i += 1)
10012     {
10013       switch (exp->elts[*pos].opcode)
10014         {
10015           case OP_CHOICES:
10016             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10017                                            &num_indices, max_indices,
10018                                            low_index, high_index);
10019             break;
10020           case OP_POSITIONAL:
10021             aggregate_assign_positional (container, lhs, exp, pos, indices,
10022                                          &num_indices, max_indices,
10023                                          low_index, high_index);
10024             break;
10025           case OP_OTHERS:
10026             if (i != n-1)
10027               error (_("Misplaced 'others' clause"));
10028             aggregate_assign_others (container, lhs, exp, pos, indices, 
10029                                      num_indices, low_index, high_index);
10030             break;
10031           default:
10032             error (_("Internal error: bad aggregate clause"));
10033         }
10034     }
10035
10036   return container;
10037 }
10038               
10039 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10040    construct at *POS, updating *POS past the construct, given that
10041    the positions are relative to lower bound LOW, where HIGH is the 
10042    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10043    updating *NUM_INDICES as needed.  CONTAINER is as for
10044    assign_aggregate.  */
10045 static void
10046 aggregate_assign_positional (struct value *container,
10047                              struct value *lhs, struct expression *exp,
10048                              int *pos, LONGEST *indices, int *num_indices,
10049                              int max_indices, LONGEST low, LONGEST high) 
10050 {
10051   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10052   
10053   if (ind - 1 == high)
10054     warning (_("Extra components in aggregate ignored."));
10055   if (ind <= high)
10056     {
10057       add_component_interval (ind, ind, indices, num_indices, max_indices);
10058       *pos += 3;
10059       assign_component (container, lhs, ind, exp, pos);
10060     }
10061   else
10062     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10063 }
10064
10065 /* Assign into the components of LHS indexed by the OP_CHOICES
10066    construct at *POS, updating *POS past the construct, given that
10067    the allowable indices are LOW..HIGH.  Record the indices assigned
10068    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10069    needed.  CONTAINER is as for assign_aggregate.  */
10070 static void
10071 aggregate_assign_from_choices (struct value *container,
10072                                struct value *lhs, struct expression *exp,
10073                                int *pos, LONGEST *indices, int *num_indices,
10074                                int max_indices, LONGEST low, LONGEST high) 
10075 {
10076   int j;
10077   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10078   int choice_pos, expr_pc;
10079   int is_array = ada_is_direct_array_type (value_type (lhs));
10080
10081   choice_pos = *pos += 3;
10082
10083   for (j = 0; j < n_choices; j += 1)
10084     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10085   expr_pc = *pos;
10086   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10087   
10088   for (j = 0; j < n_choices; j += 1)
10089     {
10090       LONGEST lower, upper;
10091       enum exp_opcode op = exp->elts[choice_pos].opcode;
10092
10093       if (op == OP_DISCRETE_RANGE)
10094         {
10095           choice_pos += 1;
10096           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10097                                                       EVAL_NORMAL));
10098           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10099                                                       EVAL_NORMAL));
10100         }
10101       else if (is_array)
10102         {
10103           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10104                                                       EVAL_NORMAL));
10105           upper = lower;
10106         }
10107       else
10108         {
10109           int ind;
10110           const char *name;
10111
10112           switch (op)
10113             {
10114             case OP_NAME:
10115               name = &exp->elts[choice_pos + 2].string;
10116               break;
10117             case OP_VAR_VALUE:
10118               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10119               break;
10120             default:
10121               error (_("Invalid record component association."));
10122             }
10123           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10124           ind = 0;
10125           if (! find_struct_field (name, value_type (lhs), 0, 
10126                                    NULL, NULL, NULL, NULL, &ind))
10127             error (_("Unknown component name: %s."), name);
10128           lower = upper = ind;
10129         }
10130
10131       if (lower <= upper && (lower < low || upper > high))
10132         error (_("Index in component association out of bounds."));
10133
10134       add_component_interval (lower, upper, indices, num_indices,
10135                               max_indices);
10136       while (lower <= upper)
10137         {
10138           int pos1;
10139
10140           pos1 = expr_pc;
10141           assign_component (container, lhs, lower, exp, &pos1);
10142           lower += 1;
10143         }
10144     }
10145 }
10146
10147 /* Assign the value of the expression in the OP_OTHERS construct in
10148    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10149    have not been previously assigned.  The index intervals already assigned
10150    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10151    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10152 static void
10153 aggregate_assign_others (struct value *container,
10154                          struct value *lhs, struct expression *exp,
10155                          int *pos, LONGEST *indices, int num_indices,
10156                          LONGEST low, LONGEST high) 
10157 {
10158   int i;
10159   int expr_pc = *pos + 1;
10160   
10161   for (i = 0; i < num_indices - 2; i += 2)
10162     {
10163       LONGEST ind;
10164
10165       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10166         {
10167           int localpos;
10168
10169           localpos = expr_pc;
10170           assign_component (container, lhs, ind, exp, &localpos);
10171         }
10172     }
10173   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10174 }
10175
10176 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10177    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10178    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10179    MAX_SIZE.  The resulting intervals do not overlap.  */
10180 static void
10181 add_component_interval (LONGEST low, LONGEST high, 
10182                         LONGEST* indices, int *size, int max_size)
10183 {
10184   int i, j;
10185
10186   for (i = 0; i < *size; i += 2) {
10187     if (high >= indices[i] && low <= indices[i + 1])
10188       {
10189         int kh;
10190
10191         for (kh = i + 2; kh < *size; kh += 2)
10192           if (high < indices[kh])
10193             break;
10194         if (low < indices[i])
10195           indices[i] = low;
10196         indices[i + 1] = indices[kh - 1];
10197         if (high > indices[i + 1])
10198           indices[i + 1] = high;
10199         memcpy (indices + i + 2, indices + kh, *size - kh);
10200         *size -= kh - i - 2;
10201         return;
10202       }
10203     else if (high < indices[i])
10204       break;
10205   }
10206         
10207   if (*size == max_size)
10208     error (_("Internal error: miscounted aggregate components."));
10209   *size += 2;
10210   for (j = *size-1; j >= i+2; j -= 1)
10211     indices[j] = indices[j - 2];
10212   indices[i] = low;
10213   indices[i + 1] = high;
10214 }
10215
10216 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10217    is different.  */
10218
10219 static struct value *
10220 ada_value_cast (struct type *type, struct value *arg2)
10221 {
10222   if (type == ada_check_typedef (value_type (arg2)))
10223     return arg2;
10224
10225   if (ada_is_fixed_point_type (type))
10226     return cast_to_fixed (type, arg2);
10227
10228   if (ada_is_fixed_point_type (value_type (arg2)))
10229     return cast_from_fixed (type, arg2);
10230
10231   return value_cast (type, arg2);
10232 }
10233
10234 /*  Evaluating Ada expressions, and printing their result.
10235     ------------------------------------------------------
10236
10237     1. Introduction:
10238     ----------------
10239
10240     We usually evaluate an Ada expression in order to print its value.
10241     We also evaluate an expression in order to print its type, which
10242     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10243     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10244     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10245     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10246     similar.
10247
10248     Evaluating expressions is a little more complicated for Ada entities
10249     than it is for entities in languages such as C.  The main reason for
10250     this is that Ada provides types whose definition might be dynamic.
10251     One example of such types is variant records.  Or another example
10252     would be an array whose bounds can only be known at run time.
10253
10254     The following description is a general guide as to what should be
10255     done (and what should NOT be done) in order to evaluate an expression
10256     involving such types, and when.  This does not cover how the semantic
10257     information is encoded by GNAT as this is covered separatly.  For the
10258     document used as the reference for the GNAT encoding, see exp_dbug.ads
10259     in the GNAT sources.
10260
10261     Ideally, we should embed each part of this description next to its
10262     associated code.  Unfortunately, the amount of code is so vast right
10263     now that it's hard to see whether the code handling a particular
10264     situation might be duplicated or not.  One day, when the code is
10265     cleaned up, this guide might become redundant with the comments
10266     inserted in the code, and we might want to remove it.
10267
10268     2. ``Fixing'' an Entity, the Simple Case:
10269     -----------------------------------------
10270
10271     When evaluating Ada expressions, the tricky issue is that they may
10272     reference entities whose type contents and size are not statically
10273     known.  Consider for instance a variant record:
10274
10275        type Rec (Empty : Boolean := True) is record
10276           case Empty is
10277              when True => null;
10278              when False => Value : Integer;
10279           end case;
10280        end record;
10281        Yes : Rec := (Empty => False, Value => 1);
10282        No  : Rec := (empty => True);
10283
10284     The size and contents of that record depends on the value of the
10285     descriminant (Rec.Empty).  At this point, neither the debugging
10286     information nor the associated type structure in GDB are able to
10287     express such dynamic types.  So what the debugger does is to create
10288     "fixed" versions of the type that applies to the specific object.
10289     We also informally refer to this opperation as "fixing" an object,
10290     which means creating its associated fixed type.
10291
10292     Example: when printing the value of variable "Yes" above, its fixed
10293     type would look like this:
10294
10295        type Rec is record
10296           Empty : Boolean;
10297           Value : Integer;
10298        end record;
10299
10300     On the other hand, if we printed the value of "No", its fixed type
10301     would become:
10302
10303        type Rec is record
10304           Empty : Boolean;
10305        end record;
10306
10307     Things become a little more complicated when trying to fix an entity
10308     with a dynamic type that directly contains another dynamic type,
10309     such as an array of variant records, for instance.  There are
10310     two possible cases: Arrays, and records.
10311
10312     3. ``Fixing'' Arrays:
10313     ---------------------
10314
10315     The type structure in GDB describes an array in terms of its bounds,
10316     and the type of its elements.  By design, all elements in the array
10317     have the same type and we cannot represent an array of variant elements
10318     using the current type structure in GDB.  When fixing an array,
10319     we cannot fix the array element, as we would potentially need one
10320     fixed type per element of the array.  As a result, the best we can do
10321     when fixing an array is to produce an array whose bounds and size
10322     are correct (allowing us to read it from memory), but without having
10323     touched its element type.  Fixing each element will be done later,
10324     when (if) necessary.
10325
10326     Arrays are a little simpler to handle than records, because the same
10327     amount of memory is allocated for each element of the array, even if
10328     the amount of space actually used by each element differs from element
10329     to element.  Consider for instance the following array of type Rec:
10330
10331        type Rec_Array is array (1 .. 2) of Rec;
10332
10333     The actual amount of memory occupied by each element might be different
10334     from element to element, depending on the value of their discriminant.
10335     But the amount of space reserved for each element in the array remains
10336     fixed regardless.  So we simply need to compute that size using
10337     the debugging information available, from which we can then determine
10338     the array size (we multiply the number of elements of the array by
10339     the size of each element).
10340
10341     The simplest case is when we have an array of a constrained element
10342     type. For instance, consider the following type declarations:
10343
10344         type Bounded_String (Max_Size : Integer) is
10345            Length : Integer;
10346            Buffer : String (1 .. Max_Size);
10347         end record;
10348         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10349
10350     In this case, the compiler describes the array as an array of
10351     variable-size elements (identified by its XVS suffix) for which
10352     the size can be read in the parallel XVZ variable.
10353
10354     In the case of an array of an unconstrained element type, the compiler
10355     wraps the array element inside a private PAD type.  This type should not
10356     be shown to the user, and must be "unwrap"'ed before printing.  Note
10357     that we also use the adjective "aligner" in our code to designate
10358     these wrapper types.
10359
10360     In some cases, the size allocated for each element is statically
10361     known.  In that case, the PAD type already has the correct size,
10362     and the array element should remain unfixed.
10363
10364     But there are cases when this size is not statically known.
10365     For instance, assuming that "Five" is an integer variable:
10366
10367         type Dynamic is array (1 .. Five) of Integer;
10368         type Wrapper (Has_Length : Boolean := False) is record
10369            Data : Dynamic;
10370            case Has_Length is
10371               when True => Length : Integer;
10372               when False => null;
10373            end case;
10374         end record;
10375         type Wrapper_Array is array (1 .. 2) of Wrapper;
10376
10377         Hello : Wrapper_Array := (others => (Has_Length => True,
10378                                              Data => (others => 17),
10379                                              Length => 1));
10380
10381
10382     The debugging info would describe variable Hello as being an
10383     array of a PAD type.  The size of that PAD type is not statically
10384     known, but can be determined using a parallel XVZ variable.
10385     In that case, a copy of the PAD type with the correct size should
10386     be used for the fixed array.
10387
10388     3. ``Fixing'' record type objects:
10389     ----------------------------------
10390
10391     Things are slightly different from arrays in the case of dynamic
10392     record types.  In this case, in order to compute the associated
10393     fixed type, we need to determine the size and offset of each of
10394     its components.  This, in turn, requires us to compute the fixed
10395     type of each of these components.
10396
10397     Consider for instance the example:
10398
10399         type Bounded_String (Max_Size : Natural) is record
10400            Str : String (1 .. Max_Size);
10401            Length : Natural;
10402         end record;
10403         My_String : Bounded_String (Max_Size => 10);
10404
10405     In that case, the position of field "Length" depends on the size
10406     of field Str, which itself depends on the value of the Max_Size
10407     discriminant.  In order to fix the type of variable My_String,
10408     we need to fix the type of field Str.  Therefore, fixing a variant
10409     record requires us to fix each of its components.
10410
10411     However, if a component does not have a dynamic size, the component
10412     should not be fixed.  In particular, fields that use a PAD type
10413     should not fixed.  Here is an example where this might happen
10414     (assuming type Rec above):
10415
10416        type Container (Big : Boolean) is record
10417           First : Rec;
10418           After : Integer;
10419           case Big is
10420              when True => Another : Integer;
10421              when False => null;
10422           end case;
10423        end record;
10424        My_Container : Container := (Big => False,
10425                                     First => (Empty => True),
10426                                     After => 42);
10427
10428     In that example, the compiler creates a PAD type for component First,
10429     whose size is constant, and then positions the component After just
10430     right after it.  The offset of component After is therefore constant
10431     in this case.
10432
10433     The debugger computes the position of each field based on an algorithm
10434     that uses, among other things, the actual position and size of the field
10435     preceding it.  Let's now imagine that the user is trying to print
10436     the value of My_Container.  If the type fixing was recursive, we would
10437     end up computing the offset of field After based on the size of the
10438     fixed version of field First.  And since in our example First has
10439     only one actual field, the size of the fixed type is actually smaller
10440     than the amount of space allocated to that field, and thus we would
10441     compute the wrong offset of field After.
10442
10443     To make things more complicated, we need to watch out for dynamic
10444     components of variant records (identified by the ___XVL suffix in
10445     the component name).  Even if the target type is a PAD type, the size
10446     of that type might not be statically known.  So the PAD type needs
10447     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10448     we might end up with the wrong size for our component.  This can be
10449     observed with the following type declarations:
10450
10451         type Octal is new Integer range 0 .. 7;
10452         type Octal_Array is array (Positive range <>) of Octal;
10453         pragma Pack (Octal_Array);
10454
10455         type Octal_Buffer (Size : Positive) is record
10456            Buffer : Octal_Array (1 .. Size);
10457            Length : Integer;
10458         end record;
10459
10460     In that case, Buffer is a PAD type whose size is unset and needs
10461     to be computed by fixing the unwrapped type.
10462
10463     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10464     ----------------------------------------------------------
10465
10466     Lastly, when should the sub-elements of an entity that remained unfixed
10467     thus far, be actually fixed?
10468
10469     The answer is: Only when referencing that element.  For instance
10470     when selecting one component of a record, this specific component
10471     should be fixed at that point in time.  Or when printing the value
10472     of a record, each component should be fixed before its value gets
10473     printed.  Similarly for arrays, the element of the array should be
10474     fixed when printing each element of the array, or when extracting
10475     one element out of that array.  On the other hand, fixing should
10476     not be performed on the elements when taking a slice of an array!
10477
10478     Note that one of the side effects of miscomputing the offset and
10479     size of each field is that we end up also miscomputing the size
10480     of the containing type.  This can have adverse results when computing
10481     the value of an entity.  GDB fetches the value of an entity based
10482     on the size of its type, and thus a wrong size causes GDB to fetch
10483     the wrong amount of memory.  In the case where the computed size is
10484     too small, GDB fetches too little data to print the value of our
10485     entity.  Results in this case are unpredictable, as we usually read
10486     past the buffer containing the data =:-o.  */
10487
10488 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10489    for that subexpression cast to TO_TYPE.  Advance *POS over the
10490    subexpression.  */
10491
10492 static value *
10493 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10494                               enum noside noside, struct type *to_type)
10495 {
10496   int pc = *pos;
10497
10498   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10499       || exp->elts[pc].opcode == OP_VAR_VALUE)
10500     {
10501       (*pos) += 4;
10502
10503       value *val;
10504       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10505         {
10506           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10507             return value_zero (to_type, not_lval);
10508
10509           val = evaluate_var_msym_value (noside,
10510                                          exp->elts[pc + 1].objfile,
10511                                          exp->elts[pc + 2].msymbol);
10512         }
10513       else
10514         val = evaluate_var_value (noside,
10515                                   exp->elts[pc + 1].block,
10516                                   exp->elts[pc + 2].symbol);
10517
10518       if (noside == EVAL_SKIP)
10519         return eval_skip_value (exp);
10520
10521       val = ada_value_cast (to_type, val);
10522
10523       /* Follow the Ada language semantics that do not allow taking
10524          an address of the result of a cast (view conversion in Ada).  */
10525       if (VALUE_LVAL (val) == lval_memory)
10526         {
10527           if (value_lazy (val))
10528             value_fetch_lazy (val);
10529           VALUE_LVAL (val) = not_lval;
10530         }
10531       return val;
10532     }
10533
10534   value *val = evaluate_subexp (to_type, exp, pos, noside);
10535   if (noside == EVAL_SKIP)
10536     return eval_skip_value (exp);
10537   return ada_value_cast (to_type, val);
10538 }
10539
10540 /* Implement the evaluate_exp routine in the exp_descriptor structure
10541    for the Ada language.  */
10542
10543 static struct value *
10544 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10545                      int *pos, enum noside noside)
10546 {
10547   enum exp_opcode op;
10548   int tem;
10549   int pc;
10550   int preeval_pos;
10551   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10552   struct type *type;
10553   int nargs, oplen;
10554   struct value **argvec;
10555
10556   pc = *pos;
10557   *pos += 1;
10558   op = exp->elts[pc].opcode;
10559
10560   switch (op)
10561     {
10562     default:
10563       *pos -= 1;
10564       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10565
10566       if (noside == EVAL_NORMAL)
10567         arg1 = unwrap_value (arg1);
10568
10569       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10570          then we need to perform the conversion manually, because
10571          evaluate_subexp_standard doesn't do it.  This conversion is
10572          necessary in Ada because the different kinds of float/fixed
10573          types in Ada have different representations.
10574
10575          Similarly, we need to perform the conversion from OP_LONG
10576          ourselves.  */
10577       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10578         arg1 = ada_value_cast (expect_type, arg1);
10579
10580       return arg1;
10581
10582     case OP_STRING:
10583       {
10584         struct value *result;
10585
10586         *pos -= 1;
10587         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10588         /* The result type will have code OP_STRING, bashed there from 
10589            OP_ARRAY.  Bash it back.  */
10590         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10591           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10592         return result;
10593       }
10594
10595     case UNOP_CAST:
10596       (*pos) += 2;
10597       type = exp->elts[pc + 1].type;
10598       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10599
10600     case UNOP_QUAL:
10601       (*pos) += 2;
10602       type = exp->elts[pc + 1].type;
10603       return ada_evaluate_subexp (type, exp, pos, noside);
10604
10605     case BINOP_ASSIGN:
10606       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10607       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10608         {
10609           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10610           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10611             return arg1;
10612           return ada_value_assign (arg1, arg1);
10613         }
10614       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10615          except if the lhs of our assignment is a convenience variable.
10616          In the case of assigning to a convenience variable, the lhs
10617          should be exactly the result of the evaluation of the rhs.  */
10618       type = value_type (arg1);
10619       if (VALUE_LVAL (arg1) == lval_internalvar)
10620          type = NULL;
10621       arg2 = evaluate_subexp (type, exp, pos, noside);
10622       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10623         return arg1;
10624       if (ada_is_fixed_point_type (value_type (arg1)))
10625         arg2 = cast_to_fixed (value_type (arg1), arg2);
10626       else if (ada_is_fixed_point_type (value_type (arg2)))
10627         error
10628           (_("Fixed-point values must be assigned to fixed-point variables"));
10629       else
10630         arg2 = coerce_for_assign (value_type (arg1), arg2);
10631       return ada_value_assign (arg1, arg2);
10632
10633     case BINOP_ADD:
10634       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10635       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10636       if (noside == EVAL_SKIP)
10637         goto nosideret;
10638       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10639         return (value_from_longest
10640                  (value_type (arg1),
10641                   value_as_long (arg1) + value_as_long (arg2)));
10642       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10643         return (value_from_longest
10644                  (value_type (arg2),
10645                   value_as_long (arg1) + value_as_long (arg2)));
10646       if ((ada_is_fixed_point_type (value_type (arg1))
10647            || ada_is_fixed_point_type (value_type (arg2)))
10648           && value_type (arg1) != value_type (arg2))
10649         error (_("Operands of fixed-point addition must have the same type"));
10650       /* Do the addition, and cast the result to the type of the first
10651          argument.  We cannot cast the result to a reference type, so if
10652          ARG1 is a reference type, find its underlying type.  */
10653       type = value_type (arg1);
10654       while (TYPE_CODE (type) == TYPE_CODE_REF)
10655         type = TYPE_TARGET_TYPE (type);
10656       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10657       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10658
10659     case BINOP_SUB:
10660       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10661       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10662       if (noside == EVAL_SKIP)
10663         goto nosideret;
10664       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10665         return (value_from_longest
10666                  (value_type (arg1),
10667                   value_as_long (arg1) - value_as_long (arg2)));
10668       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10669         return (value_from_longest
10670                  (value_type (arg2),
10671                   value_as_long (arg1) - value_as_long (arg2)));
10672       if ((ada_is_fixed_point_type (value_type (arg1))
10673            || ada_is_fixed_point_type (value_type (arg2)))
10674           && value_type (arg1) != value_type (arg2))
10675         error (_("Operands of fixed-point subtraction "
10676                  "must have the same type"));
10677       /* Do the substraction, and cast the result to the type of the first
10678          argument.  We cannot cast the result to a reference type, so if
10679          ARG1 is a reference type, find its underlying type.  */
10680       type = value_type (arg1);
10681       while (TYPE_CODE (type) == TYPE_CODE_REF)
10682         type = TYPE_TARGET_TYPE (type);
10683       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10684       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10685
10686     case BINOP_MUL:
10687     case BINOP_DIV:
10688     case BINOP_REM:
10689     case BINOP_MOD:
10690       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10691       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10692       if (noside == EVAL_SKIP)
10693         goto nosideret;
10694       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10695         {
10696           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10697           return value_zero (value_type (arg1), not_lval);
10698         }
10699       else
10700         {
10701           type = builtin_type (exp->gdbarch)->builtin_double;
10702           if (ada_is_fixed_point_type (value_type (arg1)))
10703             arg1 = cast_from_fixed (type, arg1);
10704           if (ada_is_fixed_point_type (value_type (arg2)))
10705             arg2 = cast_from_fixed (type, arg2);
10706           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10707           return ada_value_binop (arg1, arg2, op);
10708         }
10709
10710     case BINOP_EQUAL:
10711     case BINOP_NOTEQUAL:
10712       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10713       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10714       if (noside == EVAL_SKIP)
10715         goto nosideret;
10716       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10717         tem = 0;
10718       else
10719         {
10720           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10721           tem = ada_value_equal (arg1, arg2);
10722         }
10723       if (op == BINOP_NOTEQUAL)
10724         tem = !tem;
10725       type = language_bool_type (exp->language_defn, exp->gdbarch);
10726       return value_from_longest (type, (LONGEST) tem);
10727
10728     case UNOP_NEG:
10729       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10730       if (noside == EVAL_SKIP)
10731         goto nosideret;
10732       else if (ada_is_fixed_point_type (value_type (arg1)))
10733         return value_cast (value_type (arg1), value_neg (arg1));
10734       else
10735         {
10736           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10737           return value_neg (arg1);
10738         }
10739
10740     case BINOP_LOGICAL_AND:
10741     case BINOP_LOGICAL_OR:
10742     case UNOP_LOGICAL_NOT:
10743       {
10744         struct value *val;
10745
10746         *pos -= 1;
10747         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10748         type = language_bool_type (exp->language_defn, exp->gdbarch);
10749         return value_cast (type, val);
10750       }
10751
10752     case BINOP_BITWISE_AND:
10753     case BINOP_BITWISE_IOR:
10754     case BINOP_BITWISE_XOR:
10755       {
10756         struct value *val;
10757
10758         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10759         *pos = pc;
10760         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10761
10762         return value_cast (value_type (arg1), val);
10763       }
10764
10765     case OP_VAR_VALUE:
10766       *pos -= 1;
10767
10768       if (noside == EVAL_SKIP)
10769         {
10770           *pos += 4;
10771           goto nosideret;
10772         }
10773
10774       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10775         /* Only encountered when an unresolved symbol occurs in a
10776            context other than a function call, in which case, it is
10777            invalid.  */
10778         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10779                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10780
10781       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10782         {
10783           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10784           /* Check to see if this is a tagged type.  We also need to handle
10785              the case where the type is a reference to a tagged type, but
10786              we have to be careful to exclude pointers to tagged types.
10787              The latter should be shown as usual (as a pointer), whereas
10788              a reference should mostly be transparent to the user.  */
10789           if (ada_is_tagged_type (type, 0)
10790               || (TYPE_CODE (type) == TYPE_CODE_REF
10791                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10792             {
10793               /* Tagged types are a little special in the fact that the real
10794                  type is dynamic and can only be determined by inspecting the
10795                  object's tag.  This means that we need to get the object's
10796                  value first (EVAL_NORMAL) and then extract the actual object
10797                  type from its tag.
10798
10799                  Note that we cannot skip the final step where we extract
10800                  the object type from its tag, because the EVAL_NORMAL phase
10801                  results in dynamic components being resolved into fixed ones.
10802                  This can cause problems when trying to print the type
10803                  description of tagged types whose parent has a dynamic size:
10804                  We use the type name of the "_parent" component in order
10805                  to print the name of the ancestor type in the type description.
10806                  If that component had a dynamic size, the resolution into
10807                  a fixed type would result in the loss of that type name,
10808                  thus preventing us from printing the name of the ancestor
10809                  type in the type description.  */
10810               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10811
10812               if (TYPE_CODE (type) != TYPE_CODE_REF)
10813                 {
10814                   struct type *actual_type;
10815
10816                   actual_type = type_from_tag (ada_value_tag (arg1));
10817                   if (actual_type == NULL)
10818                     /* If, for some reason, we were unable to determine
10819                        the actual type from the tag, then use the static
10820                        approximation that we just computed as a fallback.
10821                        This can happen if the debugging information is
10822                        incomplete, for instance.  */
10823                     actual_type = type;
10824                   return value_zero (actual_type, not_lval);
10825                 }
10826               else
10827                 {
10828                   /* In the case of a ref, ada_coerce_ref takes care
10829                      of determining the actual type.  But the evaluation
10830                      should return a ref as it should be valid to ask
10831                      for its address; so rebuild a ref after coerce.  */
10832                   arg1 = ada_coerce_ref (arg1);
10833                   return value_ref (arg1, TYPE_CODE_REF);
10834                 }
10835             }
10836
10837           /* Records and unions for which GNAT encodings have been
10838              generated need to be statically fixed as well.
10839              Otherwise, non-static fixing produces a type where
10840              all dynamic properties are removed, which prevents "ptype"
10841              from being able to completely describe the type.
10842              For instance, a case statement in a variant record would be
10843              replaced by the relevant components based on the actual
10844              value of the discriminants.  */
10845           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10846                && dynamic_template_type (type) != NULL)
10847               || (TYPE_CODE (type) == TYPE_CODE_UNION
10848                   && ada_find_parallel_type (type, "___XVU") != NULL))
10849             {
10850               *pos += 4;
10851               return value_zero (to_static_fixed_type (type), not_lval);
10852             }
10853         }
10854
10855       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10856       return ada_to_fixed_value (arg1);
10857
10858     case OP_FUNCALL:
10859       (*pos) += 2;
10860
10861       /* Allocate arg vector, including space for the function to be
10862          called in argvec[0] and a terminating NULL.  */
10863       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10864       argvec = XALLOCAVEC (struct value *, nargs + 2);
10865
10866       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10867           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10868         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10869                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10870       else
10871         {
10872           for (tem = 0; tem <= nargs; tem += 1)
10873             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10874           argvec[tem] = 0;
10875
10876           if (noside == EVAL_SKIP)
10877             goto nosideret;
10878         }
10879
10880       if (ada_is_constrained_packed_array_type
10881           (desc_base_type (value_type (argvec[0]))))
10882         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10883       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10884                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10885         /* This is a packed array that has already been fixed, and
10886            therefore already coerced to a simple array.  Nothing further
10887            to do.  */
10888         ;
10889       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10890         {
10891           /* Make sure we dereference references so that all the code below
10892              feels like it's really handling the referenced value.  Wrapping
10893              types (for alignment) may be there, so make sure we strip them as
10894              well.  */
10895           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10896         }
10897       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10898                && VALUE_LVAL (argvec[0]) == lval_memory)
10899         argvec[0] = value_addr (argvec[0]);
10900
10901       type = ada_check_typedef (value_type (argvec[0]));
10902
10903       /* Ada allows us to implicitly dereference arrays when subscripting
10904          them.  So, if this is an array typedef (encoding use for array
10905          access types encoded as fat pointers), strip it now.  */
10906       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10907         type = ada_typedef_target_type (type);
10908
10909       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10910         {
10911           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10912             {
10913             case TYPE_CODE_FUNC:
10914               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10915               break;
10916             case TYPE_CODE_ARRAY:
10917               break;
10918             case TYPE_CODE_STRUCT:
10919               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10920                 argvec[0] = ada_value_ind (argvec[0]);
10921               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10922               break;
10923             default:
10924               error (_("cannot subscript or call something of type `%s'"),
10925                      ada_type_name (value_type (argvec[0])));
10926               break;
10927             }
10928         }
10929
10930       switch (TYPE_CODE (type))
10931         {
10932         case TYPE_CODE_FUNC:
10933           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10934             {
10935               if (TYPE_TARGET_TYPE (type) == NULL)
10936                 error_call_unknown_return_type (NULL);
10937               return allocate_value (TYPE_TARGET_TYPE (type));
10938             }
10939           return call_function_by_hand (argvec[0], NULL,
10940                                         gdb::make_array_view (argvec + 1,
10941                                                               nargs));
10942         case TYPE_CODE_INTERNAL_FUNCTION:
10943           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10944             /* We don't know anything about what the internal
10945                function might return, but we have to return
10946                something.  */
10947             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10948                                not_lval);
10949           else
10950             return call_internal_function (exp->gdbarch, exp->language_defn,
10951                                            argvec[0], nargs, argvec + 1);
10952
10953         case TYPE_CODE_STRUCT:
10954           {
10955             int arity;
10956
10957             arity = ada_array_arity (type);
10958             type = ada_array_element_type (type, nargs);
10959             if (type == NULL)
10960               error (_("cannot subscript or call a record"));
10961             if (arity != nargs)
10962               error (_("wrong number of subscripts; expecting %d"), arity);
10963             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10964               return value_zero (ada_aligned_type (type), lval_memory);
10965             return
10966               unwrap_value (ada_value_subscript
10967                             (argvec[0], nargs, argvec + 1));
10968           }
10969         case TYPE_CODE_ARRAY:
10970           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10971             {
10972               type = ada_array_element_type (type, nargs);
10973               if (type == NULL)
10974                 error (_("element type of array unknown"));
10975               else
10976                 return value_zero (ada_aligned_type (type), lval_memory);
10977             }
10978           return
10979             unwrap_value (ada_value_subscript
10980                           (ada_coerce_to_simple_array (argvec[0]),
10981                            nargs, argvec + 1));
10982         case TYPE_CODE_PTR:     /* Pointer to array */
10983           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10984             {
10985               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10986               type = ada_array_element_type (type, nargs);
10987               if (type == NULL)
10988                 error (_("element type of array unknown"));
10989               else
10990                 return value_zero (ada_aligned_type (type), lval_memory);
10991             }
10992           return
10993             unwrap_value (ada_value_ptr_subscript (argvec[0],
10994                                                    nargs, argvec + 1));
10995
10996         default:
10997           error (_("Attempt to index or call something other than an "
10998                    "array or function"));
10999         }
11000
11001     case TERNOP_SLICE:
11002       {
11003         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11004         struct value *low_bound_val =
11005           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11006         struct value *high_bound_val =
11007           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11008         LONGEST low_bound;
11009         LONGEST high_bound;
11010
11011         low_bound_val = coerce_ref (low_bound_val);
11012         high_bound_val = coerce_ref (high_bound_val);
11013         low_bound = value_as_long (low_bound_val);
11014         high_bound = value_as_long (high_bound_val);
11015
11016         if (noside == EVAL_SKIP)
11017           goto nosideret;
11018
11019         /* If this is a reference to an aligner type, then remove all
11020            the aligners.  */
11021         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11022             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11023           TYPE_TARGET_TYPE (value_type (array)) =
11024             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11025
11026         if (ada_is_constrained_packed_array_type (value_type (array)))
11027           error (_("cannot slice a packed array"));
11028
11029         /* If this is a reference to an array or an array lvalue,
11030            convert to a pointer.  */
11031         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11032             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11033                 && VALUE_LVAL (array) == lval_memory))
11034           array = value_addr (array);
11035
11036         if (noside == EVAL_AVOID_SIDE_EFFECTS
11037             && ada_is_array_descriptor_type (ada_check_typedef
11038                                              (value_type (array))))
11039           return empty_array (ada_type_of_array (array, 0), low_bound,
11040                               high_bound);
11041
11042         array = ada_coerce_to_simple_array_ptr (array);
11043
11044         /* If we have more than one level of pointer indirection,
11045            dereference the value until we get only one level.  */
11046         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11047                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11048                      == TYPE_CODE_PTR))
11049           array = value_ind (array);
11050
11051         /* Make sure we really do have an array type before going further,
11052            to avoid a SEGV when trying to get the index type or the target
11053            type later down the road if the debug info generated by
11054            the compiler is incorrect or incomplete.  */
11055         if (!ada_is_simple_array_type (value_type (array)))
11056           error (_("cannot take slice of non-array"));
11057
11058         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11059             == TYPE_CODE_PTR)
11060           {
11061             struct type *type0 = ada_check_typedef (value_type (array));
11062
11063             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11064               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
11065             else
11066               {
11067                 struct type *arr_type0 =
11068                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11069
11070                 return ada_value_slice_from_ptr (array, arr_type0,
11071                                                  longest_to_int (low_bound),
11072                                                  longest_to_int (high_bound));
11073               }
11074           }
11075         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11076           return array;
11077         else if (high_bound < low_bound)
11078           return empty_array (value_type (array), low_bound, high_bound);
11079         else
11080           return ada_value_slice (array, longest_to_int (low_bound),
11081                                   longest_to_int (high_bound));
11082       }
11083
11084     case UNOP_IN_RANGE:
11085       (*pos) += 2;
11086       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11087       type = check_typedef (exp->elts[pc + 1].type);
11088
11089       if (noside == EVAL_SKIP)
11090         goto nosideret;
11091
11092       switch (TYPE_CODE (type))
11093         {
11094         default:
11095           lim_warning (_("Membership test incompletely implemented; "
11096                          "always returns true"));
11097           type = language_bool_type (exp->language_defn, exp->gdbarch);
11098           return value_from_longest (type, (LONGEST) 1);
11099
11100         case TYPE_CODE_RANGE:
11101           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11102           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11103           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11104           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11105           type = language_bool_type (exp->language_defn, exp->gdbarch);
11106           return
11107             value_from_longest (type,
11108                                 (value_less (arg1, arg3)
11109                                  || value_equal (arg1, arg3))
11110                                 && (value_less (arg2, arg1)
11111                                     || value_equal (arg2, arg1)));
11112         }
11113
11114     case BINOP_IN_BOUNDS:
11115       (*pos) += 2;
11116       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11117       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11118
11119       if (noside == EVAL_SKIP)
11120         goto nosideret;
11121
11122       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11123         {
11124           type = language_bool_type (exp->language_defn, exp->gdbarch);
11125           return value_zero (type, not_lval);
11126         }
11127
11128       tem = longest_to_int (exp->elts[pc + 1].longconst);
11129
11130       type = ada_index_type (value_type (arg2), tem, "range");
11131       if (!type)
11132         type = value_type (arg1);
11133
11134       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11135       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11136
11137       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11138       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11139       type = language_bool_type (exp->language_defn, exp->gdbarch);
11140       return
11141         value_from_longest (type,
11142                             (value_less (arg1, arg3)
11143                              || value_equal (arg1, arg3))
11144                             && (value_less (arg2, arg1)
11145                                 || value_equal (arg2, arg1)));
11146
11147     case TERNOP_IN_RANGE:
11148       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11149       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11150       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11151
11152       if (noside == EVAL_SKIP)
11153         goto nosideret;
11154
11155       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11156       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11157       type = language_bool_type (exp->language_defn, exp->gdbarch);
11158       return
11159         value_from_longest (type,
11160                             (value_less (arg1, arg3)
11161                              || value_equal (arg1, arg3))
11162                             && (value_less (arg2, arg1)
11163                                 || value_equal (arg2, arg1)));
11164
11165     case OP_ATR_FIRST:
11166     case OP_ATR_LAST:
11167     case OP_ATR_LENGTH:
11168       {
11169         struct type *type_arg;
11170
11171         if (exp->elts[*pos].opcode == OP_TYPE)
11172           {
11173             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11174             arg1 = NULL;
11175             type_arg = check_typedef (exp->elts[pc + 2].type);
11176           }
11177         else
11178           {
11179             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11180             type_arg = NULL;
11181           }
11182
11183         if (exp->elts[*pos].opcode != OP_LONG)
11184           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11185         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11186         *pos += 4;
11187
11188         if (noside == EVAL_SKIP)
11189           goto nosideret;
11190
11191         if (type_arg == NULL)
11192           {
11193             arg1 = ada_coerce_ref (arg1);
11194
11195             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11196               arg1 = ada_coerce_to_simple_array (arg1);
11197
11198             if (op == OP_ATR_LENGTH)
11199               type = builtin_type (exp->gdbarch)->builtin_int;
11200             else
11201               {
11202                 type = ada_index_type (value_type (arg1), tem,
11203                                        ada_attribute_name (op));
11204                 if (type == NULL)
11205                   type = builtin_type (exp->gdbarch)->builtin_int;
11206               }
11207
11208             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11209               return allocate_value (type);
11210
11211             switch (op)
11212               {
11213               default:          /* Should never happen.  */
11214                 error (_("unexpected attribute encountered"));
11215               case OP_ATR_FIRST:
11216                 return value_from_longest
11217                         (type, ada_array_bound (arg1, tem, 0));
11218               case OP_ATR_LAST:
11219                 return value_from_longest
11220                         (type, ada_array_bound (arg1, tem, 1));
11221               case OP_ATR_LENGTH:
11222                 return value_from_longest
11223                         (type, ada_array_length (arg1, tem));
11224               }
11225           }
11226         else if (discrete_type_p (type_arg))
11227           {
11228             struct type *range_type;
11229             const char *name = ada_type_name (type_arg);
11230
11231             range_type = NULL;
11232             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11233               range_type = to_fixed_range_type (type_arg, NULL);
11234             if (range_type == NULL)
11235               range_type = type_arg;
11236             switch (op)
11237               {
11238               default:
11239                 error (_("unexpected attribute encountered"));
11240               case OP_ATR_FIRST:
11241                 return value_from_longest 
11242                   (range_type, ada_discrete_type_low_bound (range_type));
11243               case OP_ATR_LAST:
11244                 return value_from_longest
11245                   (range_type, ada_discrete_type_high_bound (range_type));
11246               case OP_ATR_LENGTH:
11247                 error (_("the 'length attribute applies only to array types"));
11248               }
11249           }
11250         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11251           error (_("unimplemented type attribute"));
11252         else
11253           {
11254             LONGEST low, high;
11255
11256             if (ada_is_constrained_packed_array_type (type_arg))
11257               type_arg = decode_constrained_packed_array_type (type_arg);
11258
11259             if (op == OP_ATR_LENGTH)
11260               type = builtin_type (exp->gdbarch)->builtin_int;
11261             else
11262               {
11263                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11264                 if (type == NULL)
11265                   type = builtin_type (exp->gdbarch)->builtin_int;
11266               }
11267
11268             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11269               return allocate_value (type);
11270
11271             switch (op)
11272               {
11273               default:
11274                 error (_("unexpected attribute encountered"));
11275               case OP_ATR_FIRST:
11276                 low = ada_array_bound_from_type (type_arg, tem, 0);
11277                 return value_from_longest (type, low);
11278               case OP_ATR_LAST:
11279                 high = ada_array_bound_from_type (type_arg, tem, 1);
11280                 return value_from_longest (type, high);
11281               case OP_ATR_LENGTH:
11282                 low = ada_array_bound_from_type (type_arg, tem, 0);
11283                 high = ada_array_bound_from_type (type_arg, tem, 1);
11284                 return value_from_longest (type, high - low + 1);
11285               }
11286           }
11287       }
11288
11289     case OP_ATR_TAG:
11290       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11291       if (noside == EVAL_SKIP)
11292         goto nosideret;
11293
11294       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11295         return value_zero (ada_tag_type (arg1), not_lval);
11296
11297       return ada_value_tag (arg1);
11298
11299     case OP_ATR_MIN:
11300     case OP_ATR_MAX:
11301       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11302       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11303       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11304       if (noside == EVAL_SKIP)
11305         goto nosideret;
11306       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11307         return value_zero (value_type (arg1), not_lval);
11308       else
11309         {
11310           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11311           return value_binop (arg1, arg2,
11312                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11313         }
11314
11315     case OP_ATR_MODULUS:
11316       {
11317         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11318
11319         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11320         if (noside == EVAL_SKIP)
11321           goto nosideret;
11322
11323         if (!ada_is_modular_type (type_arg))
11324           error (_("'modulus must be applied to modular type"));
11325
11326         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11327                                    ada_modulus (type_arg));
11328       }
11329
11330
11331     case OP_ATR_POS:
11332       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11333       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11334       if (noside == EVAL_SKIP)
11335         goto nosideret;
11336       type = builtin_type (exp->gdbarch)->builtin_int;
11337       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11338         return value_zero (type, not_lval);
11339       else
11340         return value_pos_atr (type, arg1);
11341
11342     case OP_ATR_SIZE:
11343       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11344       type = value_type (arg1);
11345
11346       /* If the argument is a reference, then dereference its type, since
11347          the user is really asking for the size of the actual object,
11348          not the size of the pointer.  */
11349       if (TYPE_CODE (type) == TYPE_CODE_REF)
11350         type = TYPE_TARGET_TYPE (type);
11351
11352       if (noside == EVAL_SKIP)
11353         goto nosideret;
11354       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11355         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11356       else
11357         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11358                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11359
11360     case OP_ATR_VAL:
11361       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11362       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11363       type = exp->elts[pc + 2].type;
11364       if (noside == EVAL_SKIP)
11365         goto nosideret;
11366       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11367         return value_zero (type, not_lval);
11368       else
11369         return value_val_atr (type, arg1);
11370
11371     case BINOP_EXP:
11372       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11373       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11374       if (noside == EVAL_SKIP)
11375         goto nosideret;
11376       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11377         return value_zero (value_type (arg1), not_lval);
11378       else
11379         {
11380           /* For integer exponentiation operations,
11381              only promote the first argument.  */
11382           if (is_integral_type (value_type (arg2)))
11383             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11384           else
11385             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11386
11387           return value_binop (arg1, arg2, op);
11388         }
11389
11390     case UNOP_PLUS:
11391       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11392       if (noside == EVAL_SKIP)
11393         goto nosideret;
11394       else
11395         return arg1;
11396
11397     case UNOP_ABS:
11398       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11399       if (noside == EVAL_SKIP)
11400         goto nosideret;
11401       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11402       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11403         return value_neg (arg1);
11404       else
11405         return arg1;
11406
11407     case UNOP_IND:
11408       preeval_pos = *pos;
11409       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11410       if (noside == EVAL_SKIP)
11411         goto nosideret;
11412       type = ada_check_typedef (value_type (arg1));
11413       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11414         {
11415           if (ada_is_array_descriptor_type (type))
11416             /* GDB allows dereferencing GNAT array descriptors.  */
11417             {
11418               struct type *arrType = ada_type_of_array (arg1, 0);
11419
11420               if (arrType == NULL)
11421                 error (_("Attempt to dereference null array pointer."));
11422               return value_at_lazy (arrType, 0);
11423             }
11424           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11425                    || TYPE_CODE (type) == TYPE_CODE_REF
11426                    /* In C you can dereference an array to get the 1st elt.  */
11427                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11428             {
11429             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11430                only be determined by inspecting the object's tag.
11431                This means that we need to evaluate completely the
11432                expression in order to get its type.  */
11433
11434               if ((TYPE_CODE (type) == TYPE_CODE_REF
11435                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11436                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11437                 {
11438                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11439                                           EVAL_NORMAL);
11440                   type = value_type (ada_value_ind (arg1));
11441                 }
11442               else
11443                 {
11444                   type = to_static_fixed_type
11445                     (ada_aligned_type
11446                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11447                 }
11448               ada_ensure_varsize_limit (type);
11449               return value_zero (type, lval_memory);
11450             }
11451           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11452             {
11453               /* GDB allows dereferencing an int.  */
11454               if (expect_type == NULL)
11455                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11456                                    lval_memory);
11457               else
11458                 {
11459                   expect_type = 
11460                     to_static_fixed_type (ada_aligned_type (expect_type));
11461                   return value_zero (expect_type, lval_memory);
11462                 }
11463             }
11464           else
11465             error (_("Attempt to take contents of a non-pointer value."));
11466         }
11467       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11468       type = ada_check_typedef (value_type (arg1));
11469
11470       if (TYPE_CODE (type) == TYPE_CODE_INT)
11471           /* GDB allows dereferencing an int.  If we were given
11472              the expect_type, then use that as the target type.
11473              Otherwise, assume that the target type is an int.  */
11474         {
11475           if (expect_type != NULL)
11476             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11477                                               arg1));
11478           else
11479             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11480                                   (CORE_ADDR) value_as_address (arg1));
11481         }
11482
11483       if (ada_is_array_descriptor_type (type))
11484         /* GDB allows dereferencing GNAT array descriptors.  */
11485         return ada_coerce_to_simple_array (arg1);
11486       else
11487         return ada_value_ind (arg1);
11488
11489     case STRUCTOP_STRUCT:
11490       tem = longest_to_int (exp->elts[pc + 1].longconst);
11491       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11492       preeval_pos = *pos;
11493       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11494       if (noside == EVAL_SKIP)
11495         goto nosideret;
11496       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11497         {
11498           struct type *type1 = value_type (arg1);
11499
11500           if (ada_is_tagged_type (type1, 1))
11501             {
11502               type = ada_lookup_struct_elt_type (type1,
11503                                                  &exp->elts[pc + 2].string,
11504                                                  1, 1);
11505
11506               /* If the field is not found, check if it exists in the
11507                  extension of this object's type. This means that we
11508                  need to evaluate completely the expression.  */
11509
11510               if (type == NULL)
11511                 {
11512                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11513                                           EVAL_NORMAL);
11514                   arg1 = ada_value_struct_elt (arg1,
11515                                                &exp->elts[pc + 2].string,
11516                                                0);
11517                   arg1 = unwrap_value (arg1);
11518                   type = value_type (ada_to_fixed_value (arg1));
11519                 }
11520             }
11521           else
11522             type =
11523               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11524                                           0);
11525
11526           return value_zero (ada_aligned_type (type), lval_memory);
11527         }
11528       else
11529         {
11530           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11531           arg1 = unwrap_value (arg1);
11532           return ada_to_fixed_value (arg1);
11533         }
11534
11535     case OP_TYPE:
11536       /* The value is not supposed to be used.  This is here to make it
11537          easier to accommodate expressions that contain types.  */
11538       (*pos) += 2;
11539       if (noside == EVAL_SKIP)
11540         goto nosideret;
11541       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11542         return allocate_value (exp->elts[pc + 1].type);
11543       else
11544         error (_("Attempt to use a type name as an expression"));
11545
11546     case OP_AGGREGATE:
11547     case OP_CHOICES:
11548     case OP_OTHERS:
11549     case OP_DISCRETE_RANGE:
11550     case OP_POSITIONAL:
11551     case OP_NAME:
11552       if (noside == EVAL_NORMAL)
11553         switch (op) 
11554           {
11555           case OP_NAME:
11556             error (_("Undefined name, ambiguous name, or renaming used in "
11557                      "component association: %s."), &exp->elts[pc+2].string);
11558           case OP_AGGREGATE:
11559             error (_("Aggregates only allowed on the right of an assignment"));
11560           default:
11561             internal_error (__FILE__, __LINE__,
11562                             _("aggregate apparently mangled"));
11563           }
11564
11565       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11566       *pos += oplen - 1;
11567       for (tem = 0; tem < nargs; tem += 1) 
11568         ada_evaluate_subexp (NULL, exp, pos, noside);
11569       goto nosideret;
11570     }
11571
11572 nosideret:
11573   return eval_skip_value (exp);
11574 }
11575 \f
11576
11577                                 /* Fixed point */
11578
11579 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11580    type name that encodes the 'small and 'delta information.
11581    Otherwise, return NULL.  */
11582
11583 static const char *
11584 fixed_type_info (struct type *type)
11585 {
11586   const char *name = ada_type_name (type);
11587   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11588
11589   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11590     {
11591       const char *tail = strstr (name, "___XF_");
11592
11593       if (tail == NULL)
11594         return NULL;
11595       else
11596         return tail + 5;
11597     }
11598   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11599     return fixed_type_info (TYPE_TARGET_TYPE (type));
11600   else
11601     return NULL;
11602 }
11603
11604 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11605
11606 int
11607 ada_is_fixed_point_type (struct type *type)
11608 {
11609   return fixed_type_info (type) != NULL;
11610 }
11611
11612 /* Return non-zero iff TYPE represents a System.Address type.  */
11613
11614 int
11615 ada_is_system_address_type (struct type *type)
11616 {
11617   return (TYPE_NAME (type)
11618           && strcmp (TYPE_NAME (type), "system__address") == 0);
11619 }
11620
11621 /* Assuming that TYPE is the representation of an Ada fixed-point
11622    type, return the target floating-point type to be used to represent
11623    of this type during internal computation.  */
11624
11625 static struct type *
11626 ada_scaling_type (struct type *type)
11627 {
11628   return builtin_type (get_type_arch (type))->builtin_long_double;
11629 }
11630
11631 /* Assuming that TYPE is the representation of an Ada fixed-point
11632    type, return its delta, or NULL if the type is malformed and the
11633    delta cannot be determined.  */
11634
11635 struct value *
11636 ada_delta (struct type *type)
11637 {
11638   const char *encoding = fixed_type_info (type);
11639   struct type *scale_type = ada_scaling_type (type);
11640
11641   long long num, den;
11642
11643   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11644     return nullptr;
11645   else
11646     return value_binop (value_from_longest (scale_type, num),
11647                         value_from_longest (scale_type, den), BINOP_DIV);
11648 }
11649
11650 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11651    factor ('SMALL value) associated with the type.  */
11652
11653 struct value *
11654 ada_scaling_factor (struct type *type)
11655 {
11656   const char *encoding = fixed_type_info (type);
11657   struct type *scale_type = ada_scaling_type (type);
11658
11659   long long num0, den0, num1, den1;
11660   int n;
11661
11662   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11663               &num0, &den0, &num1, &den1);
11664
11665   if (n < 2)
11666     return value_from_longest (scale_type, 1);
11667   else if (n == 4)
11668     return value_binop (value_from_longest (scale_type, num1),
11669                         value_from_longest (scale_type, den1), BINOP_DIV);
11670   else
11671     return value_binop (value_from_longest (scale_type, num0),
11672                         value_from_longest (scale_type, den0), BINOP_DIV);
11673 }
11674
11675 \f
11676
11677                                 /* Range types */
11678
11679 /* Scan STR beginning at position K for a discriminant name, and
11680    return the value of that discriminant field of DVAL in *PX.  If
11681    PNEW_K is not null, put the position of the character beyond the
11682    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11683    not alter *PX and *PNEW_K if unsuccessful.  */
11684
11685 static int
11686 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11687                     int *pnew_k)
11688 {
11689   static char *bound_buffer = NULL;
11690   static size_t bound_buffer_len = 0;
11691   const char *pstart, *pend, *bound;
11692   struct value *bound_val;
11693
11694   if (dval == NULL || str == NULL || str[k] == '\0')
11695     return 0;
11696
11697   pstart = str + k;
11698   pend = strstr (pstart, "__");
11699   if (pend == NULL)
11700     {
11701       bound = pstart;
11702       k += strlen (bound);
11703     }
11704   else
11705     {
11706       int len = pend - pstart;
11707
11708       /* Strip __ and beyond.  */
11709       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11710       strncpy (bound_buffer, pstart, len);
11711       bound_buffer[len] = '\0';
11712
11713       bound = bound_buffer;
11714       k = pend - str;
11715     }
11716
11717   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11718   if (bound_val == NULL)
11719     return 0;
11720
11721   *px = value_as_long (bound_val);
11722   if (pnew_k != NULL)
11723     *pnew_k = k;
11724   return 1;
11725 }
11726
11727 /* Value of variable named NAME in the current environment.  If
11728    no such variable found, then if ERR_MSG is null, returns 0, and
11729    otherwise causes an error with message ERR_MSG.  */
11730
11731 static struct value *
11732 get_var_value (const char *name, const char *err_msg)
11733 {
11734   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11735
11736   std::vector<struct block_symbol> syms;
11737   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11738                                              get_selected_block (0),
11739                                              VAR_DOMAIN, &syms, 1);
11740
11741   if (nsyms != 1)
11742     {
11743       if (err_msg == NULL)
11744         return 0;
11745       else
11746         error (("%s"), err_msg);
11747     }
11748
11749   return value_of_variable (syms[0].symbol, syms[0].block);
11750 }
11751
11752 /* Value of integer variable named NAME in the current environment.
11753    If no such variable is found, returns false.  Otherwise, sets VALUE
11754    to the variable's value and returns true.  */
11755
11756 bool
11757 get_int_var_value (const char *name, LONGEST &value)
11758 {
11759   struct value *var_val = get_var_value (name, 0);
11760
11761   if (var_val == 0)
11762     return false;
11763
11764   value = value_as_long (var_val);
11765   return true;
11766 }
11767
11768
11769 /* Return a range type whose base type is that of the range type named
11770    NAME in the current environment, and whose bounds are calculated
11771    from NAME according to the GNAT range encoding conventions.
11772    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11773    corresponding range type from debug information; fall back to using it
11774    if symbol lookup fails.  If a new type must be created, allocate it
11775    like ORIG_TYPE was.  The bounds information, in general, is encoded
11776    in NAME, the base type given in the named range type.  */
11777
11778 static struct type *
11779 to_fixed_range_type (struct type *raw_type, struct value *dval)
11780 {
11781   const char *name;
11782   struct type *base_type;
11783   const char *subtype_info;
11784
11785   gdb_assert (raw_type != NULL);
11786   gdb_assert (TYPE_NAME (raw_type) != NULL);
11787
11788   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11789     base_type = TYPE_TARGET_TYPE (raw_type);
11790   else
11791     base_type = raw_type;
11792
11793   name = TYPE_NAME (raw_type);
11794   subtype_info = strstr (name, "___XD");
11795   if (subtype_info == NULL)
11796     {
11797       LONGEST L = ada_discrete_type_low_bound (raw_type);
11798       LONGEST U = ada_discrete_type_high_bound (raw_type);
11799
11800       if (L < INT_MIN || U > INT_MAX)
11801         return raw_type;
11802       else
11803         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11804                                          L, U);
11805     }
11806   else
11807     {
11808       static char *name_buf = NULL;
11809       static size_t name_len = 0;
11810       int prefix_len = subtype_info - name;
11811       LONGEST L, U;
11812       struct type *type;
11813       const char *bounds_str;
11814       int n;
11815
11816       GROW_VECT (name_buf, name_len, prefix_len + 5);
11817       strncpy (name_buf, name, prefix_len);
11818       name_buf[prefix_len] = '\0';
11819
11820       subtype_info += 5;
11821       bounds_str = strchr (subtype_info, '_');
11822       n = 1;
11823
11824       if (*subtype_info == 'L')
11825         {
11826           if (!ada_scan_number (bounds_str, n, &L, &n)
11827               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11828             return raw_type;
11829           if (bounds_str[n] == '_')
11830             n += 2;
11831           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11832             n += 1;
11833           subtype_info += 1;
11834         }
11835       else
11836         {
11837           strcpy (name_buf + prefix_len, "___L");
11838           if (!get_int_var_value (name_buf, L))
11839             {
11840               lim_warning (_("Unknown lower bound, using 1."));
11841               L = 1;
11842             }
11843         }
11844
11845       if (*subtype_info == 'U')
11846         {
11847           if (!ada_scan_number (bounds_str, n, &U, &n)
11848               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11849             return raw_type;
11850         }
11851       else
11852         {
11853           strcpy (name_buf + prefix_len, "___U");
11854           if (!get_int_var_value (name_buf, U))
11855             {
11856               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11857               U = L;
11858             }
11859         }
11860
11861       type = create_static_range_type (alloc_type_copy (raw_type),
11862                                        base_type, L, U);
11863       /* create_static_range_type alters the resulting type's length
11864          to match the size of the base_type, which is not what we want.
11865          Set it back to the original range type's length.  */
11866       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11867       TYPE_NAME (type) = name;
11868       return type;
11869     }
11870 }
11871
11872 /* True iff NAME is the name of a range type.  */
11873
11874 int
11875 ada_is_range_type_name (const char *name)
11876 {
11877   return (name != NULL && strstr (name, "___XD"));
11878 }
11879 \f
11880
11881                                 /* Modular types */
11882
11883 /* True iff TYPE is an Ada modular type.  */
11884
11885 int
11886 ada_is_modular_type (struct type *type)
11887 {
11888   struct type *subranged_type = get_base_type (type);
11889
11890   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11891           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11892           && TYPE_UNSIGNED (subranged_type));
11893 }
11894
11895 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11896
11897 ULONGEST
11898 ada_modulus (struct type *type)
11899 {
11900   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11901 }
11902 \f
11903
11904 /* Ada exception catchpoint support:
11905    ---------------------------------
11906
11907    We support 3 kinds of exception catchpoints:
11908      . catchpoints on Ada exceptions
11909      . catchpoints on unhandled Ada exceptions
11910      . catchpoints on failed assertions
11911
11912    Exceptions raised during failed assertions, or unhandled exceptions
11913    could perfectly be caught with the general catchpoint on Ada exceptions.
11914    However, we can easily differentiate these two special cases, and having
11915    the option to distinguish these two cases from the rest can be useful
11916    to zero-in on certain situations.
11917
11918    Exception catchpoints are a specialized form of breakpoint,
11919    since they rely on inserting breakpoints inside known routines
11920    of the GNAT runtime.  The implementation therefore uses a standard
11921    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11922    of breakpoint_ops.
11923
11924    Support in the runtime for exception catchpoints have been changed
11925    a few times already, and these changes affect the implementation
11926    of these catchpoints.  In order to be able to support several
11927    variants of the runtime, we use a sniffer that will determine
11928    the runtime variant used by the program being debugged.  */
11929
11930 /* Ada's standard exceptions.
11931
11932    The Ada 83 standard also defined Numeric_Error.  But there so many
11933    situations where it was unclear from the Ada 83 Reference Manual
11934    (RM) whether Constraint_Error or Numeric_Error should be raised,
11935    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11936    Interpretation saying that anytime the RM says that Numeric_Error
11937    should be raised, the implementation may raise Constraint_Error.
11938    Ada 95 went one step further and pretty much removed Numeric_Error
11939    from the list of standard exceptions (it made it a renaming of
11940    Constraint_Error, to help preserve compatibility when compiling
11941    an Ada83 compiler). As such, we do not include Numeric_Error from
11942    this list of standard exceptions.  */
11943
11944 static const char *standard_exc[] = {
11945   "constraint_error",
11946   "program_error",
11947   "storage_error",
11948   "tasking_error"
11949 };
11950
11951 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11952
11953 /* A structure that describes how to support exception catchpoints
11954    for a given executable.  */
11955
11956 struct exception_support_info
11957 {
11958    /* The name of the symbol to break on in order to insert
11959       a catchpoint on exceptions.  */
11960    const char *catch_exception_sym;
11961
11962    /* The name of the symbol to break on in order to insert
11963       a catchpoint on unhandled exceptions.  */
11964    const char *catch_exception_unhandled_sym;
11965
11966    /* The name of the symbol to break on in order to insert
11967       a catchpoint on failed assertions.  */
11968    const char *catch_assert_sym;
11969
11970    /* The name of the symbol to break on in order to insert
11971       a catchpoint on exception handling.  */
11972    const char *catch_handlers_sym;
11973
11974    /* Assuming that the inferior just triggered an unhandled exception
11975       catchpoint, this function is responsible for returning the address
11976       in inferior memory where the name of that exception is stored.
11977       Return zero if the address could not be computed.  */
11978    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11979 };
11980
11981 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11982 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11983
11984 /* The following exception support info structure describes how to
11985    implement exception catchpoints with the latest version of the
11986    Ada runtime (as of 2007-03-06).  */
11987
11988 static const struct exception_support_info default_exception_support_info =
11989 {
11990   "__gnat_debug_raise_exception", /* catch_exception_sym */
11991   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11992   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11993   "__gnat_begin_handler", /* catch_handlers_sym */
11994   ada_unhandled_exception_name_addr
11995 };
11996
11997 /* The following exception support info structure describes how to
11998    implement exception catchpoints with a slightly older version
11999    of the Ada runtime.  */
12000
12001 static const struct exception_support_info exception_support_info_fallback =
12002 {
12003   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12004   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12005   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12006   "__gnat_begin_handler", /* catch_handlers_sym */
12007   ada_unhandled_exception_name_addr_from_raise
12008 };
12009
12010 /* Return nonzero if we can detect the exception support routines
12011    described in EINFO.
12012
12013    This function errors out if an abnormal situation is detected
12014    (for instance, if we find the exception support routines, but
12015    that support is found to be incomplete).  */
12016
12017 static int
12018 ada_has_this_exception_support (const struct exception_support_info *einfo)
12019 {
12020   struct symbol *sym;
12021
12022   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12023      that should be compiled with debugging information.  As a result, we
12024      expect to find that symbol in the symtabs.  */
12025
12026   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12027   if (sym == NULL)
12028     {
12029       /* Perhaps we did not find our symbol because the Ada runtime was
12030          compiled without debugging info, or simply stripped of it.
12031          It happens on some GNU/Linux distributions for instance, where
12032          users have to install a separate debug package in order to get
12033          the runtime's debugging info.  In that situation, let the user
12034          know why we cannot insert an Ada exception catchpoint.
12035
12036          Note: Just for the purpose of inserting our Ada exception
12037          catchpoint, we could rely purely on the associated minimal symbol.
12038          But we would be operating in degraded mode anyway, since we are
12039          still lacking the debugging info needed later on to extract
12040          the name of the exception being raised (this name is printed in
12041          the catchpoint message, and is also used when trying to catch
12042          a specific exception).  We do not handle this case for now.  */
12043       struct bound_minimal_symbol msym
12044         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12045
12046       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12047         error (_("Your Ada runtime appears to be missing some debugging "
12048                  "information.\nCannot insert Ada exception catchpoint "
12049                  "in this configuration."));
12050
12051       return 0;
12052     }
12053
12054   /* Make sure that the symbol we found corresponds to a function.  */
12055
12056   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12057     error (_("Symbol \"%s\" is not a function (class = %d)"),
12058            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12059
12060   return 1;
12061 }
12062
12063 /* Inspect the Ada runtime and determine which exception info structure
12064    should be used to provide support for exception catchpoints.
12065
12066    This function will always set the per-inferior exception_info,
12067    or raise an error.  */
12068
12069 static void
12070 ada_exception_support_info_sniffer (void)
12071 {
12072   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12073
12074   /* If the exception info is already known, then no need to recompute it.  */
12075   if (data->exception_info != NULL)
12076     return;
12077
12078   /* Check the latest (default) exception support info.  */
12079   if (ada_has_this_exception_support (&default_exception_support_info))
12080     {
12081       data->exception_info = &default_exception_support_info;
12082       return;
12083     }
12084
12085   /* Try our fallback exception suport info.  */
12086   if (ada_has_this_exception_support (&exception_support_info_fallback))
12087     {
12088       data->exception_info = &exception_support_info_fallback;
12089       return;
12090     }
12091
12092   /* Sometimes, it is normal for us to not be able to find the routine
12093      we are looking for.  This happens when the program is linked with
12094      the shared version of the GNAT runtime, and the program has not been
12095      started yet.  Inform the user of these two possible causes if
12096      applicable.  */
12097
12098   if (ada_update_initial_language (language_unknown) != language_ada)
12099     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12100
12101   /* If the symbol does not exist, then check that the program is
12102      already started, to make sure that shared libraries have been
12103      loaded.  If it is not started, this may mean that the symbol is
12104      in a shared library.  */
12105
12106   if (inferior_ptid.pid () == 0)
12107     error (_("Unable to insert catchpoint. Try to start the program first."));
12108
12109   /* At this point, we know that we are debugging an Ada program and
12110      that the inferior has been started, but we still are not able to
12111      find the run-time symbols.  That can mean that we are in
12112      configurable run time mode, or that a-except as been optimized
12113      out by the linker...  In any case, at this point it is not worth
12114      supporting this feature.  */
12115
12116   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12117 }
12118
12119 /* True iff FRAME is very likely to be that of a function that is
12120    part of the runtime system.  This is all very heuristic, but is
12121    intended to be used as advice as to what frames are uninteresting
12122    to most users.  */
12123
12124 static int
12125 is_known_support_routine (struct frame_info *frame)
12126 {
12127   enum language func_lang;
12128   int i;
12129   const char *fullname;
12130
12131   /* If this code does not have any debugging information (no symtab),
12132      This cannot be any user code.  */
12133
12134   symtab_and_line sal = find_frame_sal (frame);
12135   if (sal.symtab == NULL)
12136     return 1;
12137
12138   /* If there is a symtab, but the associated source file cannot be
12139      located, then assume this is not user code:  Selecting a frame
12140      for which we cannot display the code would not be very helpful
12141      for the user.  This should also take care of case such as VxWorks
12142      where the kernel has some debugging info provided for a few units.  */
12143
12144   fullname = symtab_to_fullname (sal.symtab);
12145   if (access (fullname, R_OK) != 0)
12146     return 1;
12147
12148   /* Check the unit filename againt the Ada runtime file naming.
12149      We also check the name of the objfile against the name of some
12150      known system libraries that sometimes come with debugging info
12151      too.  */
12152
12153   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12154     {
12155       re_comp (known_runtime_file_name_patterns[i]);
12156       if (re_exec (lbasename (sal.symtab->filename)))
12157         return 1;
12158       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12159           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12160         return 1;
12161     }
12162
12163   /* Check whether the function is a GNAT-generated entity.  */
12164
12165   gdb::unique_xmalloc_ptr<char> func_name
12166     = find_frame_funname (frame, &func_lang, NULL);
12167   if (func_name == NULL)
12168     return 1;
12169
12170   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12171     {
12172       re_comp (known_auxiliary_function_name_patterns[i]);
12173       if (re_exec (func_name.get ()))
12174         return 1;
12175     }
12176
12177   return 0;
12178 }
12179
12180 /* Find the first frame that contains debugging information and that is not
12181    part of the Ada run-time, starting from FI and moving upward.  */
12182
12183 void
12184 ada_find_printable_frame (struct frame_info *fi)
12185 {
12186   for (; fi != NULL; fi = get_prev_frame (fi))
12187     {
12188       if (!is_known_support_routine (fi))
12189         {
12190           select_frame (fi);
12191           break;
12192         }
12193     }
12194
12195 }
12196
12197 /* Assuming that the inferior just triggered an unhandled exception
12198    catchpoint, return the address in inferior memory where the name
12199    of the exception is stored.
12200    
12201    Return zero if the address could not be computed.  */
12202
12203 static CORE_ADDR
12204 ada_unhandled_exception_name_addr (void)
12205 {
12206   return parse_and_eval_address ("e.full_name");
12207 }
12208
12209 /* Same as ada_unhandled_exception_name_addr, except that this function
12210    should be used when the inferior uses an older version of the runtime,
12211    where the exception name needs to be extracted from a specific frame
12212    several frames up in the callstack.  */
12213
12214 static CORE_ADDR
12215 ada_unhandled_exception_name_addr_from_raise (void)
12216 {
12217   int frame_level;
12218   struct frame_info *fi;
12219   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12220
12221   /* To determine the name of this exception, we need to select
12222      the frame corresponding to RAISE_SYM_NAME.  This frame is
12223      at least 3 levels up, so we simply skip the first 3 frames
12224      without checking the name of their associated function.  */
12225   fi = get_current_frame ();
12226   for (frame_level = 0; frame_level < 3; frame_level += 1)
12227     if (fi != NULL)
12228       fi = get_prev_frame (fi); 
12229
12230   while (fi != NULL)
12231     {
12232       enum language func_lang;
12233
12234       gdb::unique_xmalloc_ptr<char> func_name
12235         = find_frame_funname (fi, &func_lang, NULL);
12236       if (func_name != NULL)
12237         {
12238           if (strcmp (func_name.get (),
12239                       data->exception_info->catch_exception_sym) == 0)
12240             break; /* We found the frame we were looking for...  */
12241         }
12242       fi = get_prev_frame (fi);
12243     }
12244
12245   if (fi == NULL)
12246     return 0;
12247
12248   select_frame (fi);
12249   return parse_and_eval_address ("id.full_name");
12250 }
12251
12252 /* Assuming the inferior just triggered an Ada exception catchpoint
12253    (of any type), return the address in inferior memory where the name
12254    of the exception is stored, if applicable.
12255
12256    Assumes the selected frame is the current frame.
12257
12258    Return zero if the address could not be computed, or if not relevant.  */
12259
12260 static CORE_ADDR
12261 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12262                            struct breakpoint *b)
12263 {
12264   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12265
12266   switch (ex)
12267     {
12268       case ada_catch_exception:
12269         return (parse_and_eval_address ("e.full_name"));
12270         break;
12271
12272       case ada_catch_exception_unhandled:
12273         return data->exception_info->unhandled_exception_name_addr ();
12274         break;
12275
12276       case ada_catch_handlers:
12277         return 0;  /* The runtimes does not provide access to the exception
12278                       name.  */
12279         break;
12280
12281       case ada_catch_assert:
12282         return 0;  /* Exception name is not relevant in this case.  */
12283         break;
12284
12285       default:
12286         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12287         break;
12288     }
12289
12290   return 0; /* Should never be reached.  */
12291 }
12292
12293 /* Assuming the inferior is stopped at an exception catchpoint,
12294    return the message which was associated to the exception, if
12295    available.  Return NULL if the message could not be retrieved.
12296
12297    Note: The exception message can be associated to an exception
12298    either through the use of the Raise_Exception function, or
12299    more simply (Ada 2005 and later), via:
12300
12301        raise Exception_Name with "exception message";
12302
12303    */
12304
12305 static gdb::unique_xmalloc_ptr<char>
12306 ada_exception_message_1 (void)
12307 {
12308   struct value *e_msg_val;
12309   int e_msg_len;
12310
12311   /* For runtimes that support this feature, the exception message
12312      is passed as an unbounded string argument called "message".  */
12313   e_msg_val = parse_and_eval ("message");
12314   if (e_msg_val == NULL)
12315     return NULL; /* Exception message not supported.  */
12316
12317   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12318   gdb_assert (e_msg_val != NULL);
12319   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12320
12321   /* If the message string is empty, then treat it as if there was
12322      no exception message.  */
12323   if (e_msg_len <= 0)
12324     return NULL;
12325
12326   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12327   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12328   e_msg.get ()[e_msg_len] = '\0';
12329
12330   return e_msg;
12331 }
12332
12333 /* Same as ada_exception_message_1, except that all exceptions are
12334    contained here (returning NULL instead).  */
12335
12336 static gdb::unique_xmalloc_ptr<char>
12337 ada_exception_message (void)
12338 {
12339   gdb::unique_xmalloc_ptr<char> e_msg;
12340
12341   TRY
12342     {
12343       e_msg = ada_exception_message_1 ();
12344     }
12345   CATCH (e, RETURN_MASK_ERROR)
12346     {
12347       e_msg.reset (nullptr);
12348     }
12349   END_CATCH
12350
12351   return e_msg;
12352 }
12353
12354 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12355    any error that ada_exception_name_addr_1 might cause to be thrown.
12356    When an error is intercepted, a warning with the error message is printed,
12357    and zero is returned.  */
12358
12359 static CORE_ADDR
12360 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12361                          struct breakpoint *b)
12362 {
12363   CORE_ADDR result = 0;
12364
12365   TRY
12366     {
12367       result = ada_exception_name_addr_1 (ex, b);
12368     }
12369
12370   CATCH (e, RETURN_MASK_ERROR)
12371     {
12372       warning (_("failed to get exception name: %s"), e.message);
12373       return 0;
12374     }
12375   END_CATCH
12376
12377   return result;
12378 }
12379
12380 static std::string ada_exception_catchpoint_cond_string
12381   (const char *excep_string,
12382    enum ada_exception_catchpoint_kind ex);
12383
12384 /* Ada catchpoints.
12385
12386    In the case of catchpoints on Ada exceptions, the catchpoint will
12387    stop the target on every exception the program throws.  When a user
12388    specifies the name of a specific exception, we translate this
12389    request into a condition expression (in text form), and then parse
12390    it into an expression stored in each of the catchpoint's locations.
12391    We then use this condition to check whether the exception that was
12392    raised is the one the user is interested in.  If not, then the
12393    target is resumed again.  We store the name of the requested
12394    exception, in order to be able to re-set the condition expression
12395    when symbols change.  */
12396
12397 /* An instance of this type is used to represent an Ada catchpoint
12398    breakpoint location.  */
12399
12400 class ada_catchpoint_location : public bp_location
12401 {
12402 public:
12403   ada_catchpoint_location (breakpoint *owner)
12404     : bp_location (owner)
12405   {}
12406
12407   /* The condition that checks whether the exception that was raised
12408      is the specific exception the user specified on catchpoint
12409      creation.  */
12410   expression_up excep_cond_expr;
12411 };
12412
12413 /* An instance of this type is used to represent an Ada catchpoint.  */
12414
12415 struct ada_catchpoint : public breakpoint
12416 {
12417   /* The name of the specific exception the user specified.  */
12418   std::string excep_string;
12419 };
12420
12421 /* Parse the exception condition string in the context of each of the
12422    catchpoint's locations, and store them for later evaluation.  */
12423
12424 static void
12425 create_excep_cond_exprs (struct ada_catchpoint *c,
12426                          enum ada_exception_catchpoint_kind ex)
12427 {
12428   struct bp_location *bl;
12429
12430   /* Nothing to do if there's no specific exception to catch.  */
12431   if (c->excep_string.empty ())
12432     return;
12433
12434   /* Same if there are no locations... */
12435   if (c->loc == NULL)
12436     return;
12437
12438   /* Compute the condition expression in text form, from the specific
12439      expection we want to catch.  */
12440   std::string cond_string
12441     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12442
12443   /* Iterate over all the catchpoint's locations, and parse an
12444      expression for each.  */
12445   for (bl = c->loc; bl != NULL; bl = bl->next)
12446     {
12447       struct ada_catchpoint_location *ada_loc
12448         = (struct ada_catchpoint_location *) bl;
12449       expression_up exp;
12450
12451       if (!bl->shlib_disabled)
12452         {
12453           const char *s;
12454
12455           s = cond_string.c_str ();
12456           TRY
12457             {
12458               exp = parse_exp_1 (&s, bl->address,
12459                                  block_for_pc (bl->address),
12460                                  0);
12461             }
12462           CATCH (e, RETURN_MASK_ERROR)
12463             {
12464               warning (_("failed to reevaluate internal exception condition "
12465                          "for catchpoint %d: %s"),
12466                        c->number, e.message);
12467             }
12468           END_CATCH
12469         }
12470
12471       ada_loc->excep_cond_expr = std::move (exp);
12472     }
12473 }
12474
12475 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12476    structure for all exception catchpoint kinds.  */
12477
12478 static struct bp_location *
12479 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12480                              struct breakpoint *self)
12481 {
12482   return new ada_catchpoint_location (self);
12483 }
12484
12485 /* Implement the RE_SET method in the breakpoint_ops structure for all
12486    exception catchpoint kinds.  */
12487
12488 static void
12489 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12490 {
12491   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12492
12493   /* Call the base class's method.  This updates the catchpoint's
12494      locations.  */
12495   bkpt_breakpoint_ops.re_set (b);
12496
12497   /* Reparse the exception conditional expressions.  One for each
12498      location.  */
12499   create_excep_cond_exprs (c, ex);
12500 }
12501
12502 /* Returns true if we should stop for this breakpoint hit.  If the
12503    user specified a specific exception, we only want to cause a stop
12504    if the program thrown that exception.  */
12505
12506 static int
12507 should_stop_exception (const struct bp_location *bl)
12508 {
12509   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12510   const struct ada_catchpoint_location *ada_loc
12511     = (const struct ada_catchpoint_location *) bl;
12512   int stop;
12513
12514   /* With no specific exception, should always stop.  */
12515   if (c->excep_string.empty ())
12516     return 1;
12517
12518   if (ada_loc->excep_cond_expr == NULL)
12519     {
12520       /* We will have a NULL expression if back when we were creating
12521          the expressions, this location's had failed to parse.  */
12522       return 1;
12523     }
12524
12525   stop = 1;
12526   TRY
12527     {
12528       struct value *mark;
12529
12530       mark = value_mark ();
12531       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12532       value_free_to_mark (mark);
12533     }
12534   CATCH (ex, RETURN_MASK_ALL)
12535     {
12536       exception_fprintf (gdb_stderr, ex,
12537                          _("Error in testing exception condition:\n"));
12538     }
12539   END_CATCH
12540
12541   return stop;
12542 }
12543
12544 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12545    for all exception catchpoint kinds.  */
12546
12547 static void
12548 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12549 {
12550   bs->stop = should_stop_exception (bs->bp_location_at);
12551 }
12552
12553 /* Implement the PRINT_IT method in the breakpoint_ops structure
12554    for all exception catchpoint kinds.  */
12555
12556 static enum print_stop_action
12557 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12558 {
12559   struct ui_out *uiout = current_uiout;
12560   struct breakpoint *b = bs->breakpoint_at;
12561
12562   annotate_catchpoint (b->number);
12563
12564   if (uiout->is_mi_like_p ())
12565     {
12566       uiout->field_string ("reason",
12567                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12568       uiout->field_string ("disp", bpdisp_text (b->disposition));
12569     }
12570
12571   uiout->text (b->disposition == disp_del
12572                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12573   uiout->field_int ("bkptno", b->number);
12574   uiout->text (", ");
12575
12576   /* ada_exception_name_addr relies on the selected frame being the
12577      current frame.  Need to do this here because this function may be
12578      called more than once when printing a stop, and below, we'll
12579      select the first frame past the Ada run-time (see
12580      ada_find_printable_frame).  */
12581   select_frame (get_current_frame ());
12582
12583   switch (ex)
12584     {
12585       case ada_catch_exception:
12586       case ada_catch_exception_unhandled:
12587       case ada_catch_handlers:
12588         {
12589           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12590           char exception_name[256];
12591
12592           if (addr != 0)
12593             {
12594               read_memory (addr, (gdb_byte *) exception_name,
12595                            sizeof (exception_name) - 1);
12596               exception_name [sizeof (exception_name) - 1] = '\0';
12597             }
12598           else
12599             {
12600               /* For some reason, we were unable to read the exception
12601                  name.  This could happen if the Runtime was compiled
12602                  without debugging info, for instance.  In that case,
12603                  just replace the exception name by the generic string
12604                  "exception" - it will read as "an exception" in the
12605                  notification we are about to print.  */
12606               memcpy (exception_name, "exception", sizeof ("exception"));
12607             }
12608           /* In the case of unhandled exception breakpoints, we print
12609              the exception name as "unhandled EXCEPTION_NAME", to make
12610              it clearer to the user which kind of catchpoint just got
12611              hit.  We used ui_out_text to make sure that this extra
12612              info does not pollute the exception name in the MI case.  */
12613           if (ex == ada_catch_exception_unhandled)
12614             uiout->text ("unhandled ");
12615           uiout->field_string ("exception-name", exception_name);
12616         }
12617         break;
12618       case ada_catch_assert:
12619         /* In this case, the name of the exception is not really
12620            important.  Just print "failed assertion" to make it clearer
12621            that his program just hit an assertion-failure catchpoint.
12622            We used ui_out_text because this info does not belong in
12623            the MI output.  */
12624         uiout->text ("failed assertion");
12625         break;
12626     }
12627
12628   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12629   if (exception_message != NULL)
12630     {
12631       uiout->text (" (");
12632       uiout->field_string ("exception-message", exception_message.get ());
12633       uiout->text (")");
12634     }
12635
12636   uiout->text (" at ");
12637   ada_find_printable_frame (get_current_frame ());
12638
12639   return PRINT_SRC_AND_LOC;
12640 }
12641
12642 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12643    for all exception catchpoint kinds.  */
12644
12645 static void
12646 print_one_exception (enum ada_exception_catchpoint_kind ex,
12647                      struct breakpoint *b, struct bp_location **last_loc)
12648
12649   struct ui_out *uiout = current_uiout;
12650   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12651   struct value_print_options opts;
12652
12653   get_user_print_options (&opts);
12654   if (opts.addressprint)
12655     {
12656       annotate_field (4);
12657       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12658     }
12659
12660   annotate_field (5);
12661   *last_loc = b->loc;
12662   switch (ex)
12663     {
12664       case ada_catch_exception:
12665         if (!c->excep_string.empty ())
12666           {
12667             std::string msg = string_printf (_("`%s' Ada exception"),
12668                                              c->excep_string.c_str ());
12669
12670             uiout->field_string ("what", msg);
12671           }
12672         else
12673           uiout->field_string ("what", "all Ada exceptions");
12674         
12675         break;
12676
12677       case ada_catch_exception_unhandled:
12678         uiout->field_string ("what", "unhandled Ada exceptions");
12679         break;
12680       
12681       case ada_catch_handlers:
12682         if (!c->excep_string.empty ())
12683           {
12684             uiout->field_fmt ("what",
12685                               _("`%s' Ada exception handlers"),
12686                               c->excep_string.c_str ());
12687           }
12688         else
12689           uiout->field_string ("what", "all Ada exceptions handlers");
12690         break;
12691
12692       case ada_catch_assert:
12693         uiout->field_string ("what", "failed Ada assertions");
12694         break;
12695
12696       default:
12697         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12698         break;
12699     }
12700 }
12701
12702 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12703    for all exception catchpoint kinds.  */
12704
12705 static void
12706 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12707                          struct breakpoint *b)
12708 {
12709   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12710   struct ui_out *uiout = current_uiout;
12711
12712   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12713                                                  : _("Catchpoint "));
12714   uiout->field_int ("bkptno", b->number);
12715   uiout->text (": ");
12716
12717   switch (ex)
12718     {
12719       case ada_catch_exception:
12720         if (!c->excep_string.empty ())
12721           {
12722             std::string info = string_printf (_("`%s' Ada exception"),
12723                                               c->excep_string.c_str ());
12724             uiout->text (info.c_str ());
12725           }
12726         else
12727           uiout->text (_("all Ada exceptions"));
12728         break;
12729
12730       case ada_catch_exception_unhandled:
12731         uiout->text (_("unhandled Ada exceptions"));
12732         break;
12733
12734       case ada_catch_handlers:
12735         if (!c->excep_string.empty ())
12736           {
12737             std::string info
12738               = string_printf (_("`%s' Ada exception handlers"),
12739                                c->excep_string.c_str ());
12740             uiout->text (info.c_str ());
12741           }
12742         else
12743           uiout->text (_("all Ada exceptions handlers"));
12744         break;
12745
12746       case ada_catch_assert:
12747         uiout->text (_("failed Ada assertions"));
12748         break;
12749
12750       default:
12751         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12752         break;
12753     }
12754 }
12755
12756 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12757    for all exception catchpoint kinds.  */
12758
12759 static void
12760 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12761                           struct breakpoint *b, struct ui_file *fp)
12762 {
12763   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12764
12765   switch (ex)
12766     {
12767       case ada_catch_exception:
12768         fprintf_filtered (fp, "catch exception");
12769         if (!c->excep_string.empty ())
12770           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12771         break;
12772
12773       case ada_catch_exception_unhandled:
12774         fprintf_filtered (fp, "catch exception unhandled");
12775         break;
12776
12777       case ada_catch_handlers:
12778         fprintf_filtered (fp, "catch handlers");
12779         break;
12780
12781       case ada_catch_assert:
12782         fprintf_filtered (fp, "catch assert");
12783         break;
12784
12785       default:
12786         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12787     }
12788   print_recreate_thread (b, fp);
12789 }
12790
12791 /* Virtual table for "catch exception" breakpoints.  */
12792
12793 static struct bp_location *
12794 allocate_location_catch_exception (struct breakpoint *self)
12795 {
12796   return allocate_location_exception (ada_catch_exception, self);
12797 }
12798
12799 static void
12800 re_set_catch_exception (struct breakpoint *b)
12801 {
12802   re_set_exception (ada_catch_exception, b);
12803 }
12804
12805 static void
12806 check_status_catch_exception (bpstat bs)
12807 {
12808   check_status_exception (ada_catch_exception, bs);
12809 }
12810
12811 static enum print_stop_action
12812 print_it_catch_exception (bpstat bs)
12813 {
12814   return print_it_exception (ada_catch_exception, bs);
12815 }
12816
12817 static void
12818 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12819 {
12820   print_one_exception (ada_catch_exception, b, last_loc);
12821 }
12822
12823 static void
12824 print_mention_catch_exception (struct breakpoint *b)
12825 {
12826   print_mention_exception (ada_catch_exception, b);
12827 }
12828
12829 static void
12830 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12831 {
12832   print_recreate_exception (ada_catch_exception, b, fp);
12833 }
12834
12835 static struct breakpoint_ops catch_exception_breakpoint_ops;
12836
12837 /* Virtual table for "catch exception unhandled" breakpoints.  */
12838
12839 static struct bp_location *
12840 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12841 {
12842   return allocate_location_exception (ada_catch_exception_unhandled, self);
12843 }
12844
12845 static void
12846 re_set_catch_exception_unhandled (struct breakpoint *b)
12847 {
12848   re_set_exception (ada_catch_exception_unhandled, b);
12849 }
12850
12851 static void
12852 check_status_catch_exception_unhandled (bpstat bs)
12853 {
12854   check_status_exception (ada_catch_exception_unhandled, bs);
12855 }
12856
12857 static enum print_stop_action
12858 print_it_catch_exception_unhandled (bpstat bs)
12859 {
12860   return print_it_exception (ada_catch_exception_unhandled, bs);
12861 }
12862
12863 static void
12864 print_one_catch_exception_unhandled (struct breakpoint *b,
12865                                      struct bp_location **last_loc)
12866 {
12867   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12868 }
12869
12870 static void
12871 print_mention_catch_exception_unhandled (struct breakpoint *b)
12872 {
12873   print_mention_exception (ada_catch_exception_unhandled, b);
12874 }
12875
12876 static void
12877 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12878                                           struct ui_file *fp)
12879 {
12880   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12881 }
12882
12883 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12884
12885 /* Virtual table for "catch assert" breakpoints.  */
12886
12887 static struct bp_location *
12888 allocate_location_catch_assert (struct breakpoint *self)
12889 {
12890   return allocate_location_exception (ada_catch_assert, self);
12891 }
12892
12893 static void
12894 re_set_catch_assert (struct breakpoint *b)
12895 {
12896   re_set_exception (ada_catch_assert, b);
12897 }
12898
12899 static void
12900 check_status_catch_assert (bpstat bs)
12901 {
12902   check_status_exception (ada_catch_assert, bs);
12903 }
12904
12905 static enum print_stop_action
12906 print_it_catch_assert (bpstat bs)
12907 {
12908   return print_it_exception (ada_catch_assert, bs);
12909 }
12910
12911 static void
12912 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12913 {
12914   print_one_exception (ada_catch_assert, b, last_loc);
12915 }
12916
12917 static void
12918 print_mention_catch_assert (struct breakpoint *b)
12919 {
12920   print_mention_exception (ada_catch_assert, b);
12921 }
12922
12923 static void
12924 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12925 {
12926   print_recreate_exception (ada_catch_assert, b, fp);
12927 }
12928
12929 static struct breakpoint_ops catch_assert_breakpoint_ops;
12930
12931 /* Virtual table for "catch handlers" breakpoints.  */
12932
12933 static struct bp_location *
12934 allocate_location_catch_handlers (struct breakpoint *self)
12935 {
12936   return allocate_location_exception (ada_catch_handlers, self);
12937 }
12938
12939 static void
12940 re_set_catch_handlers (struct breakpoint *b)
12941 {
12942   re_set_exception (ada_catch_handlers, b);
12943 }
12944
12945 static void
12946 check_status_catch_handlers (bpstat bs)
12947 {
12948   check_status_exception (ada_catch_handlers, bs);
12949 }
12950
12951 static enum print_stop_action
12952 print_it_catch_handlers (bpstat bs)
12953 {
12954   return print_it_exception (ada_catch_handlers, bs);
12955 }
12956
12957 static void
12958 print_one_catch_handlers (struct breakpoint *b,
12959                           struct bp_location **last_loc)
12960 {
12961   print_one_exception (ada_catch_handlers, b, last_loc);
12962 }
12963
12964 static void
12965 print_mention_catch_handlers (struct breakpoint *b)
12966 {
12967   print_mention_exception (ada_catch_handlers, b);
12968 }
12969
12970 static void
12971 print_recreate_catch_handlers (struct breakpoint *b,
12972                                struct ui_file *fp)
12973 {
12974   print_recreate_exception (ada_catch_handlers, b, fp);
12975 }
12976
12977 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12978
12979 /* Split the arguments specified in a "catch exception" command.  
12980    Set EX to the appropriate catchpoint type.
12981    Set EXCEP_STRING to the name of the specific exception if
12982    specified by the user.
12983    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12984    "catch handlers" command.  False otherwise.
12985    If a condition is found at the end of the arguments, the condition
12986    expression is stored in COND_STRING (memory must be deallocated
12987    after use).  Otherwise COND_STRING is set to NULL.  */
12988
12989 static void
12990 catch_ada_exception_command_split (const char *args,
12991                                    bool is_catch_handlers_cmd,
12992                                    enum ada_exception_catchpoint_kind *ex,
12993                                    std::string *excep_string,
12994                                    std::string *cond_string)
12995 {
12996   std::string exception_name;
12997
12998   exception_name = extract_arg (&args);
12999   if (exception_name == "if")
13000     {
13001       /* This is not an exception name; this is the start of a condition
13002          expression for a catchpoint on all exceptions.  So, "un-get"
13003          this token, and set exception_name to NULL.  */
13004       exception_name.clear ();
13005       args -= 2;
13006     }
13007
13008   /* Check to see if we have a condition.  */
13009
13010   args = skip_spaces (args);
13011   if (startswith (args, "if")
13012       && (isspace (args[2]) || args[2] == '\0'))
13013     {
13014       args += 2;
13015       args = skip_spaces (args);
13016
13017       if (args[0] == '\0')
13018         error (_("Condition missing after `if' keyword"));
13019       *cond_string = args;
13020
13021       args += strlen (args);
13022     }
13023
13024   /* Check that we do not have any more arguments.  Anything else
13025      is unexpected.  */
13026
13027   if (args[0] != '\0')
13028     error (_("Junk at end of expression"));
13029
13030   if (is_catch_handlers_cmd)
13031     {
13032       /* Catch handling of exceptions.  */
13033       *ex = ada_catch_handlers;
13034       *excep_string = exception_name;
13035     }
13036   else if (exception_name.empty ())
13037     {
13038       /* Catch all exceptions.  */
13039       *ex = ada_catch_exception;
13040       excep_string->clear ();
13041     }
13042   else if (exception_name == "unhandled")
13043     {
13044       /* Catch unhandled exceptions.  */
13045       *ex = ada_catch_exception_unhandled;
13046       excep_string->clear ();
13047     }
13048   else
13049     {
13050       /* Catch a specific exception.  */
13051       *ex = ada_catch_exception;
13052       *excep_string = exception_name;
13053     }
13054 }
13055
13056 /* Return the name of the symbol on which we should break in order to
13057    implement a catchpoint of the EX kind.  */
13058
13059 static const char *
13060 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13061 {
13062   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13063
13064   gdb_assert (data->exception_info != NULL);
13065
13066   switch (ex)
13067     {
13068       case ada_catch_exception:
13069         return (data->exception_info->catch_exception_sym);
13070         break;
13071       case ada_catch_exception_unhandled:
13072         return (data->exception_info->catch_exception_unhandled_sym);
13073         break;
13074       case ada_catch_assert:
13075         return (data->exception_info->catch_assert_sym);
13076         break;
13077       case ada_catch_handlers:
13078         return (data->exception_info->catch_handlers_sym);
13079         break;
13080       default:
13081         internal_error (__FILE__, __LINE__,
13082                         _("unexpected catchpoint kind (%d)"), ex);
13083     }
13084 }
13085
13086 /* Return the breakpoint ops "virtual table" used for catchpoints
13087    of the EX kind.  */
13088
13089 static const struct breakpoint_ops *
13090 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13091 {
13092   switch (ex)
13093     {
13094       case ada_catch_exception:
13095         return (&catch_exception_breakpoint_ops);
13096         break;
13097       case ada_catch_exception_unhandled:
13098         return (&catch_exception_unhandled_breakpoint_ops);
13099         break;
13100       case ada_catch_assert:
13101         return (&catch_assert_breakpoint_ops);
13102         break;
13103       case ada_catch_handlers:
13104         return (&catch_handlers_breakpoint_ops);
13105         break;
13106       default:
13107         internal_error (__FILE__, __LINE__,
13108                         _("unexpected catchpoint kind (%d)"), ex);
13109     }
13110 }
13111
13112 /* Return the condition that will be used to match the current exception
13113    being raised with the exception that the user wants to catch.  This
13114    assumes that this condition is used when the inferior just triggered
13115    an exception catchpoint.
13116    EX: the type of catchpoints used for catching Ada exceptions.  */
13117
13118 static std::string
13119 ada_exception_catchpoint_cond_string (const char *excep_string,
13120                                       enum ada_exception_catchpoint_kind ex)
13121 {
13122   int i;
13123   bool is_standard_exc = false;
13124   std::string result;
13125
13126   if (ex == ada_catch_handlers)
13127     {
13128       /* For exception handlers catchpoints, the condition string does
13129          not use the same parameter as for the other exceptions.  */
13130       result = ("long_integer (GNAT_GCC_exception_Access"
13131                 "(gcc_exception).all.occurrence.id)");
13132     }
13133   else
13134     result = "long_integer (e)";
13135
13136   /* The standard exceptions are a special case.  They are defined in
13137      runtime units that have been compiled without debugging info; if
13138      EXCEP_STRING is the not-fully-qualified name of a standard
13139      exception (e.g. "constraint_error") then, during the evaluation
13140      of the condition expression, the symbol lookup on this name would
13141      *not* return this standard exception.  The catchpoint condition
13142      may then be set only on user-defined exceptions which have the
13143      same not-fully-qualified name (e.g. my_package.constraint_error).
13144
13145      To avoid this unexcepted behavior, these standard exceptions are
13146      systematically prefixed by "standard".  This means that "catch
13147      exception constraint_error" is rewritten into "catch exception
13148      standard.constraint_error".
13149
13150      If an exception named contraint_error is defined in another package of
13151      the inferior program, then the only way to specify this exception as a
13152      breakpoint condition is to use its fully-qualified named:
13153      e.g. my_package.constraint_error.  */
13154
13155   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13156     {
13157       if (strcmp (standard_exc [i], excep_string) == 0)
13158         {
13159           is_standard_exc = true;
13160           break;
13161         }
13162     }
13163
13164   result += " = ";
13165
13166   if (is_standard_exc)
13167     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13168   else
13169     string_appendf (result, "long_integer (&%s)", excep_string);
13170
13171   return result;
13172 }
13173
13174 /* Return the symtab_and_line that should be used to insert an exception
13175    catchpoint of the TYPE kind.
13176
13177    ADDR_STRING returns the name of the function where the real
13178    breakpoint that implements the catchpoints is set, depending on the
13179    type of catchpoint we need to create.  */
13180
13181 static struct symtab_and_line
13182 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13183                    std::string *addr_string, const struct breakpoint_ops **ops)
13184 {
13185   const char *sym_name;
13186   struct symbol *sym;
13187
13188   /* First, find out which exception support info to use.  */
13189   ada_exception_support_info_sniffer ();
13190
13191   /* Then lookup the function on which we will break in order to catch
13192      the Ada exceptions requested by the user.  */
13193   sym_name = ada_exception_sym_name (ex);
13194   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13195
13196   if (sym == NULL)
13197     error (_("Catchpoint symbol not found: %s"), sym_name);
13198
13199   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13200     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13201
13202   /* Set ADDR_STRING.  */
13203   *addr_string = sym_name;
13204
13205   /* Set OPS.  */
13206   *ops = ada_exception_breakpoint_ops (ex);
13207
13208   return find_function_start_sal (sym, 1);
13209 }
13210
13211 /* Create an Ada exception catchpoint.
13212
13213    EX_KIND is the kind of exception catchpoint to be created.
13214
13215    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13216    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13217    of the exception to which this catchpoint applies.
13218
13219    COND_STRING, if not empty, is the catchpoint condition.
13220
13221    TEMPFLAG, if nonzero, means that the underlying breakpoint
13222    should be temporary.
13223
13224    FROM_TTY is the usual argument passed to all commands implementations.  */
13225
13226 void
13227 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13228                                  enum ada_exception_catchpoint_kind ex_kind,
13229                                  const std::string &excep_string,
13230                                  const std::string &cond_string,
13231                                  int tempflag,
13232                                  int disabled,
13233                                  int from_tty)
13234 {
13235   std::string addr_string;
13236   const struct breakpoint_ops *ops = NULL;
13237   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13238
13239   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13240   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13241                                  ops, tempflag, disabled, from_tty);
13242   c->excep_string = excep_string;
13243   create_excep_cond_exprs (c.get (), ex_kind);
13244   if (!cond_string.empty ())
13245     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13246   install_breakpoint (0, std::move (c), 1);
13247 }
13248
13249 /* Implement the "catch exception" command.  */
13250
13251 static void
13252 catch_ada_exception_command (const char *arg_entry, int from_tty,
13253                              struct cmd_list_element *command)
13254 {
13255   const char *arg = arg_entry;
13256   struct gdbarch *gdbarch = get_current_arch ();
13257   int tempflag;
13258   enum ada_exception_catchpoint_kind ex_kind;
13259   std::string excep_string;
13260   std::string cond_string;
13261
13262   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13263
13264   if (!arg)
13265     arg = "";
13266   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13267                                      &cond_string);
13268   create_ada_exception_catchpoint (gdbarch, ex_kind,
13269                                    excep_string, cond_string,
13270                                    tempflag, 1 /* enabled */,
13271                                    from_tty);
13272 }
13273
13274 /* Implement the "catch handlers" command.  */
13275
13276 static void
13277 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13278                             struct cmd_list_element *command)
13279 {
13280   const char *arg = arg_entry;
13281   struct gdbarch *gdbarch = get_current_arch ();
13282   int tempflag;
13283   enum ada_exception_catchpoint_kind ex_kind;
13284   std::string excep_string;
13285   std::string cond_string;
13286
13287   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13288
13289   if (!arg)
13290     arg = "";
13291   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13292                                      &cond_string);
13293   create_ada_exception_catchpoint (gdbarch, ex_kind,
13294                                    excep_string, cond_string,
13295                                    tempflag, 1 /* enabled */,
13296                                    from_tty);
13297 }
13298
13299 /* Split the arguments specified in a "catch assert" command.
13300
13301    ARGS contains the command's arguments (or the empty string if
13302    no arguments were passed).
13303
13304    If ARGS contains a condition, set COND_STRING to that condition
13305    (the memory needs to be deallocated after use).  */
13306
13307 static void
13308 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13309 {
13310   args = skip_spaces (args);
13311
13312   /* Check whether a condition was provided.  */
13313   if (startswith (args, "if")
13314       && (isspace (args[2]) || args[2] == '\0'))
13315     {
13316       args += 2;
13317       args = skip_spaces (args);
13318       if (args[0] == '\0')
13319         error (_("condition missing after `if' keyword"));
13320       cond_string.assign (args);
13321     }
13322
13323   /* Otherwise, there should be no other argument at the end of
13324      the command.  */
13325   else if (args[0] != '\0')
13326     error (_("Junk at end of arguments."));
13327 }
13328
13329 /* Implement the "catch assert" command.  */
13330
13331 static void
13332 catch_assert_command (const char *arg_entry, int from_tty,
13333                       struct cmd_list_element *command)
13334 {
13335   const char *arg = arg_entry;
13336   struct gdbarch *gdbarch = get_current_arch ();
13337   int tempflag;
13338   std::string cond_string;
13339
13340   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13341
13342   if (!arg)
13343     arg = "";
13344   catch_ada_assert_command_split (arg, cond_string);
13345   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13346                                    "", cond_string,
13347                                    tempflag, 1 /* enabled */,
13348                                    from_tty);
13349 }
13350
13351 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13352
13353 static int
13354 ada_is_exception_sym (struct symbol *sym)
13355 {
13356   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13357
13358   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13359           && SYMBOL_CLASS (sym) != LOC_BLOCK
13360           && SYMBOL_CLASS (sym) != LOC_CONST
13361           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13362           && type_name != NULL && strcmp (type_name, "exception") == 0);
13363 }
13364
13365 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13366    Ada exception object.  This matches all exceptions except the ones
13367    defined by the Ada language.  */
13368
13369 static int
13370 ada_is_non_standard_exception_sym (struct symbol *sym)
13371 {
13372   int i;
13373
13374   if (!ada_is_exception_sym (sym))
13375     return 0;
13376
13377   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13378     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13379       return 0;  /* A standard exception.  */
13380
13381   /* Numeric_Error is also a standard exception, so exclude it.
13382      See the STANDARD_EXC description for more details as to why
13383      this exception is not listed in that array.  */
13384   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13385     return 0;
13386
13387   return 1;
13388 }
13389
13390 /* A helper function for std::sort, comparing two struct ada_exc_info
13391    objects.
13392
13393    The comparison is determined first by exception name, and then
13394    by exception address.  */
13395
13396 bool
13397 ada_exc_info::operator< (const ada_exc_info &other) const
13398 {
13399   int result;
13400
13401   result = strcmp (name, other.name);
13402   if (result < 0)
13403     return true;
13404   if (result == 0 && addr < other.addr)
13405     return true;
13406   return false;
13407 }
13408
13409 bool
13410 ada_exc_info::operator== (const ada_exc_info &other) const
13411 {
13412   return addr == other.addr && strcmp (name, other.name) == 0;
13413 }
13414
13415 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13416    routine, but keeping the first SKIP elements untouched.
13417
13418    All duplicates are also removed.  */
13419
13420 static void
13421 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13422                                       int skip)
13423 {
13424   std::sort (exceptions->begin () + skip, exceptions->end ());
13425   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13426                      exceptions->end ());
13427 }
13428
13429 /* Add all exceptions defined by the Ada standard whose name match
13430    a regular expression.
13431
13432    If PREG is not NULL, then this regexp_t object is used to
13433    perform the symbol name matching.  Otherwise, no name-based
13434    filtering is performed.
13435
13436    EXCEPTIONS is a vector of exceptions to which matching exceptions
13437    gets pushed.  */
13438
13439 static void
13440 ada_add_standard_exceptions (compiled_regex *preg,
13441                              std::vector<ada_exc_info> *exceptions)
13442 {
13443   int i;
13444
13445   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13446     {
13447       if (preg == NULL
13448           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13449         {
13450           struct bound_minimal_symbol msymbol
13451             = ada_lookup_simple_minsym (standard_exc[i]);
13452
13453           if (msymbol.minsym != NULL)
13454             {
13455               struct ada_exc_info info
13456                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13457
13458               exceptions->push_back (info);
13459             }
13460         }
13461     }
13462 }
13463
13464 /* Add all Ada exceptions defined locally and accessible from the given
13465    FRAME.
13466
13467    If PREG is not NULL, then this regexp_t object is used to
13468    perform the symbol name matching.  Otherwise, no name-based
13469    filtering is performed.
13470
13471    EXCEPTIONS is a vector of exceptions to which matching exceptions
13472    gets pushed.  */
13473
13474 static void
13475 ada_add_exceptions_from_frame (compiled_regex *preg,
13476                                struct frame_info *frame,
13477                                std::vector<ada_exc_info> *exceptions)
13478 {
13479   const struct block *block = get_frame_block (frame, 0);
13480
13481   while (block != 0)
13482     {
13483       struct block_iterator iter;
13484       struct symbol *sym;
13485
13486       ALL_BLOCK_SYMBOLS (block, iter, sym)
13487         {
13488           switch (SYMBOL_CLASS (sym))
13489             {
13490             case LOC_TYPEDEF:
13491             case LOC_BLOCK:
13492             case LOC_CONST:
13493               break;
13494             default:
13495               if (ada_is_exception_sym (sym))
13496                 {
13497                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13498                                               SYMBOL_VALUE_ADDRESS (sym)};
13499
13500                   exceptions->push_back (info);
13501                 }
13502             }
13503         }
13504       if (BLOCK_FUNCTION (block) != NULL)
13505         break;
13506       block = BLOCK_SUPERBLOCK (block);
13507     }
13508 }
13509
13510 /* Return true if NAME matches PREG or if PREG is NULL.  */
13511
13512 static bool
13513 name_matches_regex (const char *name, compiled_regex *preg)
13514 {
13515   return (preg == NULL
13516           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13517 }
13518
13519 /* Add all exceptions defined globally whose name name match
13520    a regular expression, excluding standard exceptions.
13521
13522    The reason we exclude standard exceptions is that they need
13523    to be handled separately: Standard exceptions are defined inside
13524    a runtime unit which is normally not compiled with debugging info,
13525    and thus usually do not show up in our symbol search.  However,
13526    if the unit was in fact built with debugging info, we need to
13527    exclude them because they would duplicate the entry we found
13528    during the special loop that specifically searches for those
13529    standard exceptions.
13530
13531    If PREG is not NULL, then this regexp_t object is used to
13532    perform the symbol name matching.  Otherwise, no name-based
13533    filtering is performed.
13534
13535    EXCEPTIONS is a vector of exceptions to which matching exceptions
13536    gets pushed.  */
13537
13538 static void
13539 ada_add_global_exceptions (compiled_regex *preg,
13540                            std::vector<ada_exc_info> *exceptions)
13541 {
13542   /* In Ada, the symbol "search name" is a linkage name, whereas the
13543      regular expression used to do the matching refers to the natural
13544      name.  So match against the decoded name.  */
13545   expand_symtabs_matching (NULL,
13546                            lookup_name_info::match_any (),
13547                            [&] (const char *search_name)
13548                            {
13549                              const char *decoded = ada_decode (search_name);
13550                              return name_matches_regex (decoded, preg);
13551                            },
13552                            NULL,
13553                            VARIABLES_DOMAIN);
13554
13555   for (objfile *objfile : current_program_space->objfiles ())
13556     {
13557       for (compunit_symtab *s : objfile->compunits ())
13558         {
13559           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13560           int i;
13561
13562           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13563             {
13564               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13565               struct block_iterator iter;
13566               struct symbol *sym;
13567
13568               ALL_BLOCK_SYMBOLS (b, iter, sym)
13569                 if (ada_is_non_standard_exception_sym (sym)
13570                     && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13571                   {
13572                     struct ada_exc_info info
13573                       = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13574
13575                     exceptions->push_back (info);
13576                   }
13577             }
13578         }
13579     }
13580 }
13581
13582 /* Implements ada_exceptions_list with the regular expression passed
13583    as a regex_t, rather than a string.
13584
13585    If not NULL, PREG is used to filter out exceptions whose names
13586    do not match.  Otherwise, all exceptions are listed.  */
13587
13588 static std::vector<ada_exc_info>
13589 ada_exceptions_list_1 (compiled_regex *preg)
13590 {
13591   std::vector<ada_exc_info> result;
13592   int prev_len;
13593
13594   /* First, list the known standard exceptions.  These exceptions
13595      need to be handled separately, as they are usually defined in
13596      runtime units that have been compiled without debugging info.  */
13597
13598   ada_add_standard_exceptions (preg, &result);
13599
13600   /* Next, find all exceptions whose scope is local and accessible
13601      from the currently selected frame.  */
13602
13603   if (has_stack_frames ())
13604     {
13605       prev_len = result.size ();
13606       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13607                                      &result);
13608       if (result.size () > prev_len)
13609         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13610     }
13611
13612   /* Add all exceptions whose scope is global.  */
13613
13614   prev_len = result.size ();
13615   ada_add_global_exceptions (preg, &result);
13616   if (result.size () > prev_len)
13617     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13618
13619   return result;
13620 }
13621
13622 /* Return a vector of ada_exc_info.
13623
13624    If REGEXP is NULL, all exceptions are included in the result.
13625    Otherwise, it should contain a valid regular expression,
13626    and only the exceptions whose names match that regular expression
13627    are included in the result.
13628
13629    The exceptions are sorted in the following order:
13630      - Standard exceptions (defined by the Ada language), in
13631        alphabetical order;
13632      - Exceptions only visible from the current frame, in
13633        alphabetical order;
13634      - Exceptions whose scope is global, in alphabetical order.  */
13635
13636 std::vector<ada_exc_info>
13637 ada_exceptions_list (const char *regexp)
13638 {
13639   if (regexp == NULL)
13640     return ada_exceptions_list_1 (NULL);
13641
13642   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13643   return ada_exceptions_list_1 (&reg);
13644 }
13645
13646 /* Implement the "info exceptions" command.  */
13647
13648 static void
13649 info_exceptions_command (const char *regexp, int from_tty)
13650 {
13651   struct gdbarch *gdbarch = get_current_arch ();
13652
13653   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13654
13655   if (regexp != NULL)
13656     printf_filtered
13657       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13658   else
13659     printf_filtered (_("All defined Ada exceptions:\n"));
13660
13661   for (const ada_exc_info &info : exceptions)
13662     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13663 }
13664
13665                                 /* Operators */
13666 /* Information about operators given special treatment in functions
13667    below.  */
13668 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13669
13670 #define ADA_OPERATORS \
13671     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13672     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13673     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13674     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13675     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13676     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13677     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13678     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13679     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13680     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13681     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13682     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13683     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13684     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13685     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13686     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13687     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13688     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13689     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13690
13691 static void
13692 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13693                      int *argsp)
13694 {
13695   switch (exp->elts[pc - 1].opcode)
13696     {
13697     default:
13698       operator_length_standard (exp, pc, oplenp, argsp);
13699       break;
13700
13701 #define OP_DEFN(op, len, args, binop) \
13702     case op: *oplenp = len; *argsp = args; break;
13703       ADA_OPERATORS;
13704 #undef OP_DEFN
13705
13706     case OP_AGGREGATE:
13707       *oplenp = 3;
13708       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13709       break;
13710
13711     case OP_CHOICES:
13712       *oplenp = 3;
13713       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13714       break;
13715     }
13716 }
13717
13718 /* Implementation of the exp_descriptor method operator_check.  */
13719
13720 static int
13721 ada_operator_check (struct expression *exp, int pos,
13722                     int (*objfile_func) (struct objfile *objfile, void *data),
13723                     void *data)
13724 {
13725   const union exp_element *const elts = exp->elts;
13726   struct type *type = NULL;
13727
13728   switch (elts[pos].opcode)
13729     {
13730       case UNOP_IN_RANGE:
13731       case UNOP_QUAL:
13732         type = elts[pos + 1].type;
13733         break;
13734
13735       default:
13736         return operator_check_standard (exp, pos, objfile_func, data);
13737     }
13738
13739   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13740
13741   if (type && TYPE_OBJFILE (type)
13742       && (*objfile_func) (TYPE_OBJFILE (type), data))
13743     return 1;
13744
13745   return 0;
13746 }
13747
13748 static const char *
13749 ada_op_name (enum exp_opcode opcode)
13750 {
13751   switch (opcode)
13752     {
13753     default:
13754       return op_name_standard (opcode);
13755
13756 #define OP_DEFN(op, len, args, binop) case op: return #op;
13757       ADA_OPERATORS;
13758 #undef OP_DEFN
13759
13760     case OP_AGGREGATE:
13761       return "OP_AGGREGATE";
13762     case OP_CHOICES:
13763       return "OP_CHOICES";
13764     case OP_NAME:
13765       return "OP_NAME";
13766     }
13767 }
13768
13769 /* As for operator_length, but assumes PC is pointing at the first
13770    element of the operator, and gives meaningful results only for the 
13771    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13772
13773 static void
13774 ada_forward_operator_length (struct expression *exp, int pc,
13775                              int *oplenp, int *argsp)
13776 {
13777   switch (exp->elts[pc].opcode)
13778     {
13779     default:
13780       *oplenp = *argsp = 0;
13781       break;
13782
13783 #define OP_DEFN(op, len, args, binop) \
13784     case op: *oplenp = len; *argsp = args; break;
13785       ADA_OPERATORS;
13786 #undef OP_DEFN
13787
13788     case OP_AGGREGATE:
13789       *oplenp = 3;
13790       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13791       break;
13792
13793     case OP_CHOICES:
13794       *oplenp = 3;
13795       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13796       break;
13797
13798     case OP_STRING:
13799     case OP_NAME:
13800       {
13801         int len = longest_to_int (exp->elts[pc + 1].longconst);
13802
13803         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13804         *argsp = 0;
13805         break;
13806       }
13807     }
13808 }
13809
13810 static int
13811 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13812 {
13813   enum exp_opcode op = exp->elts[elt].opcode;
13814   int oplen, nargs;
13815   int pc = elt;
13816   int i;
13817
13818   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13819
13820   switch (op)
13821     {
13822       /* Ada attributes ('Foo).  */
13823     case OP_ATR_FIRST:
13824     case OP_ATR_LAST:
13825     case OP_ATR_LENGTH:
13826     case OP_ATR_IMAGE:
13827     case OP_ATR_MAX:
13828     case OP_ATR_MIN:
13829     case OP_ATR_MODULUS:
13830     case OP_ATR_POS:
13831     case OP_ATR_SIZE:
13832     case OP_ATR_TAG:
13833     case OP_ATR_VAL:
13834       break;
13835
13836     case UNOP_IN_RANGE:
13837     case UNOP_QUAL:
13838       /* XXX: gdb_sprint_host_address, type_sprint */
13839       fprintf_filtered (stream, _("Type @"));
13840       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13841       fprintf_filtered (stream, " (");
13842       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13843       fprintf_filtered (stream, ")");
13844       break;
13845     case BINOP_IN_BOUNDS:
13846       fprintf_filtered (stream, " (%d)",
13847                         longest_to_int (exp->elts[pc + 2].longconst));
13848       break;
13849     case TERNOP_IN_RANGE:
13850       break;
13851
13852     case OP_AGGREGATE:
13853     case OP_OTHERS:
13854     case OP_DISCRETE_RANGE:
13855     case OP_POSITIONAL:
13856     case OP_CHOICES:
13857       break;
13858
13859     case OP_NAME:
13860     case OP_STRING:
13861       {
13862         char *name = &exp->elts[elt + 2].string;
13863         int len = longest_to_int (exp->elts[elt + 1].longconst);
13864
13865         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13866         break;
13867       }
13868
13869     default:
13870       return dump_subexp_body_standard (exp, stream, elt);
13871     }
13872
13873   elt += oplen;
13874   for (i = 0; i < nargs; i += 1)
13875     elt = dump_subexp (exp, stream, elt);
13876
13877   return elt;
13878 }
13879
13880 /* The Ada extension of print_subexp (q.v.).  */
13881
13882 static void
13883 ada_print_subexp (struct expression *exp, int *pos,
13884                   struct ui_file *stream, enum precedence prec)
13885 {
13886   int oplen, nargs, i;
13887   int pc = *pos;
13888   enum exp_opcode op = exp->elts[pc].opcode;
13889
13890   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13891
13892   *pos += oplen;
13893   switch (op)
13894     {
13895     default:
13896       *pos -= oplen;
13897       print_subexp_standard (exp, pos, stream, prec);
13898       return;
13899
13900     case OP_VAR_VALUE:
13901       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13902       return;
13903
13904     case BINOP_IN_BOUNDS:
13905       /* XXX: sprint_subexp */
13906       print_subexp (exp, pos, stream, PREC_SUFFIX);
13907       fputs_filtered (" in ", stream);
13908       print_subexp (exp, pos, stream, PREC_SUFFIX);
13909       fputs_filtered ("'range", stream);
13910       if (exp->elts[pc + 1].longconst > 1)
13911         fprintf_filtered (stream, "(%ld)",
13912                           (long) exp->elts[pc + 1].longconst);
13913       return;
13914
13915     case TERNOP_IN_RANGE:
13916       if (prec >= PREC_EQUAL)
13917         fputs_filtered ("(", stream);
13918       /* XXX: sprint_subexp */
13919       print_subexp (exp, pos, stream, PREC_SUFFIX);
13920       fputs_filtered (" in ", stream);
13921       print_subexp (exp, pos, stream, PREC_EQUAL);
13922       fputs_filtered (" .. ", stream);
13923       print_subexp (exp, pos, stream, PREC_EQUAL);
13924       if (prec >= PREC_EQUAL)
13925         fputs_filtered (")", stream);
13926       return;
13927
13928     case OP_ATR_FIRST:
13929     case OP_ATR_LAST:
13930     case OP_ATR_LENGTH:
13931     case OP_ATR_IMAGE:
13932     case OP_ATR_MAX:
13933     case OP_ATR_MIN:
13934     case OP_ATR_MODULUS:
13935     case OP_ATR_POS:
13936     case OP_ATR_SIZE:
13937     case OP_ATR_TAG:
13938     case OP_ATR_VAL:
13939       if (exp->elts[*pos].opcode == OP_TYPE)
13940         {
13941           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13942             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13943                            &type_print_raw_options);
13944           *pos += 3;
13945         }
13946       else
13947         print_subexp (exp, pos, stream, PREC_SUFFIX);
13948       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13949       if (nargs > 1)
13950         {
13951           int tem;
13952
13953           for (tem = 1; tem < nargs; tem += 1)
13954             {
13955               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13956               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13957             }
13958           fputs_filtered (")", stream);
13959         }
13960       return;
13961
13962     case UNOP_QUAL:
13963       type_print (exp->elts[pc + 1].type, "", stream, 0);
13964       fputs_filtered ("'(", stream);
13965       print_subexp (exp, pos, stream, PREC_PREFIX);
13966       fputs_filtered (")", stream);
13967       return;
13968
13969     case UNOP_IN_RANGE:
13970       /* XXX: sprint_subexp */
13971       print_subexp (exp, pos, stream, PREC_SUFFIX);
13972       fputs_filtered (" in ", stream);
13973       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13974                      &type_print_raw_options);
13975       return;
13976
13977     case OP_DISCRETE_RANGE:
13978       print_subexp (exp, pos, stream, PREC_SUFFIX);
13979       fputs_filtered ("..", stream);
13980       print_subexp (exp, pos, stream, PREC_SUFFIX);
13981       return;
13982
13983     case OP_OTHERS:
13984       fputs_filtered ("others => ", stream);
13985       print_subexp (exp, pos, stream, PREC_SUFFIX);
13986       return;
13987
13988     case OP_CHOICES:
13989       for (i = 0; i < nargs-1; i += 1)
13990         {
13991           if (i > 0)
13992             fputs_filtered ("|", stream);
13993           print_subexp (exp, pos, stream, PREC_SUFFIX);
13994         }
13995       fputs_filtered (" => ", stream);
13996       print_subexp (exp, pos, stream, PREC_SUFFIX);
13997       return;
13998       
13999     case OP_POSITIONAL:
14000       print_subexp (exp, pos, stream, PREC_SUFFIX);
14001       return;
14002
14003     case OP_AGGREGATE:
14004       fputs_filtered ("(", stream);
14005       for (i = 0; i < nargs; i += 1)
14006         {
14007           if (i > 0)
14008             fputs_filtered (", ", stream);
14009           print_subexp (exp, pos, stream, PREC_SUFFIX);
14010         }
14011       fputs_filtered (")", stream);
14012       return;
14013     }
14014 }
14015
14016 /* Table mapping opcodes into strings for printing operators
14017    and precedences of the operators.  */
14018
14019 static const struct op_print ada_op_print_tab[] = {
14020   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14021   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14022   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14023   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14024   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14025   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14026   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14027   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14028   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14029   {">=", BINOP_GEQ, PREC_ORDER, 0},
14030   {">", BINOP_GTR, PREC_ORDER, 0},
14031   {"<", BINOP_LESS, PREC_ORDER, 0},
14032   {">>", BINOP_RSH, PREC_SHIFT, 0},
14033   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14034   {"+", BINOP_ADD, PREC_ADD, 0},
14035   {"-", BINOP_SUB, PREC_ADD, 0},
14036   {"&", BINOP_CONCAT, PREC_ADD, 0},
14037   {"*", BINOP_MUL, PREC_MUL, 0},
14038   {"/", BINOP_DIV, PREC_MUL, 0},
14039   {"rem", BINOP_REM, PREC_MUL, 0},
14040   {"mod", BINOP_MOD, PREC_MUL, 0},
14041   {"**", BINOP_EXP, PREC_REPEAT, 0},
14042   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14043   {"-", UNOP_NEG, PREC_PREFIX, 0},
14044   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14045   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14046   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14047   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14048   {".all", UNOP_IND, PREC_SUFFIX, 1},
14049   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14050   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14051   {NULL, OP_NULL, PREC_SUFFIX, 0}
14052 };
14053 \f
14054 enum ada_primitive_types {
14055   ada_primitive_type_int,
14056   ada_primitive_type_long,
14057   ada_primitive_type_short,
14058   ada_primitive_type_char,
14059   ada_primitive_type_float,
14060   ada_primitive_type_double,
14061   ada_primitive_type_void,
14062   ada_primitive_type_long_long,
14063   ada_primitive_type_long_double,
14064   ada_primitive_type_natural,
14065   ada_primitive_type_positive,
14066   ada_primitive_type_system_address,
14067   ada_primitive_type_storage_offset,
14068   nr_ada_primitive_types
14069 };
14070
14071 static void
14072 ada_language_arch_info (struct gdbarch *gdbarch,
14073                         struct language_arch_info *lai)
14074 {
14075   const struct builtin_type *builtin = builtin_type (gdbarch);
14076
14077   lai->primitive_type_vector
14078     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14079                               struct type *);
14080
14081   lai->primitive_type_vector [ada_primitive_type_int]
14082     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14083                          0, "integer");
14084   lai->primitive_type_vector [ada_primitive_type_long]
14085     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14086                          0, "long_integer");
14087   lai->primitive_type_vector [ada_primitive_type_short]
14088     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14089                          0, "short_integer");
14090   lai->string_char_type
14091     = lai->primitive_type_vector [ada_primitive_type_char]
14092     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14093   lai->primitive_type_vector [ada_primitive_type_float]
14094     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14095                        "float", gdbarch_float_format (gdbarch));
14096   lai->primitive_type_vector [ada_primitive_type_double]
14097     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14098                        "long_float", gdbarch_double_format (gdbarch));
14099   lai->primitive_type_vector [ada_primitive_type_long_long]
14100     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14101                          0, "long_long_integer");
14102   lai->primitive_type_vector [ada_primitive_type_long_double]
14103     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14104                        "long_long_float", gdbarch_long_double_format (gdbarch));
14105   lai->primitive_type_vector [ada_primitive_type_natural]
14106     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14107                          0, "natural");
14108   lai->primitive_type_vector [ada_primitive_type_positive]
14109     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14110                          0, "positive");
14111   lai->primitive_type_vector [ada_primitive_type_void]
14112     = builtin->builtin_void;
14113
14114   lai->primitive_type_vector [ada_primitive_type_system_address]
14115     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14116                                       "void"));
14117   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14118     = "system__address";
14119
14120   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14121      type.  This is a signed integral type whose size is the same as
14122      the size of addresses.  */
14123   {
14124     unsigned int addr_length = TYPE_LENGTH
14125       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14126
14127     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14128       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14129                            "storage_offset");
14130   }
14131
14132   lai->bool_type_symbol = NULL;
14133   lai->bool_type_default = builtin->builtin_bool;
14134 }
14135 \f
14136                                 /* Language vector */
14137
14138 /* Not really used, but needed in the ada_language_defn.  */
14139
14140 static void
14141 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14142 {
14143   ada_emit_char (c, type, stream, quoter, 1);
14144 }
14145
14146 static int
14147 parse (struct parser_state *ps)
14148 {
14149   warnings_issued = 0;
14150   return ada_parse (ps);
14151 }
14152
14153 static const struct exp_descriptor ada_exp_descriptor = {
14154   ada_print_subexp,
14155   ada_operator_length,
14156   ada_operator_check,
14157   ada_op_name,
14158   ada_dump_subexp_body,
14159   ada_evaluate_subexp
14160 };
14161
14162 /* symbol_name_matcher_ftype adapter for wild_match.  */
14163
14164 static bool
14165 do_wild_match (const char *symbol_search_name,
14166                const lookup_name_info &lookup_name,
14167                completion_match_result *comp_match_res)
14168 {
14169   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14170 }
14171
14172 /* symbol_name_matcher_ftype adapter for full_match.  */
14173
14174 static bool
14175 do_full_match (const char *symbol_search_name,
14176                const lookup_name_info &lookup_name,
14177                completion_match_result *comp_match_res)
14178 {
14179   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14180 }
14181
14182 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
14183
14184 static bool
14185 do_exact_match (const char *symbol_search_name,
14186                 const lookup_name_info &lookup_name,
14187                 completion_match_result *comp_match_res)
14188 {
14189   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14190 }
14191
14192 /* Build the Ada lookup name for LOOKUP_NAME.  */
14193
14194 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14195 {
14196   const std::string &user_name = lookup_name.name ();
14197
14198   if (user_name[0] == '<')
14199     {
14200       if (user_name.back () == '>')
14201         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14202       else
14203         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14204       m_encoded_p = true;
14205       m_verbatim_p = true;
14206       m_wild_match_p = false;
14207       m_standard_p = false;
14208     }
14209   else
14210     {
14211       m_verbatim_p = false;
14212
14213       m_encoded_p = user_name.find ("__") != std::string::npos;
14214
14215       if (!m_encoded_p)
14216         {
14217           const char *folded = ada_fold_name (user_name.c_str ());
14218           const char *encoded = ada_encode_1 (folded, false);
14219           if (encoded != NULL)
14220             m_encoded_name = encoded;
14221           else
14222             m_encoded_name = user_name;
14223         }
14224       else
14225         m_encoded_name = user_name;
14226
14227       /* Handle the 'package Standard' special case.  See description
14228          of m_standard_p.  */
14229       if (startswith (m_encoded_name.c_str (), "standard__"))
14230         {
14231           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14232           m_standard_p = true;
14233         }
14234       else
14235         m_standard_p = false;
14236
14237       /* If the name contains a ".", then the user is entering a fully
14238          qualified entity name, and the match must not be done in wild
14239          mode.  Similarly, if the user wants to complete what looks
14240          like an encoded name, the match must not be done in wild
14241          mode.  Also, in the standard__ special case always do
14242          non-wild matching.  */
14243       m_wild_match_p
14244         = (lookup_name.match_type () != symbol_name_match_type::FULL
14245            && !m_encoded_p
14246            && !m_standard_p
14247            && user_name.find ('.') == std::string::npos);
14248     }
14249 }
14250
14251 /* symbol_name_matcher_ftype method for Ada.  This only handles
14252    completion mode.  */
14253
14254 static bool
14255 ada_symbol_name_matches (const char *symbol_search_name,
14256                          const lookup_name_info &lookup_name,
14257                          completion_match_result *comp_match_res)
14258 {
14259   return lookup_name.ada ().matches (symbol_search_name,
14260                                      lookup_name.match_type (),
14261                                      comp_match_res);
14262 }
14263
14264 /* A name matcher that matches the symbol name exactly, with
14265    strcmp.  */
14266
14267 static bool
14268 literal_symbol_name_matcher (const char *symbol_search_name,
14269                              const lookup_name_info &lookup_name,
14270                              completion_match_result *comp_match_res)
14271 {
14272   const std::string &name = lookup_name.name ();
14273
14274   int cmp = (lookup_name.completion_mode ()
14275              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14276              : strcmp (symbol_search_name, name.c_str ()));
14277   if (cmp == 0)
14278     {
14279       if (comp_match_res != NULL)
14280         comp_match_res->set_match (symbol_search_name);
14281       return true;
14282     }
14283   else
14284     return false;
14285 }
14286
14287 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14288    Ada.  */
14289
14290 static symbol_name_matcher_ftype *
14291 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14292 {
14293   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14294     return literal_symbol_name_matcher;
14295
14296   if (lookup_name.completion_mode ())
14297     return ada_symbol_name_matches;
14298   else
14299     {
14300       if (lookup_name.ada ().wild_match_p ())
14301         return do_wild_match;
14302       else if (lookup_name.ada ().verbatim_p ())
14303         return do_exact_match;
14304       else
14305         return do_full_match;
14306     }
14307 }
14308
14309 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14310
14311 static struct value *
14312 ada_read_var_value (struct symbol *var, const struct block *var_block,
14313                     struct frame_info *frame)
14314 {
14315   const struct block *frame_block = NULL;
14316   struct symbol *renaming_sym = NULL;
14317
14318   /* The only case where default_read_var_value is not sufficient
14319      is when VAR is a renaming...  */
14320   if (frame)
14321     frame_block = get_frame_block (frame, NULL);
14322   if (frame_block)
14323     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14324   if (renaming_sym != NULL)
14325     return ada_read_renaming_var_value (renaming_sym, frame_block);
14326
14327   /* This is a typical case where we expect the default_read_var_value
14328      function to work.  */
14329   return default_read_var_value (var, var_block, frame);
14330 }
14331
14332 static const char *ada_extensions[] =
14333 {
14334   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14335 };
14336
14337 extern const struct language_defn ada_language_defn = {
14338   "ada",                        /* Language name */
14339   "Ada",
14340   language_ada,
14341   range_check_off,
14342   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14343                                    that's not quite what this means.  */
14344   array_row_major,
14345   macro_expansion_no,
14346   ada_extensions,
14347   &ada_exp_descriptor,
14348   parse,
14349   resolve,
14350   ada_printchar,                /* Print a character constant */
14351   ada_printstr,                 /* Function to print string constant */
14352   emit_char,                    /* Function to print single char (not used) */
14353   ada_print_type,               /* Print a type using appropriate syntax */
14354   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14355   ada_val_print,                /* Print a value using appropriate syntax */
14356   ada_value_print,              /* Print a top-level value */
14357   ada_read_var_value,           /* la_read_var_value */
14358   NULL,                         /* Language specific skip_trampoline */
14359   NULL,                         /* name_of_this */
14360   true,                         /* la_store_sym_names_in_linkage_form_p */
14361   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14362   basic_lookup_transparent_type,        /* lookup_transparent_type */
14363   ada_la_decode,                /* Language specific symbol demangler */
14364   ada_sniff_from_mangled_name,
14365   NULL,                         /* Language specific
14366                                    class_name_from_physname */
14367   ada_op_print_tab,             /* expression operators for printing */
14368   0,                            /* c-style arrays */
14369   1,                            /* String lower bound */
14370   ada_get_gdb_completer_word_break_characters,
14371   ada_collect_symbol_completion_matches,
14372   ada_language_arch_info,
14373   ada_print_array_index,
14374   default_pass_by_reference,
14375   c_get_string,
14376   ada_watch_location_expression,
14377   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14378   ada_iterate_over_symbols,
14379   default_search_name_hash,
14380   &ada_varobj_ops,
14381   NULL,
14382   NULL,
14383   LANG_MAGIC
14384 };
14385
14386 /* Command-list for the "set/show ada" prefix command.  */
14387 static struct cmd_list_element *set_ada_list;
14388 static struct cmd_list_element *show_ada_list;
14389
14390 /* Implement the "set ada" prefix command.  */
14391
14392 static void
14393 set_ada_command (const char *arg, int from_tty)
14394 {
14395   printf_unfiltered (_(\
14396 "\"set ada\" must be followed by the name of a setting.\n"));
14397   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14398 }
14399
14400 /* Implement the "show ada" prefix command.  */
14401
14402 static void
14403 show_ada_command (const char *args, int from_tty)
14404 {
14405   cmd_show_list (show_ada_list, from_tty, "");
14406 }
14407
14408 static void
14409 initialize_ada_catchpoint_ops (void)
14410 {
14411   struct breakpoint_ops *ops;
14412
14413   initialize_breakpoint_ops ();
14414
14415   ops = &catch_exception_breakpoint_ops;
14416   *ops = bkpt_breakpoint_ops;
14417   ops->allocate_location = allocate_location_catch_exception;
14418   ops->re_set = re_set_catch_exception;
14419   ops->check_status = check_status_catch_exception;
14420   ops->print_it = print_it_catch_exception;
14421   ops->print_one = print_one_catch_exception;
14422   ops->print_mention = print_mention_catch_exception;
14423   ops->print_recreate = print_recreate_catch_exception;
14424
14425   ops = &catch_exception_unhandled_breakpoint_ops;
14426   *ops = bkpt_breakpoint_ops;
14427   ops->allocate_location = allocate_location_catch_exception_unhandled;
14428   ops->re_set = re_set_catch_exception_unhandled;
14429   ops->check_status = check_status_catch_exception_unhandled;
14430   ops->print_it = print_it_catch_exception_unhandled;
14431   ops->print_one = print_one_catch_exception_unhandled;
14432   ops->print_mention = print_mention_catch_exception_unhandled;
14433   ops->print_recreate = print_recreate_catch_exception_unhandled;
14434
14435   ops = &catch_assert_breakpoint_ops;
14436   *ops = bkpt_breakpoint_ops;
14437   ops->allocate_location = allocate_location_catch_assert;
14438   ops->re_set = re_set_catch_assert;
14439   ops->check_status = check_status_catch_assert;
14440   ops->print_it = print_it_catch_assert;
14441   ops->print_one = print_one_catch_assert;
14442   ops->print_mention = print_mention_catch_assert;
14443   ops->print_recreate = print_recreate_catch_assert;
14444
14445   ops = &catch_handlers_breakpoint_ops;
14446   *ops = bkpt_breakpoint_ops;
14447   ops->allocate_location = allocate_location_catch_handlers;
14448   ops->re_set = re_set_catch_handlers;
14449   ops->check_status = check_status_catch_handlers;
14450   ops->print_it = print_it_catch_handlers;
14451   ops->print_one = print_one_catch_handlers;
14452   ops->print_mention = print_mention_catch_handlers;
14453   ops->print_recreate = print_recreate_catch_handlers;
14454 }
14455
14456 /* This module's 'new_objfile' observer.  */
14457
14458 static void
14459 ada_new_objfile_observer (struct objfile *objfile)
14460 {
14461   ada_clear_symbol_cache ();
14462 }
14463
14464 /* This module's 'free_objfile' observer.  */
14465
14466 static void
14467 ada_free_objfile_observer (struct objfile *objfile)
14468 {
14469   ada_clear_symbol_cache ();
14470 }
14471
14472 void
14473 _initialize_ada_language (void)
14474 {
14475   initialize_ada_catchpoint_ops ();
14476
14477   add_prefix_cmd ("ada", no_class, set_ada_command,
14478                   _("Prefix command for changing Ada-specific settings"),
14479                   &set_ada_list, "set ada ", 0, &setlist);
14480
14481   add_prefix_cmd ("ada", no_class, show_ada_command,
14482                   _("Generic command for showing Ada-specific settings."),
14483                   &show_ada_list, "show ada ", 0, &showlist);
14484
14485   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14486                            &trust_pad_over_xvs, _("\
14487 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14488 Show whether an optimization trusting PAD types over XVS types is activated"),
14489                            _("\
14490 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14491 should normally trust the contents of PAD types, but certain older versions\n\
14492 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14493 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14494 work around this bug.  It is always safe to turn this option \"off\", but\n\
14495 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14496 this option to \"off\" unless necessary."),
14497                             NULL, NULL, &set_ada_list, &show_ada_list);
14498
14499   add_setshow_boolean_cmd ("print-signatures", class_vars,
14500                            &print_signatures, _("\
14501 Enable or disable the output of formal and return types for functions in the \
14502 overloads selection menu"), _("\
14503 Show whether the output of formal and return types for functions in the \
14504 overloads selection menu is activated"),
14505                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14506
14507   add_catch_command ("exception", _("\
14508 Catch Ada exceptions, when raised.\n\
14509 Usage: catch exception [ ARG ]\n\
14510 \n\
14511 Without any argument, stop when any Ada exception is raised.\n\
14512 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14513 being raised does not have a handler (and will therefore lead to the task's\n\
14514 termination).\n\
14515 Otherwise, the catchpoint only stops when the name of the exception being\n\
14516 raised is the same as ARG."),
14517                      catch_ada_exception_command,
14518                      NULL,
14519                      CATCH_PERMANENT,
14520                      CATCH_TEMPORARY);
14521
14522   add_catch_command ("handlers", _("\
14523 Catch Ada exceptions, when handled.\n\
14524 With an argument, catch only exceptions with the given name."),
14525                      catch_ada_handlers_command,
14526                      NULL,
14527                      CATCH_PERMANENT,
14528                      CATCH_TEMPORARY);
14529   add_catch_command ("assert", _("\
14530 Catch failed Ada assertions, when raised.\n\
14531 With an argument, catch only exceptions with the given name."),
14532                      catch_assert_command,
14533                      NULL,
14534                      CATCH_PERMANENT,
14535                      CATCH_TEMPORARY);
14536
14537   varsize_limit = 65536;
14538   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14539                             &varsize_limit, _("\
14540 Set the maximum number of bytes allowed in a variable-size object."), _("\
14541 Show the maximum number of bytes allowed in a variable-size object."), _("\
14542 Attempts to access an object whose size is not a compile-time constant\n\
14543 and exceeds this limit will cause an error."),
14544                             NULL, NULL, &setlist, &showlist);
14545
14546   add_info ("exceptions", info_exceptions_command,
14547             _("\
14548 List all Ada exception names.\n\
14549 If a regular expression is passed as an argument, only those matching\n\
14550 the regular expression are listed."));
14551
14552   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14553                   _("Set Ada maintenance-related variables."),
14554                   &maint_set_ada_cmdlist, "maintenance set ada ",
14555                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14556
14557   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14558                   _("Show Ada maintenance-related variables"),
14559                   &maint_show_ada_cmdlist, "maintenance show ada ",
14560                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14561
14562   add_setshow_boolean_cmd
14563     ("ignore-descriptive-types", class_maintenance,
14564      &ada_ignore_descriptive_types_p,
14565      _("Set whether descriptive types generated by GNAT should be ignored."),
14566      _("Show whether descriptive types generated by GNAT should be ignored."),
14567      _("\
14568 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14569 DWARF attribute."),
14570      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14571
14572   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14573                                            NULL, xcalloc, xfree);
14574
14575   /* The ada-lang observers.  */
14576   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14577   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14578   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14579
14580   /* Setup various context-specific data.  */
14581   ada_inferior_data
14582     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14583   ada_pspace_data_handle
14584     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14585 }