(Ada) New function ada_is_access_to_unconstrained_array
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2018 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 "vec.h"
53 #include "stack.h"
54 #include "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 void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196                                                 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217                                        domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220                                               struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223                                                 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226                               struct type **, int *, int *, int *, int *);
227
228 static int ada_resolve_function (struct block_symbol *, int,
229                                  struct value **, int, const char *,
230                                  struct type *);
231
232 static int ada_is_direct_array_type (struct type *);
233
234 static void ada_language_arch_info (struct gdbarch *,
235                                     struct language_arch_info *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238                                              struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *, 
241                                        struct expression *,
242                                        int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *, 
245                                            struct expression *,
246                                            int *, LONGEST *, int *,
247                                            int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250                                          struct expression *,
251                                          int *, LONGEST *, int *, int,
252                                          LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256                                      struct expression *,
257                                      int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264                                           int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267                                          int *);
268
269 static struct type *ada_find_any_type (const char *name);
270
271 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
272   (const lookup_name_info &lookup_name);
273
274 \f
275
276 /* The result of a symbol lookup to be stored in our symbol cache.  */
277
278 struct cache_entry
279 {
280   /* The name used to perform the lookup.  */
281   const char *name;
282   /* The namespace used during the lookup.  */
283   domain_enum domain;
284   /* The symbol returned by the lookup, or NULL if no matching symbol
285      was found.  */
286   struct symbol *sym;
287   /* The block where the symbol was found, or NULL if no matching
288      symbol was found.  */
289   const struct block *block;
290   /* A pointer to the next entry with the same hash.  */
291   struct cache_entry *next;
292 };
293
294 /* The Ada symbol cache, used to store the result of Ada-mode symbol
295    lookups in the course of executing the user's commands.
296
297    The cache is implemented using a simple, fixed-sized hash.
298    The size is fixed on the grounds that there are not likely to be
299    all that many symbols looked up during any given session, regardless
300    of the size of the symbol table.  If we decide to go to a resizable
301    table, let's just use the stuff from libiberty instead.  */
302
303 #define HASH_SIZE 1009
304
305 struct ada_symbol_cache
306 {
307   /* An obstack used to store the entries in our cache.  */
308   struct obstack cache_space;
309
310   /* The root of the hash table used to implement our symbol cache.  */
311   struct cache_entry *root[HASH_SIZE];
312 };
313
314 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
315
316 /* Maximum-sized dynamic type.  */
317 static unsigned int varsize_limit;
318
319 static const char ada_completer_word_break_characters[] =
320 #ifdef VMS
321   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram.  */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328   = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation.  */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334    expression evaluation.  */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Maintenance-related settings for this module.  */
346
347 static struct cmd_list_element *maint_set_ada_cmdlist;
348 static struct cmd_list_element *maint_show_ada_cmdlist;
349
350 /* Implement the "maintenance set ada" (prefix) command.  */
351
352 static void
353 maint_set_ada_cmd (const char *args, int from_tty)
354 {
355   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
356              gdb_stdout);
357 }
358
359 /* Implement the "maintenance show ada" (prefix) command.  */
360
361 static void
362 maint_show_ada_cmd (const char *args, int from_tty)
363 {
364   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
365 }
366
367 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
368
369 static int ada_ignore_descriptive_types_p = 0;
370
371                         /* Inferior-specific data.  */
372
373 /* Per-inferior data for this module.  */
374
375 struct ada_inferior_data
376 {
377   /* The ada__tags__type_specific_data type, which is used when decoding
378      tagged types.  With older versions of GNAT, this type was directly
379      accessible through a component ("tsd") in the object tag.  But this
380      is no longer the case, so we cache it for each inferior.  */
381   struct type *tsd_type;
382
383   /* The exception_support_info data.  This data is used to determine
384      how to implement support for Ada exception catchpoints in a given
385      inferior.  */
386   const struct exception_support_info *exception_info;
387 };
388
389 /* Our key to this module's inferior data.  */
390 static const struct inferior_data *ada_inferior_data;
391
392 /* A cleanup routine for our inferior data.  */
393 static void
394 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
395 {
396   struct ada_inferior_data *data;
397
398   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
399   if (data != NULL)
400     xfree (data);
401 }
402
403 /* Return our inferior data for the given inferior (INF).
404
405    This function always returns a valid pointer to an allocated
406    ada_inferior_data structure.  If INF's inferior data has not
407    been previously set, this functions creates a new one with all
408    fields set to zero, sets INF's inferior to it, and then returns
409    a pointer to that newly allocated ada_inferior_data.  */
410
411 static struct ada_inferior_data *
412 get_ada_inferior_data (struct inferior *inf)
413 {
414   struct ada_inferior_data *data;
415
416   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
417   if (data == NULL)
418     {
419       data = XCNEW (struct ada_inferior_data);
420       set_inferior_data (inf, ada_inferior_data, data);
421     }
422
423   return data;
424 }
425
426 /* Perform all necessary cleanups regarding our module's inferior data
427    that is required after the inferior INF just exited.  */
428
429 static void
430 ada_inferior_exit (struct inferior *inf)
431 {
432   ada_inferior_data_cleanup (inf, NULL);
433   set_inferior_data (inf, ada_inferior_data, NULL);
434 }
435
436
437                         /* program-space-specific data.  */
438
439 /* This module's per-program-space data.  */
440 struct ada_pspace_data
441 {
442   /* The Ada symbol cache.  */
443   struct ada_symbol_cache *sym_cache;
444 };
445
446 /* Key to our per-program-space data.  */
447 static const struct program_space_data *ada_pspace_data_handle;
448
449 /* Return this module's data for the given program space (PSPACE).
450    If not is found, add a zero'ed one now.
451
452    This function always returns a valid object.  */
453
454 static struct ada_pspace_data *
455 get_ada_pspace_data (struct program_space *pspace)
456 {
457   struct ada_pspace_data *data;
458
459   data = ((struct ada_pspace_data *)
460           program_space_data (pspace, ada_pspace_data_handle));
461   if (data == NULL)
462     {
463       data = XCNEW (struct ada_pspace_data);
464       set_program_space_data (pspace, ada_pspace_data_handle, data);
465     }
466
467   return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data.  */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
476
477   if (pspace_data->sym_cache != NULL)
478     ada_free_symbol_cache (pspace_data->sym_cache);
479   xfree (pspace_data);
480 }
481
482                         /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485    all typedef layers have been peeled.  Otherwise, return TYPE.
486
487    Normally, we really expect a typedef type to only have 1 typedef layer.
488    In other words, we really expect the target type of a typedef type to be
489    a non-typedef type.  This is particularly true for Ada units, because
490    the language does not have a typedef vs not-typedef distinction.
491    In that respect, the Ada compiler has been trying to eliminate as many
492    typedef definitions in the debugging information, since they generally
493    do not bring any extra information (we still use typedef under certain
494    circumstances related mostly to the GNAT encoding).
495
496    Unfortunately, we have seen situations where the debugging information
497    generated by the compiler leads to such multiple typedef layers.  For
498    instance, consider the following example with stabs:
499
500      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503    This is an error in the debugging information which causes type
504    pck__float_array___XUP to be defined twice, and the second time,
505    it is defined as a typedef of a typedef.
506
507    This is on the fringe of legality as far as debugging information is
508    concerned, and certainly unexpected.  But it is easy to handle these
509    situations correctly, so we can afford to be lenient in this case.  */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515     type = TYPE_TARGET_TYPE (type);
516   return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520    decoded form (ie using the Ada dotted notation), returns
521    its unqualified name.  */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526   const char *result;
527   
528   /* If the decoded name starts with '<', it means that the encoded
529      name does not follow standard naming conventions, and thus that
530      it is not your typical Ada symbol name.  Trying to unqualify it
531      is therefore pointless and possibly erroneous.  */
532   if (decoded_name[0] == '<')
533     return decoded_name;
534
535   result = strrchr (decoded_name, '.');
536   if (result != NULL)
537     result++;                   /* Skip the dot...  */
538   else
539     result = decoded_name;
540
541   return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'.  */
545
546 static std::string
547 add_angle_brackets (const char *str)
548 {
549   return string_printf ("<%s>", str);
550 }
551
552 static const char *
553 ada_get_gdb_completer_word_break_characters (void)
554 {
555   return ada_completer_word_break_characters;
556 }
557
558 /* Print an array element index using the Ada syntax.  */
559
560 static void
561 ada_print_array_index (struct value *index_value, struct ui_file *stream,
562                        const struct value_print_options *options)
563 {
564   LA_VALUE_PRINT (index_value, stream, options);
565   fprintf_filtered (stream, " => ");
566 }
567
568 /* Assuming VECT points to an array of *SIZE objects of size
569    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
570    updating *SIZE as necessary and returning the (new) array.  */
571
572 void *
573 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
574 {
575   if (*size < min_size)
576     {
577       *size *= 2;
578       if (*size < min_size)
579         *size = min_size;
580       vect = xrealloc (vect, *size * element_size);
581     }
582   return vect;
583 }
584
585 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
586    suffix of FIELD_NAME beginning "___".  */
587
588 static int
589 field_name_match (const char *field_name, const char *target)
590 {
591   int len = strlen (target);
592
593   return
594     (strncmp (field_name, target, len) == 0
595      && (field_name[len] == '\0'
596          || (startswith (field_name + len, "___")
597              && strcmp (field_name + strlen (field_name) - 6,
598                         "___XVN") != 0)));
599 }
600
601
602 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
603    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
604    and return its index.  This function also handles fields whose name
605    have ___ suffixes because the compiler sometimes alters their name
606    by adding such a suffix to represent fields with certain constraints.
607    If the field could not be found, return a negative number if
608    MAYBE_MISSING is set.  Otherwise raise an error.  */
609
610 int
611 ada_get_field_index (const struct type *type, const char *field_name,
612                      int maybe_missing)
613 {
614   int fieldno;
615   struct type *struct_type = check_typedef ((struct type *) type);
616
617   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
618     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
619       return fieldno;
620
621   if (!maybe_missing)
622     error (_("Unable to find field %s in struct %s.  Aborting"),
623            field_name, TYPE_NAME (struct_type));
624
625   return -1;
626 }
627
628 /* The length of the prefix of NAME prior to any "___" suffix.  */
629
630 int
631 ada_name_prefix_len (const char *name)
632 {
633   if (name == NULL)
634     return 0;
635   else
636     {
637       const char *p = strstr (name, "___");
638
639       if (p == NULL)
640         return strlen (name);
641       else
642         return p - name;
643     }
644 }
645
646 /* Return non-zero if SUFFIX is a suffix of STR.
647    Return zero if STR is null.  */
648
649 static int
650 is_suffix (const char *str, const char *suffix)
651 {
652   int len1, len2;
653
654   if (str == NULL)
655     return 0;
656   len1 = strlen (str);
657   len2 = strlen (suffix);
658   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
659 }
660
661 /* The contents of value VAL, treated as a value of type TYPE.  The
662    result is an lval in memory if VAL is.  */
663
664 static struct value *
665 coerce_unspec_val_to_type (struct value *val, struct type *type)
666 {
667   type = ada_check_typedef (type);
668   if (value_type (val) == type)
669     return val;
670   else
671     {
672       struct value *result;
673
674       /* Make sure that the object size is not unreasonable before
675          trying to allocate some memory for it.  */
676       ada_ensure_varsize_limit (type);
677
678       if (value_lazy (val)
679           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
680         result = allocate_value_lazy (type);
681       else
682         {
683           result = allocate_value (type);
684           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
685         }
686       set_value_component_location (result, val);
687       set_value_bitsize (result, value_bitsize (val));
688       set_value_bitpos (result, value_bitpos (val));
689       set_value_address (result, value_address (val));
690       return result;
691     }
692 }
693
694 static const gdb_byte *
695 cond_offset_host (const gdb_byte *valaddr, long offset)
696 {
697   if (valaddr == NULL)
698     return NULL;
699   else
700     return valaddr + offset;
701 }
702
703 static CORE_ADDR
704 cond_offset_target (CORE_ADDR address, long offset)
705 {
706   if (address == 0)
707     return 0;
708   else
709     return address + offset;
710 }
711
712 /* Issue a warning (as for the definition of warning in utils.c, but
713    with exactly one argument rather than ...), unless the limit on the
714    number of warnings has passed during the evaluation of the current
715    expression.  */
716
717 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
718    provided by "complaint".  */
719 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
720
721 static void
722 lim_warning (const char *format, ...)
723 {
724   va_list args;
725
726   va_start (args, format);
727   warnings_issued += 1;
728   if (warnings_issued <= warning_limit)
729     vwarning (format, args);
730
731   va_end (args);
732 }
733
734 /* Issue an error if the size of an object of type T is unreasonable,
735    i.e. if it would be a bad idea to allocate a value of this type in
736    GDB.  */
737
738 void
739 ada_ensure_varsize_limit (const struct type *type)
740 {
741   if (TYPE_LENGTH (type) > varsize_limit)
742     error (_("object size is larger than varsize-limit"));
743 }
744
745 /* Maximum value of a SIZE-byte signed integer type.  */
746 static LONGEST
747 max_of_size (int size)
748 {
749   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
750
751   return top_bit | (top_bit - 1);
752 }
753
754 /* Minimum value of a SIZE-byte signed integer type.  */
755 static LONGEST
756 min_of_size (int size)
757 {
758   return -max_of_size (size) - 1;
759 }
760
761 /* Maximum value of a SIZE-byte unsigned integer type.  */
762 static ULONGEST
763 umax_of_size (int size)
764 {
765   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
766
767   return top_bit | (top_bit - 1);
768 }
769
770 /* Maximum value of integral type T, as a signed quantity.  */
771 static LONGEST
772 max_of_type (struct type *t)
773 {
774   if (TYPE_UNSIGNED (t))
775     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
776   else
777     return max_of_size (TYPE_LENGTH (t));
778 }
779
780 /* Minimum value of integral type T, as a signed quantity.  */
781 static LONGEST
782 min_of_type (struct type *t)
783 {
784   if (TYPE_UNSIGNED (t)) 
785     return 0;
786   else
787     return min_of_size (TYPE_LENGTH (t));
788 }
789
790 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
791 LONGEST
792 ada_discrete_type_high_bound (struct type *type)
793 {
794   type = resolve_dynamic_type (type, NULL, 0);
795   switch (TYPE_CODE (type))
796     {
797     case TYPE_CODE_RANGE:
798       return TYPE_HIGH_BOUND (type);
799     case TYPE_CODE_ENUM:
800       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
801     case TYPE_CODE_BOOL:
802       return 1;
803     case TYPE_CODE_CHAR:
804     case TYPE_CODE_INT:
805       return max_of_type (type);
806     default:
807       error (_("Unexpected type in ada_discrete_type_high_bound."));
808     }
809 }
810
811 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
812 LONGEST
813 ada_discrete_type_low_bound (struct type *type)
814 {
815   type = resolve_dynamic_type (type, NULL, 0);
816   switch (TYPE_CODE (type))
817     {
818     case TYPE_CODE_RANGE:
819       return TYPE_LOW_BOUND (type);
820     case TYPE_CODE_ENUM:
821       return TYPE_FIELD_ENUMVAL (type, 0);
822     case TYPE_CODE_BOOL:
823       return 0;
824     case TYPE_CODE_CHAR:
825     case TYPE_CODE_INT:
826       return min_of_type (type);
827     default:
828       error (_("Unexpected type in ada_discrete_type_low_bound."));
829     }
830 }
831
832 /* The identity on non-range types.  For range types, the underlying
833    non-range scalar type.  */
834
835 static struct type *
836 get_base_type (struct type *type)
837 {
838   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
839     {
840       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
841         return type;
842       type = TYPE_TARGET_TYPE (type);
843     }
844   return type;
845 }
846
847 /* Return a decoded version of the given VALUE.  This means returning
848    a value whose type is obtained by applying all the GNAT-specific
849    encondings, making the resulting type a static but standard description
850    of the initial type.  */
851
852 struct value *
853 ada_get_decoded_value (struct value *value)
854 {
855   struct type *type = ada_check_typedef (value_type (value));
856
857   if (ada_is_array_descriptor_type (type)
858       || (ada_is_constrained_packed_array_type (type)
859           && TYPE_CODE (type) != TYPE_CODE_PTR))
860     {
861       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
862         value = ada_coerce_to_simple_array_ptr (value);
863       else
864         value = ada_coerce_to_simple_array (value);
865     }
866   else
867     value = ada_to_fixed_value (value);
868
869   return value;
870 }
871
872 /* Same as ada_get_decoded_value, but with the given TYPE.
873    Because there is no associated actual value for this type,
874    the resulting type might be a best-effort approximation in
875    the case of dynamic types.  */
876
877 struct type *
878 ada_get_decoded_type (struct type *type)
879 {
880   type = to_static_fixed_type (type);
881   if (ada_is_constrained_packed_array_type (type))
882     type = ada_coerce_to_simple_array_type (type);
883   return type;
884 }
885
886 \f
887
888                                 /* Language Selection */
889
890 /* If the main program is in Ada, return language_ada, otherwise return LANG
891    (the main program is in Ada iif the adainit symbol is found).  */
892
893 enum language
894 ada_update_initial_language (enum language lang)
895 {
896   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
897                              (struct objfile *) NULL).minsym != NULL)
898     return language_ada;
899
900   return lang;
901 }
902
903 /* If the main procedure is written in Ada, then return its name.
904    The result is good until the next call.  Return NULL if the main
905    procedure doesn't appear to be in Ada.  */
906
907 char *
908 ada_main_name (void)
909 {
910   struct bound_minimal_symbol msym;
911   static gdb::unique_xmalloc_ptr<char> main_program_name;
912
913   /* For Ada, the name of the main procedure is stored in a specific
914      string constant, generated by the binder.  Look for that symbol,
915      extract its address, and then read that string.  If we didn't find
916      that string, then most probably the main procedure is not written
917      in Ada.  */
918   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
919
920   if (msym.minsym != NULL)
921     {
922       CORE_ADDR main_program_name_addr;
923       int err_code;
924
925       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
926       if (main_program_name_addr == 0)
927         error (_("Invalid address for Ada main program name."));
928
929       target_read_string (main_program_name_addr, &main_program_name,
930                           1024, &err_code);
931
932       if (err_code != 0)
933         return NULL;
934       return main_program_name.get ();
935     }
936
937   /* The main procedure doesn't seem to be in Ada.  */
938   return NULL;
939 }
940 \f
941                                 /* Symbols */
942
943 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
944    of NULLs.  */
945
946 const struct ada_opname_map ada_opname_table[] = {
947   {"Oadd", "\"+\"", BINOP_ADD},
948   {"Osubtract", "\"-\"", BINOP_SUB},
949   {"Omultiply", "\"*\"", BINOP_MUL},
950   {"Odivide", "\"/\"", BINOP_DIV},
951   {"Omod", "\"mod\"", BINOP_MOD},
952   {"Orem", "\"rem\"", BINOP_REM},
953   {"Oexpon", "\"**\"", BINOP_EXP},
954   {"Olt", "\"<\"", BINOP_LESS},
955   {"Ole", "\"<=\"", BINOP_LEQ},
956   {"Ogt", "\">\"", BINOP_GTR},
957   {"Oge", "\">=\"", BINOP_GEQ},
958   {"Oeq", "\"=\"", BINOP_EQUAL},
959   {"One", "\"/=\"", BINOP_NOTEQUAL},
960   {"Oand", "\"and\"", BINOP_BITWISE_AND},
961   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
962   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
963   {"Oconcat", "\"&\"", BINOP_CONCAT},
964   {"Oabs", "\"abs\"", UNOP_ABS},
965   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
966   {"Oadd", "\"+\"", UNOP_PLUS},
967   {"Osubtract", "\"-\"", UNOP_NEG},
968   {NULL, NULL}
969 };
970
971 /* The "encoded" form of DECODED, according to GNAT conventions.  The
972    result is valid until the next call to ada_encode.  If
973    THROW_ERRORS, throw an error if invalid operator name is found.
974    Otherwise, return NULL in that case.  */
975
976 static char *
977 ada_encode_1 (const char *decoded, bool throw_errors)
978 {
979   static char *encoding_buffer = NULL;
980   static size_t encoding_buffer_size = 0;
981   const char *p;
982   int k;
983
984   if (decoded == NULL)
985     return NULL;
986
987   GROW_VECT (encoding_buffer, encoding_buffer_size,
988              2 * strlen (decoded) + 10);
989
990   k = 0;
991   for (p = decoded; *p != '\0'; p += 1)
992     {
993       if (*p == '.')
994         {
995           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
996           k += 2;
997         }
998       else if (*p == '"')
999         {
1000           const struct ada_opname_map *mapping;
1001
1002           for (mapping = ada_opname_table;
1003                mapping->encoded != NULL
1004                && !startswith (p, mapping->decoded); mapping += 1)
1005             ;
1006           if (mapping->encoded == NULL)
1007             {
1008               if (throw_errors)
1009                 error (_("invalid Ada operator name: %s"), p);
1010               else
1011                 return NULL;
1012             }
1013           strcpy (encoding_buffer + k, mapping->encoded);
1014           k += strlen (mapping->encoded);
1015           break;
1016         }
1017       else
1018         {
1019           encoding_buffer[k] = *p;
1020           k += 1;
1021         }
1022     }
1023
1024   encoding_buffer[k] = '\0';
1025   return encoding_buffer;
1026 }
1027
1028 /* The "encoded" form of DECODED, according to GNAT conventions.
1029    The result is valid until the next call to ada_encode.  */
1030
1031 char *
1032 ada_encode (const char *decoded)
1033 {
1034   return ada_encode_1 (decoded, true);
1035 }
1036
1037 /* Return NAME folded to lower case, or, if surrounded by single
1038    quotes, unfolded, but with the quotes stripped away.  Result good
1039    to next call.  */
1040
1041 char *
1042 ada_fold_name (const char *name)
1043 {
1044   static char *fold_buffer = NULL;
1045   static size_t fold_buffer_size = 0;
1046
1047   int len = strlen (name);
1048   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1049
1050   if (name[0] == '\'')
1051     {
1052       strncpy (fold_buffer, name + 1, len - 2);
1053       fold_buffer[len - 2] = '\000';
1054     }
1055   else
1056     {
1057       int i;
1058
1059       for (i = 0; i <= len; i += 1)
1060         fold_buffer[i] = tolower (name[i]);
1061     }
1062
1063   return fold_buffer;
1064 }
1065
1066 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1067
1068 static int
1069 is_lower_alphanum (const char c)
1070 {
1071   return (isdigit (c) || (isalpha (c) && islower (c)));
1072 }
1073
1074 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1075    This function saves in LEN the length of that same symbol name but
1076    without either of these suffixes:
1077      . .{DIGIT}+
1078      . ${DIGIT}+
1079      . ___{DIGIT}+
1080      . __{DIGIT}+.
1081
1082    These are suffixes introduced by the compiler for entities such as
1083    nested subprogram for instance, in order to avoid name clashes.
1084    They do not serve any purpose for the debugger.  */
1085
1086 static void
1087 ada_remove_trailing_digits (const char *encoded, int *len)
1088 {
1089   if (*len > 1 && isdigit (encoded[*len - 1]))
1090     {
1091       int i = *len - 2;
1092
1093       while (i > 0 && isdigit (encoded[i]))
1094         i--;
1095       if (i >= 0 && encoded[i] == '.')
1096         *len = i;
1097       else if (i >= 0 && encoded[i] == '$')
1098         *len = i;
1099       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1100         *len = i - 2;
1101       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1102         *len = i - 1;
1103     }
1104 }
1105
1106 /* Remove the suffix introduced by the compiler for protected object
1107    subprograms.  */
1108
1109 static void
1110 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1111 {
1112   /* Remove trailing N.  */
1113
1114   /* Protected entry subprograms are broken into two
1115      separate subprograms: The first one is unprotected, and has
1116      a 'N' suffix; the second is the protected version, and has
1117      the 'P' suffix.  The second calls the first one after handling
1118      the protection.  Since the P subprograms are internally generated,
1119      we leave these names undecoded, giving the user a clue that this
1120      entity is internal.  */
1121
1122   if (*len > 1
1123       && encoded[*len - 1] == 'N'
1124       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1125     *len = *len - 1;
1126 }
1127
1128 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1129
1130 static void
1131 ada_remove_Xbn_suffix (const char *encoded, int *len)
1132 {
1133   int i = *len - 1;
1134
1135   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1136     i--;
1137
1138   if (encoded[i] != 'X')
1139     return;
1140
1141   if (i == 0)
1142     return;
1143
1144   if (isalnum (encoded[i-1]))
1145     *len = i;
1146 }
1147
1148 /* If ENCODED follows the GNAT entity encoding conventions, then return
1149    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1150    replaced by ENCODED.
1151
1152    The resulting string is valid until the next call of ada_decode.
1153    If the string is unchanged by decoding, the original string pointer
1154    is returned.  */
1155
1156 const char *
1157 ada_decode (const char *encoded)
1158 {
1159   int i, j;
1160   int len0;
1161   const char *p;
1162   char *decoded;
1163   int at_start_name;
1164   static char *decoding_buffer = NULL;
1165   static size_t decoding_buffer_size = 0;
1166
1167   /* With function descriptors on PPC64, the value of a symbol named
1168      ".FN", if it exists, is the entry point of the function "FN".  */
1169   if (encoded[0] == '.')
1170     encoded += 1;
1171
1172   /* The name of the Ada main procedure starts with "_ada_".
1173      This prefix is not part of the decoded name, so skip this part
1174      if we see this prefix.  */
1175   if (startswith (encoded, "_ada_"))
1176     encoded += 5;
1177
1178   /* If the name starts with '_', then it is not a properly encoded
1179      name, so do not attempt to decode it.  Similarly, if the name
1180      starts with '<', the name should not be decoded.  */
1181   if (encoded[0] == '_' || encoded[0] == '<')
1182     goto Suppress;
1183
1184   len0 = strlen (encoded);
1185
1186   ada_remove_trailing_digits (encoded, &len0);
1187   ada_remove_po_subprogram_suffix (encoded, &len0);
1188
1189   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1190      the suffix is located before the current "end" of ENCODED.  We want
1191      to avoid re-matching parts of ENCODED that have previously been
1192      marked as discarded (by decrementing LEN0).  */
1193   p = strstr (encoded, "___");
1194   if (p != NULL && p - encoded < len0 - 3)
1195     {
1196       if (p[3] == 'X')
1197         len0 = p - encoded;
1198       else
1199         goto Suppress;
1200     }
1201
1202   /* Remove any trailing TKB suffix.  It tells us that this symbol
1203      is for the body of a task, but that information does not actually
1204      appear in the decoded name.  */
1205
1206   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1207     len0 -= 3;
1208
1209   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1210      from the TKB suffix because it is used for non-anonymous task
1211      bodies.  */
1212
1213   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1214     len0 -= 2;
1215
1216   /* Remove trailing "B" suffixes.  */
1217   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1218
1219   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1220     len0 -= 1;
1221
1222   /* Make decoded big enough for possible expansion by operator name.  */
1223
1224   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1225   decoded = decoding_buffer;
1226
1227   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1228
1229   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1230     {
1231       i = len0 - 2;
1232       while ((i >= 0 && isdigit (encoded[i]))
1233              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1234         i -= 1;
1235       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1236         len0 = i - 1;
1237       else if (encoded[i] == '$')
1238         len0 = i;
1239     }
1240
1241   /* The first few characters that are not alphabetic are not part
1242      of any encoding we use, so we can copy them over verbatim.  */
1243
1244   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1245     decoded[j] = encoded[i];
1246
1247   at_start_name = 1;
1248   while (i < len0)
1249     {
1250       /* Is this a symbol function?  */
1251       if (at_start_name && encoded[i] == 'O')
1252         {
1253           int k;
1254
1255           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1256             {
1257               int op_len = strlen (ada_opname_table[k].encoded);
1258               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1259                             op_len - 1) == 0)
1260                   && !isalnum (encoded[i + op_len]))
1261                 {
1262                   strcpy (decoded + j, ada_opname_table[k].decoded);
1263                   at_start_name = 0;
1264                   i += op_len;
1265                   j += strlen (ada_opname_table[k].decoded);
1266                   break;
1267                 }
1268             }
1269           if (ada_opname_table[k].encoded != NULL)
1270             continue;
1271         }
1272       at_start_name = 0;
1273
1274       /* Replace "TK__" with "__", which will eventually be translated
1275          into "." (just below).  */
1276
1277       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1278         i += 2;
1279
1280       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1281          be translated into "." (just below).  These are internal names
1282          generated for anonymous blocks inside which our symbol is nested.  */
1283
1284       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1285           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1286           && isdigit (encoded [i+4]))
1287         {
1288           int k = i + 5;
1289           
1290           while (k < len0 && isdigit (encoded[k]))
1291             k++;  /* Skip any extra digit.  */
1292
1293           /* Double-check that the "__B_{DIGITS}+" sequence we found
1294              is indeed followed by "__".  */
1295           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1296             i = k;
1297         }
1298
1299       /* Remove _E{DIGITS}+[sb] */
1300
1301       /* Just as for protected object subprograms, there are 2 categories
1302          of subprograms created by the compiler for each entry.  The first
1303          one implements the actual entry code, and has a suffix following
1304          the convention above; the second one implements the barrier and
1305          uses the same convention as above, except that the 'E' is replaced
1306          by a 'B'.
1307
1308          Just as above, we do not decode the name of barrier functions
1309          to give the user a clue that the code he is debugging has been
1310          internally generated.  */
1311
1312       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1313           && isdigit (encoded[i+2]))
1314         {
1315           int k = i + 3;
1316
1317           while (k < len0 && isdigit (encoded[k]))
1318             k++;
1319
1320           if (k < len0
1321               && (encoded[k] == 'b' || encoded[k] == 's'))
1322             {
1323               k++;
1324               /* Just as an extra precaution, make sure that if this
1325                  suffix is followed by anything else, it is a '_'.
1326                  Otherwise, we matched this sequence by accident.  */
1327               if (k == len0
1328                   || (k < len0 && encoded[k] == '_'))
1329                 i = k;
1330             }
1331         }
1332
1333       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1334          the GNAT front-end in protected object subprograms.  */
1335
1336       if (i < len0 + 3
1337           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1338         {
1339           /* Backtrack a bit up until we reach either the begining of
1340              the encoded name, or "__".  Make sure that we only find
1341              digits or lowercase characters.  */
1342           const char *ptr = encoded + i - 1;
1343
1344           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1345             ptr--;
1346           if (ptr < encoded
1347               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1348             i++;
1349         }
1350
1351       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1352         {
1353           /* This is a X[bn]* sequence not separated from the previous
1354              part of the name with a non-alpha-numeric character (in other
1355              words, immediately following an alpha-numeric character), then
1356              verify that it is placed at the end of the encoded name.  If
1357              not, then the encoding is not valid and we should abort the
1358              decoding.  Otherwise, just skip it, it is used in body-nested
1359              package names.  */
1360           do
1361             i += 1;
1362           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1363           if (i < len0)
1364             goto Suppress;
1365         }
1366       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1367         {
1368          /* Replace '__' by '.'.  */
1369           decoded[j] = '.';
1370           at_start_name = 1;
1371           i += 2;
1372           j += 1;
1373         }
1374       else
1375         {
1376           /* It's a character part of the decoded name, so just copy it
1377              over.  */
1378           decoded[j] = encoded[i];
1379           i += 1;
1380           j += 1;
1381         }
1382     }
1383   decoded[j] = '\000';
1384
1385   /* Decoded names should never contain any uppercase character.
1386      Double-check this, and abort the decoding if we find one.  */
1387
1388   for (i = 0; decoded[i] != '\0'; i += 1)
1389     if (isupper (decoded[i]) || decoded[i] == ' ')
1390       goto Suppress;
1391
1392   if (strcmp (decoded, encoded) == 0)
1393     return encoded;
1394   else
1395     return decoded;
1396
1397 Suppress:
1398   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1399   decoded = decoding_buffer;
1400   if (encoded[0] == '<')
1401     strcpy (decoded, encoded);
1402   else
1403     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1404   return decoded;
1405
1406 }
1407
1408 /* Table for keeping permanent unique copies of decoded names.  Once
1409    allocated, names in this table are never released.  While this is a
1410    storage leak, it should not be significant unless there are massive
1411    changes in the set of decoded names in successive versions of a 
1412    symbol table loaded during a single session.  */
1413 static struct htab *decoded_names_store;
1414
1415 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1416    in the language-specific part of GSYMBOL, if it has not been
1417    previously computed.  Tries to save the decoded name in the same
1418    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1419    in any case, the decoded symbol has a lifetime at least that of
1420    GSYMBOL).
1421    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1422    const, but nevertheless modified to a semantically equivalent form
1423    when a decoded name is cached in it.  */
1424
1425 const char *
1426 ada_decode_symbol (const struct general_symbol_info *arg)
1427 {
1428   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1429   const char **resultp =
1430     &gsymbol->language_specific.demangled_name;
1431
1432   if (!gsymbol->ada_mangled)
1433     {
1434       const char *decoded = ada_decode (gsymbol->name);
1435       struct obstack *obstack = gsymbol->language_specific.obstack;
1436
1437       gsymbol->ada_mangled = 1;
1438
1439       if (obstack != NULL)
1440         *resultp
1441           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1442       else
1443         {
1444           /* Sometimes, we can't find a corresponding objfile, in
1445              which case, we put the result on the heap.  Since we only
1446              decode when needed, we hope this usually does not cause a
1447              significant memory leak (FIXME).  */
1448
1449           char **slot = (char **) htab_find_slot (decoded_names_store,
1450                                                   decoded, INSERT);
1451
1452           if (*slot == NULL)
1453             *slot = xstrdup (decoded);
1454           *resultp = *slot;
1455         }
1456     }
1457
1458   return *resultp;
1459 }
1460
1461 static char *
1462 ada_la_decode (const char *encoded, int options)
1463 {
1464   return xstrdup (ada_decode (encoded));
1465 }
1466
1467 /* Implement la_sniff_from_mangled_name for Ada.  */
1468
1469 static int
1470 ada_sniff_from_mangled_name (const char *mangled, char **out)
1471 {
1472   const char *demangled = ada_decode (mangled);
1473
1474   *out = NULL;
1475
1476   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1477     {
1478       /* Set the gsymbol language to Ada, but still return 0.
1479          Two reasons for that:
1480
1481          1. For Ada, we prefer computing the symbol's decoded name
1482          on the fly rather than pre-compute it, in order to save
1483          memory (Ada projects are typically very large).
1484
1485          2. There are some areas in the definition of the GNAT
1486          encoding where, with a bit of bad luck, we might be able
1487          to decode a non-Ada symbol, generating an incorrect
1488          demangled name (Eg: names ending with "TB" for instance
1489          are identified as task bodies and so stripped from
1490          the decoded name returned).
1491
1492          Returning 1, here, but not setting *DEMANGLED, helps us get a
1493          little bit of the best of both worlds.  Because we're last,
1494          we should not affect any of the other languages that were
1495          able to demangle the symbol before us; we get to correctly
1496          tag Ada symbols as such; and even if we incorrectly tagged a
1497          non-Ada symbol, which should be rare, any routing through the
1498          Ada language should be transparent (Ada tries to behave much
1499          like C/C++ with non-Ada symbols).  */
1500       return 1;
1501     }
1502
1503   return 0;
1504 }
1505
1506 \f
1507
1508                                 /* Arrays */
1509
1510 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1511    generated by the GNAT compiler to describe the index type used
1512    for each dimension of an array, check whether it follows the latest
1513    known encoding.  If not, fix it up to conform to the latest encoding.
1514    Otherwise, do nothing.  This function also does nothing if
1515    INDEX_DESC_TYPE is NULL.
1516
1517    The GNAT encoding used to describle the array index type evolved a bit.
1518    Initially, the information would be provided through the name of each
1519    field of the structure type only, while the type of these fields was
1520    described as unspecified and irrelevant.  The debugger was then expected
1521    to perform a global type lookup using the name of that field in order
1522    to get access to the full index type description.  Because these global
1523    lookups can be very expensive, the encoding was later enhanced to make
1524    the global lookup unnecessary by defining the field type as being
1525    the full index type description.
1526
1527    The purpose of this routine is to allow us to support older versions
1528    of the compiler by detecting the use of the older encoding, and by
1529    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1530    we essentially replace each field's meaningless type by the associated
1531    index subtype).  */
1532
1533 void
1534 ada_fixup_array_indexes_type (struct type *index_desc_type)
1535 {
1536   int i;
1537
1538   if (index_desc_type == NULL)
1539     return;
1540   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1541
1542   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1543      to check one field only, no need to check them all).  If not, return
1544      now.
1545
1546      If our INDEX_DESC_TYPE was generated using the older encoding,
1547      the field type should be a meaningless integer type whose name
1548      is not equal to the field name.  */
1549   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1550       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1551                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1552     return;
1553
1554   /* Fixup each field of INDEX_DESC_TYPE.  */
1555   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1556    {
1557      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1558      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1559
1560      if (raw_type)
1561        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1562    }
1563 }
1564
1565 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1566
1567 static const char *bound_name[] = {
1568   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1569   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1570 };
1571
1572 /* Maximum number of array dimensions we are prepared to handle.  */
1573
1574 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1575
1576
1577 /* The desc_* routines return primitive portions of array descriptors
1578    (fat pointers).  */
1579
1580 /* The descriptor or array type, if any, indicated by TYPE; removes
1581    level of indirection, if needed.  */
1582
1583 static struct type *
1584 desc_base_type (struct type *type)
1585 {
1586   if (type == NULL)
1587     return NULL;
1588   type = ada_check_typedef (type);
1589   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1590     type = ada_typedef_target_type (type);
1591
1592   if (type != NULL
1593       && (TYPE_CODE (type) == TYPE_CODE_PTR
1594           || TYPE_CODE (type) == TYPE_CODE_REF))
1595     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1596   else
1597     return type;
1598 }
1599
1600 /* True iff TYPE indicates a "thin" array pointer type.  */
1601
1602 static int
1603 is_thin_pntr (struct type *type)
1604 {
1605   return
1606     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1607     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1608 }
1609
1610 /* The descriptor type for thin pointer type TYPE.  */
1611
1612 static struct type *
1613 thin_descriptor_type (struct type *type)
1614 {
1615   struct type *base_type = desc_base_type (type);
1616
1617   if (base_type == NULL)
1618     return NULL;
1619   if (is_suffix (ada_type_name (base_type), "___XVE"))
1620     return base_type;
1621   else
1622     {
1623       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1624
1625       if (alt_type == NULL)
1626         return base_type;
1627       else
1628         return alt_type;
1629     }
1630 }
1631
1632 /* A pointer to the array data for thin-pointer value VAL.  */
1633
1634 static struct value *
1635 thin_data_pntr (struct value *val)
1636 {
1637   struct type *type = ada_check_typedef (value_type (val));
1638   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1639
1640   data_type = lookup_pointer_type (data_type);
1641
1642   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1643     return value_cast (data_type, value_copy (val));
1644   else
1645     return value_from_longest (data_type, value_address (val));
1646 }
1647
1648 /* True iff TYPE indicates a "thick" array pointer type.  */
1649
1650 static int
1651 is_thick_pntr (struct type *type)
1652 {
1653   type = desc_base_type (type);
1654   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1655           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1656 }
1657
1658 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1659    pointer to one, the type of its bounds data; otherwise, NULL.  */
1660
1661 static struct type *
1662 desc_bounds_type (struct type *type)
1663 {
1664   struct type *r;
1665
1666   type = desc_base_type (type);
1667
1668   if (type == NULL)
1669     return NULL;
1670   else if (is_thin_pntr (type))
1671     {
1672       type = thin_descriptor_type (type);
1673       if (type == NULL)
1674         return NULL;
1675       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1676       if (r != NULL)
1677         return ada_check_typedef (r);
1678     }
1679   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1680     {
1681       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1682       if (r != NULL)
1683         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1684     }
1685   return NULL;
1686 }
1687
1688 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1689    one, a pointer to its bounds data.   Otherwise NULL.  */
1690
1691 static struct value *
1692 desc_bounds (struct value *arr)
1693 {
1694   struct type *type = ada_check_typedef (value_type (arr));
1695
1696   if (is_thin_pntr (type))
1697     {
1698       struct type *bounds_type =
1699         desc_bounds_type (thin_descriptor_type (type));
1700       LONGEST addr;
1701
1702       if (bounds_type == NULL)
1703         error (_("Bad GNAT array descriptor"));
1704
1705       /* NOTE: The following calculation is not really kosher, but
1706          since desc_type is an XVE-encoded type (and shouldn't be),
1707          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1708       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1709         addr = value_as_long (arr);
1710       else
1711         addr = value_address (arr);
1712
1713       return
1714         value_from_longest (lookup_pointer_type (bounds_type),
1715                             addr - TYPE_LENGTH (bounds_type));
1716     }
1717
1718   else if (is_thick_pntr (type))
1719     {
1720       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1721                                                _("Bad GNAT array descriptor"));
1722       struct type *p_bounds_type = value_type (p_bounds);
1723
1724       if (p_bounds_type
1725           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1726         {
1727           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1728
1729           if (TYPE_STUB (target_type))
1730             p_bounds = value_cast (lookup_pointer_type
1731                                    (ada_check_typedef (target_type)),
1732                                    p_bounds);
1733         }
1734       else
1735         error (_("Bad GNAT array descriptor"));
1736
1737       return p_bounds;
1738     }
1739   else
1740     return NULL;
1741 }
1742
1743 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1744    position of the field containing the address of the bounds data.  */
1745
1746 static int
1747 fat_pntr_bounds_bitpos (struct type *type)
1748 {
1749   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1750 }
1751
1752 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1753    size of the field containing the address of the bounds data.  */
1754
1755 static int
1756 fat_pntr_bounds_bitsize (struct type *type)
1757 {
1758   type = desc_base_type (type);
1759
1760   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1761     return TYPE_FIELD_BITSIZE (type, 1);
1762   else
1763     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1764 }
1765
1766 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1767    pointer to one, the type of its array data (a array-with-no-bounds type);
1768    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1769    data.  */
1770
1771 static struct type *
1772 desc_data_target_type (struct type *type)
1773 {
1774   type = desc_base_type (type);
1775
1776   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1777   if (is_thin_pntr (type))
1778     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1779   else if (is_thick_pntr (type))
1780     {
1781       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1782
1783       if (data_type
1784           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1785         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1786     }
1787
1788   return NULL;
1789 }
1790
1791 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1792    its array data.  */
1793
1794 static struct value *
1795 desc_data (struct value *arr)
1796 {
1797   struct type *type = value_type (arr);
1798
1799   if (is_thin_pntr (type))
1800     return thin_data_pntr (arr);
1801   else if (is_thick_pntr (type))
1802     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1803                              _("Bad GNAT array descriptor"));
1804   else
1805     return NULL;
1806 }
1807
1808
1809 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1810    position of the field containing the address of the data.  */
1811
1812 static int
1813 fat_pntr_data_bitpos (struct type *type)
1814 {
1815   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1816 }
1817
1818 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1819    size of the field containing the address of the data.  */
1820
1821 static int
1822 fat_pntr_data_bitsize (struct type *type)
1823 {
1824   type = desc_base_type (type);
1825
1826   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1827     return TYPE_FIELD_BITSIZE (type, 0);
1828   else
1829     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1830 }
1831
1832 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1833    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1834    bound, if WHICH is 1.  The first bound is I=1.  */
1835
1836 static struct value *
1837 desc_one_bound (struct value *bounds, int i, int which)
1838 {
1839   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1840                            _("Bad GNAT array descriptor bounds"));
1841 }
1842
1843 /* If BOUNDS is an array-bounds structure type, return the bit position
1844    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1845    bound, if WHICH is 1.  The first bound is I=1.  */
1846
1847 static int
1848 desc_bound_bitpos (struct type *type, int i, int which)
1849 {
1850   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1851 }
1852
1853 /* If BOUNDS is an array-bounds structure type, return the bit field size
1854    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1855    bound, if WHICH is 1.  The first bound is I=1.  */
1856
1857 static int
1858 desc_bound_bitsize (struct type *type, int i, int which)
1859 {
1860   type = desc_base_type (type);
1861
1862   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1863     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1864   else
1865     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1866 }
1867
1868 /* If TYPE is the type of an array-bounds structure, the type of its
1869    Ith bound (numbering from 1).  Otherwise, NULL.  */
1870
1871 static struct type *
1872 desc_index_type (struct type *type, int i)
1873 {
1874   type = desc_base_type (type);
1875
1876   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1877     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1878   else
1879     return NULL;
1880 }
1881
1882 /* The number of index positions in the array-bounds type TYPE.
1883    Return 0 if TYPE is NULL.  */
1884
1885 static int
1886 desc_arity (struct type *type)
1887 {
1888   type = desc_base_type (type);
1889
1890   if (type != NULL)
1891     return TYPE_NFIELDS (type) / 2;
1892   return 0;
1893 }
1894
1895 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1896    an array descriptor type (representing an unconstrained array
1897    type).  */
1898
1899 static int
1900 ada_is_direct_array_type (struct type *type)
1901 {
1902   if (type == NULL)
1903     return 0;
1904   type = ada_check_typedef (type);
1905   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1906           || ada_is_array_descriptor_type (type));
1907 }
1908
1909 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1910  * to one.  */
1911
1912 static int
1913 ada_is_array_type (struct type *type)
1914 {
1915   while (type != NULL 
1916          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1917              || TYPE_CODE (type) == TYPE_CODE_REF))
1918     type = TYPE_TARGET_TYPE (type);
1919   return ada_is_direct_array_type (type);
1920 }
1921
1922 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1923
1924 int
1925 ada_is_simple_array_type (struct type *type)
1926 {
1927   if (type == NULL)
1928     return 0;
1929   type = ada_check_typedef (type);
1930   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1931           || (TYPE_CODE (type) == TYPE_CODE_PTR
1932               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1933                  == TYPE_CODE_ARRAY));
1934 }
1935
1936 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1937
1938 int
1939 ada_is_array_descriptor_type (struct type *type)
1940 {
1941   struct type *data_type = desc_data_target_type (type);
1942
1943   if (type == NULL)
1944     return 0;
1945   type = ada_check_typedef (type);
1946   return (data_type != NULL
1947           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1948           && desc_arity (desc_bounds_type (type)) > 0);
1949 }
1950
1951 /* Non-zero iff type is a partially mal-formed GNAT array
1952    descriptor.  FIXME: This is to compensate for some problems with
1953    debugging output from GNAT.  Re-examine periodically to see if it
1954    is still needed.  */
1955
1956 int
1957 ada_is_bogus_array_descriptor (struct type *type)
1958 {
1959   return
1960     type != NULL
1961     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1962     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1963         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1964     && !ada_is_array_descriptor_type (type);
1965 }
1966
1967
1968 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1969    (fat pointer) returns the type of the array data described---specifically,
1970    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1971    in from the descriptor; otherwise, they are left unspecified.  If
1972    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1973    returns NULL.  The result is simply the type of ARR if ARR is not
1974    a descriptor.  */
1975 struct type *
1976 ada_type_of_array (struct value *arr, int bounds)
1977 {
1978   if (ada_is_constrained_packed_array_type (value_type (arr)))
1979     return decode_constrained_packed_array_type (value_type (arr));
1980
1981   if (!ada_is_array_descriptor_type (value_type (arr)))
1982     return value_type (arr);
1983
1984   if (!bounds)
1985     {
1986       struct type *array_type =
1987         ada_check_typedef (desc_data_target_type (value_type (arr)));
1988
1989       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1990         TYPE_FIELD_BITSIZE (array_type, 0) =
1991           decode_packed_array_bitsize (value_type (arr));
1992       
1993       return array_type;
1994     }
1995   else
1996     {
1997       struct type *elt_type;
1998       int arity;
1999       struct value *descriptor;
2000
2001       elt_type = ada_array_element_type (value_type (arr), -1);
2002       arity = ada_array_arity (value_type (arr));
2003
2004       if (elt_type == NULL || arity == 0)
2005         return ada_check_typedef (value_type (arr));
2006
2007       descriptor = desc_bounds (arr);
2008       if (value_as_long (descriptor) == 0)
2009         return NULL;
2010       while (arity > 0)
2011         {
2012           struct type *range_type = alloc_type_copy (value_type (arr));
2013           struct type *array_type = alloc_type_copy (value_type (arr));
2014           struct value *low = desc_one_bound (descriptor, arity, 0);
2015           struct value *high = desc_one_bound (descriptor, arity, 1);
2016
2017           arity -= 1;
2018           create_static_range_type (range_type, value_type (low),
2019                                     longest_to_int (value_as_long (low)),
2020                                     longest_to_int (value_as_long (high)));
2021           elt_type = create_array_type (array_type, elt_type, range_type);
2022
2023           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2024             {
2025               /* We need to store the element packed bitsize, as well as
2026                  recompute the array size, because it was previously
2027                  computed based on the unpacked element size.  */
2028               LONGEST lo = value_as_long (low);
2029               LONGEST hi = value_as_long (high);
2030
2031               TYPE_FIELD_BITSIZE (elt_type, 0) =
2032                 decode_packed_array_bitsize (value_type (arr));
2033               /* If the array has no element, then the size is already
2034                  zero, and does not need to be recomputed.  */
2035               if (lo < hi)
2036                 {
2037                   int array_bitsize =
2038                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2039
2040                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2041                 }
2042             }
2043         }
2044
2045       return lookup_pointer_type (elt_type);
2046     }
2047 }
2048
2049 /* If ARR does not represent an array, returns ARR unchanged.
2050    Otherwise, returns either a standard GDB array with bounds set
2051    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2052    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2053
2054 struct value *
2055 ada_coerce_to_simple_array_ptr (struct value *arr)
2056 {
2057   if (ada_is_array_descriptor_type (value_type (arr)))
2058     {
2059       struct type *arrType = ada_type_of_array (arr, 1);
2060
2061       if (arrType == NULL)
2062         return NULL;
2063       return value_cast (arrType, value_copy (desc_data (arr)));
2064     }
2065   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2066     return decode_constrained_packed_array (arr);
2067   else
2068     return arr;
2069 }
2070
2071 /* If ARR does not represent an array, returns ARR unchanged.
2072    Otherwise, returns a standard GDB array describing ARR (which may
2073    be ARR itself if it already is in the proper form).  */
2074
2075 struct value *
2076 ada_coerce_to_simple_array (struct value *arr)
2077 {
2078   if (ada_is_array_descriptor_type (value_type (arr)))
2079     {
2080       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2081
2082       if (arrVal == NULL)
2083         error (_("Bounds unavailable for null array pointer."));
2084       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2085       return value_ind (arrVal);
2086     }
2087   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2088     return decode_constrained_packed_array (arr);
2089   else
2090     return arr;
2091 }
2092
2093 /* If TYPE represents a GNAT array type, return it translated to an
2094    ordinary GDB array type (possibly with BITSIZE fields indicating
2095    packing).  For other types, is the identity.  */
2096
2097 struct type *
2098 ada_coerce_to_simple_array_type (struct type *type)
2099 {
2100   if (ada_is_constrained_packed_array_type (type))
2101     return decode_constrained_packed_array_type (type);
2102
2103   if (ada_is_array_descriptor_type (type))
2104     return ada_check_typedef (desc_data_target_type (type));
2105
2106   return type;
2107 }
2108
2109 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2110
2111 static int
2112 ada_is_packed_array_type  (struct type *type)
2113 {
2114   if (type == NULL)
2115     return 0;
2116   type = desc_base_type (type);
2117   type = ada_check_typedef (type);
2118   return
2119     ada_type_name (type) != NULL
2120     && strstr (ada_type_name (type), "___XP") != NULL;
2121 }
2122
2123 /* Non-zero iff TYPE represents a standard GNAT constrained
2124    packed-array type.  */
2125
2126 int
2127 ada_is_constrained_packed_array_type (struct type *type)
2128 {
2129   return ada_is_packed_array_type (type)
2130     && !ada_is_array_descriptor_type (type);
2131 }
2132
2133 /* Non-zero iff TYPE represents an array descriptor for a
2134    unconstrained packed-array type.  */
2135
2136 static int
2137 ada_is_unconstrained_packed_array_type (struct type *type)
2138 {
2139   return ada_is_packed_array_type (type)
2140     && ada_is_array_descriptor_type (type);
2141 }
2142
2143 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2144    return the size of its elements in bits.  */
2145
2146 static long
2147 decode_packed_array_bitsize (struct type *type)
2148 {
2149   const char *raw_name;
2150   const char *tail;
2151   long bits;
2152
2153   /* Access to arrays implemented as fat pointers are encoded as a typedef
2154      of the fat pointer type.  We need the name of the fat pointer type
2155      to do the decoding, so strip the typedef layer.  */
2156   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2157     type = ada_typedef_target_type (type);
2158
2159   raw_name = ada_type_name (ada_check_typedef (type));
2160   if (!raw_name)
2161     raw_name = ada_type_name (desc_base_type (type));
2162
2163   if (!raw_name)
2164     return 0;
2165
2166   tail = strstr (raw_name, "___XP");
2167   gdb_assert (tail != NULL);
2168
2169   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2170     {
2171       lim_warning
2172         (_("could not understand bit size information on packed array"));
2173       return 0;
2174     }
2175
2176   return bits;
2177 }
2178
2179 /* Given that TYPE is a standard GDB array type with all bounds filled
2180    in, and that the element size of its ultimate scalar constituents
2181    (that is, either its elements, or, if it is an array of arrays, its
2182    elements' elements, etc.) is *ELT_BITS, return an identical type,
2183    but with the bit sizes of its elements (and those of any
2184    constituent arrays) recorded in the BITSIZE components of its
2185    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2186    in bits.
2187
2188    Note that, for arrays whose index type has an XA encoding where
2189    a bound references a record discriminant, getting that discriminant,
2190    and therefore the actual value of that bound, is not possible
2191    because none of the given parameters gives us access to the record.
2192    This function assumes that it is OK in the context where it is being
2193    used to return an array whose bounds are still dynamic and where
2194    the length is arbitrary.  */
2195
2196 static struct type *
2197 constrained_packed_array_type (struct type *type, long *elt_bits)
2198 {
2199   struct type *new_elt_type;
2200   struct type *new_type;
2201   struct type *index_type_desc;
2202   struct type *index_type;
2203   LONGEST low_bound, high_bound;
2204
2205   type = ada_check_typedef (type);
2206   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2207     return type;
2208
2209   index_type_desc = ada_find_parallel_type (type, "___XA");
2210   if (index_type_desc)
2211     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2212                                       NULL);
2213   else
2214     index_type = TYPE_INDEX_TYPE (type);
2215
2216   new_type = alloc_type_copy (type);
2217   new_elt_type =
2218     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2219                                    elt_bits);
2220   create_array_type (new_type, new_elt_type, index_type);
2221   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2222   TYPE_NAME (new_type) = ada_type_name (type);
2223
2224   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2225        && is_dynamic_type (check_typedef (index_type)))
2226       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2227     low_bound = high_bound = 0;
2228   if (high_bound < low_bound)
2229     *elt_bits = TYPE_LENGTH (new_type) = 0;
2230   else
2231     {
2232       *elt_bits *= (high_bound - low_bound + 1);
2233       TYPE_LENGTH (new_type) =
2234         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2235     }
2236
2237   TYPE_FIXED_INSTANCE (new_type) = 1;
2238   return new_type;
2239 }
2240
2241 /* The array type encoded by TYPE, where
2242    ada_is_constrained_packed_array_type (TYPE).  */
2243
2244 static struct type *
2245 decode_constrained_packed_array_type (struct type *type)
2246 {
2247   const char *raw_name = ada_type_name (ada_check_typedef (type));
2248   char *name;
2249   const char *tail;
2250   struct type *shadow_type;
2251   long bits;
2252
2253   if (!raw_name)
2254     raw_name = ada_type_name (desc_base_type (type));
2255
2256   if (!raw_name)
2257     return NULL;
2258
2259   name = (char *) alloca (strlen (raw_name) + 1);
2260   tail = strstr (raw_name, "___XP");
2261   type = desc_base_type (type);
2262
2263   memcpy (name, raw_name, tail - raw_name);
2264   name[tail - raw_name] = '\000';
2265
2266   shadow_type = ada_find_parallel_type_with_name (type, name);
2267
2268   if (shadow_type == NULL)
2269     {
2270       lim_warning (_("could not find bounds information on packed array"));
2271       return NULL;
2272     }
2273   shadow_type = check_typedef (shadow_type);
2274
2275   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2276     {
2277       lim_warning (_("could not understand bounds "
2278                      "information on packed array"));
2279       return NULL;
2280     }
2281
2282   bits = decode_packed_array_bitsize (type);
2283   return constrained_packed_array_type (shadow_type, &bits);
2284 }
2285
2286 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2287    array, returns a simple array that denotes that array.  Its type is a
2288    standard GDB array type except that the BITSIZEs of the array
2289    target types are set to the number of bits in each element, and the
2290    type length is set appropriately.  */
2291
2292 static struct value *
2293 decode_constrained_packed_array (struct value *arr)
2294 {
2295   struct type *type;
2296
2297   /* If our value is a pointer, then dereference it. Likewise if
2298      the value is a reference.  Make sure that this operation does not
2299      cause the target type to be fixed, as this would indirectly cause
2300      this array to be decoded.  The rest of the routine assumes that
2301      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2302      and "value_ind" routines to perform the dereferencing, as opposed
2303      to using "ada_coerce_ref" or "ada_value_ind".  */
2304   arr = coerce_ref (arr);
2305   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2306     arr = value_ind (arr);
2307
2308   type = decode_constrained_packed_array_type (value_type (arr));
2309   if (type == NULL)
2310     {
2311       error (_("can't unpack array"));
2312       return NULL;
2313     }
2314
2315   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2316       && ada_is_modular_type (value_type (arr)))
2317     {
2318        /* This is a (right-justified) modular type representing a packed
2319          array with no wrapper.  In order to interpret the value through
2320          the (left-justified) packed array type we just built, we must
2321          first left-justify it.  */
2322       int bit_size, bit_pos;
2323       ULONGEST mod;
2324
2325       mod = ada_modulus (value_type (arr)) - 1;
2326       bit_size = 0;
2327       while (mod > 0)
2328         {
2329           bit_size += 1;
2330           mod >>= 1;
2331         }
2332       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2333       arr = ada_value_primitive_packed_val (arr, NULL,
2334                                             bit_pos / HOST_CHAR_BIT,
2335                                             bit_pos % HOST_CHAR_BIT,
2336                                             bit_size,
2337                                             type);
2338     }
2339
2340   return coerce_unspec_val_to_type (arr, type);
2341 }
2342
2343
2344 /* The value of the element of packed array ARR at the ARITY indices
2345    given in IND.   ARR must be a simple array.  */
2346
2347 static struct value *
2348 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2349 {
2350   int i;
2351   int bits, elt_off, bit_off;
2352   long elt_total_bit_offset;
2353   struct type *elt_type;
2354   struct value *v;
2355
2356   bits = 0;
2357   elt_total_bit_offset = 0;
2358   elt_type = ada_check_typedef (value_type (arr));
2359   for (i = 0; i < arity; i += 1)
2360     {
2361       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2362           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2363         error
2364           (_("attempt to do packed indexing of "
2365              "something other than a packed array"));
2366       else
2367         {
2368           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2369           LONGEST lowerbound, upperbound;
2370           LONGEST idx;
2371
2372           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2373             {
2374               lim_warning (_("don't know bounds of array"));
2375               lowerbound = upperbound = 0;
2376             }
2377
2378           idx = pos_atr (ind[i]);
2379           if (idx < lowerbound || idx > upperbound)
2380             lim_warning (_("packed array index %ld out of bounds"),
2381                          (long) idx);
2382           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2383           elt_total_bit_offset += (idx - lowerbound) * bits;
2384           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2385         }
2386     }
2387   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2388   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2389
2390   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2391                                       bits, elt_type);
2392   return v;
2393 }
2394
2395 /* Non-zero iff TYPE includes negative integer values.  */
2396
2397 static int
2398 has_negatives (struct type *type)
2399 {
2400   switch (TYPE_CODE (type))
2401     {
2402     default:
2403       return 0;
2404     case TYPE_CODE_INT:
2405       return !TYPE_UNSIGNED (type);
2406     case TYPE_CODE_RANGE:
2407       return TYPE_LOW_BOUND (type) < 0;
2408     }
2409 }
2410
2411 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2412    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2413    the unpacked buffer.
2414
2415    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2416    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2417
2418    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2419    zero otherwise.
2420
2421    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2422
2423    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2424
2425 static void
2426 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2427                           gdb_byte *unpacked, int unpacked_len,
2428                           int is_big_endian, int is_signed_type,
2429                           int is_scalar)
2430 {
2431   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2432   int src_idx;                  /* Index into the source area */
2433   int src_bytes_left;           /* Number of source bytes left to process.  */
2434   int srcBitsLeft;              /* Number of source bits left to move */
2435   int unusedLS;                 /* Number of bits in next significant
2436                                    byte of source that are unused */
2437
2438   int unpacked_idx;             /* Index into the unpacked buffer */
2439   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2440
2441   unsigned long accum;          /* Staging area for bits being transferred */
2442   int accumSize;                /* Number of meaningful bits in accum */
2443   unsigned char sign;
2444
2445   /* Transmit bytes from least to most significant; delta is the direction
2446      the indices move.  */
2447   int delta = is_big_endian ? -1 : 1;
2448
2449   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2450      bits from SRC.  .*/
2451   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2452     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2453            bit_size, unpacked_len);
2454
2455   srcBitsLeft = bit_size;
2456   src_bytes_left = src_len;
2457   unpacked_bytes_left = unpacked_len;
2458   sign = 0;
2459
2460   if (is_big_endian)
2461     {
2462       src_idx = src_len - 1;
2463       if (is_signed_type
2464           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2465         sign = ~0;
2466
2467       unusedLS =
2468         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2469         % HOST_CHAR_BIT;
2470
2471       if (is_scalar)
2472         {
2473           accumSize = 0;
2474           unpacked_idx = unpacked_len - 1;
2475         }
2476       else
2477         {
2478           /* Non-scalar values must be aligned at a byte boundary...  */
2479           accumSize =
2480             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2481           /* ... And are placed at the beginning (most-significant) bytes
2482              of the target.  */
2483           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2484           unpacked_bytes_left = unpacked_idx + 1;
2485         }
2486     }
2487   else
2488     {
2489       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2490
2491       src_idx = unpacked_idx = 0;
2492       unusedLS = bit_offset;
2493       accumSize = 0;
2494
2495       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2496         sign = ~0;
2497     }
2498
2499   accum = 0;
2500   while (src_bytes_left > 0)
2501     {
2502       /* Mask for removing bits of the next source byte that are not
2503          part of the value.  */
2504       unsigned int unusedMSMask =
2505         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2506         1;
2507       /* Sign-extend bits for this byte.  */
2508       unsigned int signMask = sign & ~unusedMSMask;
2509
2510       accum |=
2511         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2512       accumSize += HOST_CHAR_BIT - unusedLS;
2513       if (accumSize >= HOST_CHAR_BIT)
2514         {
2515           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2516           accumSize -= HOST_CHAR_BIT;
2517           accum >>= HOST_CHAR_BIT;
2518           unpacked_bytes_left -= 1;
2519           unpacked_idx += delta;
2520         }
2521       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2522       unusedLS = 0;
2523       src_bytes_left -= 1;
2524       src_idx += delta;
2525     }
2526   while (unpacked_bytes_left > 0)
2527     {
2528       accum |= sign << accumSize;
2529       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2530       accumSize -= HOST_CHAR_BIT;
2531       if (accumSize < 0)
2532         accumSize = 0;
2533       accum >>= HOST_CHAR_BIT;
2534       unpacked_bytes_left -= 1;
2535       unpacked_idx += delta;
2536     }
2537 }
2538
2539 /* Create a new value of type TYPE from the contents of OBJ starting
2540    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2541    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2542    assigning through the result will set the field fetched from.
2543    VALADDR is ignored unless OBJ is NULL, in which case,
2544    VALADDR+OFFSET must address the start of storage containing the 
2545    packed value.  The value returned  in this case is never an lval.
2546    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2547
2548 struct value *
2549 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2550                                 long offset, int bit_offset, int bit_size,
2551                                 struct type *type)
2552 {
2553   struct value *v;
2554   const gdb_byte *src;                /* First byte containing data to unpack */
2555   gdb_byte *unpacked;
2556   const int is_scalar = is_scalar_type (type);
2557   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2558   gdb::byte_vector staging;
2559
2560   type = ada_check_typedef (type);
2561
2562   if (obj == NULL)
2563     src = valaddr + offset;
2564   else
2565     src = value_contents (obj) + offset;
2566
2567   if (is_dynamic_type (type))
2568     {
2569       /* The length of TYPE might by dynamic, so we need to resolve
2570          TYPE in order to know its actual size, which we then use
2571          to create the contents buffer of the value we return.
2572          The difficulty is that the data containing our object is
2573          packed, and therefore maybe not at a byte boundary.  So, what
2574          we do, is unpack the data into a byte-aligned buffer, and then
2575          use that buffer as our object's value for resolving the type.  */
2576       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2577       staging.resize (staging_len);
2578
2579       ada_unpack_from_contents (src, bit_offset, bit_size,
2580                                 staging.data (), staging.size (),
2581                                 is_big_endian, has_negatives (type),
2582                                 is_scalar);
2583       type = resolve_dynamic_type (type, staging.data (), 0);
2584       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2585         {
2586           /* This happens when the length of the object is dynamic,
2587              and is actually smaller than the space reserved for it.
2588              For instance, in an array of variant records, the bit_size
2589              we're given is the array stride, which is constant and
2590              normally equal to the maximum size of its element.
2591              But, in reality, each element only actually spans a portion
2592              of that stride.  */
2593           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2594         }
2595     }
2596
2597   if (obj == NULL)
2598     {
2599       v = allocate_value (type);
2600       src = valaddr + offset;
2601     }
2602   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2603     {
2604       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2605       gdb_byte *buf;
2606
2607       v = value_at (type, value_address (obj) + offset);
2608       buf = (gdb_byte *) alloca (src_len);
2609       read_memory (value_address (v), buf, src_len);
2610       src = buf;
2611     }
2612   else
2613     {
2614       v = allocate_value (type);
2615       src = value_contents (obj) + offset;
2616     }
2617
2618   if (obj != NULL)
2619     {
2620       long new_offset = offset;
2621
2622       set_value_component_location (v, obj);
2623       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2624       set_value_bitsize (v, bit_size);
2625       if (value_bitpos (v) >= HOST_CHAR_BIT)
2626         {
2627           ++new_offset;
2628           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2629         }
2630       set_value_offset (v, new_offset);
2631
2632       /* Also set the parent value.  This is needed when trying to
2633          assign a new value (in inferior memory).  */
2634       set_value_parent (v, obj);
2635     }
2636   else
2637     set_value_bitsize (v, bit_size);
2638   unpacked = value_contents_writeable (v);
2639
2640   if (bit_size == 0)
2641     {
2642       memset (unpacked, 0, TYPE_LENGTH (type));
2643       return v;
2644     }
2645
2646   if (staging.size () == TYPE_LENGTH (type))
2647     {
2648       /* Small short-cut: If we've unpacked the data into a buffer
2649          of the same size as TYPE's length, then we can reuse that,
2650          instead of doing the unpacking again.  */
2651       memcpy (unpacked, staging.data (), staging.size ());
2652     }
2653   else
2654     ada_unpack_from_contents (src, bit_offset, bit_size,
2655                               unpacked, TYPE_LENGTH (type),
2656                               is_big_endian, has_negatives (type), is_scalar);
2657
2658   return v;
2659 }
2660
2661 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2662    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2663    not overlap.  */
2664 static void
2665 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2666            int src_offset, int n, int bits_big_endian_p)
2667 {
2668   unsigned int accum, mask;
2669   int accum_bits, chunk_size;
2670
2671   target += targ_offset / HOST_CHAR_BIT;
2672   targ_offset %= HOST_CHAR_BIT;
2673   source += src_offset / HOST_CHAR_BIT;
2674   src_offset %= HOST_CHAR_BIT;
2675   if (bits_big_endian_p)
2676     {
2677       accum = (unsigned char) *source;
2678       source += 1;
2679       accum_bits = HOST_CHAR_BIT - src_offset;
2680
2681       while (n > 0)
2682         {
2683           int unused_right;
2684
2685           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2686           accum_bits += HOST_CHAR_BIT;
2687           source += 1;
2688           chunk_size = HOST_CHAR_BIT - targ_offset;
2689           if (chunk_size > n)
2690             chunk_size = n;
2691           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2692           mask = ((1 << chunk_size) - 1) << unused_right;
2693           *target =
2694             (*target & ~mask)
2695             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2696           n -= chunk_size;
2697           accum_bits -= chunk_size;
2698           target += 1;
2699           targ_offset = 0;
2700         }
2701     }
2702   else
2703     {
2704       accum = (unsigned char) *source >> src_offset;
2705       source += 1;
2706       accum_bits = HOST_CHAR_BIT - src_offset;
2707
2708       while (n > 0)
2709         {
2710           accum = accum + ((unsigned char) *source << accum_bits);
2711           accum_bits += HOST_CHAR_BIT;
2712           source += 1;
2713           chunk_size = HOST_CHAR_BIT - targ_offset;
2714           if (chunk_size > n)
2715             chunk_size = n;
2716           mask = ((1 << chunk_size) - 1) << targ_offset;
2717           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2718           n -= chunk_size;
2719           accum_bits -= chunk_size;
2720           accum >>= chunk_size;
2721           target += 1;
2722           targ_offset = 0;
2723         }
2724     }
2725 }
2726
2727 /* Store the contents of FROMVAL into the location of TOVAL.
2728    Return a new value with the location of TOVAL and contents of
2729    FROMVAL.   Handles assignment into packed fields that have
2730    floating-point or non-scalar types.  */
2731
2732 static struct value *
2733 ada_value_assign (struct value *toval, struct value *fromval)
2734 {
2735   struct type *type = value_type (toval);
2736   int bits = value_bitsize (toval);
2737
2738   toval = ada_coerce_ref (toval);
2739   fromval = ada_coerce_ref (fromval);
2740
2741   if (ada_is_direct_array_type (value_type (toval)))
2742     toval = ada_coerce_to_simple_array (toval);
2743   if (ada_is_direct_array_type (value_type (fromval)))
2744     fromval = ada_coerce_to_simple_array (fromval);
2745
2746   if (!deprecated_value_modifiable (toval))
2747     error (_("Left operand of assignment is not a modifiable lvalue."));
2748
2749   if (VALUE_LVAL (toval) == lval_memory
2750       && bits > 0
2751       && (TYPE_CODE (type) == TYPE_CODE_FLT
2752           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2753     {
2754       int len = (value_bitpos (toval)
2755                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2756       int from_size;
2757       gdb_byte *buffer = (gdb_byte *) alloca (len);
2758       struct value *val;
2759       CORE_ADDR to_addr = value_address (toval);
2760
2761       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2762         fromval = value_cast (type, fromval);
2763
2764       read_memory (to_addr, buffer, len);
2765       from_size = value_bitsize (fromval);
2766       if (from_size == 0)
2767         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2768       if (gdbarch_bits_big_endian (get_type_arch (type)))
2769         move_bits (buffer, value_bitpos (toval),
2770                    value_contents (fromval), from_size - bits, bits, 1);
2771       else
2772         move_bits (buffer, value_bitpos (toval),
2773                    value_contents (fromval), 0, bits, 0);
2774       write_memory_with_notification (to_addr, buffer, len);
2775
2776       val = value_copy (toval);
2777       memcpy (value_contents_raw (val), value_contents (fromval),
2778               TYPE_LENGTH (type));
2779       deprecated_set_value_type (val, type);
2780
2781       return val;
2782     }
2783
2784   return value_assign (toval, fromval);
2785 }
2786
2787
2788 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2789    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2790    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2791    COMPONENT, and not the inferior's memory.  The current contents
2792    of COMPONENT are ignored.
2793
2794    Although not part of the initial design, this function also works
2795    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2796    had a null address, and COMPONENT had an address which is equal to
2797    its offset inside CONTAINER.  */
2798
2799 static void
2800 value_assign_to_component (struct value *container, struct value *component,
2801                            struct value *val)
2802 {
2803   LONGEST offset_in_container =
2804     (LONGEST)  (value_address (component) - value_address (container));
2805   int bit_offset_in_container =
2806     value_bitpos (component) - value_bitpos (container);
2807   int bits;
2808
2809   val = value_cast (value_type (component), val);
2810
2811   if (value_bitsize (component) == 0)
2812     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2813   else
2814     bits = value_bitsize (component);
2815
2816   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2817     {
2818       int src_offset;
2819
2820       if (is_scalar_type (check_typedef (value_type (component))))
2821         src_offset
2822           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2823       else
2824         src_offset = 0;
2825       move_bits (value_contents_writeable (container) + offset_in_container,
2826                  value_bitpos (container) + bit_offset_in_container,
2827                  value_contents (val), src_offset, bits, 1);
2828     }
2829   else
2830     move_bits (value_contents_writeable (container) + offset_in_container,
2831                value_bitpos (container) + bit_offset_in_container,
2832                value_contents (val), 0, bits, 0);
2833 }
2834
2835 /* Determine if TYPE is an access to an unconstrained array.  */
2836
2837 static bool
2838 ada_is_access_to_unconstrained_array (struct type *type)
2839 {
2840   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2841           && is_thick_pntr (ada_typedef_target_type (type)));
2842 }
2843
2844 /* The value of the element of array ARR at the ARITY indices given in IND.
2845    ARR may be either a simple array, GNAT array descriptor, or pointer
2846    thereto.  */
2847
2848 struct value *
2849 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2850 {
2851   int k;
2852   struct value *elt;
2853   struct type *elt_type;
2854
2855   elt = ada_coerce_to_simple_array (arr);
2856
2857   elt_type = ada_check_typedef (value_type (elt));
2858   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2859       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2860     return value_subscript_packed (elt, arity, ind);
2861
2862   for (k = 0; k < arity; k += 1)
2863     {
2864       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2865         error (_("too many subscripts (%d expected)"), k);
2866       elt = value_subscript (elt, pos_atr (ind[k]));
2867     }
2868   return elt;
2869 }
2870
2871 /* Assuming ARR is a pointer to a GDB array, the value of the element
2872    of *ARR at the ARITY indices given in IND.
2873    Does not read the entire array into memory.
2874
2875    Note: Unlike what one would expect, this function is used instead of
2876    ada_value_subscript for basically all non-packed array types.  The reason
2877    for this is that a side effect of doing our own pointer arithmetics instead
2878    of relying on value_subscript is that there is no implicit typedef peeling.
2879    This is important for arrays of array accesses, where it allows us to
2880    preserve the fact that the array's element is an array access, where the
2881    access part os encoded in a typedef layer.  */
2882
2883 static struct value *
2884 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2885 {
2886   int k;
2887   struct value *array_ind = ada_value_ind (arr);
2888   struct type *type
2889     = check_typedef (value_enclosing_type (array_ind));
2890
2891   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2892       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2893     return value_subscript_packed (array_ind, arity, ind);
2894
2895   for (k = 0; k < arity; k += 1)
2896     {
2897       LONGEST lwb, upb;
2898       struct value *lwb_value;
2899
2900       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2901         error (_("too many subscripts (%d expected)"), k);
2902       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2903                         value_copy (arr));
2904       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2905       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2906       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2907       type = TYPE_TARGET_TYPE (type);
2908     }
2909
2910   return value_ind (arr);
2911 }
2912
2913 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2914    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2915    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2916    this array is LOW, as per Ada rules.  */
2917 static struct value *
2918 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2919                           int low, int high)
2920 {
2921   struct type *type0 = ada_check_typedef (type);
2922   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2923   struct type *index_type
2924     = create_static_range_type (NULL, base_index_type, low, high);
2925   struct type *slice_type = create_array_type_with_stride
2926                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2927                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2928                                TYPE_FIELD_BITSIZE (type0, 0));
2929   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2930   LONGEST base_low_pos, low_pos;
2931   CORE_ADDR base;
2932
2933   if (!discrete_position (base_index_type, low, &low_pos)
2934       || !discrete_position (base_index_type, base_low, &base_low_pos))
2935     {
2936       warning (_("unable to get positions in slice, use bounds instead"));
2937       low_pos = low;
2938       base_low_pos = base_low;
2939     }
2940
2941   base = value_as_address (array_ptr)
2942     + ((low_pos - base_low_pos)
2943        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2944   return value_at_lazy (slice_type, base);
2945 }
2946
2947
2948 static struct value *
2949 ada_value_slice (struct value *array, int low, int high)
2950 {
2951   struct type *type = ada_check_typedef (value_type (array));
2952   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2953   struct type *index_type
2954     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2955   struct type *slice_type = create_array_type_with_stride
2956                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2957                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2958                                TYPE_FIELD_BITSIZE (type, 0));
2959   LONGEST low_pos, high_pos;
2960
2961   if (!discrete_position (base_index_type, low, &low_pos)
2962       || !discrete_position (base_index_type, high, &high_pos))
2963     {
2964       warning (_("unable to get positions in slice, use bounds instead"));
2965       low_pos = low;
2966       high_pos = high;
2967     }
2968
2969   return value_cast (slice_type,
2970                      value_slice (array, low, high_pos - low_pos + 1));
2971 }
2972
2973 /* If type is a record type in the form of a standard GNAT array
2974    descriptor, returns the number of dimensions for type.  If arr is a
2975    simple array, returns the number of "array of"s that prefix its
2976    type designation.  Otherwise, returns 0.  */
2977
2978 int
2979 ada_array_arity (struct type *type)
2980 {
2981   int arity;
2982
2983   if (type == NULL)
2984     return 0;
2985
2986   type = desc_base_type (type);
2987
2988   arity = 0;
2989   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2990     return desc_arity (desc_bounds_type (type));
2991   else
2992     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2993       {
2994         arity += 1;
2995         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2996       }
2997
2998   return arity;
2999 }
3000
3001 /* If TYPE is a record type in the form of a standard GNAT array
3002    descriptor or a simple array type, returns the element type for
3003    TYPE after indexing by NINDICES indices, or by all indices if
3004    NINDICES is -1.  Otherwise, returns NULL.  */
3005
3006 struct type *
3007 ada_array_element_type (struct type *type, int nindices)
3008 {
3009   type = desc_base_type (type);
3010
3011   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3012     {
3013       int k;
3014       struct type *p_array_type;
3015
3016       p_array_type = desc_data_target_type (type);
3017
3018       k = ada_array_arity (type);
3019       if (k == 0)
3020         return NULL;
3021
3022       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3023       if (nindices >= 0 && k > nindices)
3024         k = nindices;
3025       while (k > 0 && p_array_type != NULL)
3026         {
3027           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3028           k -= 1;
3029         }
3030       return p_array_type;
3031     }
3032   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3033     {
3034       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3035         {
3036           type = TYPE_TARGET_TYPE (type);
3037           nindices -= 1;
3038         }
3039       return type;
3040     }
3041
3042   return NULL;
3043 }
3044
3045 /* The type of nth index in arrays of given type (n numbering from 1).
3046    Does not examine memory.  Throws an error if N is invalid or TYPE
3047    is not an array type.  NAME is the name of the Ada attribute being
3048    evaluated ('range, 'first, 'last, or 'length); it is used in building
3049    the error message.  */
3050
3051 static struct type *
3052 ada_index_type (struct type *type, int n, const char *name)
3053 {
3054   struct type *result_type;
3055
3056   type = desc_base_type (type);
3057
3058   if (n < 0 || n > ada_array_arity (type))
3059     error (_("invalid dimension number to '%s"), name);
3060
3061   if (ada_is_simple_array_type (type))
3062     {
3063       int i;
3064
3065       for (i = 1; i < n; i += 1)
3066         type = TYPE_TARGET_TYPE (type);
3067       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3068       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3069          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3070          perhaps stabsread.c would make more sense.  */
3071       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3072         result_type = NULL;
3073     }
3074   else
3075     {
3076       result_type = desc_index_type (desc_bounds_type (type), n);
3077       if (result_type == NULL)
3078         error (_("attempt to take bound of something that is not an array"));
3079     }
3080
3081   return result_type;
3082 }
3083
3084 /* Given that arr is an array type, returns the lower bound of the
3085    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3086    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3087    array-descriptor type.  It works for other arrays with bounds supplied
3088    by run-time quantities other than discriminants.  */
3089
3090 static LONGEST
3091 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3092 {
3093   struct type *type, *index_type_desc, *index_type;
3094   int i;
3095
3096   gdb_assert (which == 0 || which == 1);
3097
3098   if (ada_is_constrained_packed_array_type (arr_type))
3099     arr_type = decode_constrained_packed_array_type (arr_type);
3100
3101   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3102     return (LONGEST) - which;
3103
3104   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3105     type = TYPE_TARGET_TYPE (arr_type);
3106   else
3107     type = arr_type;
3108
3109   if (TYPE_FIXED_INSTANCE (type))
3110     {
3111       /* The array has already been fixed, so we do not need to
3112          check the parallel ___XA type again.  That encoding has
3113          already been applied, so ignore it now.  */
3114       index_type_desc = NULL;
3115     }
3116   else
3117     {
3118       index_type_desc = ada_find_parallel_type (type, "___XA");
3119       ada_fixup_array_indexes_type (index_type_desc);
3120     }
3121
3122   if (index_type_desc != NULL)
3123     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3124                                       NULL);
3125   else
3126     {
3127       struct type *elt_type = check_typedef (type);
3128
3129       for (i = 1; i < n; i++)
3130         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3131
3132       index_type = TYPE_INDEX_TYPE (elt_type);
3133     }
3134
3135   return
3136     (LONGEST) (which == 0
3137                ? ada_discrete_type_low_bound (index_type)
3138                : ada_discrete_type_high_bound (index_type));
3139 }
3140
3141 /* Given that arr is an array value, returns the lower bound of the
3142    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3143    WHICH is 1.  This routine will also work for arrays with bounds
3144    supplied by run-time quantities other than discriminants.  */
3145
3146 static LONGEST
3147 ada_array_bound (struct value *arr, int n, int which)
3148 {
3149   struct type *arr_type;
3150
3151   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3152     arr = value_ind (arr);
3153   arr_type = value_enclosing_type (arr);
3154
3155   if (ada_is_constrained_packed_array_type (arr_type))
3156     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3157   else if (ada_is_simple_array_type (arr_type))
3158     return ada_array_bound_from_type (arr_type, n, which);
3159   else
3160     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3161 }
3162
3163 /* Given that arr is an array value, returns the length of the
3164    nth index.  This routine will also work for arrays with bounds
3165    supplied by run-time quantities other than discriminants.
3166    Does not work for arrays indexed by enumeration types with representation
3167    clauses at the moment.  */
3168
3169 static LONGEST
3170 ada_array_length (struct value *arr, int n)
3171 {
3172   struct type *arr_type, *index_type;
3173   int low, high;
3174
3175   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3176     arr = value_ind (arr);
3177   arr_type = value_enclosing_type (arr);
3178
3179   if (ada_is_constrained_packed_array_type (arr_type))
3180     return ada_array_length (decode_constrained_packed_array (arr), n);
3181
3182   if (ada_is_simple_array_type (arr_type))
3183     {
3184       low = ada_array_bound_from_type (arr_type, n, 0);
3185       high = ada_array_bound_from_type (arr_type, n, 1);
3186     }
3187   else
3188     {
3189       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3190       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3191     }
3192
3193   arr_type = check_typedef (arr_type);
3194   index_type = ada_index_type (arr_type, n, "length");
3195   if (index_type != NULL)
3196     {
3197       struct type *base_type;
3198       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3199         base_type = TYPE_TARGET_TYPE (index_type);
3200       else
3201         base_type = index_type;
3202
3203       low = pos_atr (value_from_longest (base_type, low));
3204       high = pos_atr (value_from_longest (base_type, high));
3205     }
3206   return high - low + 1;
3207 }
3208
3209 /* An empty array whose type is that of ARR_TYPE (an array type),
3210    with bounds LOW to LOW-1.  */
3211
3212 static struct value *
3213 empty_array (struct type *arr_type, int low)
3214 {
3215   struct type *arr_type0 = ada_check_typedef (arr_type);
3216   struct type *index_type
3217     = create_static_range_type
3218         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3219   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3220
3221   return allocate_value (create_array_type (NULL, elt_type, index_type));
3222 }
3223 \f
3224
3225                                 /* Name resolution */
3226
3227 /* The "decoded" name for the user-definable Ada operator corresponding
3228    to OP.  */
3229
3230 static const char *
3231 ada_decoded_op_name (enum exp_opcode op)
3232 {
3233   int i;
3234
3235   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3236     {
3237       if (ada_opname_table[i].op == op)
3238         return ada_opname_table[i].decoded;
3239     }
3240   error (_("Could not find operator name for opcode"));
3241 }
3242
3243
3244 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3245    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3246    undefined namespace) and converts operators that are
3247    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3248    non-null, it provides a preferred result type [at the moment, only
3249    type void has any effect---causing procedures to be preferred over
3250    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3251    return type is preferred.  May change (expand) *EXP.  */
3252
3253 static void
3254 resolve (expression_up *expp, int void_context_p)
3255 {
3256   struct type *context_type = NULL;
3257   int pc = 0;
3258
3259   if (void_context_p)
3260     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3261
3262   resolve_subexp (expp, &pc, 1, context_type);
3263 }
3264
3265 /* Resolve the operator of the subexpression beginning at
3266    position *POS of *EXPP.  "Resolving" consists of replacing
3267    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3268    with their resolutions, replacing built-in operators with
3269    function calls to user-defined operators, where appropriate, and,
3270    when DEPROCEDURE_P is non-zero, converting function-valued variables
3271    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3272    are as in ada_resolve, above.  */
3273
3274 static struct value *
3275 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3276                 struct type *context_type)
3277 {
3278   int pc = *pos;
3279   int i;
3280   struct expression *exp;       /* Convenience: == *expp.  */
3281   enum exp_opcode op = (*expp)->elts[pc].opcode;
3282   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3283   int nargs;                    /* Number of operands.  */
3284   int oplen;
3285
3286   argvec = NULL;
3287   nargs = 0;
3288   exp = expp->get ();
3289
3290   /* Pass one: resolve operands, saving their types and updating *pos,
3291      if needed.  */
3292   switch (op)
3293     {
3294     case OP_FUNCALL:
3295       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3296           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3297         *pos += 7;
3298       else
3299         {
3300           *pos += 3;
3301           resolve_subexp (expp, pos, 0, NULL);
3302         }
3303       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3304       break;
3305
3306     case UNOP_ADDR:
3307       *pos += 1;
3308       resolve_subexp (expp, pos, 0, NULL);
3309       break;
3310
3311     case UNOP_QUAL:
3312       *pos += 3;
3313       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3314       break;
3315
3316     case OP_ATR_MODULUS:
3317     case OP_ATR_SIZE:
3318     case OP_ATR_TAG:
3319     case OP_ATR_FIRST:
3320     case OP_ATR_LAST:
3321     case OP_ATR_LENGTH:
3322     case OP_ATR_POS:
3323     case OP_ATR_VAL:
3324     case OP_ATR_MIN:
3325     case OP_ATR_MAX:
3326     case TERNOP_IN_RANGE:
3327     case BINOP_IN_BOUNDS:
3328     case UNOP_IN_RANGE:
3329     case OP_AGGREGATE:
3330     case OP_OTHERS:
3331     case OP_CHOICES:
3332     case OP_POSITIONAL:
3333     case OP_DISCRETE_RANGE:
3334     case OP_NAME:
3335       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3336       *pos += oplen;
3337       break;
3338
3339     case BINOP_ASSIGN:
3340       {
3341         struct value *arg1;
3342
3343         *pos += 1;
3344         arg1 = resolve_subexp (expp, pos, 0, NULL);
3345         if (arg1 == NULL)
3346           resolve_subexp (expp, pos, 1, NULL);
3347         else
3348           resolve_subexp (expp, pos, 1, value_type (arg1));
3349         break;
3350       }
3351
3352     case UNOP_CAST:
3353       *pos += 3;
3354       nargs = 1;
3355       break;
3356
3357     case BINOP_ADD:
3358     case BINOP_SUB:
3359     case BINOP_MUL:
3360     case BINOP_DIV:
3361     case BINOP_REM:
3362     case BINOP_MOD:
3363     case BINOP_EXP:
3364     case BINOP_CONCAT:
3365     case BINOP_LOGICAL_AND:
3366     case BINOP_LOGICAL_OR:
3367     case BINOP_BITWISE_AND:
3368     case BINOP_BITWISE_IOR:
3369     case BINOP_BITWISE_XOR:
3370
3371     case BINOP_EQUAL:
3372     case BINOP_NOTEQUAL:
3373     case BINOP_LESS:
3374     case BINOP_GTR:
3375     case BINOP_LEQ:
3376     case BINOP_GEQ:
3377
3378     case BINOP_REPEAT:
3379     case BINOP_SUBSCRIPT:
3380     case BINOP_COMMA:
3381       *pos += 1;
3382       nargs = 2;
3383       break;
3384
3385     case UNOP_NEG:
3386     case UNOP_PLUS:
3387     case UNOP_LOGICAL_NOT:
3388     case UNOP_ABS:
3389     case UNOP_IND:
3390       *pos += 1;
3391       nargs = 1;
3392       break;
3393
3394     case OP_LONG:
3395     case OP_FLOAT:
3396     case OP_VAR_VALUE:
3397     case OP_VAR_MSYM_VALUE:
3398       *pos += 4;
3399       break;
3400
3401     case OP_TYPE:
3402     case OP_BOOL:
3403     case OP_LAST:
3404     case OP_INTERNALVAR:
3405       *pos += 3;
3406       break;
3407
3408     case UNOP_MEMVAL:
3409       *pos += 3;
3410       nargs = 1;
3411       break;
3412
3413     case OP_REGISTER:
3414       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3415       break;
3416
3417     case STRUCTOP_STRUCT:
3418       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3419       nargs = 1;
3420       break;
3421
3422     case TERNOP_SLICE:
3423       *pos += 1;
3424       nargs = 3;
3425       break;
3426
3427     case OP_STRING:
3428       break;
3429
3430     default:
3431       error (_("Unexpected operator during name resolution"));
3432     }
3433
3434   argvec = XALLOCAVEC (struct value *, nargs + 1);
3435   for (i = 0; i < nargs; i += 1)
3436     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3437   argvec[i] = NULL;
3438   exp = expp->get ();
3439
3440   /* Pass two: perform any resolution on principal operator.  */
3441   switch (op)
3442     {
3443     default:
3444       break;
3445
3446     case OP_VAR_VALUE:
3447       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3448         {
3449           std::vector<struct block_symbol> candidates;
3450           int n_candidates;
3451
3452           n_candidates =
3453             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3454                                     (exp->elts[pc + 2].symbol),
3455                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3456                                     &candidates);
3457
3458           if (n_candidates > 1)
3459             {
3460               /* Types tend to get re-introduced locally, so if there
3461                  are any local symbols that are not types, first filter
3462                  out all types.  */
3463               int j;
3464               for (j = 0; j < n_candidates; j += 1)
3465                 switch (SYMBOL_CLASS (candidates[j].symbol))
3466                   {
3467                   case LOC_REGISTER:
3468                   case LOC_ARG:
3469                   case LOC_REF_ARG:
3470                   case LOC_REGPARM_ADDR:
3471                   case LOC_LOCAL:
3472                   case LOC_COMPUTED:
3473                     goto FoundNonType;
3474                   default:
3475                     break;
3476                   }
3477             FoundNonType:
3478               if (j < n_candidates)
3479                 {
3480                   j = 0;
3481                   while (j < n_candidates)
3482                     {
3483                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3484                         {
3485                           candidates[j] = candidates[n_candidates - 1];
3486                           n_candidates -= 1;
3487                         }
3488                       else
3489                         j += 1;
3490                     }
3491                 }
3492             }
3493
3494           if (n_candidates == 0)
3495             error (_("No definition found for %s"),
3496                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3497           else if (n_candidates == 1)
3498             i = 0;
3499           else if (deprocedure_p
3500                    && !is_nonfunction (candidates.data (), n_candidates))
3501             {
3502               i = ada_resolve_function
3503                 (candidates.data (), n_candidates, NULL, 0,
3504                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3505                  context_type);
3506               if (i < 0)
3507                 error (_("Could not find a match for %s"),
3508                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3509             }
3510           else
3511             {
3512               printf_filtered (_("Multiple matches for %s\n"),
3513                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3514               user_select_syms (candidates.data (), n_candidates, 1);
3515               i = 0;
3516             }
3517
3518           exp->elts[pc + 1].block = candidates[i].block;
3519           exp->elts[pc + 2].symbol = candidates[i].symbol;
3520           innermost_block.update (candidates[i]);
3521         }
3522
3523       if (deprocedure_p
3524           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3525               == TYPE_CODE_FUNC))
3526         {
3527           replace_operator_with_call (expp, pc, 0, 4,
3528                                       exp->elts[pc + 2].symbol,
3529                                       exp->elts[pc + 1].block);
3530           exp = expp->get ();
3531         }
3532       break;
3533
3534     case OP_FUNCALL:
3535       {
3536         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3537             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3538           {
3539             std::vector<struct block_symbol> candidates;
3540             int n_candidates;
3541
3542             n_candidates =
3543               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3544                                       (exp->elts[pc + 5].symbol),
3545                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3546                                       &candidates);
3547
3548             if (n_candidates == 1)
3549               i = 0;
3550             else
3551               {
3552                 i = ada_resolve_function
3553                   (candidates.data (), n_candidates,
3554                    argvec, nargs,
3555                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3556                    context_type);
3557                 if (i < 0)
3558                   error (_("Could not find a match for %s"),
3559                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3560               }
3561
3562             exp->elts[pc + 4].block = candidates[i].block;
3563             exp->elts[pc + 5].symbol = candidates[i].symbol;
3564             innermost_block.update (candidates[i]);
3565           }
3566       }
3567       break;
3568     case BINOP_ADD:
3569     case BINOP_SUB:
3570     case BINOP_MUL:
3571     case BINOP_DIV:
3572     case BINOP_REM:
3573     case BINOP_MOD:
3574     case BINOP_CONCAT:
3575     case BINOP_BITWISE_AND:
3576     case BINOP_BITWISE_IOR:
3577     case BINOP_BITWISE_XOR:
3578     case BINOP_EQUAL:
3579     case BINOP_NOTEQUAL:
3580     case BINOP_LESS:
3581     case BINOP_GTR:
3582     case BINOP_LEQ:
3583     case BINOP_GEQ:
3584     case BINOP_EXP:
3585     case UNOP_NEG:
3586     case UNOP_PLUS:
3587     case UNOP_LOGICAL_NOT:
3588     case UNOP_ABS:
3589       if (possible_user_operator_p (op, argvec))
3590         {
3591           std::vector<struct block_symbol> candidates;
3592           int n_candidates;
3593
3594           n_candidates =
3595             ada_lookup_symbol_list (ada_decoded_op_name (op),
3596                                     (struct block *) NULL, VAR_DOMAIN,
3597                                     &candidates);
3598
3599           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3600                                     nargs, ada_decoded_op_name (op), NULL);
3601           if (i < 0)
3602             break;
3603
3604           replace_operator_with_call (expp, pc, nargs, 1,
3605                                       candidates[i].symbol,
3606                                       candidates[i].block);
3607           exp = expp->get ();
3608         }
3609       break;
3610
3611     case OP_TYPE:
3612     case OP_REGISTER:
3613       return NULL;
3614     }
3615
3616   *pos = pc;
3617   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3618     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3619                                     exp->elts[pc + 1].objfile,
3620                                     exp->elts[pc + 2].msymbol);
3621   else
3622     return evaluate_subexp_type (exp, pos);
3623 }
3624
3625 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3626    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3627    a non-pointer.  */
3628 /* The term "match" here is rather loose.  The match is heuristic and
3629    liberal.  */
3630
3631 static int
3632 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3633 {
3634   ftype = ada_check_typedef (ftype);
3635   atype = ada_check_typedef (atype);
3636
3637   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3638     ftype = TYPE_TARGET_TYPE (ftype);
3639   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3640     atype = TYPE_TARGET_TYPE (atype);
3641
3642   switch (TYPE_CODE (ftype))
3643     {
3644     default:
3645       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3646     case TYPE_CODE_PTR:
3647       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3648         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3649                                TYPE_TARGET_TYPE (atype), 0);
3650       else
3651         return (may_deref
3652                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3653     case TYPE_CODE_INT:
3654     case TYPE_CODE_ENUM:
3655     case TYPE_CODE_RANGE:
3656       switch (TYPE_CODE (atype))
3657         {
3658         case TYPE_CODE_INT:
3659         case TYPE_CODE_ENUM:
3660         case TYPE_CODE_RANGE:
3661           return 1;
3662         default:
3663           return 0;
3664         }
3665
3666     case TYPE_CODE_ARRAY:
3667       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3668               || ada_is_array_descriptor_type (atype));
3669
3670     case TYPE_CODE_STRUCT:
3671       if (ada_is_array_descriptor_type (ftype))
3672         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3673                 || ada_is_array_descriptor_type (atype));
3674       else
3675         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3676                 && !ada_is_array_descriptor_type (atype));
3677
3678     case TYPE_CODE_UNION:
3679     case TYPE_CODE_FLT:
3680       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3681     }
3682 }
3683
3684 /* Return non-zero if the formals of FUNC "sufficiently match" the
3685    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3686    may also be an enumeral, in which case it is treated as a 0-
3687    argument function.  */
3688
3689 static int
3690 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3691 {
3692   int i;
3693   struct type *func_type = SYMBOL_TYPE (func);
3694
3695   if (SYMBOL_CLASS (func) == LOC_CONST
3696       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3697     return (n_actuals == 0);
3698   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3699     return 0;
3700
3701   if (TYPE_NFIELDS (func_type) != n_actuals)
3702     return 0;
3703
3704   for (i = 0; i < n_actuals; i += 1)
3705     {
3706       if (actuals[i] == NULL)
3707         return 0;
3708       else
3709         {
3710           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3711                                                                    i));
3712           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3713
3714           if (!ada_type_match (ftype, atype, 1))
3715             return 0;
3716         }
3717     }
3718   return 1;
3719 }
3720
3721 /* False iff function type FUNC_TYPE definitely does not produce a value
3722    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3723    FUNC_TYPE is not a valid function type with a non-null return type
3724    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3725
3726 static int
3727 return_match (struct type *func_type, struct type *context_type)
3728 {
3729   struct type *return_type;
3730
3731   if (func_type == NULL)
3732     return 1;
3733
3734   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3735     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3736   else
3737     return_type = get_base_type (func_type);
3738   if (return_type == NULL)
3739     return 1;
3740
3741   context_type = get_base_type (context_type);
3742
3743   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3744     return context_type == NULL || return_type == context_type;
3745   else if (context_type == NULL)
3746     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3747   else
3748     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3749 }
3750
3751
3752 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3753    function (if any) that matches the types of the NARGS arguments in
3754    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3755    that returns that type, then eliminate matches that don't.  If
3756    CONTEXT_TYPE is void and there is at least one match that does not
3757    return void, eliminate all matches that do.
3758
3759    Asks the user if there is more than one match remaining.  Returns -1
3760    if there is no such symbol or none is selected.  NAME is used
3761    solely for messages.  May re-arrange and modify SYMS in
3762    the process; the index returned is for the modified vector.  */
3763
3764 static int
3765 ada_resolve_function (struct block_symbol syms[],
3766                       int nsyms, struct value **args, int nargs,
3767                       const char *name, struct type *context_type)
3768 {
3769   int fallback;
3770   int k;
3771   int m;                        /* Number of hits */
3772
3773   m = 0;
3774   /* In the first pass of the loop, we only accept functions matching
3775      context_type.  If none are found, we add a second pass of the loop
3776      where every function is accepted.  */
3777   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3778     {
3779       for (k = 0; k < nsyms; k += 1)
3780         {
3781           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3782
3783           if (ada_args_match (syms[k].symbol, args, nargs)
3784               && (fallback || return_match (type, context_type)))
3785             {
3786               syms[m] = syms[k];
3787               m += 1;
3788             }
3789         }
3790     }
3791
3792   /* If we got multiple matches, ask the user which one to use.  Don't do this
3793      interactive thing during completion, though, as the purpose of the
3794      completion is providing a list of all possible matches.  Prompting the
3795      user to filter it down would be completely unexpected in this case.  */
3796   if (m == 0)
3797     return -1;
3798   else if (m > 1 && !parse_completion)
3799     {
3800       printf_filtered (_("Multiple matches for %s\n"), name);
3801       user_select_syms (syms, m, 1);
3802       return 0;
3803     }
3804   return 0;
3805 }
3806
3807 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3808    in a listing of choices during disambiguation (see sort_choices, below).
3809    The idea is that overloadings of a subprogram name from the
3810    same package should sort in their source order.  We settle for ordering
3811    such symbols by their trailing number (__N  or $N).  */
3812
3813 static int
3814 encoded_ordered_before (const char *N0, const char *N1)
3815 {
3816   if (N1 == NULL)
3817     return 0;
3818   else if (N0 == NULL)
3819     return 1;
3820   else
3821     {
3822       int k0, k1;
3823
3824       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3825         ;
3826       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3827         ;
3828       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3829           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3830         {
3831           int n0, n1;
3832
3833           n0 = k0;
3834           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3835             n0 -= 1;
3836           n1 = k1;
3837           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3838             n1 -= 1;
3839           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3840             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3841         }
3842       return (strcmp (N0, N1) < 0);
3843     }
3844 }
3845
3846 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3847    encoded names.  */
3848
3849 static void
3850 sort_choices (struct block_symbol syms[], int nsyms)
3851 {
3852   int i;
3853
3854   for (i = 1; i < nsyms; i += 1)
3855     {
3856       struct block_symbol sym = syms[i];
3857       int j;
3858
3859       for (j = i - 1; j >= 0; j -= 1)
3860         {
3861           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3862                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3863             break;
3864           syms[j + 1] = syms[j];
3865         }
3866       syms[j + 1] = sym;
3867     }
3868 }
3869
3870 /* Whether GDB should display formals and return types for functions in the
3871    overloads selection menu.  */
3872 static int print_signatures = 1;
3873
3874 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3875    all but functions, the signature is just the name of the symbol.  For
3876    functions, this is the name of the function, the list of types for formals
3877    and the return type (if any).  */
3878
3879 static void
3880 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3881                             const struct type_print_options *flags)
3882 {
3883   struct type *type = SYMBOL_TYPE (sym);
3884
3885   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3886   if (!print_signatures
3887       || type == NULL
3888       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3889     return;
3890
3891   if (TYPE_NFIELDS (type) > 0)
3892     {
3893       int i;
3894
3895       fprintf_filtered (stream, " (");
3896       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3897         {
3898           if (i > 0)
3899             fprintf_filtered (stream, "; ");
3900           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3901                           flags);
3902         }
3903       fprintf_filtered (stream, ")");
3904     }
3905   if (TYPE_TARGET_TYPE (type) != NULL
3906       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3907     {
3908       fprintf_filtered (stream, " return ");
3909       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3910     }
3911 }
3912
3913 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3914    by asking the user (if necessary), returning the number selected, 
3915    and setting the first elements of SYMS items.  Error if no symbols
3916    selected.  */
3917
3918 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3919    to be re-integrated one of these days.  */
3920
3921 int
3922 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3923 {
3924   int i;
3925   int *chosen = XALLOCAVEC (int , nsyms);
3926   int n_chosen;
3927   int first_choice = (max_results == 1) ? 1 : 2;
3928   const char *select_mode = multiple_symbols_select_mode ();
3929
3930   if (max_results < 1)
3931     error (_("Request to select 0 symbols!"));
3932   if (nsyms <= 1)
3933     return nsyms;
3934
3935   if (select_mode == multiple_symbols_cancel)
3936     error (_("\
3937 canceled because the command is ambiguous\n\
3938 See set/show multiple-symbol."));
3939   
3940   /* If select_mode is "all", then return all possible symbols.
3941      Only do that if more than one symbol can be selected, of course.
3942      Otherwise, display the menu as usual.  */
3943   if (select_mode == multiple_symbols_all && max_results > 1)
3944     return nsyms;
3945
3946   printf_unfiltered (_("[0] cancel\n"));
3947   if (max_results > 1)
3948     printf_unfiltered (_("[1] all\n"));
3949
3950   sort_choices (syms, nsyms);
3951
3952   for (i = 0; i < nsyms; i += 1)
3953     {
3954       if (syms[i].symbol == NULL)
3955         continue;
3956
3957       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3958         {
3959           struct symtab_and_line sal =
3960             find_function_start_sal (syms[i].symbol, 1);
3961
3962           printf_unfiltered ("[%d] ", i + first_choice);
3963           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3964                                       &type_print_raw_options);
3965           if (sal.symtab == NULL)
3966             printf_unfiltered (_(" at <no source file available>:%d\n"),
3967                                sal.line);
3968           else
3969             printf_unfiltered (_(" at %s:%d\n"),
3970                                symtab_to_filename_for_display (sal.symtab),
3971                                sal.line);
3972           continue;
3973         }
3974       else
3975         {
3976           int is_enumeral =
3977             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3978              && SYMBOL_TYPE (syms[i].symbol) != NULL
3979              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3980           struct symtab *symtab = NULL;
3981
3982           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3983             symtab = symbol_symtab (syms[i].symbol);
3984
3985           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3986             {
3987               printf_unfiltered ("[%d] ", i + first_choice);
3988               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3989                                           &type_print_raw_options);
3990               printf_unfiltered (_(" at %s:%d\n"),
3991                                  symtab_to_filename_for_display (symtab),
3992                                  SYMBOL_LINE (syms[i].symbol));
3993             }
3994           else if (is_enumeral
3995                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3996             {
3997               printf_unfiltered (("[%d] "), i + first_choice);
3998               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3999                               gdb_stdout, -1, 0, &type_print_raw_options);
4000               printf_unfiltered (_("'(%s) (enumeral)\n"),
4001                                  SYMBOL_PRINT_NAME (syms[i].symbol));
4002             }
4003           else
4004             {
4005               printf_unfiltered ("[%d] ", i + first_choice);
4006               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4007                                           &type_print_raw_options);
4008
4009               if (symtab != NULL)
4010                 printf_unfiltered (is_enumeral
4011                                    ? _(" in %s (enumeral)\n")
4012                                    : _(" at %s:?\n"),
4013                                    symtab_to_filename_for_display (symtab));
4014               else
4015                 printf_unfiltered (is_enumeral
4016                                    ? _(" (enumeral)\n")
4017                                    : _(" at ?\n"));
4018             }
4019         }
4020     }
4021
4022   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4023                              "overload-choice");
4024
4025   for (i = 0; i < n_chosen; i += 1)
4026     syms[i] = syms[chosen[i]];
4027
4028   return n_chosen;
4029 }
4030
4031 /* Read and validate a set of numeric choices from the user in the
4032    range 0 .. N_CHOICES-1.  Place the results in increasing
4033    order in CHOICES[0 .. N-1], and return N.
4034
4035    The user types choices as a sequence of numbers on one line
4036    separated by blanks, encoding them as follows:
4037
4038      + A choice of 0 means to cancel the selection, throwing an error.
4039      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4040      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4041
4042    The user is not allowed to choose more than MAX_RESULTS values.
4043
4044    ANNOTATION_SUFFIX, if present, is used to annotate the input
4045    prompts (for use with the -f switch).  */
4046
4047 int
4048 get_selections (int *choices, int n_choices, int max_results,
4049                 int is_all_choice, const char *annotation_suffix)
4050 {
4051   char *args;
4052   const char *prompt;
4053   int n_chosen;
4054   int first_choice = is_all_choice ? 2 : 1;
4055
4056   prompt = getenv ("PS2");
4057   if (prompt == NULL)
4058     prompt = "> ";
4059
4060   args = command_line_input (prompt, annotation_suffix);
4061
4062   if (args == NULL)
4063     error_no_arg (_("one or more choice numbers"));
4064
4065   n_chosen = 0;
4066
4067   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4068      order, as given in args.  Choices are validated.  */
4069   while (1)
4070     {
4071       char *args2;
4072       int choice, j;
4073
4074       args = skip_spaces (args);
4075       if (*args == '\0' && n_chosen == 0)
4076         error_no_arg (_("one or more choice numbers"));
4077       else if (*args == '\0')
4078         break;
4079
4080       choice = strtol (args, &args2, 10);
4081       if (args == args2 || choice < 0
4082           || choice > n_choices + first_choice - 1)
4083         error (_("Argument must be choice number"));
4084       args = args2;
4085
4086       if (choice == 0)
4087         error (_("cancelled"));
4088
4089       if (choice < first_choice)
4090         {
4091           n_chosen = n_choices;
4092           for (j = 0; j < n_choices; j += 1)
4093             choices[j] = j;
4094           break;
4095         }
4096       choice -= first_choice;
4097
4098       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4099         {
4100         }
4101
4102       if (j < 0 || choice != choices[j])
4103         {
4104           int k;
4105
4106           for (k = n_chosen - 1; k > j; k -= 1)
4107             choices[k + 1] = choices[k];
4108           choices[j + 1] = choice;
4109           n_chosen += 1;
4110         }
4111     }
4112
4113   if (n_chosen > max_results)
4114     error (_("Select no more than %d of the above"), max_results);
4115
4116   return n_chosen;
4117 }
4118
4119 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4120    on the function identified by SYM and BLOCK, and taking NARGS
4121    arguments.  Update *EXPP as needed to hold more space.  */
4122
4123 static void
4124 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4125                             int oplen, struct symbol *sym,
4126                             const struct block *block)
4127 {
4128   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4129      symbol, -oplen for operator being replaced).  */
4130   struct expression *newexp = (struct expression *)
4131     xzalloc (sizeof (struct expression)
4132              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4133   struct expression *exp = expp->get ();
4134
4135   newexp->nelts = exp->nelts + 7 - oplen;
4136   newexp->language_defn = exp->language_defn;
4137   newexp->gdbarch = exp->gdbarch;
4138   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4139   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4140           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4141
4142   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4143   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4144
4145   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4146   newexp->elts[pc + 4].block = block;
4147   newexp->elts[pc + 5].symbol = sym;
4148
4149   expp->reset (newexp);
4150 }
4151
4152 /* Type-class predicates */
4153
4154 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4155    or FLOAT).  */
4156
4157 static int
4158 numeric_type_p (struct type *type)
4159 {
4160   if (type == NULL)
4161     return 0;
4162   else
4163     {
4164       switch (TYPE_CODE (type))
4165         {
4166         case TYPE_CODE_INT:
4167         case TYPE_CODE_FLT:
4168           return 1;
4169         case TYPE_CODE_RANGE:
4170           return (type == TYPE_TARGET_TYPE (type)
4171                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4172         default:
4173           return 0;
4174         }
4175     }
4176 }
4177
4178 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4179
4180 static int
4181 integer_type_p (struct type *type)
4182 {
4183   if (type == NULL)
4184     return 0;
4185   else
4186     {
4187       switch (TYPE_CODE (type))
4188         {
4189         case TYPE_CODE_INT:
4190           return 1;
4191         case TYPE_CODE_RANGE:
4192           return (type == TYPE_TARGET_TYPE (type)
4193                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4194         default:
4195           return 0;
4196         }
4197     }
4198 }
4199
4200 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4201
4202 static int
4203 scalar_type_p (struct type *type)
4204 {
4205   if (type == NULL)
4206     return 0;
4207   else
4208     {
4209       switch (TYPE_CODE (type))
4210         {
4211         case TYPE_CODE_INT:
4212         case TYPE_CODE_RANGE:
4213         case TYPE_CODE_ENUM:
4214         case TYPE_CODE_FLT:
4215           return 1;
4216         default:
4217           return 0;
4218         }
4219     }
4220 }
4221
4222 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4223
4224 static int
4225 discrete_type_p (struct type *type)
4226 {
4227   if (type == NULL)
4228     return 0;
4229   else
4230     {
4231       switch (TYPE_CODE (type))
4232         {
4233         case TYPE_CODE_INT:
4234         case TYPE_CODE_RANGE:
4235         case TYPE_CODE_ENUM:
4236         case TYPE_CODE_BOOL:
4237           return 1;
4238         default:
4239           return 0;
4240         }
4241     }
4242 }
4243
4244 /* Returns non-zero if OP with operands in the vector ARGS could be
4245    a user-defined function.  Errs on the side of pre-defined operators
4246    (i.e., result 0).  */
4247
4248 static int
4249 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4250 {
4251   struct type *type0 =
4252     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4253   struct type *type1 =
4254     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4255
4256   if (type0 == NULL)
4257     return 0;
4258
4259   switch (op)
4260     {
4261     default:
4262       return 0;
4263
4264     case BINOP_ADD:
4265     case BINOP_SUB:
4266     case BINOP_MUL:
4267     case BINOP_DIV:
4268       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4269
4270     case BINOP_REM:
4271     case BINOP_MOD:
4272     case BINOP_BITWISE_AND:
4273     case BINOP_BITWISE_IOR:
4274     case BINOP_BITWISE_XOR:
4275       return (!(integer_type_p (type0) && integer_type_p (type1)));
4276
4277     case BINOP_EQUAL:
4278     case BINOP_NOTEQUAL:
4279     case BINOP_LESS:
4280     case BINOP_GTR:
4281     case BINOP_LEQ:
4282     case BINOP_GEQ:
4283       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4284
4285     case BINOP_CONCAT:
4286       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4287
4288     case BINOP_EXP:
4289       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4290
4291     case UNOP_NEG:
4292     case UNOP_PLUS:
4293     case UNOP_LOGICAL_NOT:
4294     case UNOP_ABS:
4295       return (!numeric_type_p (type0));
4296
4297     }
4298 }
4299 \f
4300                                 /* Renaming */
4301
4302 /* NOTES: 
4303
4304    1. In the following, we assume that a renaming type's name may
4305       have an ___XD suffix.  It would be nice if this went away at some
4306       point.
4307    2. We handle both the (old) purely type-based representation of 
4308       renamings and the (new) variable-based encoding.  At some point,
4309       it is devoutly to be hoped that the former goes away 
4310       (FIXME: hilfinger-2007-07-09).
4311    3. Subprogram renamings are not implemented, although the XRS
4312       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4313
4314 /* If SYM encodes a renaming, 
4315
4316        <renaming> renames <renamed entity>,
4317
4318    sets *LEN to the length of the renamed entity's name,
4319    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4320    the string describing the subcomponent selected from the renamed
4321    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4322    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4323    are undefined).  Otherwise, returns a value indicating the category
4324    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4325    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4326    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4327    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4328    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4329    may be NULL, in which case they are not assigned.
4330
4331    [Currently, however, GCC does not generate subprogram renamings.]  */
4332
4333 enum ada_renaming_category
4334 ada_parse_renaming (struct symbol *sym,
4335                     const char **renamed_entity, int *len, 
4336                     const char **renaming_expr)
4337 {
4338   enum ada_renaming_category kind;
4339   const char *info;
4340   const char *suffix;
4341
4342   if (sym == NULL)
4343     return ADA_NOT_RENAMING;
4344   switch (SYMBOL_CLASS (sym)) 
4345     {
4346     default:
4347       return ADA_NOT_RENAMING;
4348     case LOC_TYPEDEF:
4349       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4350                                        renamed_entity, len, renaming_expr);
4351     case LOC_LOCAL:
4352     case LOC_STATIC:
4353     case LOC_COMPUTED:
4354     case LOC_OPTIMIZED_OUT:
4355       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4356       if (info == NULL)
4357         return ADA_NOT_RENAMING;
4358       switch (info[5])
4359         {
4360         case '_':
4361           kind = ADA_OBJECT_RENAMING;
4362           info += 6;
4363           break;
4364         case 'E':
4365           kind = ADA_EXCEPTION_RENAMING;
4366           info += 7;
4367           break;
4368         case 'P':
4369           kind = ADA_PACKAGE_RENAMING;
4370           info += 7;
4371           break;
4372         case 'S':
4373           kind = ADA_SUBPROGRAM_RENAMING;
4374           info += 7;
4375           break;
4376         default:
4377           return ADA_NOT_RENAMING;
4378         }
4379     }
4380
4381   if (renamed_entity != NULL)
4382     *renamed_entity = info;
4383   suffix = strstr (info, "___XE");
4384   if (suffix == NULL || suffix == info)
4385     return ADA_NOT_RENAMING;
4386   if (len != NULL)
4387     *len = strlen (info) - strlen (suffix);
4388   suffix += 5;
4389   if (renaming_expr != NULL)
4390     *renaming_expr = suffix;
4391   return kind;
4392 }
4393
4394 /* Assuming TYPE encodes a renaming according to the old encoding in
4395    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4396    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4397    ADA_NOT_RENAMING otherwise.  */
4398 static enum ada_renaming_category
4399 parse_old_style_renaming (struct type *type,
4400                           const char **renamed_entity, int *len, 
4401                           const char **renaming_expr)
4402 {
4403   enum ada_renaming_category kind;
4404   const char *name;
4405   const char *info;
4406   const char *suffix;
4407
4408   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4409       || TYPE_NFIELDS (type) != 1)
4410     return ADA_NOT_RENAMING;
4411
4412   name = TYPE_NAME (type);
4413   if (name == NULL)
4414     return ADA_NOT_RENAMING;
4415   
4416   name = strstr (name, "___XR");
4417   if (name == NULL)
4418     return ADA_NOT_RENAMING;
4419   switch (name[5])
4420     {
4421     case '\0':
4422     case '_':
4423       kind = ADA_OBJECT_RENAMING;
4424       break;
4425     case 'E':
4426       kind = ADA_EXCEPTION_RENAMING;
4427       break;
4428     case 'P':
4429       kind = ADA_PACKAGE_RENAMING;
4430       break;
4431     case 'S':
4432       kind = ADA_SUBPROGRAM_RENAMING;
4433       break;
4434     default:
4435       return ADA_NOT_RENAMING;
4436     }
4437
4438   info = TYPE_FIELD_NAME (type, 0);
4439   if (info == NULL)
4440     return ADA_NOT_RENAMING;
4441   if (renamed_entity != NULL)
4442     *renamed_entity = info;
4443   suffix = strstr (info, "___XE");
4444   if (renaming_expr != NULL)
4445     *renaming_expr = suffix + 5;
4446   if (suffix == NULL || suffix == info)
4447     return ADA_NOT_RENAMING;
4448   if (len != NULL)
4449     *len = suffix - info;
4450   return kind;
4451 }
4452
4453 /* Compute the value of the given RENAMING_SYM, which is expected to
4454    be a symbol encoding a renaming expression.  BLOCK is the block
4455    used to evaluate the renaming.  */
4456
4457 static struct value *
4458 ada_read_renaming_var_value (struct symbol *renaming_sym,
4459                              const struct block *block)
4460 {
4461   const char *sym_name;
4462
4463   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4464   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4465   return evaluate_expression (expr.get ());
4466 }
4467 \f
4468
4469                                 /* Evaluation: Function Calls */
4470
4471 /* Return an lvalue containing the value VAL.  This is the identity on
4472    lvalues, and otherwise has the side-effect of allocating memory
4473    in the inferior where a copy of the value contents is copied.  */
4474
4475 static struct value *
4476 ensure_lval (struct value *val)
4477 {
4478   if (VALUE_LVAL (val) == not_lval
4479       || VALUE_LVAL (val) == lval_internalvar)
4480     {
4481       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4482       const CORE_ADDR addr =
4483         value_as_long (value_allocate_space_in_inferior (len));
4484
4485       VALUE_LVAL (val) = lval_memory;
4486       set_value_address (val, addr);
4487       write_memory (addr, value_contents (val), len);
4488     }
4489
4490   return val;
4491 }
4492
4493 /* Return the value ACTUAL, converted to be an appropriate value for a
4494    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4495    allocating any necessary descriptors (fat pointers), or copies of
4496    values not residing in memory, updating it as needed.  */
4497
4498 struct value *
4499 ada_convert_actual (struct value *actual, struct type *formal_type0)
4500 {
4501   struct type *actual_type = ada_check_typedef (value_type (actual));
4502   struct type *formal_type = ada_check_typedef (formal_type0);
4503   struct type *formal_target =
4504     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4505     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4506   struct type *actual_target =
4507     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4508     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4509
4510   if (ada_is_array_descriptor_type (formal_target)
4511       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4512     return make_array_descriptor (formal_type, actual);
4513   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4514            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4515     {
4516       struct value *result;
4517
4518       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4519           && ada_is_array_descriptor_type (actual_target))
4520         result = desc_data (actual);
4521       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4522         {
4523           if (VALUE_LVAL (actual) != lval_memory)
4524             {
4525               struct value *val;
4526
4527               actual_type = ada_check_typedef (value_type (actual));
4528               val = allocate_value (actual_type);
4529               memcpy ((char *) value_contents_raw (val),
4530                       (char *) value_contents (actual),
4531                       TYPE_LENGTH (actual_type));
4532               actual = ensure_lval (val);
4533             }
4534           result = value_addr (actual);
4535         }
4536       else
4537         return actual;
4538       return value_cast_pointers (formal_type, result, 0);
4539     }
4540   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4541     return ada_value_ind (actual);
4542   else if (ada_is_aligner_type (formal_type))
4543     {
4544       /* We need to turn this parameter into an aligner type
4545          as well.  */
4546       struct value *aligner = allocate_value (formal_type);
4547       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4548
4549       value_assign_to_component (aligner, component, actual);
4550       return aligner;
4551     }
4552
4553   return actual;
4554 }
4555
4556 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4557    type TYPE.  This is usually an inefficient no-op except on some targets
4558    (such as AVR) where the representation of a pointer and an address
4559    differs.  */
4560
4561 static CORE_ADDR
4562 value_pointer (struct value *value, struct type *type)
4563 {
4564   struct gdbarch *gdbarch = get_type_arch (type);
4565   unsigned len = TYPE_LENGTH (type);
4566   gdb_byte *buf = (gdb_byte *) alloca (len);
4567   CORE_ADDR addr;
4568
4569   addr = value_address (value);
4570   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4571   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4572   return addr;
4573 }
4574
4575
4576 /* Push a descriptor of type TYPE for array value ARR on the stack at
4577    *SP, updating *SP to reflect the new descriptor.  Return either
4578    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4579    to-descriptor type rather than a descriptor type), a struct value *
4580    representing a pointer to this descriptor.  */
4581
4582 static struct value *
4583 make_array_descriptor (struct type *type, struct value *arr)
4584 {
4585   struct type *bounds_type = desc_bounds_type (type);
4586   struct type *desc_type = desc_base_type (type);
4587   struct value *descriptor = allocate_value (desc_type);
4588   struct value *bounds = allocate_value (bounds_type);
4589   int i;
4590
4591   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4592        i > 0; i -= 1)
4593     {
4594       modify_field (value_type (bounds), value_contents_writeable (bounds),
4595                     ada_array_bound (arr, i, 0),
4596                     desc_bound_bitpos (bounds_type, i, 0),
4597                     desc_bound_bitsize (bounds_type, i, 0));
4598       modify_field (value_type (bounds), value_contents_writeable (bounds),
4599                     ada_array_bound (arr, i, 1),
4600                     desc_bound_bitpos (bounds_type, i, 1),
4601                     desc_bound_bitsize (bounds_type, i, 1));
4602     }
4603
4604   bounds = ensure_lval (bounds);
4605
4606   modify_field (value_type (descriptor),
4607                 value_contents_writeable (descriptor),
4608                 value_pointer (ensure_lval (arr),
4609                                TYPE_FIELD_TYPE (desc_type, 0)),
4610                 fat_pntr_data_bitpos (desc_type),
4611                 fat_pntr_data_bitsize (desc_type));
4612
4613   modify_field (value_type (descriptor),
4614                 value_contents_writeable (descriptor),
4615                 value_pointer (bounds,
4616                                TYPE_FIELD_TYPE (desc_type, 1)),
4617                 fat_pntr_bounds_bitpos (desc_type),
4618                 fat_pntr_bounds_bitsize (desc_type));
4619
4620   descriptor = ensure_lval (descriptor);
4621
4622   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4623     return value_addr (descriptor);
4624   else
4625     return descriptor;
4626 }
4627 \f
4628                                 /* Symbol Cache Module */
4629
4630 /* Performance measurements made as of 2010-01-15 indicate that
4631    this cache does bring some noticeable improvements.  Depending
4632    on the type of entity being printed, the cache can make it as much
4633    as an order of magnitude faster than without it.
4634
4635    The descriptive type DWARF extension has significantly reduced
4636    the need for this cache, at least when DWARF is being used.  However,
4637    even in this case, some expensive name-based symbol searches are still
4638    sometimes necessary - to find an XVZ variable, mostly.  */
4639
4640 /* Initialize the contents of SYM_CACHE.  */
4641
4642 static void
4643 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4644 {
4645   obstack_init (&sym_cache->cache_space);
4646   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4647 }
4648
4649 /* Free the memory used by SYM_CACHE.  */
4650
4651 static void
4652 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4653 {
4654   obstack_free (&sym_cache->cache_space, NULL);
4655   xfree (sym_cache);
4656 }
4657
4658 /* Return the symbol cache associated to the given program space PSPACE.
4659    If not allocated for this PSPACE yet, allocate and initialize one.  */
4660
4661 static struct ada_symbol_cache *
4662 ada_get_symbol_cache (struct program_space *pspace)
4663 {
4664   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4665
4666   if (pspace_data->sym_cache == NULL)
4667     {
4668       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4669       ada_init_symbol_cache (pspace_data->sym_cache);
4670     }
4671
4672   return pspace_data->sym_cache;
4673 }
4674
4675 /* Clear all entries from the symbol cache.  */
4676
4677 static void
4678 ada_clear_symbol_cache (void)
4679 {
4680   struct ada_symbol_cache *sym_cache
4681     = ada_get_symbol_cache (current_program_space);
4682
4683   obstack_free (&sym_cache->cache_space, NULL);
4684   ada_init_symbol_cache (sym_cache);
4685 }
4686
4687 /* Search our cache for an entry matching NAME and DOMAIN.
4688    Return it if found, or NULL otherwise.  */
4689
4690 static struct cache_entry **
4691 find_entry (const char *name, domain_enum domain)
4692 {
4693   struct ada_symbol_cache *sym_cache
4694     = ada_get_symbol_cache (current_program_space);
4695   int h = msymbol_hash (name) % HASH_SIZE;
4696   struct cache_entry **e;
4697
4698   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4699     {
4700       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4701         return e;
4702     }
4703   return NULL;
4704 }
4705
4706 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4707    Return 1 if found, 0 otherwise.
4708
4709    If an entry was found and SYM is not NULL, set *SYM to the entry's
4710    SYM.  Same principle for BLOCK if not NULL.  */
4711
4712 static int
4713 lookup_cached_symbol (const char *name, domain_enum domain,
4714                       struct symbol **sym, const struct block **block)
4715 {
4716   struct cache_entry **e = find_entry (name, domain);
4717
4718   if (e == NULL)
4719     return 0;
4720   if (sym != NULL)
4721     *sym = (*e)->sym;
4722   if (block != NULL)
4723     *block = (*e)->block;
4724   return 1;
4725 }
4726
4727 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4728    in domain DOMAIN, save this result in our symbol cache.  */
4729
4730 static void
4731 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4732               const struct block *block)
4733 {
4734   struct ada_symbol_cache *sym_cache
4735     = ada_get_symbol_cache (current_program_space);
4736   int h;
4737   char *copy;
4738   struct cache_entry *e;
4739
4740   /* Symbols for builtin types don't have a block.
4741      For now don't cache such symbols.  */
4742   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4743     return;
4744
4745   /* If the symbol is a local symbol, then do not cache it, as a search
4746      for that symbol depends on the context.  To determine whether
4747      the symbol is local or not, we check the block where we found it
4748      against the global and static blocks of its associated symtab.  */
4749   if (sym
4750       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4751                             GLOBAL_BLOCK) != block
4752       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4753                             STATIC_BLOCK) != block)
4754     return;
4755
4756   h = msymbol_hash (name) % HASH_SIZE;
4757   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4758   e->next = sym_cache->root[h];
4759   sym_cache->root[h] = e;
4760   e->name = copy
4761     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4762   strcpy (copy, name);
4763   e->sym = sym;
4764   e->domain = domain;
4765   e->block = block;
4766 }
4767 \f
4768                                 /* Symbol Lookup */
4769
4770 /* Return the symbol name match type that should be used used when
4771    searching for all symbols matching LOOKUP_NAME.
4772
4773    LOOKUP_NAME is expected to be a symbol name after transformation
4774    for Ada lookups.  */
4775
4776 static symbol_name_match_type
4777 name_match_type_from_name (const char *lookup_name)
4778 {
4779   return (strstr (lookup_name, "__") == NULL
4780           ? symbol_name_match_type::WILD
4781           : symbol_name_match_type::FULL);
4782 }
4783
4784 /* Return the result of a standard (literal, C-like) lookup of NAME in
4785    given DOMAIN, visible from lexical block BLOCK.  */
4786
4787 static struct symbol *
4788 standard_lookup (const char *name, const struct block *block,
4789                  domain_enum domain)
4790 {
4791   /* Initialize it just to avoid a GCC false warning.  */
4792   struct block_symbol sym = {NULL, NULL};
4793
4794   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4795     return sym.symbol;
4796   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4797   cache_symbol (name, domain, sym.symbol, sym.block);
4798   return sym.symbol;
4799 }
4800
4801
4802 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4803    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4804    since they contend in overloading in the same way.  */
4805 static int
4806 is_nonfunction (struct block_symbol syms[], int n)
4807 {
4808   int i;
4809
4810   for (i = 0; i < n; i += 1)
4811     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4812         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4813             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4814       return 1;
4815
4816   return 0;
4817 }
4818
4819 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4820    struct types.  Otherwise, they may not.  */
4821
4822 static int
4823 equiv_types (struct type *type0, struct type *type1)
4824 {
4825   if (type0 == type1)
4826     return 1;
4827   if (type0 == NULL || type1 == NULL
4828       || TYPE_CODE (type0) != TYPE_CODE (type1))
4829     return 0;
4830   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4831        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4832       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4833       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4834     return 1;
4835
4836   return 0;
4837 }
4838
4839 /* True iff SYM0 represents the same entity as SYM1, or one that is
4840    no more defined than that of SYM1.  */
4841
4842 static int
4843 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4844 {
4845   if (sym0 == sym1)
4846     return 1;
4847   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4848       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4849     return 0;
4850
4851   switch (SYMBOL_CLASS (sym0))
4852     {
4853     case LOC_UNDEF:
4854       return 1;
4855     case LOC_TYPEDEF:
4856       {
4857         struct type *type0 = SYMBOL_TYPE (sym0);
4858         struct type *type1 = SYMBOL_TYPE (sym1);
4859         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4860         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4861         int len0 = strlen (name0);
4862
4863         return
4864           TYPE_CODE (type0) == TYPE_CODE (type1)
4865           && (equiv_types (type0, type1)
4866               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4867                   && startswith (name1 + len0, "___XV")));
4868       }
4869     case LOC_CONST:
4870       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4871         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4872     default:
4873       return 0;
4874     }
4875 }
4876
4877 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4878    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4879
4880 static void
4881 add_defn_to_vec (struct obstack *obstackp,
4882                  struct symbol *sym,
4883                  const struct block *block)
4884 {
4885   int i;
4886   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4887
4888   /* Do not try to complete stub types, as the debugger is probably
4889      already scanning all symbols matching a certain name at the
4890      time when this function is called.  Trying to replace the stub
4891      type by its associated full type will cause us to restart a scan
4892      which may lead to an infinite recursion.  Instead, the client
4893      collecting the matching symbols will end up collecting several
4894      matches, with at least one of them complete.  It can then filter
4895      out the stub ones if needed.  */
4896
4897   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4898     {
4899       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4900         return;
4901       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4902         {
4903           prevDefns[i].symbol = sym;
4904           prevDefns[i].block = block;
4905           return;
4906         }
4907     }
4908
4909   {
4910     struct block_symbol info;
4911
4912     info.symbol = sym;
4913     info.block = block;
4914     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4915   }
4916 }
4917
4918 /* Number of block_symbol structures currently collected in current vector in
4919    OBSTACKP.  */
4920
4921 static int
4922 num_defns_collected (struct obstack *obstackp)
4923 {
4924   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4925 }
4926
4927 /* Vector of block_symbol structures currently collected in current vector in
4928    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4929
4930 static struct block_symbol *
4931 defns_collected (struct obstack *obstackp, int finish)
4932 {
4933   if (finish)
4934     return (struct block_symbol *) obstack_finish (obstackp);
4935   else
4936     return (struct block_symbol *) obstack_base (obstackp);
4937 }
4938
4939 /* Return a bound minimal symbol matching NAME according to Ada
4940    decoding rules.  Returns an invalid symbol if there is no such
4941    minimal symbol.  Names prefixed with "standard__" are handled
4942    specially: "standard__" is first stripped off, and only static and
4943    global symbols are searched.  */
4944
4945 struct bound_minimal_symbol
4946 ada_lookup_simple_minsym (const char *name)
4947 {
4948   struct bound_minimal_symbol result;
4949   struct objfile *objfile;
4950   struct minimal_symbol *msymbol;
4951
4952   memset (&result, 0, sizeof (result));
4953
4954   symbol_name_match_type match_type = name_match_type_from_name (name);
4955   lookup_name_info lookup_name (name, match_type);
4956
4957   symbol_name_matcher_ftype *match_name
4958     = ada_get_symbol_name_matcher (lookup_name);
4959
4960   ALL_MSYMBOLS (objfile, msymbol)
4961   {
4962     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4963         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4964       {
4965         result.minsym = msymbol;
4966         result.objfile = objfile;
4967         break;
4968       }
4969   }
4970
4971   return result;
4972 }
4973
4974 /* For all subprograms that statically enclose the subprogram of the
4975    selected frame, add symbols matching identifier NAME in DOMAIN
4976    and their blocks to the list of data in OBSTACKP, as for
4977    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4978    with a wildcard prefix.  */
4979
4980 static void
4981 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4982                                   const lookup_name_info &lookup_name,
4983                                   domain_enum domain)
4984 {
4985 }
4986
4987 /* True if TYPE is definitely an artificial type supplied to a symbol
4988    for which no debugging information was given in the symbol file.  */
4989
4990 static int
4991 is_nondebugging_type (struct type *type)
4992 {
4993   const char *name = ada_type_name (type);
4994
4995   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4996 }
4997
4998 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4999    that are deemed "identical" for practical purposes.
5000
5001    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5002    types and that their number of enumerals is identical (in other
5003    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5004
5005 static int
5006 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5007 {
5008   int i;
5009
5010   /* The heuristic we use here is fairly conservative.  We consider
5011      that 2 enumerate types are identical if they have the same
5012      number of enumerals and that all enumerals have the same
5013      underlying value and name.  */
5014
5015   /* All enums in the type should have an identical underlying value.  */
5016   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5017     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5018       return 0;
5019
5020   /* All enumerals should also have the same name (modulo any numerical
5021      suffix).  */
5022   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5023     {
5024       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5025       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5026       int len_1 = strlen (name_1);
5027       int len_2 = strlen (name_2);
5028
5029       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5030       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5031       if (len_1 != len_2
5032           || strncmp (TYPE_FIELD_NAME (type1, i),
5033                       TYPE_FIELD_NAME (type2, i),
5034                       len_1) != 0)
5035         return 0;
5036     }
5037
5038   return 1;
5039 }
5040
5041 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5042    that are deemed "identical" for practical purposes.  Sometimes,
5043    enumerals are not strictly identical, but their types are so similar
5044    that they can be considered identical.
5045
5046    For instance, consider the following code:
5047
5048       type Color is (Black, Red, Green, Blue, White);
5049       type RGB_Color is new Color range Red .. Blue;
5050
5051    Type RGB_Color is a subrange of an implicit type which is a copy
5052    of type Color. If we call that implicit type RGB_ColorB ("B" is
5053    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5054    As a result, when an expression references any of the enumeral
5055    by name (Eg. "print green"), the expression is technically
5056    ambiguous and the user should be asked to disambiguate. But
5057    doing so would only hinder the user, since it wouldn't matter
5058    what choice he makes, the outcome would always be the same.
5059    So, for practical purposes, we consider them as the same.  */
5060
5061 static int
5062 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5063 {
5064   int i;
5065
5066   /* Before performing a thorough comparison check of each type,
5067      we perform a series of inexpensive checks.  We expect that these
5068      checks will quickly fail in the vast majority of cases, and thus
5069      help prevent the unnecessary use of a more expensive comparison.
5070      Said comparison also expects us to make some of these checks
5071      (see ada_identical_enum_types_p).  */
5072
5073   /* Quick check: All symbols should have an enum type.  */
5074   for (i = 0; i < syms.size (); i++)
5075     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5076       return 0;
5077
5078   /* Quick check: They should all have the same value.  */
5079   for (i = 1; i < syms.size (); i++)
5080     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5081       return 0;
5082
5083   /* Quick check: They should all have the same number of enumerals.  */
5084   for (i = 1; i < syms.size (); i++)
5085     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5086         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5087       return 0;
5088
5089   /* All the sanity checks passed, so we might have a set of
5090      identical enumeration types.  Perform a more complete
5091      comparison of the type of each symbol.  */
5092   for (i = 1; i < syms.size (); i++)
5093     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5094                                      SYMBOL_TYPE (syms[0].symbol)))
5095       return 0;
5096
5097   return 1;
5098 }
5099
5100 /* Remove any non-debugging symbols in SYMS that definitely
5101    duplicate other symbols in the list (The only case I know of where
5102    this happens is when object files containing stabs-in-ecoff are
5103    linked with files containing ordinary ecoff debugging symbols (or no
5104    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5105    Returns the number of items in the modified list.  */
5106
5107 static int
5108 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5109 {
5110   int i, j;
5111
5112   /* We should never be called with less than 2 symbols, as there
5113      cannot be any extra symbol in that case.  But it's easy to
5114      handle, since we have nothing to do in that case.  */
5115   if (syms->size () < 2)
5116     return syms->size ();
5117
5118   i = 0;
5119   while (i < syms->size ())
5120     {
5121       int remove_p = 0;
5122
5123       /* If two symbols have the same name and one of them is a stub type,
5124          the get rid of the stub.  */
5125
5126       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5127           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5128         {
5129           for (j = 0; j < syms->size (); j++)
5130             {
5131               if (j != i
5132                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5133                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5134                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5135                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5136                 remove_p = 1;
5137             }
5138         }
5139
5140       /* Two symbols with the same name, same class and same address
5141          should be identical.  */
5142
5143       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5144           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5145           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5146         {
5147           for (j = 0; j < syms->size (); j += 1)
5148             {
5149               if (i != j
5150                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5151                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5152                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5153                   && SYMBOL_CLASS ((*syms)[i].symbol)
5154                        == SYMBOL_CLASS ((*syms)[j].symbol)
5155                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5156                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5157                 remove_p = 1;
5158             }
5159         }
5160       
5161       if (remove_p)
5162         syms->erase (syms->begin () + i);
5163
5164       i += 1;
5165     }
5166
5167   /* If all the remaining symbols are identical enumerals, then
5168      just keep the first one and discard the rest.
5169
5170      Unlike what we did previously, we do not discard any entry
5171      unless they are ALL identical.  This is because the symbol
5172      comparison is not a strict comparison, but rather a practical
5173      comparison.  If all symbols are considered identical, then
5174      we can just go ahead and use the first one and discard the rest.
5175      But if we cannot reduce the list to a single element, we have
5176      to ask the user to disambiguate anyways.  And if we have to
5177      present a multiple-choice menu, it's less confusing if the list
5178      isn't missing some choices that were identical and yet distinct.  */
5179   if (symbols_are_identical_enums (*syms))
5180     syms->resize (1);
5181
5182   return syms->size ();
5183 }
5184
5185 /* Given a type that corresponds to a renaming entity, use the type name
5186    to extract the scope (package name or function name, fully qualified,
5187    and following the GNAT encoding convention) where this renaming has been
5188    defined.  */
5189
5190 static std::string
5191 xget_renaming_scope (struct type *renaming_type)
5192 {
5193   /* The renaming types adhere to the following convention:
5194      <scope>__<rename>___<XR extension>.
5195      So, to extract the scope, we search for the "___XR" extension,
5196      and then backtrack until we find the first "__".  */
5197
5198   const char *name = TYPE_NAME (renaming_type);
5199   const char *suffix = strstr (name, "___XR");
5200   const char *last;
5201
5202   /* Now, backtrack a bit until we find the first "__".  Start looking
5203      at suffix - 3, as the <rename> part is at least one character long.  */
5204
5205   for (last = suffix - 3; last > name; last--)
5206     if (last[0] == '_' && last[1] == '_')
5207       break;
5208
5209   /* Make a copy of scope and return it.  */
5210   return std::string (name, last);
5211 }
5212
5213 /* Return nonzero if NAME corresponds to a package name.  */
5214
5215 static int
5216 is_package_name (const char *name)
5217 {
5218   /* Here, We take advantage of the fact that no symbols are generated
5219      for packages, while symbols are generated for each function.
5220      So the condition for NAME represent a package becomes equivalent
5221      to NAME not existing in our list of symbols.  There is only one
5222      small complication with library-level functions (see below).  */
5223
5224   /* If it is a function that has not been defined at library level,
5225      then we should be able to look it up in the symbols.  */
5226   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5227     return 0;
5228
5229   /* Library-level function names start with "_ada_".  See if function
5230      "_ada_" followed by NAME can be found.  */
5231
5232   /* Do a quick check that NAME does not contain "__", since library-level
5233      functions names cannot contain "__" in them.  */
5234   if (strstr (name, "__") != NULL)
5235     return 0;
5236
5237   std::string fun_name = string_printf ("_ada_%s", name);
5238
5239   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5240 }
5241
5242 /* Return nonzero if SYM corresponds to a renaming entity that is
5243    not visible from FUNCTION_NAME.  */
5244
5245 static int
5246 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5247 {
5248   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5249     return 0;
5250
5251   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5252
5253   /* If the rename has been defined in a package, then it is visible.  */
5254   if (is_package_name (scope.c_str ()))
5255     return 0;
5256
5257   /* Check that the rename is in the current function scope by checking
5258      that its name starts with SCOPE.  */
5259
5260   /* If the function name starts with "_ada_", it means that it is
5261      a library-level function.  Strip this prefix before doing the
5262      comparison, as the encoding for the renaming does not contain
5263      this prefix.  */
5264   if (startswith (function_name, "_ada_"))
5265     function_name += 5;
5266
5267   return !startswith (function_name, scope.c_str ());
5268 }
5269
5270 /* Remove entries from SYMS that corresponds to a renaming entity that
5271    is not visible from the function associated with CURRENT_BLOCK or
5272    that is superfluous due to the presence of more specific renaming
5273    information.  Places surviving symbols in the initial entries of
5274    SYMS and returns the number of surviving symbols.
5275    
5276    Rationale:
5277    First, in cases where an object renaming is implemented as a
5278    reference variable, GNAT may produce both the actual reference
5279    variable and the renaming encoding.  In this case, we discard the
5280    latter.
5281
5282    Second, GNAT emits a type following a specified encoding for each renaming
5283    entity.  Unfortunately, STABS currently does not support the definition
5284    of types that are local to a given lexical block, so all renamings types
5285    are emitted at library level.  As a consequence, if an application
5286    contains two renaming entities using the same name, and a user tries to
5287    print the value of one of these entities, the result of the ada symbol
5288    lookup will also contain the wrong renaming type.
5289
5290    This function partially covers for this limitation by attempting to
5291    remove from the SYMS list renaming symbols that should be visible
5292    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5293    method with the current information available.  The implementation
5294    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5295    
5296       - When the user tries to print a rename in a function while there
5297         is another rename entity defined in a package:  Normally, the
5298         rename in the function has precedence over the rename in the
5299         package, so the latter should be removed from the list.  This is
5300         currently not the case.
5301         
5302       - This function will incorrectly remove valid renames if
5303         the CURRENT_BLOCK corresponds to a function which symbol name
5304         has been changed by an "Export" pragma.  As a consequence,
5305         the user will be unable to print such rename entities.  */
5306
5307 static int
5308 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5309                              const struct block *current_block)
5310 {
5311   struct symbol *current_function;
5312   const char *current_function_name;
5313   int i;
5314   int is_new_style_renaming;
5315
5316   /* If there is both a renaming foo___XR... encoded as a variable and
5317      a simple variable foo in the same block, discard the latter.
5318      First, zero out such symbols, then compress.  */
5319   is_new_style_renaming = 0;
5320   for (i = 0; i < syms->size (); i += 1)
5321     {
5322       struct symbol *sym = (*syms)[i].symbol;
5323       const struct block *block = (*syms)[i].block;
5324       const char *name;
5325       const char *suffix;
5326
5327       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5328         continue;
5329       name = SYMBOL_LINKAGE_NAME (sym);
5330       suffix = strstr (name, "___XR");
5331
5332       if (suffix != NULL)
5333         {
5334           int name_len = suffix - name;
5335           int j;
5336
5337           is_new_style_renaming = 1;
5338           for (j = 0; j < syms->size (); j += 1)
5339             if (i != j && (*syms)[j].symbol != NULL
5340                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5341                             name_len) == 0
5342                 && block == (*syms)[j].block)
5343               (*syms)[j].symbol = NULL;
5344         }
5345     }
5346   if (is_new_style_renaming)
5347     {
5348       int j, k;
5349
5350       for (j = k = 0; j < syms->size (); j += 1)
5351         if ((*syms)[j].symbol != NULL)
5352             {
5353               (*syms)[k] = (*syms)[j];
5354               k += 1;
5355             }
5356       return k;
5357     }
5358
5359   /* Extract the function name associated to CURRENT_BLOCK.
5360      Abort if unable to do so.  */
5361
5362   if (current_block == NULL)
5363     return syms->size ();
5364
5365   current_function = block_linkage_function (current_block);
5366   if (current_function == NULL)
5367     return syms->size ();
5368
5369   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5370   if (current_function_name == NULL)
5371     return syms->size ();
5372
5373   /* Check each of the symbols, and remove it from the list if it is
5374      a type corresponding to a renaming that is out of the scope of
5375      the current block.  */
5376
5377   i = 0;
5378   while (i < syms->size ())
5379     {
5380       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5381           == ADA_OBJECT_RENAMING
5382           && old_renaming_is_invisible ((*syms)[i].symbol,
5383                                         current_function_name))
5384         syms->erase (syms->begin () + i);
5385       else
5386         i += 1;
5387     }
5388
5389   return syms->size ();
5390 }
5391
5392 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5393    whose name and domain match NAME and DOMAIN respectively.
5394    If no match was found, then extend the search to "enclosing"
5395    routines (in other words, if we're inside a nested function,
5396    search the symbols defined inside the enclosing functions).
5397    If WILD_MATCH_P is nonzero, perform the naming matching in
5398    "wild" mode (see function "wild_match" for more info).
5399
5400    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5401
5402 static void
5403 ada_add_local_symbols (struct obstack *obstackp,
5404                        const lookup_name_info &lookup_name,
5405                        const struct block *block, domain_enum domain)
5406 {
5407   int block_depth = 0;
5408
5409   while (block != NULL)
5410     {
5411       block_depth += 1;
5412       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5413
5414       /* If we found a non-function match, assume that's the one.  */
5415       if (is_nonfunction (defns_collected (obstackp, 0),
5416                           num_defns_collected (obstackp)))
5417         return;
5418
5419       block = BLOCK_SUPERBLOCK (block);
5420     }
5421
5422   /* If no luck so far, try to find NAME as a local symbol in some lexically
5423      enclosing subprogram.  */
5424   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5425     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5426 }
5427
5428 /* An object of this type is used as the user_data argument when
5429    calling the map_matching_symbols method.  */
5430
5431 struct match_data
5432 {
5433   struct objfile *objfile;
5434   struct obstack *obstackp;
5435   struct symbol *arg_sym;
5436   int found_sym;
5437 };
5438
5439 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5440    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5441    containing the obstack that collects the symbol list, the file that SYM
5442    must come from, a flag indicating whether a non-argument symbol has
5443    been found in the current block, and the last argument symbol
5444    passed in SYM within the current block (if any).  When SYM is null,
5445    marking the end of a block, the argument symbol is added if no
5446    other has been found.  */
5447
5448 static int
5449 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5450 {
5451   struct match_data *data = (struct match_data *) data0;
5452   
5453   if (sym == NULL)
5454     {
5455       if (!data->found_sym && data->arg_sym != NULL) 
5456         add_defn_to_vec (data->obstackp,
5457                          fixup_symbol_section (data->arg_sym, data->objfile),
5458                          block);
5459       data->found_sym = 0;
5460       data->arg_sym = NULL;
5461     }
5462   else 
5463     {
5464       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5465         return 0;
5466       else if (SYMBOL_IS_ARGUMENT (sym))
5467         data->arg_sym = sym;
5468       else
5469         {
5470           data->found_sym = 1;
5471           add_defn_to_vec (data->obstackp,
5472                            fixup_symbol_section (sym, data->objfile),
5473                            block);
5474         }
5475     }
5476   return 0;
5477 }
5478
5479 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5480    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5481    symbols to OBSTACKP.  Return whether we found such symbols.  */
5482
5483 static int
5484 ada_add_block_renamings (struct obstack *obstackp,
5485                          const struct block *block,
5486                          const lookup_name_info &lookup_name,
5487                          domain_enum domain)
5488 {
5489   struct using_direct *renaming;
5490   int defns_mark = num_defns_collected (obstackp);
5491
5492   symbol_name_matcher_ftype *name_match
5493     = ada_get_symbol_name_matcher (lookup_name);
5494
5495   for (renaming = block_using (block);
5496        renaming != NULL;
5497        renaming = renaming->next)
5498     {
5499       const char *r_name;
5500
5501       /* Avoid infinite recursions: skip this renaming if we are actually
5502          already traversing it.
5503
5504          Currently, symbol lookup in Ada don't use the namespace machinery from
5505          C++/Fortran support: skip namespace imports that use them.  */
5506       if (renaming->searched
5507           || (renaming->import_src != NULL
5508               && renaming->import_src[0] != '\0')
5509           || (renaming->import_dest != NULL
5510               && renaming->import_dest[0] != '\0'))
5511         continue;
5512       renaming->searched = 1;
5513
5514       /* TODO: here, we perform another name-based symbol lookup, which can
5515          pull its own multiple overloads.  In theory, we should be able to do
5516          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5517          not a simple name.  But in order to do this, we would need to enhance
5518          the DWARF reader to associate a symbol to this renaming, instead of a
5519          name.  So, for now, we do something simpler: re-use the C++/Fortran
5520          namespace machinery.  */
5521       r_name = (renaming->alias != NULL
5522                 ? renaming->alias
5523                 : renaming->declaration);
5524       if (name_match (r_name, lookup_name, NULL))
5525         {
5526           lookup_name_info decl_lookup_name (renaming->declaration,
5527                                              lookup_name.match_type ());
5528           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5529                                1, NULL);
5530         }
5531       renaming->searched = 0;
5532     }
5533   return num_defns_collected (obstackp) != defns_mark;
5534 }
5535
5536 /* Implements compare_names, but only applying the comparision using
5537    the given CASING.  */
5538
5539 static int
5540 compare_names_with_case (const char *string1, const char *string2,
5541                          enum case_sensitivity casing)
5542 {
5543   while (*string1 != '\0' && *string2 != '\0')
5544     {
5545       char c1, c2;
5546
5547       if (isspace (*string1) || isspace (*string2))
5548         return strcmp_iw_ordered (string1, string2);
5549
5550       if (casing == case_sensitive_off)
5551         {
5552           c1 = tolower (*string1);
5553           c2 = tolower (*string2);
5554         }
5555       else
5556         {
5557           c1 = *string1;
5558           c2 = *string2;
5559         }
5560       if (c1 != c2)
5561         break;
5562
5563       string1 += 1;
5564       string2 += 1;
5565     }
5566
5567   switch (*string1)
5568     {
5569     case '(':
5570       return strcmp_iw_ordered (string1, string2);
5571     case '_':
5572       if (*string2 == '\0')
5573         {
5574           if (is_name_suffix (string1))
5575             return 0;
5576           else
5577             return 1;
5578         }
5579       /* FALLTHROUGH */
5580     default:
5581       if (*string2 == '(')
5582         return strcmp_iw_ordered (string1, string2);
5583       else
5584         {
5585           if (casing == case_sensitive_off)
5586             return tolower (*string1) - tolower (*string2);
5587           else
5588             return *string1 - *string2;
5589         }
5590     }
5591 }
5592
5593 /* Compare STRING1 to STRING2, with results as for strcmp.
5594    Compatible with strcmp_iw_ordered in that...
5595
5596        strcmp_iw_ordered (STRING1, STRING2) <= 0
5597
5598    ... implies...
5599
5600        compare_names (STRING1, STRING2) <= 0
5601
5602    (they may differ as to what symbols compare equal).  */
5603
5604 static int
5605 compare_names (const char *string1, const char *string2)
5606 {
5607   int result;
5608
5609   /* Similar to what strcmp_iw_ordered does, we need to perform
5610      a case-insensitive comparison first, and only resort to
5611      a second, case-sensitive, comparison if the first one was
5612      not sufficient to differentiate the two strings.  */
5613
5614   result = compare_names_with_case (string1, string2, case_sensitive_off);
5615   if (result == 0)
5616     result = compare_names_with_case (string1, string2, case_sensitive_on);
5617
5618   return result;
5619 }
5620
5621 /* Convenience function to get at the Ada encoded lookup name for
5622    LOOKUP_NAME, as a C string.  */
5623
5624 static const char *
5625 ada_lookup_name (const lookup_name_info &lookup_name)
5626 {
5627   return lookup_name.ada ().lookup_name ().c_str ();
5628 }
5629
5630 /* Add to OBSTACKP all non-local symbols whose name and domain match
5631    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5632    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5633    symbols otherwise.  */
5634
5635 static void
5636 add_nonlocal_symbols (struct obstack *obstackp,
5637                       const lookup_name_info &lookup_name,
5638                       domain_enum domain, int global)
5639 {
5640   struct objfile *objfile;
5641   struct compunit_symtab *cu;
5642   struct match_data data;
5643
5644   memset (&data, 0, sizeof data);
5645   data.obstackp = obstackp;
5646
5647   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5648
5649   ALL_OBJFILES (objfile)
5650     {
5651       data.objfile = objfile;
5652
5653       if (is_wild_match)
5654         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5655                                                domain, global,
5656                                                aux_add_nonlocal_symbols, &data,
5657                                                symbol_name_match_type::WILD,
5658                                                NULL);
5659       else
5660         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5661                                                domain, global,
5662                                                aux_add_nonlocal_symbols, &data,
5663                                                symbol_name_match_type::FULL,
5664                                                compare_names);
5665
5666       ALL_OBJFILE_COMPUNITS (objfile, cu)
5667         {
5668           const struct block *global_block
5669             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5670
5671           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5672                                        domain))
5673             data.found_sym = 1;
5674         }
5675     }
5676
5677   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5678     {
5679       const char *name = ada_lookup_name (lookup_name);
5680       std::string name1 = std::string ("<_ada_") + name + '>';
5681
5682       ALL_OBJFILES (objfile)
5683         {
5684           data.objfile = objfile;
5685           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5686                                                  domain, global,
5687                                                  aux_add_nonlocal_symbols,
5688                                                  &data,
5689                                                  symbol_name_match_type::FULL,
5690                                                  compare_names);
5691         }
5692     }           
5693 }
5694
5695 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5696    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5697    returning the number of matches.  Add these to OBSTACKP.
5698
5699    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5700    symbol match within the nest of blocks whose innermost member is BLOCK,
5701    is the one match returned (no other matches in that or
5702    enclosing blocks is returned).  If there are any matches in or
5703    surrounding BLOCK, then these alone are returned.
5704
5705    Names prefixed with "standard__" are handled specially:
5706    "standard__" is first stripped off (by the lookup_name
5707    constructor), and only static and global symbols are searched.
5708
5709    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5710    to lookup global symbols.  */
5711
5712 static void
5713 ada_add_all_symbols (struct obstack *obstackp,
5714                      const struct block *block,
5715                      const lookup_name_info &lookup_name,
5716                      domain_enum domain,
5717                      int full_search,
5718                      int *made_global_lookup_p)
5719 {
5720   struct symbol *sym;
5721
5722   if (made_global_lookup_p)
5723     *made_global_lookup_p = 0;
5724
5725   /* Special case: If the user specifies a symbol name inside package
5726      Standard, do a non-wild matching of the symbol name without
5727      the "standard__" prefix.  This was primarily introduced in order
5728      to allow the user to specifically access the standard exceptions
5729      using, for instance, Standard.Constraint_Error when Constraint_Error
5730      is ambiguous (due to the user defining its own Constraint_Error
5731      entity inside its program).  */
5732   if (lookup_name.ada ().standard_p ())
5733     block = NULL;
5734
5735   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5736
5737   if (block != NULL)
5738     {
5739       if (full_search)
5740         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5741       else
5742         {
5743           /* In the !full_search case we're are being called by
5744              ada_iterate_over_symbols, and we don't want to search
5745              superblocks.  */
5746           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5747         }
5748       if (num_defns_collected (obstackp) > 0 || !full_search)
5749         return;
5750     }
5751
5752   /* No non-global symbols found.  Check our cache to see if we have
5753      already performed this search before.  If we have, then return
5754      the same result.  */
5755
5756   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5757                             domain, &sym, &block))
5758     {
5759       if (sym != NULL)
5760         add_defn_to_vec (obstackp, sym, block);
5761       return;
5762     }
5763
5764   if (made_global_lookup_p)
5765     *made_global_lookup_p = 1;
5766
5767   /* Search symbols from all global blocks.  */
5768  
5769   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5770
5771   /* Now add symbols from all per-file blocks if we've gotten no hits
5772      (not strictly correct, but perhaps better than an error).  */
5773
5774   if (num_defns_collected (obstackp) == 0)
5775     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5776 }
5777
5778 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5779    is non-zero, enclosing scope and in global scopes, returning the number of
5780    matches.
5781    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5782    found and the blocks and symbol tables (if any) in which they were
5783    found.
5784
5785    When full_search is non-zero, any non-function/non-enumeral
5786    symbol match within the nest of blocks whose innermost member is BLOCK,
5787    is the one match returned (no other matches in that or
5788    enclosing blocks is returned).  If there are any matches in or
5789    surrounding BLOCK, then these alone are returned.
5790
5791    Names prefixed with "standard__" are handled specially: "standard__"
5792    is first stripped off, and only static and global symbols are searched.  */
5793
5794 static int
5795 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5796                                const struct block *block,
5797                                domain_enum domain,
5798                                std::vector<struct block_symbol> *results,
5799                                int full_search)
5800 {
5801   int syms_from_global_search;
5802   int ndefns;
5803   auto_obstack obstack;
5804
5805   ada_add_all_symbols (&obstack, block, lookup_name,
5806                        domain, full_search, &syms_from_global_search);
5807
5808   ndefns = num_defns_collected (&obstack);
5809
5810   struct block_symbol *base = defns_collected (&obstack, 1);
5811   for (int i = 0; i < ndefns; ++i)
5812     results->push_back (base[i]);
5813
5814   ndefns = remove_extra_symbols (results);
5815
5816   if (ndefns == 0 && full_search && syms_from_global_search)
5817     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5818
5819   if (ndefns == 1 && full_search && syms_from_global_search)
5820     cache_symbol (ada_lookup_name (lookup_name), domain,
5821                   (*results)[0].symbol, (*results)[0].block);
5822
5823   ndefns = remove_irrelevant_renamings (results, block);
5824
5825   return ndefns;
5826 }
5827
5828 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5829    in global scopes, returning the number of matches, and filling *RESULTS
5830    with (SYM,BLOCK) tuples.
5831
5832    See ada_lookup_symbol_list_worker for further details.  */
5833
5834 int
5835 ada_lookup_symbol_list (const char *name, const struct block *block,
5836                         domain_enum domain,
5837                         std::vector<struct block_symbol> *results)
5838 {
5839   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5840   lookup_name_info lookup_name (name, name_match_type);
5841
5842   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5843 }
5844
5845 /* Implementation of the la_iterate_over_symbols method.  */
5846
5847 static void
5848 ada_iterate_over_symbols
5849   (const struct block *block, const lookup_name_info &name,
5850    domain_enum domain,
5851    gdb::function_view<symbol_found_callback_ftype> callback)
5852 {
5853   int ndefs, i;
5854   std::vector<struct block_symbol> results;
5855
5856   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5857
5858   for (i = 0; i < ndefs; ++i)
5859     {
5860       if (!callback (&results[i]))
5861         break;
5862     }
5863 }
5864
5865 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5866    to 1, but choosing the first symbol found if there are multiple
5867    choices.
5868
5869    The result is stored in *INFO, which must be non-NULL.
5870    If no match is found, INFO->SYM is set to NULL.  */
5871
5872 void
5873 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5874                            domain_enum domain,
5875                            struct block_symbol *info)
5876 {
5877   /* Since we already have an encoded name, wrap it in '<>' to force a
5878      verbatim match.  Otherwise, if the name happens to not look like
5879      an encoded name (because it doesn't include a "__"),
5880      ada_lookup_name_info would re-encode/fold it again, and that
5881      would e.g., incorrectly lowercase object renaming names like
5882      "R28b" -> "r28b".  */
5883   std::string verbatim = std::string ("<") + name + '>';
5884
5885   gdb_assert (info != NULL);
5886   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5887 }
5888
5889 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5890    scope and in global scopes, or NULL if none.  NAME is folded and
5891    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5892    choosing the first symbol if there are multiple choices.
5893    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5894
5895 struct block_symbol
5896 ada_lookup_symbol (const char *name, const struct block *block0,
5897                    domain_enum domain, int *is_a_field_of_this)
5898 {
5899   if (is_a_field_of_this != NULL)
5900     *is_a_field_of_this = 0;
5901
5902   std::vector<struct block_symbol> candidates;
5903   int n_candidates;
5904
5905   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5906
5907   if (n_candidates == 0)
5908     return {};
5909
5910   block_symbol info = candidates[0];
5911   info.symbol = fixup_symbol_section (info.symbol, NULL);
5912   return info;
5913 }
5914
5915 static struct block_symbol
5916 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5917                             const char *name,
5918                             const struct block *block,
5919                             const domain_enum domain)
5920 {
5921   struct block_symbol sym;
5922
5923   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5924   if (sym.symbol != NULL)
5925     return sym;
5926
5927   /* If we haven't found a match at this point, try the primitive
5928      types.  In other languages, this search is performed before
5929      searching for global symbols in order to short-circuit that
5930      global-symbol search if it happens that the name corresponds
5931      to a primitive type.  But we cannot do the same in Ada, because
5932      it is perfectly legitimate for a program to declare a type which
5933      has the same name as a standard type.  If looking up a type in
5934      that situation, we have traditionally ignored the primitive type
5935      in favor of user-defined types.  This is why, unlike most other
5936      languages, we search the primitive types this late and only after
5937      having searched the global symbols without success.  */
5938
5939   if (domain == VAR_DOMAIN)
5940     {
5941       struct gdbarch *gdbarch;
5942
5943       if (block == NULL)
5944         gdbarch = target_gdbarch ();
5945       else
5946         gdbarch = block_gdbarch (block);
5947       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5948       if (sym.symbol != NULL)
5949         return sym;
5950     }
5951
5952   return (struct block_symbol) {NULL, NULL};
5953 }
5954
5955
5956 /* True iff STR is a possible encoded suffix of a normal Ada name
5957    that is to be ignored for matching purposes.  Suffixes of parallel
5958    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5959    are given by any of the regular expressions:
5960
5961    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5962    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5963    TKB              [subprogram suffix for task bodies]
5964    _E[0-9]+[bs]$    [protected object entry suffixes]
5965    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5966
5967    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5968    match is performed.  This sequence is used to differentiate homonyms,
5969    is an optional part of a valid name suffix.  */
5970
5971 static int
5972 is_name_suffix (const char *str)
5973 {
5974   int k;
5975   const char *matching;
5976   const int len = strlen (str);
5977
5978   /* Skip optional leading __[0-9]+.  */
5979
5980   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5981     {
5982       str += 3;
5983       while (isdigit (str[0]))
5984         str += 1;
5985     }
5986   
5987   /* [.$][0-9]+ */
5988
5989   if (str[0] == '.' || str[0] == '$')
5990     {
5991       matching = str + 1;
5992       while (isdigit (matching[0]))
5993         matching += 1;
5994       if (matching[0] == '\0')
5995         return 1;
5996     }
5997
5998   /* ___[0-9]+ */
5999
6000   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6001     {
6002       matching = str + 3;
6003       while (isdigit (matching[0]))
6004         matching += 1;
6005       if (matching[0] == '\0')
6006         return 1;
6007     }
6008
6009   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6010
6011   if (strcmp (str, "TKB") == 0)
6012     return 1;
6013
6014 #if 0
6015   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6016      with a N at the end.  Unfortunately, the compiler uses the same
6017      convention for other internal types it creates.  So treating
6018      all entity names that end with an "N" as a name suffix causes
6019      some regressions.  For instance, consider the case of an enumerated
6020      type.  To support the 'Image attribute, it creates an array whose
6021      name ends with N.
6022      Having a single character like this as a suffix carrying some
6023      information is a bit risky.  Perhaps we should change the encoding
6024      to be something like "_N" instead.  In the meantime, do not do
6025      the following check.  */
6026   /* Protected Object Subprograms */
6027   if (len == 1 && str [0] == 'N')
6028     return 1;
6029 #endif
6030
6031   /* _E[0-9]+[bs]$ */
6032   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6033     {
6034       matching = str + 3;
6035       while (isdigit (matching[0]))
6036         matching += 1;
6037       if ((matching[0] == 'b' || matching[0] == 's')
6038           && matching [1] == '\0')
6039         return 1;
6040     }
6041
6042   /* ??? We should not modify STR directly, as we are doing below.  This
6043      is fine in this case, but may become problematic later if we find
6044      that this alternative did not work, and want to try matching
6045      another one from the begining of STR.  Since we modified it, we
6046      won't be able to find the begining of the string anymore!  */
6047   if (str[0] == 'X')
6048     {
6049       str += 1;
6050       while (str[0] != '_' && str[0] != '\0')
6051         {
6052           if (str[0] != 'n' && str[0] != 'b')
6053             return 0;
6054           str += 1;
6055         }
6056     }
6057
6058   if (str[0] == '\000')
6059     return 1;
6060
6061   if (str[0] == '_')
6062     {
6063       if (str[1] != '_' || str[2] == '\000')
6064         return 0;
6065       if (str[2] == '_')
6066         {
6067           if (strcmp (str + 3, "JM") == 0)
6068             return 1;
6069           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6070              the LJM suffix in favor of the JM one.  But we will
6071              still accept LJM as a valid suffix for a reasonable
6072              amount of time, just to allow ourselves to debug programs
6073              compiled using an older version of GNAT.  */
6074           if (strcmp (str + 3, "LJM") == 0)
6075             return 1;
6076           if (str[3] != 'X')
6077             return 0;
6078           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6079               || str[4] == 'U' || str[4] == 'P')
6080             return 1;
6081           if (str[4] == 'R' && str[5] != 'T')
6082             return 1;
6083           return 0;
6084         }
6085       if (!isdigit (str[2]))
6086         return 0;
6087       for (k = 3; str[k] != '\0'; k += 1)
6088         if (!isdigit (str[k]) && str[k] != '_')
6089           return 0;
6090       return 1;
6091     }
6092   if (str[0] == '$' && isdigit (str[1]))
6093     {
6094       for (k = 2; str[k] != '\0'; k += 1)
6095         if (!isdigit (str[k]) && str[k] != '_')
6096           return 0;
6097       return 1;
6098     }
6099   return 0;
6100 }
6101
6102 /* Return non-zero if the string starting at NAME and ending before
6103    NAME_END contains no capital letters.  */
6104
6105 static int
6106 is_valid_name_for_wild_match (const char *name0)
6107 {
6108   const char *decoded_name = ada_decode (name0);
6109   int i;
6110
6111   /* If the decoded name starts with an angle bracket, it means that
6112      NAME0 does not follow the GNAT encoding format.  It should then
6113      not be allowed as a possible wild match.  */
6114   if (decoded_name[0] == '<')
6115     return 0;
6116
6117   for (i=0; decoded_name[i] != '\0'; i++)
6118     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6119       return 0;
6120
6121   return 1;
6122 }
6123
6124 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6125    that could start a simple name.  Assumes that *NAMEP points into
6126    the string beginning at NAME0.  */
6127
6128 static int
6129 advance_wild_match (const char **namep, const char *name0, int target0)
6130 {
6131   const char *name = *namep;
6132
6133   while (1)
6134     {
6135       int t0, t1;
6136
6137       t0 = *name;
6138       if (t0 == '_')
6139         {
6140           t1 = name[1];
6141           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6142             {
6143               name += 1;
6144               if (name == name0 + 5 && startswith (name0, "_ada"))
6145                 break;
6146               else
6147                 name += 1;
6148             }
6149           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6150                                  || name[2] == target0))
6151             {
6152               name += 2;
6153               break;
6154             }
6155           else
6156             return 0;
6157         }
6158       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6159         name += 1;
6160       else
6161         return 0;
6162     }
6163
6164   *namep = name;
6165   return 1;
6166 }
6167
6168 /* Return true iff NAME encodes a name of the form prefix.PATN.
6169    Ignores any informational suffixes of NAME (i.e., for which
6170    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6171    simple name.  */
6172
6173 static bool
6174 wild_match (const char *name, const char *patn)
6175 {
6176   const char *p;
6177   const char *name0 = name;
6178
6179   while (1)
6180     {
6181       const char *match = name;
6182
6183       if (*name == *patn)
6184         {
6185           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6186             if (*p != *name)
6187               break;
6188           if (*p == '\0' && is_name_suffix (name))
6189             return match == name0 || is_valid_name_for_wild_match (name0);
6190
6191           if (name[-1] == '_')
6192             name -= 1;
6193         }
6194       if (!advance_wild_match (&name, name0, *patn))
6195         return false;
6196     }
6197 }
6198
6199 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6200    any trailing suffixes that encode debugging information or leading
6201    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6202    information that is ignored).  */
6203
6204 static bool
6205 full_match (const char *sym_name, const char *search_name)
6206 {
6207   size_t search_name_len = strlen (search_name);
6208
6209   if (strncmp (sym_name, search_name, search_name_len) == 0
6210       && is_name_suffix (sym_name + search_name_len))
6211     return true;
6212
6213   if (startswith (sym_name, "_ada_")
6214       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6215       && is_name_suffix (sym_name + search_name_len + 5))
6216     return true;
6217
6218   return false;
6219 }
6220
6221 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6222    *defn_symbols, updating the list of symbols in OBSTACKP (if
6223    necessary).  OBJFILE is the section containing BLOCK.  */
6224
6225 static void
6226 ada_add_block_symbols (struct obstack *obstackp,
6227                        const struct block *block,
6228                        const lookup_name_info &lookup_name,
6229                        domain_enum domain, struct objfile *objfile)
6230 {
6231   struct block_iterator iter;
6232   /* A matching argument symbol, if any.  */
6233   struct symbol *arg_sym;
6234   /* Set true when we find a matching non-argument symbol.  */
6235   int found_sym;
6236   struct symbol *sym;
6237
6238   arg_sym = NULL;
6239   found_sym = 0;
6240   for (sym = block_iter_match_first (block, lookup_name, &iter);
6241        sym != NULL;
6242        sym = block_iter_match_next (lookup_name, &iter))
6243     {
6244       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6245                                  SYMBOL_DOMAIN (sym), domain))
6246         {
6247           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6248             {
6249               if (SYMBOL_IS_ARGUMENT (sym))
6250                 arg_sym = sym;
6251               else
6252                 {
6253                   found_sym = 1;
6254                   add_defn_to_vec (obstackp,
6255                                    fixup_symbol_section (sym, objfile),
6256                                    block);
6257                 }
6258             }
6259         }
6260     }
6261
6262   /* Handle renamings.  */
6263
6264   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6265     found_sym = 1;
6266
6267   if (!found_sym && arg_sym != NULL)
6268     {
6269       add_defn_to_vec (obstackp,
6270                        fixup_symbol_section (arg_sym, objfile),
6271                        block);
6272     }
6273
6274   if (!lookup_name.ada ().wild_match_p ())
6275     {
6276       arg_sym = NULL;
6277       found_sym = 0;
6278       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6279       const char *name = ada_lookup_name.c_str ();
6280       size_t name_len = ada_lookup_name.size ();
6281
6282       ALL_BLOCK_SYMBOLS (block, iter, sym)
6283       {
6284         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6285                                    SYMBOL_DOMAIN (sym), domain))
6286           {
6287             int cmp;
6288
6289             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6290             if (cmp == 0)
6291               {
6292                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6293                 if (cmp == 0)
6294                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6295                                  name_len);
6296               }
6297
6298             if (cmp == 0
6299                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6300               {
6301                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6302                   {
6303                     if (SYMBOL_IS_ARGUMENT (sym))
6304                       arg_sym = sym;
6305                     else
6306                       {
6307                         found_sym = 1;
6308                         add_defn_to_vec (obstackp,
6309                                          fixup_symbol_section (sym, objfile),
6310                                          block);
6311                       }
6312                   }
6313               }
6314           }
6315       }
6316
6317       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6318          They aren't parameters, right?  */
6319       if (!found_sym && arg_sym != NULL)
6320         {
6321           add_defn_to_vec (obstackp,
6322                            fixup_symbol_section (arg_sym, objfile),
6323                            block);
6324         }
6325     }
6326 }
6327 \f
6328
6329                                 /* Symbol Completion */
6330
6331 /* See symtab.h.  */
6332
6333 bool
6334 ada_lookup_name_info::matches
6335   (const char *sym_name,
6336    symbol_name_match_type match_type,
6337    completion_match_result *comp_match_res) const
6338 {
6339   bool match = false;
6340   const char *text = m_encoded_name.c_str ();
6341   size_t text_len = m_encoded_name.size ();
6342
6343   /* First, test against the fully qualified name of the symbol.  */
6344
6345   if (strncmp (sym_name, text, text_len) == 0)
6346     match = true;
6347
6348   if (match && !m_encoded_p)
6349     {
6350       /* One needed check before declaring a positive match is to verify
6351          that iff we are doing a verbatim match, the decoded version
6352          of the symbol name starts with '<'.  Otherwise, this symbol name
6353          is not a suitable completion.  */
6354       const char *sym_name_copy = sym_name;
6355       bool has_angle_bracket;
6356
6357       sym_name = ada_decode (sym_name);
6358       has_angle_bracket = (sym_name[0] == '<');
6359       match = (has_angle_bracket == m_verbatim_p);
6360       sym_name = sym_name_copy;
6361     }
6362
6363   if (match && !m_verbatim_p)
6364     {
6365       /* When doing non-verbatim match, another check that needs to
6366          be done is to verify that the potentially matching symbol name
6367          does not include capital letters, because the ada-mode would
6368          not be able to understand these symbol names without the
6369          angle bracket notation.  */
6370       const char *tmp;
6371
6372       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6373       if (*tmp != '\0')
6374         match = false;
6375     }
6376
6377   /* Second: Try wild matching...  */
6378
6379   if (!match && m_wild_match_p)
6380     {
6381       /* Since we are doing wild matching, this means that TEXT
6382          may represent an unqualified symbol name.  We therefore must
6383          also compare TEXT against the unqualified name of the symbol.  */
6384       sym_name = ada_unqualified_name (ada_decode (sym_name));
6385
6386       if (strncmp (sym_name, text, text_len) == 0)
6387         match = true;
6388     }
6389
6390   /* Finally: If we found a match, prepare the result to return.  */
6391
6392   if (!match)
6393     return false;
6394
6395   if (comp_match_res != NULL)
6396     {
6397       std::string &match_str = comp_match_res->match.storage ();
6398
6399       if (!m_encoded_p)
6400         match_str = ada_decode (sym_name);
6401       else
6402         {
6403           if (m_verbatim_p)
6404             match_str = add_angle_brackets (sym_name);
6405           else
6406             match_str = sym_name;
6407
6408         }
6409
6410       comp_match_res->set_match (match_str.c_str ());
6411     }
6412
6413   return true;
6414 }
6415
6416 /* Add the list of possible symbol names completing TEXT to TRACKER.
6417    WORD is the entire command on which completion is made.  */
6418
6419 static void
6420 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6421                                        complete_symbol_mode mode,
6422                                        symbol_name_match_type name_match_type,
6423                                        const char *text, const char *word,
6424                                        enum type_code code)
6425 {
6426   struct symbol *sym;
6427   struct compunit_symtab *s;
6428   struct minimal_symbol *msymbol;
6429   struct objfile *objfile;
6430   const struct block *b, *surrounding_static_block = 0;
6431   struct block_iterator iter;
6432
6433   gdb_assert (code == TYPE_CODE_UNDEF);
6434
6435   lookup_name_info lookup_name (text, name_match_type, true);
6436
6437   /* First, look at the partial symtab symbols.  */
6438   expand_symtabs_matching (NULL,
6439                            lookup_name,
6440                            NULL,
6441                            NULL,
6442                            ALL_DOMAIN);
6443
6444   /* At this point scan through the misc symbol vectors and add each
6445      symbol you find to the list.  Eventually we want to ignore
6446      anything that isn't a text symbol (everything else will be
6447      handled by the psymtab code above).  */
6448
6449   ALL_MSYMBOLS (objfile, msymbol)
6450   {
6451     QUIT;
6452
6453     if (completion_skip_symbol (mode, msymbol))
6454       continue;
6455
6456     language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6457
6458     /* Ada minimal symbols won't have their language set to Ada.  If
6459        we let completion_list_add_name compare using the
6460        default/C-like matcher, then when completing e.g., symbols in a
6461        package named "pck", we'd match internal Ada symbols like
6462        "pckS", which are invalid in an Ada expression, unless you wrap
6463        them in '<' '>' to request a verbatim match.
6464
6465        Unfortunately, some Ada encoded names successfully demangle as
6466        C++ symbols (using an old mangling scheme), such as "name__2Xn"
6467        -> "Xn::name(void)" and thus some Ada minimal symbols end up
6468        with the wrong language set.  Paper over that issue here.  */
6469     if (symbol_language == language_auto
6470         || symbol_language == language_cplus)
6471       symbol_language = language_ada;
6472
6473     completion_list_add_name (tracker,
6474                               symbol_language,
6475                               MSYMBOL_LINKAGE_NAME (msymbol),
6476                               lookup_name, text, word);
6477   }
6478
6479   /* Search upwards from currently selected frame (so that we can
6480      complete on local vars.  */
6481
6482   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6483     {
6484       if (!BLOCK_SUPERBLOCK (b))
6485         surrounding_static_block = b;   /* For elmin of dups */
6486
6487       ALL_BLOCK_SYMBOLS (b, iter, sym)
6488       {
6489         if (completion_skip_symbol (mode, sym))
6490           continue;
6491
6492         completion_list_add_name (tracker,
6493                                   SYMBOL_LANGUAGE (sym),
6494                                   SYMBOL_LINKAGE_NAME (sym),
6495                                   lookup_name, text, word);
6496       }
6497     }
6498
6499   /* Go through the symtabs and check the externs and statics for
6500      symbols which match.  */
6501
6502   ALL_COMPUNITS (objfile, s)
6503   {
6504     QUIT;
6505     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6506     ALL_BLOCK_SYMBOLS (b, iter, sym)
6507     {
6508       if (completion_skip_symbol (mode, sym))
6509         continue;
6510
6511       completion_list_add_name (tracker,
6512                                 SYMBOL_LANGUAGE (sym),
6513                                 SYMBOL_LINKAGE_NAME (sym),
6514                                 lookup_name, text, word);
6515     }
6516   }
6517
6518   ALL_COMPUNITS (objfile, s)
6519   {
6520     QUIT;
6521     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6522     /* Don't do this block twice.  */
6523     if (b == surrounding_static_block)
6524       continue;
6525     ALL_BLOCK_SYMBOLS (b, iter, sym)
6526     {
6527       if (completion_skip_symbol (mode, sym))
6528         continue;
6529
6530       completion_list_add_name (tracker,
6531                                 SYMBOL_LANGUAGE (sym),
6532                                 SYMBOL_LINKAGE_NAME (sym),
6533                                 lookup_name, text, word);
6534     }
6535   }
6536 }
6537
6538                                 /* Field Access */
6539
6540 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6541    for tagged types.  */
6542
6543 static int
6544 ada_is_dispatch_table_ptr_type (struct type *type)
6545 {
6546   const char *name;
6547
6548   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6549     return 0;
6550
6551   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6552   if (name == NULL)
6553     return 0;
6554
6555   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6556 }
6557
6558 /* Return non-zero if TYPE is an interface tag.  */
6559
6560 static int
6561 ada_is_interface_tag (struct type *type)
6562 {
6563   const char *name = TYPE_NAME (type);
6564
6565   if (name == NULL)
6566     return 0;
6567
6568   return (strcmp (name, "ada__tags__interface_tag") == 0);
6569 }
6570
6571 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6572    to be invisible to users.  */
6573
6574 int
6575 ada_is_ignored_field (struct type *type, int field_num)
6576 {
6577   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6578     return 1;
6579
6580   /* Check the name of that field.  */
6581   {
6582     const char *name = TYPE_FIELD_NAME (type, field_num);
6583
6584     /* Anonymous field names should not be printed.
6585        brobecker/2007-02-20: I don't think this can actually happen
6586        but we don't want to print the value of annonymous fields anyway.  */
6587     if (name == NULL)
6588       return 1;
6589
6590     /* Normally, fields whose name start with an underscore ("_")
6591        are fields that have been internally generated by the compiler,
6592        and thus should not be printed.  The "_parent" field is special,
6593        however: This is a field internally generated by the compiler
6594        for tagged types, and it contains the components inherited from
6595        the parent type.  This field should not be printed as is, but
6596        should not be ignored either.  */
6597     if (name[0] == '_' && !startswith (name, "_parent"))
6598       return 1;
6599   }
6600
6601   /* If this is the dispatch table of a tagged type or an interface tag,
6602      then ignore.  */
6603   if (ada_is_tagged_type (type, 1)
6604       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6605           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6606     return 1;
6607
6608   /* Not a special field, so it should not be ignored.  */
6609   return 0;
6610 }
6611
6612 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6613    pointer or reference type whose ultimate target has a tag field.  */
6614
6615 int
6616 ada_is_tagged_type (struct type *type, int refok)
6617 {
6618   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6619 }
6620
6621 /* True iff TYPE represents the type of X'Tag */
6622
6623 int
6624 ada_is_tag_type (struct type *type)
6625 {
6626   type = ada_check_typedef (type);
6627
6628   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6629     return 0;
6630   else
6631     {
6632       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6633
6634       return (name != NULL
6635               && strcmp (name, "ada__tags__dispatch_table") == 0);
6636     }
6637 }
6638
6639 /* The type of the tag on VAL.  */
6640
6641 struct type *
6642 ada_tag_type (struct value *val)
6643 {
6644   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6645 }
6646
6647 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6648    retired at Ada 05).  */
6649
6650 static int
6651 is_ada95_tag (struct value *tag)
6652 {
6653   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6654 }
6655
6656 /* The value of the tag on VAL.  */
6657
6658 struct value *
6659 ada_value_tag (struct value *val)
6660 {
6661   return ada_value_struct_elt (val, "_tag", 0);
6662 }
6663
6664 /* The value of the tag on the object of type TYPE whose contents are
6665    saved at VALADDR, if it is non-null, or is at memory address
6666    ADDRESS.  */
6667
6668 static struct value *
6669 value_tag_from_contents_and_address (struct type *type,
6670                                      const gdb_byte *valaddr,
6671                                      CORE_ADDR address)
6672 {
6673   int tag_byte_offset;
6674   struct type *tag_type;
6675
6676   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6677                          NULL, NULL, NULL))
6678     {
6679       const gdb_byte *valaddr1 = ((valaddr == NULL)
6680                                   ? NULL
6681                                   : valaddr + tag_byte_offset);
6682       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6683
6684       return value_from_contents_and_address (tag_type, valaddr1, address1);
6685     }
6686   return NULL;
6687 }
6688
6689 static struct type *
6690 type_from_tag (struct value *tag)
6691 {
6692   const char *type_name = ada_tag_name (tag);
6693
6694   if (type_name != NULL)
6695     return ada_find_any_type (ada_encode (type_name));
6696   return NULL;
6697 }
6698
6699 /* Given a value OBJ of a tagged type, return a value of this
6700    type at the base address of the object.  The base address, as
6701    defined in Ada.Tags, it is the address of the primary tag of
6702    the object, and therefore where the field values of its full
6703    view can be fetched.  */
6704
6705 struct value *
6706 ada_tag_value_at_base_address (struct value *obj)
6707 {
6708   struct value *val;
6709   LONGEST offset_to_top = 0;
6710   struct type *ptr_type, *obj_type;
6711   struct value *tag;
6712   CORE_ADDR base_address;
6713
6714   obj_type = value_type (obj);
6715
6716   /* It is the responsability of the caller to deref pointers.  */
6717
6718   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6719       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6720     return obj;
6721
6722   tag = ada_value_tag (obj);
6723   if (!tag)
6724     return obj;
6725
6726   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6727
6728   if (is_ada95_tag (tag))
6729     return obj;
6730
6731   ptr_type = language_lookup_primitive_type
6732     (language_def (language_ada), target_gdbarch(), "storage_offset");
6733   ptr_type = lookup_pointer_type (ptr_type);
6734   val = value_cast (ptr_type, tag);
6735   if (!val)
6736     return obj;
6737
6738   /* It is perfectly possible that an exception be raised while
6739      trying to determine the base address, just like for the tag;
6740      see ada_tag_name for more details.  We do not print the error
6741      message for the same reason.  */
6742
6743   TRY
6744     {
6745       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6746     }
6747
6748   CATCH (e, RETURN_MASK_ERROR)
6749     {
6750       return obj;
6751     }
6752   END_CATCH
6753
6754   /* If offset is null, nothing to do.  */
6755
6756   if (offset_to_top == 0)
6757     return obj;
6758
6759   /* -1 is a special case in Ada.Tags; however, what should be done
6760      is not quite clear from the documentation.  So do nothing for
6761      now.  */
6762
6763   if (offset_to_top == -1)
6764     return obj;
6765
6766   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6767      from the base address.  This was however incompatible with
6768      C++ dispatch table: C++ uses a *negative* value to *add*
6769      to the base address.  Ada's convention has therefore been
6770      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6771      use the same convention.  Here, we support both cases by
6772      checking the sign of OFFSET_TO_TOP.  */
6773
6774   if (offset_to_top > 0)
6775     offset_to_top = -offset_to_top;
6776
6777   base_address = value_address (obj) + offset_to_top;
6778   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6779
6780   /* Make sure that we have a proper tag at the new address.
6781      Otherwise, offset_to_top is bogus (which can happen when
6782      the object is not initialized yet).  */
6783
6784   if (!tag)
6785     return obj;
6786
6787   obj_type = type_from_tag (tag);
6788
6789   if (!obj_type)
6790     return obj;
6791
6792   return value_from_contents_and_address (obj_type, NULL, base_address);
6793 }
6794
6795 /* Return the "ada__tags__type_specific_data" type.  */
6796
6797 static struct type *
6798 ada_get_tsd_type (struct inferior *inf)
6799 {
6800   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6801
6802   if (data->tsd_type == 0)
6803     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6804   return data->tsd_type;
6805 }
6806
6807 /* Return the TSD (type-specific data) associated to the given TAG.
6808    TAG is assumed to be the tag of a tagged-type entity.
6809
6810    May return NULL if we are unable to get the TSD.  */
6811
6812 static struct value *
6813 ada_get_tsd_from_tag (struct value *tag)
6814 {
6815   struct value *val;
6816   struct type *type;
6817
6818   /* First option: The TSD is simply stored as a field of our TAG.
6819      Only older versions of GNAT would use this format, but we have
6820      to test it first, because there are no visible markers for
6821      the current approach except the absence of that field.  */
6822
6823   val = ada_value_struct_elt (tag, "tsd", 1);
6824   if (val)
6825     return val;
6826
6827   /* Try the second representation for the dispatch table (in which
6828      there is no explicit 'tsd' field in the referent of the tag pointer,
6829      and instead the tsd pointer is stored just before the dispatch
6830      table.  */
6831
6832   type = ada_get_tsd_type (current_inferior());
6833   if (type == NULL)
6834     return NULL;
6835   type = lookup_pointer_type (lookup_pointer_type (type));
6836   val = value_cast (type, tag);
6837   if (val == NULL)
6838     return NULL;
6839   return value_ind (value_ptradd (val, -1));
6840 }
6841
6842 /* Given the TSD of a tag (type-specific data), return a string
6843    containing the name of the associated type.
6844
6845    The returned value is good until the next call.  May return NULL
6846    if we are unable to determine the tag name.  */
6847
6848 static char *
6849 ada_tag_name_from_tsd (struct value *tsd)
6850 {
6851   static char name[1024];
6852   char *p;
6853   struct value *val;
6854
6855   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6856   if (val == NULL)
6857     return NULL;
6858   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6859   for (p = name; *p != '\0'; p += 1)
6860     if (isalpha (*p))
6861       *p = tolower (*p);
6862   return name;
6863 }
6864
6865 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6866    a C string.
6867
6868    Return NULL if the TAG is not an Ada tag, or if we were unable to
6869    determine the name of that tag.  The result is good until the next
6870    call.  */
6871
6872 const char *
6873 ada_tag_name (struct value *tag)
6874 {
6875   char *name = NULL;
6876
6877   if (!ada_is_tag_type (value_type (tag)))
6878     return NULL;
6879
6880   /* It is perfectly possible that an exception be raised while trying
6881      to determine the TAG's name, even under normal circumstances:
6882      The associated variable may be uninitialized or corrupted, for
6883      instance. We do not let any exception propagate past this point.
6884      instead we return NULL.
6885
6886      We also do not print the error message either (which often is very
6887      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6888      the caller print a more meaningful message if necessary.  */
6889   TRY
6890     {
6891       struct value *tsd = ada_get_tsd_from_tag (tag);
6892
6893       if (tsd != NULL)
6894         name = ada_tag_name_from_tsd (tsd);
6895     }
6896   CATCH (e, RETURN_MASK_ERROR)
6897     {
6898     }
6899   END_CATCH
6900
6901   return name;
6902 }
6903
6904 /* The parent type of TYPE, or NULL if none.  */
6905
6906 struct type *
6907 ada_parent_type (struct type *type)
6908 {
6909   int i;
6910
6911   type = ada_check_typedef (type);
6912
6913   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6914     return NULL;
6915
6916   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6917     if (ada_is_parent_field (type, i))
6918       {
6919         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6920
6921         /* If the _parent field is a pointer, then dereference it.  */
6922         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6923           parent_type = TYPE_TARGET_TYPE (parent_type);
6924         /* If there is a parallel XVS type, get the actual base type.  */
6925         parent_type = ada_get_base_type (parent_type);
6926
6927         return ada_check_typedef (parent_type);
6928       }
6929
6930   return NULL;
6931 }
6932
6933 /* True iff field number FIELD_NUM of structure type TYPE contains the
6934    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6935    a structure type with at least FIELD_NUM+1 fields.  */
6936
6937 int
6938 ada_is_parent_field (struct type *type, int field_num)
6939 {
6940   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6941
6942   return (name != NULL
6943           && (startswith (name, "PARENT")
6944               || startswith (name, "_parent")));
6945 }
6946
6947 /* True iff field number FIELD_NUM of structure type TYPE is a
6948    transparent wrapper field (which should be silently traversed when doing
6949    field selection and flattened when printing).  Assumes TYPE is a
6950    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6951    structures.  */
6952
6953 int
6954 ada_is_wrapper_field (struct type *type, int field_num)
6955 {
6956   const char *name = TYPE_FIELD_NAME (type, field_num);
6957
6958   if (name != NULL && strcmp (name, "RETVAL") == 0)
6959     {
6960       /* This happens in functions with "out" or "in out" parameters
6961          which are passed by copy.  For such functions, GNAT describes
6962          the function's return type as being a struct where the return
6963          value is in a field called RETVAL, and where the other "out"
6964          or "in out" parameters are fields of that struct.  This is not
6965          a wrapper.  */
6966       return 0;
6967     }
6968
6969   return (name != NULL
6970           && (startswith (name, "PARENT")
6971               || strcmp (name, "REP") == 0
6972               || startswith (name, "_parent")
6973               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6974 }
6975
6976 /* True iff field number FIELD_NUM of structure or union type TYPE
6977    is a variant wrapper.  Assumes TYPE is a structure type with at least
6978    FIELD_NUM+1 fields.  */
6979
6980 int
6981 ada_is_variant_part (struct type *type, int field_num)
6982 {
6983   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6984
6985   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6986           || (is_dynamic_field (type, field_num)
6987               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6988                   == TYPE_CODE_UNION)));
6989 }
6990
6991 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6992    whose discriminants are contained in the record type OUTER_TYPE,
6993    returns the type of the controlling discriminant for the variant.
6994    May return NULL if the type could not be found.  */
6995
6996 struct type *
6997 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6998 {
6999   const char *name = ada_variant_discrim_name (var_type);
7000
7001   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7002 }
7003
7004 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7005    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7006    represents a 'when others' clause; otherwise 0.  */
7007
7008 int
7009 ada_is_others_clause (struct type *type, int field_num)
7010 {
7011   const char *name = TYPE_FIELD_NAME (type, field_num);
7012
7013   return (name != NULL && name[0] == 'O');
7014 }
7015
7016 /* Assuming that TYPE0 is the type of the variant part of a record,
7017    returns the name of the discriminant controlling the variant.
7018    The value is valid until the next call to ada_variant_discrim_name.  */
7019
7020 const char *
7021 ada_variant_discrim_name (struct type *type0)
7022 {
7023   static char *result = NULL;
7024   static size_t result_len = 0;
7025   struct type *type;
7026   const char *name;
7027   const char *discrim_end;
7028   const char *discrim_start;
7029
7030   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7031     type = TYPE_TARGET_TYPE (type0);
7032   else
7033     type = type0;
7034
7035   name = ada_type_name (type);
7036
7037   if (name == NULL || name[0] == '\000')
7038     return "";
7039
7040   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7041        discrim_end -= 1)
7042     {
7043       if (startswith (discrim_end, "___XVN"))
7044         break;
7045     }
7046   if (discrim_end == name)
7047     return "";
7048
7049   for (discrim_start = discrim_end; discrim_start != name + 3;
7050        discrim_start -= 1)
7051     {
7052       if (discrim_start == name + 1)
7053         return "";
7054       if ((discrim_start > name + 3
7055            && startswith (discrim_start - 3, "___"))
7056           || discrim_start[-1] == '.')
7057         break;
7058     }
7059
7060   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7061   strncpy (result, discrim_start, discrim_end - discrim_start);
7062   result[discrim_end - discrim_start] = '\0';
7063   return result;
7064 }
7065
7066 /* Scan STR for a subtype-encoded number, beginning at position K.
7067    Put the position of the character just past the number scanned in
7068    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7069    Return 1 if there was a valid number at the given position, and 0
7070    otherwise.  A "subtype-encoded" number consists of the absolute value
7071    in decimal, followed by the letter 'm' to indicate a negative number.
7072    Assumes 0m does not occur.  */
7073
7074 int
7075 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7076 {
7077   ULONGEST RU;
7078
7079   if (!isdigit (str[k]))
7080     return 0;
7081
7082   /* Do it the hard way so as not to make any assumption about
7083      the relationship of unsigned long (%lu scan format code) and
7084      LONGEST.  */
7085   RU = 0;
7086   while (isdigit (str[k]))
7087     {
7088       RU = RU * 10 + (str[k] - '0');
7089       k += 1;
7090     }
7091
7092   if (str[k] == 'm')
7093     {
7094       if (R != NULL)
7095         *R = (-(LONGEST) (RU - 1)) - 1;
7096       k += 1;
7097     }
7098   else if (R != NULL)
7099     *R = (LONGEST) RU;
7100
7101   /* NOTE on the above: Technically, C does not say what the results of
7102      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7103      number representable as a LONGEST (although either would probably work
7104      in most implementations).  When RU>0, the locution in the then branch
7105      above is always equivalent to the negative of RU.  */
7106
7107   if (new_k != NULL)
7108     *new_k = k;
7109   return 1;
7110 }
7111
7112 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7113    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7114    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7115
7116 int
7117 ada_in_variant (LONGEST val, struct type *type, int field_num)
7118 {
7119   const char *name = TYPE_FIELD_NAME (type, field_num);
7120   int p;
7121
7122   p = 0;
7123   while (1)
7124     {
7125       switch (name[p])
7126         {
7127         case '\0':
7128           return 0;
7129         case 'S':
7130           {
7131             LONGEST W;
7132
7133             if (!ada_scan_number (name, p + 1, &W, &p))
7134               return 0;
7135             if (val == W)
7136               return 1;
7137             break;
7138           }
7139         case 'R':
7140           {
7141             LONGEST L, U;
7142
7143             if (!ada_scan_number (name, p + 1, &L, &p)
7144                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7145               return 0;
7146             if (val >= L && val <= U)
7147               return 1;
7148             break;
7149           }
7150         case 'O':
7151           return 1;
7152         default:
7153           return 0;
7154         }
7155     }
7156 }
7157
7158 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7159
7160 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7161    ARG_TYPE, extract and return the value of one of its (non-static)
7162    fields.  FIELDNO says which field.   Differs from value_primitive_field
7163    only in that it can handle packed values of arbitrary type.  */
7164
7165 static struct value *
7166 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7167                            struct type *arg_type)
7168 {
7169   struct type *type;
7170
7171   arg_type = ada_check_typedef (arg_type);
7172   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7173
7174   /* Handle packed fields.  */
7175
7176   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7177     {
7178       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7179       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7180
7181       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7182                                              offset + bit_pos / 8,
7183                                              bit_pos % 8, bit_size, type);
7184     }
7185   else
7186     return value_primitive_field (arg1, offset, fieldno, arg_type);
7187 }
7188
7189 /* Find field with name NAME in object of type TYPE.  If found, 
7190    set the following for each argument that is non-null:
7191     - *FIELD_TYPE_P to the field's type; 
7192     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7193       an object of that type;
7194     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7195     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7196       0 otherwise;
7197    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7198    fields up to but not including the desired field, or by the total
7199    number of fields if not found.   A NULL value of NAME never
7200    matches; the function just counts visible fields in this case.
7201    
7202    Notice that we need to handle when a tagged record hierarchy
7203    has some components with the same name, like in this scenario:
7204
7205       type Top_T is tagged record
7206          N : Integer := 1;
7207          U : Integer := 974;
7208          A : Integer := 48;
7209       end record;
7210
7211       type Middle_T is new Top.Top_T with record
7212          N : Character := 'a';
7213          C : Integer := 3;
7214       end record;
7215
7216      type Bottom_T is new Middle.Middle_T with record
7217         N : Float := 4.0;
7218         C : Character := '5';
7219         X : Integer := 6;
7220         A : Character := 'J';
7221      end record;
7222
7223    Let's say we now have a variable declared and initialized as follow:
7224
7225      TC : Top_A := new Bottom_T;
7226
7227    And then we use this variable to call this function
7228
7229      procedure Assign (Obj: in out Top_T; TV : Integer);
7230
7231    as follow:
7232
7233       Assign (Top_T (B), 12);
7234
7235    Now, we're in the debugger, and we're inside that procedure
7236    then and we want to print the value of obj.c:
7237
7238    Usually, the tagged record or one of the parent type owns the
7239    component to print and there's no issue but in this particular
7240    case, what does it mean to ask for Obj.C? Since the actual
7241    type for object is type Bottom_T, it could mean two things: type
7242    component C from the Middle_T view, but also component C from
7243    Bottom_T.  So in that "undefined" case, when the component is
7244    not found in the non-resolved type (which includes all the
7245    components of the parent type), then resolve it and see if we
7246    get better luck once expanded.
7247
7248    In the case of homonyms in the derived tagged type, we don't
7249    guaranty anything, and pick the one that's easiest for us
7250    to program.
7251
7252    Returns 1 if found, 0 otherwise.  */
7253
7254 static int
7255 find_struct_field (const char *name, struct type *type, int offset,
7256                    struct type **field_type_p,
7257                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7258                    int *index_p)
7259 {
7260   int i;
7261   int parent_offset = -1;
7262
7263   type = ada_check_typedef (type);
7264
7265   if (field_type_p != NULL)
7266     *field_type_p = NULL;
7267   if (byte_offset_p != NULL)
7268     *byte_offset_p = 0;
7269   if (bit_offset_p != NULL)
7270     *bit_offset_p = 0;
7271   if (bit_size_p != NULL)
7272     *bit_size_p = 0;
7273
7274   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7275     {
7276       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7277       int fld_offset = offset + bit_pos / 8;
7278       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7279
7280       if (t_field_name == NULL)
7281         continue;
7282
7283       else if (ada_is_parent_field (type, i))
7284         {
7285           /* This is a field pointing us to the parent type of a tagged
7286              type.  As hinted in this function's documentation, we give
7287              preference to fields in the current record first, so what
7288              we do here is just record the index of this field before
7289              we skip it.  If it turns out we couldn't find our field
7290              in the current record, then we'll get back to it and search
7291              inside it whether the field might exist in the parent.  */
7292
7293           parent_offset = i;
7294           continue;
7295         }
7296
7297       else if (name != NULL && field_name_match (t_field_name, name))
7298         {
7299           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7300
7301           if (field_type_p != NULL)
7302             *field_type_p = TYPE_FIELD_TYPE (type, i);
7303           if (byte_offset_p != NULL)
7304             *byte_offset_p = fld_offset;
7305           if (bit_offset_p != NULL)
7306             *bit_offset_p = bit_pos % 8;
7307           if (bit_size_p != NULL)
7308             *bit_size_p = bit_size;
7309           return 1;
7310         }
7311       else if (ada_is_wrapper_field (type, i))
7312         {
7313           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7314                                  field_type_p, byte_offset_p, bit_offset_p,
7315                                  bit_size_p, index_p))
7316             return 1;
7317         }
7318       else if (ada_is_variant_part (type, i))
7319         {
7320           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7321              fixed type?? */
7322           int j;
7323           struct type *field_type
7324             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7325
7326           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7327             {
7328               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7329                                      fld_offset
7330                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7331                                      field_type_p, byte_offset_p,
7332                                      bit_offset_p, bit_size_p, index_p))
7333                 return 1;
7334             }
7335         }
7336       else if (index_p != NULL)
7337         *index_p += 1;
7338     }
7339
7340   /* Field not found so far.  If this is a tagged type which
7341      has a parent, try finding that field in the parent now.  */
7342
7343   if (parent_offset != -1)
7344     {
7345       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7346       int fld_offset = offset + bit_pos / 8;
7347
7348       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7349                              fld_offset, field_type_p, byte_offset_p,
7350                              bit_offset_p, bit_size_p, index_p))
7351         return 1;
7352     }
7353
7354   return 0;
7355 }
7356
7357 /* Number of user-visible fields in record type TYPE.  */
7358
7359 static int
7360 num_visible_fields (struct type *type)
7361 {
7362   int n;
7363
7364   n = 0;
7365   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7366   return n;
7367 }
7368
7369 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7370    and search in it assuming it has (class) type TYPE.
7371    If found, return value, else return NULL.
7372
7373    Searches recursively through wrapper fields (e.g., '_parent').
7374
7375    In the case of homonyms in the tagged types, please refer to the
7376    long explanation in find_struct_field's function documentation.  */
7377
7378 static struct value *
7379 ada_search_struct_field (const char *name, struct value *arg, int offset,
7380                          struct type *type)
7381 {
7382   int i;
7383   int parent_offset = -1;
7384
7385   type = ada_check_typedef (type);
7386   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7387     {
7388       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7389
7390       if (t_field_name == NULL)
7391         continue;
7392
7393       else if (ada_is_parent_field (type, i))
7394         {
7395           /* This is a field pointing us to the parent type of a tagged
7396              type.  As hinted in this function's documentation, we give
7397              preference to fields in the current record first, so what
7398              we do here is just record the index of this field before
7399              we skip it.  If it turns out we couldn't find our field
7400              in the current record, then we'll get back to it and search
7401              inside it whether the field might exist in the parent.  */
7402
7403           parent_offset = i;
7404           continue;
7405         }
7406
7407       else if (field_name_match (t_field_name, name))
7408         return ada_value_primitive_field (arg, offset, i, type);
7409
7410       else if (ada_is_wrapper_field (type, i))
7411         {
7412           struct value *v =     /* Do not let indent join lines here.  */
7413             ada_search_struct_field (name, arg,
7414                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7415                                      TYPE_FIELD_TYPE (type, i));
7416
7417           if (v != NULL)
7418             return v;
7419         }
7420
7421       else if (ada_is_variant_part (type, i))
7422         {
7423           /* PNH: Do we ever get here?  See find_struct_field.  */
7424           int j;
7425           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7426                                                                         i));
7427           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7428
7429           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7430             {
7431               struct value *v = ada_search_struct_field /* Force line
7432                                                            break.  */
7433                 (name, arg,
7434                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7435                  TYPE_FIELD_TYPE (field_type, j));
7436
7437               if (v != NULL)
7438                 return v;
7439             }
7440         }
7441     }
7442
7443   /* Field not found so far.  If this is a tagged type which
7444      has a parent, try finding that field in the parent now.  */
7445
7446   if (parent_offset != -1)
7447     {
7448       struct value *v = ada_search_struct_field (
7449         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7450         TYPE_FIELD_TYPE (type, parent_offset));
7451
7452       if (v != NULL)
7453         return v;
7454     }
7455
7456   return NULL;
7457 }
7458
7459 static struct value *ada_index_struct_field_1 (int *, struct value *,
7460                                                int, struct type *);
7461
7462
7463 /* Return field #INDEX in ARG, where the index is that returned by
7464  * find_struct_field through its INDEX_P argument.  Adjust the address
7465  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7466  * If found, return value, else return NULL.  */
7467
7468 static struct value *
7469 ada_index_struct_field (int index, struct value *arg, int offset,
7470                         struct type *type)
7471 {
7472   return ada_index_struct_field_1 (&index, arg, offset, type);
7473 }
7474
7475
7476 /* Auxiliary function for ada_index_struct_field.  Like
7477  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7478  * *INDEX_P.  */
7479
7480 static struct value *
7481 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7482                           struct type *type)
7483 {
7484   int i;
7485   type = ada_check_typedef (type);
7486
7487   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7488     {
7489       if (TYPE_FIELD_NAME (type, i) == NULL)
7490         continue;
7491       else if (ada_is_wrapper_field (type, i))
7492         {
7493           struct value *v =     /* Do not let indent join lines here.  */
7494             ada_index_struct_field_1 (index_p, arg,
7495                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7496                                       TYPE_FIELD_TYPE (type, i));
7497
7498           if (v != NULL)
7499             return v;
7500         }
7501
7502       else if (ada_is_variant_part (type, i))
7503         {
7504           /* PNH: Do we ever get here?  See ada_search_struct_field,
7505              find_struct_field.  */
7506           error (_("Cannot assign this kind of variant record"));
7507         }
7508       else if (*index_p == 0)
7509         return ada_value_primitive_field (arg, offset, i, type);
7510       else
7511         *index_p -= 1;
7512     }
7513   return NULL;
7514 }
7515
7516 /* Given ARG, a value of type (pointer or reference to a)*
7517    structure/union, extract the component named NAME from the ultimate
7518    target structure/union and return it as a value with its
7519    appropriate type.
7520
7521    The routine searches for NAME among all members of the structure itself
7522    and (recursively) among all members of any wrapper members
7523    (e.g., '_parent').
7524
7525    If NO_ERR, then simply return NULL in case of error, rather than 
7526    calling error.  */
7527
7528 struct value *
7529 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7530 {
7531   struct type *t, *t1;
7532   struct value *v;
7533
7534   v = NULL;
7535   t1 = t = ada_check_typedef (value_type (arg));
7536   if (TYPE_CODE (t) == TYPE_CODE_REF)
7537     {
7538       t1 = TYPE_TARGET_TYPE (t);
7539       if (t1 == NULL)
7540         goto BadValue;
7541       t1 = ada_check_typedef (t1);
7542       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7543         {
7544           arg = coerce_ref (arg);
7545           t = t1;
7546         }
7547     }
7548
7549   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7550     {
7551       t1 = TYPE_TARGET_TYPE (t);
7552       if (t1 == NULL)
7553         goto BadValue;
7554       t1 = ada_check_typedef (t1);
7555       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7556         {
7557           arg = value_ind (arg);
7558           t = t1;
7559         }
7560       else
7561         break;
7562     }
7563
7564   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7565     goto BadValue;
7566
7567   if (t1 == t)
7568     v = ada_search_struct_field (name, arg, 0, t);
7569   else
7570     {
7571       int bit_offset, bit_size, byte_offset;
7572       struct type *field_type;
7573       CORE_ADDR address;
7574
7575       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7576         address = value_address (ada_value_ind (arg));
7577       else
7578         address = value_address (ada_coerce_ref (arg));
7579
7580       /* Check to see if this is a tagged type.  We also need to handle
7581          the case where the type is a reference to a tagged type, but
7582          we have to be careful to exclude pointers to tagged types.
7583          The latter should be shown as usual (as a pointer), whereas
7584          a reference should mostly be transparent to the user.  */
7585
7586       if (ada_is_tagged_type (t1, 0)
7587           || (TYPE_CODE (t1) == TYPE_CODE_REF
7588               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7589         {
7590           /* We first try to find the searched field in the current type.
7591              If not found then let's look in the fixed type.  */
7592
7593           if (!find_struct_field (name, t1, 0,
7594                                   &field_type, &byte_offset, &bit_offset,
7595                                   &bit_size, NULL))
7596             t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7597                                     address, NULL, 1);
7598         }
7599       else
7600         t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7601                                 address, NULL, 1);
7602
7603       if (find_struct_field (name, t1, 0,
7604                              &field_type, &byte_offset, &bit_offset,
7605                              &bit_size, NULL))
7606         {
7607           if (bit_size != 0)
7608             {
7609               if (TYPE_CODE (t) == TYPE_CODE_REF)
7610                 arg = ada_coerce_ref (arg);
7611               else
7612                 arg = ada_value_ind (arg);
7613               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7614                                                   bit_offset, bit_size,
7615                                                   field_type);
7616             }
7617           else
7618             v = value_at_lazy (field_type, address + byte_offset);
7619         }
7620     }
7621
7622   if (v != NULL || no_err)
7623     return v;
7624   else
7625     error (_("There is no member named %s."), name);
7626
7627  BadValue:
7628   if (no_err)
7629     return NULL;
7630   else
7631     error (_("Attempt to extract a component of "
7632              "a value that is not a record."));
7633 }
7634
7635 /* Return a string representation of type TYPE.  */
7636
7637 static std::string
7638 type_as_string (struct type *type)
7639 {
7640   string_file tmp_stream;
7641
7642   type_print (type, "", &tmp_stream, -1);
7643
7644   return std::move (tmp_stream.string ());
7645 }
7646
7647 /* Given a type TYPE, look up the type of the component of type named NAME.
7648    If DISPP is non-null, add its byte displacement from the beginning of a
7649    structure (pointed to by a value) of type TYPE to *DISPP (does not
7650    work for packed fields).
7651
7652    Matches any field whose name has NAME as a prefix, possibly
7653    followed by "___".
7654
7655    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7656    be a (pointer or reference)+ to a struct or union, and the
7657    ultimate target type will be searched.
7658
7659    Looks recursively into variant clauses and parent types.
7660
7661    In the case of homonyms in the tagged types, please refer to the
7662    long explanation in find_struct_field's function documentation.
7663
7664    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7665    TYPE is not a type of the right kind.  */
7666
7667 static struct type *
7668 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7669                             int noerr)
7670 {
7671   int i;
7672   int parent_offset = -1;
7673
7674   if (name == NULL)
7675     goto BadName;
7676
7677   if (refok && type != NULL)
7678     while (1)
7679       {
7680         type = ada_check_typedef (type);
7681         if (TYPE_CODE (type) != TYPE_CODE_PTR
7682             && TYPE_CODE (type) != TYPE_CODE_REF)
7683           break;
7684         type = TYPE_TARGET_TYPE (type);
7685       }
7686
7687   if (type == NULL
7688       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7689           && TYPE_CODE (type) != TYPE_CODE_UNION))
7690     {
7691       if (noerr)
7692         return NULL;
7693
7694       error (_("Type %s is not a structure or union type"),
7695              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7696     }
7697
7698   type = to_static_fixed_type (type);
7699
7700   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7701     {
7702       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7703       struct type *t;
7704
7705       if (t_field_name == NULL)
7706         continue;
7707
7708       else if (ada_is_parent_field (type, i))
7709         {
7710           /* This is a field pointing us to the parent type of a tagged
7711              type.  As hinted in this function's documentation, we give
7712              preference to fields in the current record first, so what
7713              we do here is just record the index of this field before
7714              we skip it.  If it turns out we couldn't find our field
7715              in the current record, then we'll get back to it and search
7716              inside it whether the field might exist in the parent.  */
7717
7718           parent_offset = i;
7719           continue;
7720         }
7721
7722       else if (field_name_match (t_field_name, name))
7723         return TYPE_FIELD_TYPE (type, i);
7724
7725       else if (ada_is_wrapper_field (type, i))
7726         {
7727           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7728                                           0, 1);
7729           if (t != NULL)
7730             return t;
7731         }
7732
7733       else if (ada_is_variant_part (type, i))
7734         {
7735           int j;
7736           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7737                                                                         i));
7738
7739           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7740             {
7741               /* FIXME pnh 2008/01/26: We check for a field that is
7742                  NOT wrapped in a struct, since the compiler sometimes
7743                  generates these for unchecked variant types.  Revisit
7744                  if the compiler changes this practice.  */
7745               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7746
7747               if (v_field_name != NULL 
7748                   && field_name_match (v_field_name, name))
7749                 t = TYPE_FIELD_TYPE (field_type, j);
7750               else
7751                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7752                                                                  j),
7753                                                 name, 0, 1);
7754
7755               if (t != NULL)
7756                 return t;
7757             }
7758         }
7759
7760     }
7761
7762     /* Field not found so far.  If this is a tagged type which
7763        has a parent, try finding that field in the parent now.  */
7764
7765     if (parent_offset != -1)
7766       {
7767         struct type *t;
7768
7769         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7770                                         name, 0, 1);
7771         if (t != NULL)
7772           return t;
7773       }
7774
7775 BadName:
7776   if (!noerr)
7777     {
7778       const char *name_str = name != NULL ? name : _("<null>");
7779
7780       error (_("Type %s has no component named %s"),
7781              type_as_string (type).c_str (), name_str);
7782     }
7783
7784   return NULL;
7785 }
7786
7787 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7788    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7789    represents an unchecked union (that is, the variant part of a
7790    record that is named in an Unchecked_Union pragma).  */
7791
7792 static int
7793 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7794 {
7795   const char *discrim_name = ada_variant_discrim_name (var_type);
7796
7797   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7798 }
7799
7800
7801 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7802    within a value of type OUTER_TYPE that is stored in GDB at
7803    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7804    numbering from 0) is applicable.  Returns -1 if none are.  */
7805
7806 int
7807 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7808                            const gdb_byte *outer_valaddr)
7809 {
7810   int others_clause;
7811   int i;
7812   const char *discrim_name = ada_variant_discrim_name (var_type);
7813   struct value *outer;
7814   struct value *discrim;
7815   LONGEST discrim_val;
7816
7817   /* Using plain value_from_contents_and_address here causes problems
7818      because we will end up trying to resolve a type that is currently
7819      being constructed.  */
7820   outer = value_from_contents_and_address_unresolved (outer_type,
7821                                                       outer_valaddr, 0);
7822   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7823   if (discrim == NULL)
7824     return -1;
7825   discrim_val = value_as_long (discrim);
7826
7827   others_clause = -1;
7828   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7829     {
7830       if (ada_is_others_clause (var_type, i))
7831         others_clause = i;
7832       else if (ada_in_variant (discrim_val, var_type, i))
7833         return i;
7834     }
7835
7836   return others_clause;
7837 }
7838 \f
7839
7840
7841                                 /* Dynamic-Sized Records */
7842
7843 /* Strategy: The type ostensibly attached to a value with dynamic size
7844    (i.e., a size that is not statically recorded in the debugging
7845    data) does not accurately reflect the size or layout of the value.
7846    Our strategy is to convert these values to values with accurate,
7847    conventional types that are constructed on the fly.  */
7848
7849 /* There is a subtle and tricky problem here.  In general, we cannot
7850    determine the size of dynamic records without its data.  However,
7851    the 'struct value' data structure, which GDB uses to represent
7852    quantities in the inferior process (the target), requires the size
7853    of the type at the time of its allocation in order to reserve space
7854    for GDB's internal copy of the data.  That's why the
7855    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7856    rather than struct value*s.
7857
7858    However, GDB's internal history variables ($1, $2, etc.) are
7859    struct value*s containing internal copies of the data that are not, in
7860    general, the same as the data at their corresponding addresses in
7861    the target.  Fortunately, the types we give to these values are all
7862    conventional, fixed-size types (as per the strategy described
7863    above), so that we don't usually have to perform the
7864    'to_fixed_xxx_type' conversions to look at their values.
7865    Unfortunately, there is one exception: if one of the internal
7866    history variables is an array whose elements are unconstrained
7867    records, then we will need to create distinct fixed types for each
7868    element selected.  */
7869
7870 /* The upshot of all of this is that many routines take a (type, host
7871    address, target address) triple as arguments to represent a value.
7872    The host address, if non-null, is supposed to contain an internal
7873    copy of the relevant data; otherwise, the program is to consult the
7874    target at the target address.  */
7875
7876 /* Assuming that VAL0 represents a pointer value, the result of
7877    dereferencing it.  Differs from value_ind in its treatment of
7878    dynamic-sized types.  */
7879
7880 struct value *
7881 ada_value_ind (struct value *val0)
7882 {
7883   struct value *val = value_ind (val0);
7884
7885   if (ada_is_tagged_type (value_type (val), 0))
7886     val = ada_tag_value_at_base_address (val);
7887
7888   return ada_to_fixed_value (val);
7889 }
7890
7891 /* The value resulting from dereferencing any "reference to"
7892    qualifiers on VAL0.  */
7893
7894 static struct value *
7895 ada_coerce_ref (struct value *val0)
7896 {
7897   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7898     {
7899       struct value *val = val0;
7900
7901       val = coerce_ref (val);
7902
7903       if (ada_is_tagged_type (value_type (val), 0))
7904         val = ada_tag_value_at_base_address (val);
7905
7906       return ada_to_fixed_value (val);
7907     }
7908   else
7909     return val0;
7910 }
7911
7912 /* Return OFF rounded upward if necessary to a multiple of
7913    ALIGNMENT (a power of 2).  */
7914
7915 static unsigned int
7916 align_value (unsigned int off, unsigned int alignment)
7917 {
7918   return (off + alignment - 1) & ~(alignment - 1);
7919 }
7920
7921 /* Return the bit alignment required for field #F of template type TYPE.  */
7922
7923 static unsigned int
7924 field_alignment (struct type *type, int f)
7925 {
7926   const char *name = TYPE_FIELD_NAME (type, f);
7927   int len;
7928   int align_offset;
7929
7930   /* The field name should never be null, unless the debugging information
7931      is somehow malformed.  In this case, we assume the field does not
7932      require any alignment.  */
7933   if (name == NULL)
7934     return 1;
7935
7936   len = strlen (name);
7937
7938   if (!isdigit (name[len - 1]))
7939     return 1;
7940
7941   if (isdigit (name[len - 2]))
7942     align_offset = len - 2;
7943   else
7944     align_offset = len - 1;
7945
7946   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7947     return TARGET_CHAR_BIT;
7948
7949   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7950 }
7951
7952 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7953
7954 static struct symbol *
7955 ada_find_any_type_symbol (const char *name)
7956 {
7957   struct symbol *sym;
7958
7959   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7960   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7961     return sym;
7962
7963   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7964   return sym;
7965 }
7966
7967 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7968    solely for types defined by debug info, it will not search the GDB
7969    primitive types.  */
7970
7971 static struct type *
7972 ada_find_any_type (const char *name)
7973 {
7974   struct symbol *sym = ada_find_any_type_symbol (name);
7975
7976   if (sym != NULL)
7977     return SYMBOL_TYPE (sym);
7978
7979   return NULL;
7980 }
7981
7982 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7983    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7984    symbol, in which case it is returned.  Otherwise, this looks for
7985    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7986    Return symbol if found, and NULL otherwise.  */
7987
7988 struct symbol *
7989 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7990 {
7991   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7992   struct symbol *sym;
7993
7994   if (strstr (name, "___XR") != NULL)
7995      return name_sym;
7996
7997   sym = find_old_style_renaming_symbol (name, block);
7998
7999   if (sym != NULL)
8000     return sym;
8001
8002   /* Not right yet.  FIXME pnh 7/20/2007.  */
8003   sym = ada_find_any_type_symbol (name);
8004   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8005     return sym;
8006   else
8007     return NULL;
8008 }
8009
8010 static struct symbol *
8011 find_old_style_renaming_symbol (const char *name, const struct block *block)
8012 {
8013   const struct symbol *function_sym = block_linkage_function (block);
8014   char *rename;
8015
8016   if (function_sym != NULL)
8017     {
8018       /* If the symbol is defined inside a function, NAME is not fully
8019          qualified.  This means we need to prepend the function name
8020          as well as adding the ``___XR'' suffix to build the name of
8021          the associated renaming symbol.  */
8022       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8023       /* Function names sometimes contain suffixes used
8024          for instance to qualify nested subprograms.  When building
8025          the XR type name, we need to make sure that this suffix is
8026          not included.  So do not include any suffix in the function
8027          name length below.  */
8028       int function_name_len = ada_name_prefix_len (function_name);
8029       const int rename_len = function_name_len + 2      /*  "__" */
8030         + strlen (name) + 6 /* "___XR\0" */ ;
8031
8032       /* Strip the suffix if necessary.  */
8033       ada_remove_trailing_digits (function_name, &function_name_len);
8034       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8035       ada_remove_Xbn_suffix (function_name, &function_name_len);
8036
8037       /* Library-level functions are a special case, as GNAT adds
8038          a ``_ada_'' prefix to the function name to avoid namespace
8039          pollution.  However, the renaming symbols themselves do not
8040          have this prefix, so we need to skip this prefix if present.  */
8041       if (function_name_len > 5 /* "_ada_" */
8042           && strstr (function_name, "_ada_") == function_name)
8043         {
8044           function_name += 5;
8045           function_name_len -= 5;
8046         }
8047
8048       rename = (char *) alloca (rename_len * sizeof (char));
8049       strncpy (rename, function_name, function_name_len);
8050       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8051                  "__%s___XR", name);
8052     }
8053   else
8054     {
8055       const int rename_len = strlen (name) + 6;
8056
8057       rename = (char *) alloca (rename_len * sizeof (char));
8058       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8059     }
8060
8061   return ada_find_any_type_symbol (rename);
8062 }
8063
8064 /* Because of GNAT encoding conventions, several GDB symbols may match a
8065    given type name.  If the type denoted by TYPE0 is to be preferred to
8066    that of TYPE1 for purposes of type printing, return non-zero;
8067    otherwise return 0.  */
8068
8069 int
8070 ada_prefer_type (struct type *type0, struct type *type1)
8071 {
8072   if (type1 == NULL)
8073     return 1;
8074   else if (type0 == NULL)
8075     return 0;
8076   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8077     return 1;
8078   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8079     return 0;
8080   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8081     return 1;
8082   else if (ada_is_constrained_packed_array_type (type0))
8083     return 1;
8084   else if (ada_is_array_descriptor_type (type0)
8085            && !ada_is_array_descriptor_type (type1))
8086     return 1;
8087   else
8088     {
8089       const char *type0_name = TYPE_NAME (type0);
8090       const char *type1_name = TYPE_NAME (type1);
8091
8092       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8093           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8094         return 1;
8095     }
8096   return 0;
8097 }
8098
8099 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8100    null.  */
8101
8102 const char *
8103 ada_type_name (struct type *type)
8104 {
8105   if (type == NULL)
8106     return NULL;
8107   return TYPE_NAME (type);
8108 }
8109
8110 /* Search the list of "descriptive" types associated to TYPE for a type
8111    whose name is NAME.  */
8112
8113 static struct type *
8114 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8115 {
8116   struct type *result, *tmp;
8117
8118   if (ada_ignore_descriptive_types_p)
8119     return NULL;
8120
8121   /* If there no descriptive-type info, then there is no parallel type
8122      to be found.  */
8123   if (!HAVE_GNAT_AUX_INFO (type))
8124     return NULL;
8125
8126   result = TYPE_DESCRIPTIVE_TYPE (type);
8127   while (result != NULL)
8128     {
8129       const char *result_name = ada_type_name (result);
8130
8131       if (result_name == NULL)
8132         {
8133           warning (_("unexpected null name on descriptive type"));
8134           return NULL;
8135         }
8136
8137       /* If the names match, stop.  */
8138       if (strcmp (result_name, name) == 0)
8139         break;
8140
8141       /* Otherwise, look at the next item on the list, if any.  */
8142       if (HAVE_GNAT_AUX_INFO (result))
8143         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8144       else
8145         tmp = NULL;
8146
8147       /* If not found either, try after having resolved the typedef.  */
8148       if (tmp != NULL)
8149         result = tmp;
8150       else
8151         {
8152           result = check_typedef (result);
8153           if (HAVE_GNAT_AUX_INFO (result))
8154             result = TYPE_DESCRIPTIVE_TYPE (result);
8155           else
8156             result = NULL;
8157         }
8158     }
8159
8160   /* If we didn't find a match, see whether this is a packed array.  With
8161      older compilers, the descriptive type information is either absent or
8162      irrelevant when it comes to packed arrays so the above lookup fails.
8163      Fall back to using a parallel lookup by name in this case.  */
8164   if (result == NULL && ada_is_constrained_packed_array_type (type))
8165     return ada_find_any_type (name);
8166
8167   return result;
8168 }
8169
8170 /* Find a parallel type to TYPE with the specified NAME, using the
8171    descriptive type taken from the debugging information, if available,
8172    and otherwise using the (slower) name-based method.  */
8173
8174 static struct type *
8175 ada_find_parallel_type_with_name (struct type *type, const char *name)
8176 {
8177   struct type *result = NULL;
8178
8179   if (HAVE_GNAT_AUX_INFO (type))
8180     result = find_parallel_type_by_descriptive_type (type, name);
8181   else
8182     result = ada_find_any_type (name);
8183
8184   return result;
8185 }
8186
8187 /* Same as above, but specify the name of the parallel type by appending
8188    SUFFIX to the name of TYPE.  */
8189
8190 struct type *
8191 ada_find_parallel_type (struct type *type, const char *suffix)
8192 {
8193   char *name;
8194   const char *type_name = ada_type_name (type);
8195   int len;
8196
8197   if (type_name == NULL)
8198     return NULL;
8199
8200   len = strlen (type_name);
8201
8202   name = (char *) alloca (len + strlen (suffix) + 1);
8203
8204   strcpy (name, type_name);
8205   strcpy (name + len, suffix);
8206
8207   return ada_find_parallel_type_with_name (type, name);
8208 }
8209
8210 /* If TYPE is a variable-size record type, return the corresponding template
8211    type describing its fields.  Otherwise, return NULL.  */
8212
8213 static struct type *
8214 dynamic_template_type (struct type *type)
8215 {
8216   type = ada_check_typedef (type);
8217
8218   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8219       || ada_type_name (type) == NULL)
8220     return NULL;
8221   else
8222     {
8223       int len = strlen (ada_type_name (type));
8224
8225       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8226         return type;
8227       else
8228         return ada_find_parallel_type (type, "___XVE");
8229     }
8230 }
8231
8232 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8233    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8234
8235 static int
8236 is_dynamic_field (struct type *templ_type, int field_num)
8237 {
8238   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8239
8240   return name != NULL
8241     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8242     && strstr (name, "___XVL") != NULL;
8243 }
8244
8245 /* The index of the variant field of TYPE, or -1 if TYPE does not
8246    represent a variant record type.  */
8247
8248 static int
8249 variant_field_index (struct type *type)
8250 {
8251   int f;
8252
8253   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8254     return -1;
8255
8256   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8257     {
8258       if (ada_is_variant_part (type, f))
8259         return f;
8260     }
8261   return -1;
8262 }
8263
8264 /* A record type with no fields.  */
8265
8266 static struct type *
8267 empty_record (struct type *templ)
8268 {
8269   struct type *type = alloc_type_copy (templ);
8270
8271   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8272   TYPE_NFIELDS (type) = 0;
8273   TYPE_FIELDS (type) = NULL;
8274   INIT_CPLUS_SPECIFIC (type);
8275   TYPE_NAME (type) = "<empty>";
8276   TYPE_LENGTH (type) = 0;
8277   return type;
8278 }
8279
8280 /* An ordinary record type (with fixed-length fields) that describes
8281    the value of type TYPE at VALADDR or ADDRESS (see comments at
8282    the beginning of this section) VAL according to GNAT conventions.
8283    DVAL0 should describe the (portion of a) record that contains any
8284    necessary discriminants.  It should be NULL if value_type (VAL) is
8285    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8286    variant field (unless unchecked) is replaced by a particular branch
8287    of the variant.
8288
8289    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8290    length are not statically known are discarded.  As a consequence,
8291    VALADDR, ADDRESS and DVAL0 are ignored.
8292
8293    NOTE: Limitations: For now, we assume that dynamic fields and
8294    variants occupy whole numbers of bytes.  However, they need not be
8295    byte-aligned.  */
8296
8297 struct type *
8298 ada_template_to_fixed_record_type_1 (struct type *type,
8299                                      const gdb_byte *valaddr,
8300                                      CORE_ADDR address, struct value *dval0,
8301                                      int keep_dynamic_fields)
8302 {
8303   struct value *mark = value_mark ();
8304   struct value *dval;
8305   struct type *rtype;
8306   int nfields, bit_len;
8307   int variant_field;
8308   long off;
8309   int fld_bit_len;
8310   int f;
8311
8312   /* Compute the number of fields in this record type that are going
8313      to be processed: unless keep_dynamic_fields, this includes only
8314      fields whose position and length are static will be processed.  */
8315   if (keep_dynamic_fields)
8316     nfields = TYPE_NFIELDS (type);
8317   else
8318     {
8319       nfields = 0;
8320       while (nfields < TYPE_NFIELDS (type)
8321              && !ada_is_variant_part (type, nfields)
8322              && !is_dynamic_field (type, nfields))
8323         nfields++;
8324     }
8325
8326   rtype = alloc_type_copy (type);
8327   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8328   INIT_CPLUS_SPECIFIC (rtype);
8329   TYPE_NFIELDS (rtype) = nfields;
8330   TYPE_FIELDS (rtype) = (struct field *)
8331     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8332   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8333   TYPE_NAME (rtype) = ada_type_name (type);
8334   TYPE_FIXED_INSTANCE (rtype) = 1;
8335
8336   off = 0;
8337   bit_len = 0;
8338   variant_field = -1;
8339
8340   for (f = 0; f < nfields; f += 1)
8341     {
8342       off = align_value (off, field_alignment (type, f))
8343         + TYPE_FIELD_BITPOS (type, f);
8344       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8345       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8346
8347       if (ada_is_variant_part (type, f))
8348         {
8349           variant_field = f;
8350           fld_bit_len = 0;
8351         }
8352       else if (is_dynamic_field (type, f))
8353         {
8354           const gdb_byte *field_valaddr = valaddr;
8355           CORE_ADDR field_address = address;
8356           struct type *field_type =
8357             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8358
8359           if (dval0 == NULL)
8360             {
8361               /* rtype's length is computed based on the run-time
8362                  value of discriminants.  If the discriminants are not
8363                  initialized, the type size may be completely bogus and
8364                  GDB may fail to allocate a value for it.  So check the
8365                  size first before creating the value.  */
8366               ada_ensure_varsize_limit (rtype);
8367               /* Using plain value_from_contents_and_address here
8368                  causes problems because we will end up trying to
8369                  resolve a type that is currently being
8370                  constructed.  */
8371               dval = value_from_contents_and_address_unresolved (rtype,
8372                                                                  valaddr,
8373                                                                  address);
8374               rtype = value_type (dval);
8375             }
8376           else
8377             dval = dval0;
8378
8379           /* If the type referenced by this field is an aligner type, we need
8380              to unwrap that aligner type, because its size might not be set.
8381              Keeping the aligner type would cause us to compute the wrong
8382              size for this field, impacting the offset of the all the fields
8383              that follow this one.  */
8384           if (ada_is_aligner_type (field_type))
8385             {
8386               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8387
8388               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8389               field_address = cond_offset_target (field_address, field_offset);
8390               field_type = ada_aligned_type (field_type);
8391             }
8392
8393           field_valaddr = cond_offset_host (field_valaddr,
8394                                             off / TARGET_CHAR_BIT);
8395           field_address = cond_offset_target (field_address,
8396                                               off / TARGET_CHAR_BIT);
8397
8398           /* Get the fixed type of the field.  Note that, in this case,
8399              we do not want to get the real type out of the tag: if
8400              the current field is the parent part of a tagged record,
8401              we will get the tag of the object.  Clearly wrong: the real
8402              type of the parent is not the real type of the child.  We
8403              would end up in an infinite loop.  */
8404           field_type = ada_get_base_type (field_type);
8405           field_type = ada_to_fixed_type (field_type, field_valaddr,
8406                                           field_address, dval, 0);
8407           /* If the field size is already larger than the maximum
8408              object size, then the record itself will necessarily
8409              be larger than the maximum object size.  We need to make
8410              this check now, because the size might be so ridiculously
8411              large (due to an uninitialized variable in the inferior)
8412              that it would cause an overflow when adding it to the
8413              record size.  */
8414           ada_ensure_varsize_limit (field_type);
8415
8416           TYPE_FIELD_TYPE (rtype, f) = field_type;
8417           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8418           /* The multiplication can potentially overflow.  But because
8419              the field length has been size-checked just above, and
8420              assuming that the maximum size is a reasonable value,
8421              an overflow should not happen in practice.  So rather than
8422              adding overflow recovery code to this already complex code,
8423              we just assume that it's not going to happen.  */
8424           fld_bit_len =
8425             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8426         }
8427       else
8428         {
8429           /* Note: If this field's type is a typedef, it is important
8430              to preserve the typedef layer.
8431
8432              Otherwise, we might be transforming a typedef to a fat
8433              pointer (encoding a pointer to an unconstrained array),
8434              into a basic fat pointer (encoding an unconstrained
8435              array).  As both types are implemented using the same
8436              structure, the typedef is the only clue which allows us
8437              to distinguish between the two options.  Stripping it
8438              would prevent us from printing this field appropriately.  */
8439           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8440           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8441           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8442             fld_bit_len =
8443               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8444           else
8445             {
8446               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8447
8448               /* We need to be careful of typedefs when computing
8449                  the length of our field.  If this is a typedef,
8450                  get the length of the target type, not the length
8451                  of the typedef.  */
8452               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8453                 field_type = ada_typedef_target_type (field_type);
8454
8455               fld_bit_len =
8456                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8457             }
8458         }
8459       if (off + fld_bit_len > bit_len)
8460         bit_len = off + fld_bit_len;
8461       off += fld_bit_len;
8462       TYPE_LENGTH (rtype) =
8463         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8464     }
8465
8466   /* We handle the variant part, if any, at the end because of certain
8467      odd cases in which it is re-ordered so as NOT to be the last field of
8468      the record.  This can happen in the presence of representation
8469      clauses.  */
8470   if (variant_field >= 0)
8471     {
8472       struct type *branch_type;
8473
8474       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8475
8476       if (dval0 == NULL)
8477         {
8478           /* Using plain value_from_contents_and_address here causes
8479              problems because we will end up trying to resolve a type
8480              that is currently being constructed.  */
8481           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8482                                                              address);
8483           rtype = value_type (dval);
8484         }
8485       else
8486         dval = dval0;
8487
8488       branch_type =
8489         to_fixed_variant_branch_type
8490         (TYPE_FIELD_TYPE (type, variant_field),
8491          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8492          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8493       if (branch_type == NULL)
8494         {
8495           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8496             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8497           TYPE_NFIELDS (rtype) -= 1;
8498         }
8499       else
8500         {
8501           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8502           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8503           fld_bit_len =
8504             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8505             TARGET_CHAR_BIT;
8506           if (off + fld_bit_len > bit_len)
8507             bit_len = off + fld_bit_len;
8508           TYPE_LENGTH (rtype) =
8509             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8510         }
8511     }
8512
8513   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8514      should contain the alignment of that record, which should be a strictly
8515      positive value.  If null or negative, then something is wrong, most
8516      probably in the debug info.  In that case, we don't round up the size
8517      of the resulting type.  If this record is not part of another structure,
8518      the current RTYPE length might be good enough for our purposes.  */
8519   if (TYPE_LENGTH (type) <= 0)
8520     {
8521       if (TYPE_NAME (rtype))
8522         warning (_("Invalid type size for `%s' detected: %d."),
8523                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8524       else
8525         warning (_("Invalid type size for <unnamed> detected: %d."),
8526                  TYPE_LENGTH (type));
8527     }
8528   else
8529     {
8530       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8531                                          TYPE_LENGTH (type));
8532     }
8533
8534   value_free_to_mark (mark);
8535   if (TYPE_LENGTH (rtype) > varsize_limit)
8536     error (_("record type with dynamic size is larger than varsize-limit"));
8537   return rtype;
8538 }
8539
8540 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8541    of 1.  */
8542
8543 static struct type *
8544 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8545                                CORE_ADDR address, struct value *dval0)
8546 {
8547   return ada_template_to_fixed_record_type_1 (type, valaddr,
8548                                               address, dval0, 1);
8549 }
8550
8551 /* An ordinary record type in which ___XVL-convention fields and
8552    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8553    static approximations, containing all possible fields.  Uses
8554    no runtime values.  Useless for use in values, but that's OK,
8555    since the results are used only for type determinations.   Works on both
8556    structs and unions.  Representation note: to save space, we memorize
8557    the result of this function in the TYPE_TARGET_TYPE of the
8558    template type.  */
8559
8560 static struct type *
8561 template_to_static_fixed_type (struct type *type0)
8562 {
8563   struct type *type;
8564   int nfields;
8565   int f;
8566
8567   /* No need no do anything if the input type is already fixed.  */
8568   if (TYPE_FIXED_INSTANCE (type0))
8569     return type0;
8570
8571   /* Likewise if we already have computed the static approximation.  */
8572   if (TYPE_TARGET_TYPE (type0) != NULL)
8573     return TYPE_TARGET_TYPE (type0);
8574
8575   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8576   type = type0;
8577   nfields = TYPE_NFIELDS (type0);
8578
8579   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8580      recompute all over next time.  */
8581   TYPE_TARGET_TYPE (type0) = type;
8582
8583   for (f = 0; f < nfields; f += 1)
8584     {
8585       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8586       struct type *new_type;
8587
8588       if (is_dynamic_field (type0, f))
8589         {
8590           field_type = ada_check_typedef (field_type);
8591           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8592         }
8593       else
8594         new_type = static_unwrap_type (field_type);
8595
8596       if (new_type != field_type)
8597         {
8598           /* Clone TYPE0 only the first time we get a new field type.  */
8599           if (type == type0)
8600             {
8601               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8602               TYPE_CODE (type) = TYPE_CODE (type0);
8603               INIT_CPLUS_SPECIFIC (type);
8604               TYPE_NFIELDS (type) = nfields;
8605               TYPE_FIELDS (type) = (struct field *)
8606                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8607               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8608                       sizeof (struct field) * nfields);
8609               TYPE_NAME (type) = ada_type_name (type0);
8610               TYPE_FIXED_INSTANCE (type) = 1;
8611               TYPE_LENGTH (type) = 0;
8612             }
8613           TYPE_FIELD_TYPE (type, f) = new_type;
8614           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8615         }
8616     }
8617
8618   return type;
8619 }
8620
8621 /* Given an object of type TYPE whose contents are at VALADDR and
8622    whose address in memory is ADDRESS, returns a revision of TYPE,
8623    which should be a non-dynamic-sized record, in which the variant
8624    part, if any, is replaced with the appropriate branch.  Looks
8625    for discriminant values in DVAL0, which can be NULL if the record
8626    contains the necessary discriminant values.  */
8627
8628 static struct type *
8629 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8630                                    CORE_ADDR address, struct value *dval0)
8631 {
8632   struct value *mark = value_mark ();
8633   struct value *dval;
8634   struct type *rtype;
8635   struct type *branch_type;
8636   int nfields = TYPE_NFIELDS (type);
8637   int variant_field = variant_field_index (type);
8638
8639   if (variant_field == -1)
8640     return type;
8641
8642   if (dval0 == NULL)
8643     {
8644       dval = value_from_contents_and_address (type, valaddr, address);
8645       type = value_type (dval);
8646     }
8647   else
8648     dval = dval0;
8649
8650   rtype = alloc_type_copy (type);
8651   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8652   INIT_CPLUS_SPECIFIC (rtype);
8653   TYPE_NFIELDS (rtype) = nfields;
8654   TYPE_FIELDS (rtype) =
8655     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8656   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8657           sizeof (struct field) * nfields);
8658   TYPE_NAME (rtype) = ada_type_name (type);
8659   TYPE_FIXED_INSTANCE (rtype) = 1;
8660   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8661
8662   branch_type = to_fixed_variant_branch_type
8663     (TYPE_FIELD_TYPE (type, variant_field),
8664      cond_offset_host (valaddr,
8665                        TYPE_FIELD_BITPOS (type, variant_field)
8666                        / TARGET_CHAR_BIT),
8667      cond_offset_target (address,
8668                          TYPE_FIELD_BITPOS (type, variant_field)
8669                          / TARGET_CHAR_BIT), dval);
8670   if (branch_type == NULL)
8671     {
8672       int f;
8673
8674       for (f = variant_field + 1; f < nfields; f += 1)
8675         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8676       TYPE_NFIELDS (rtype) -= 1;
8677     }
8678   else
8679     {
8680       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8681       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8682       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8683       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8684     }
8685   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8686
8687   value_free_to_mark (mark);
8688   return rtype;
8689 }
8690
8691 /* An ordinary record type (with fixed-length fields) that describes
8692    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8693    beginning of this section].   Any necessary discriminants' values
8694    should be in DVAL, a record value; it may be NULL if the object
8695    at ADDR itself contains any necessary discriminant values.
8696    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8697    values from the record are needed.  Except in the case that DVAL,
8698    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8699    unchecked) is replaced by a particular branch of the variant.
8700
8701    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8702    is questionable and may be removed.  It can arise during the
8703    processing of an unconstrained-array-of-record type where all the
8704    variant branches have exactly the same size.  This is because in
8705    such cases, the compiler does not bother to use the XVS convention
8706    when encoding the record.  I am currently dubious of this
8707    shortcut and suspect the compiler should be altered.  FIXME.  */
8708
8709 static struct type *
8710 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8711                       CORE_ADDR address, struct value *dval)
8712 {
8713   struct type *templ_type;
8714
8715   if (TYPE_FIXED_INSTANCE (type0))
8716     return type0;
8717
8718   templ_type = dynamic_template_type (type0);
8719
8720   if (templ_type != NULL)
8721     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8722   else if (variant_field_index (type0) >= 0)
8723     {
8724       if (dval == NULL && valaddr == NULL && address == 0)
8725         return type0;
8726       return to_record_with_fixed_variant_part (type0, valaddr, address,
8727                                                 dval);
8728     }
8729   else
8730     {
8731       TYPE_FIXED_INSTANCE (type0) = 1;
8732       return type0;
8733     }
8734
8735 }
8736
8737 /* An ordinary record type (with fixed-length fields) that describes
8738    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8739    union type.  Any necessary discriminants' values should be in DVAL,
8740    a record value.  That is, this routine selects the appropriate
8741    branch of the union at ADDR according to the discriminant value
8742    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8743    it represents a variant subject to a pragma Unchecked_Union.  */
8744
8745 static struct type *
8746 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8747                               CORE_ADDR address, struct value *dval)
8748 {
8749   int which;
8750   struct type *templ_type;
8751   struct type *var_type;
8752
8753   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8754     var_type = TYPE_TARGET_TYPE (var_type0);
8755   else
8756     var_type = var_type0;
8757
8758   templ_type = ada_find_parallel_type (var_type, "___XVU");
8759
8760   if (templ_type != NULL)
8761     var_type = templ_type;
8762
8763   if (is_unchecked_variant (var_type, value_type (dval)))
8764       return var_type0;
8765   which =
8766     ada_which_variant_applies (var_type,
8767                                value_type (dval), value_contents (dval));
8768
8769   if (which < 0)
8770     return empty_record (var_type);
8771   else if (is_dynamic_field (var_type, which))
8772     return to_fixed_record_type
8773       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8774        valaddr, address, dval);
8775   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8776     return
8777       to_fixed_record_type
8778       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8779   else
8780     return TYPE_FIELD_TYPE (var_type, which);
8781 }
8782
8783 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8784    ENCODING_TYPE, a type following the GNAT conventions for discrete
8785    type encodings, only carries redundant information.  */
8786
8787 static int
8788 ada_is_redundant_range_encoding (struct type *range_type,
8789                                  struct type *encoding_type)
8790 {
8791   const char *bounds_str;
8792   int n;
8793   LONGEST lo, hi;
8794
8795   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8796
8797   if (TYPE_CODE (get_base_type (range_type))
8798       != TYPE_CODE (get_base_type (encoding_type)))
8799     {
8800       /* The compiler probably used a simple base type to describe
8801          the range type instead of the range's actual base type,
8802          expecting us to get the real base type from the encoding
8803          anyway.  In this situation, the encoding cannot be ignored
8804          as redundant.  */
8805       return 0;
8806     }
8807
8808   if (is_dynamic_type (range_type))
8809     return 0;
8810
8811   if (TYPE_NAME (encoding_type) == NULL)
8812     return 0;
8813
8814   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8815   if (bounds_str == NULL)
8816     return 0;
8817
8818   n = 8; /* Skip "___XDLU_".  */
8819   if (!ada_scan_number (bounds_str, n, &lo, &n))
8820     return 0;
8821   if (TYPE_LOW_BOUND (range_type) != lo)
8822     return 0;
8823
8824   n += 2; /* Skip the "__" separator between the two bounds.  */
8825   if (!ada_scan_number (bounds_str, n, &hi, &n))
8826     return 0;
8827   if (TYPE_HIGH_BOUND (range_type) != hi)
8828     return 0;
8829
8830   return 1;
8831 }
8832
8833 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8834    a type following the GNAT encoding for describing array type
8835    indices, only carries redundant information.  */
8836
8837 static int
8838 ada_is_redundant_index_type_desc (struct type *array_type,
8839                                   struct type *desc_type)
8840 {
8841   struct type *this_layer = check_typedef (array_type);
8842   int i;
8843
8844   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8845     {
8846       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8847                                             TYPE_FIELD_TYPE (desc_type, i)))
8848         return 0;
8849       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8850     }
8851
8852   return 1;
8853 }
8854
8855 /* Assuming that TYPE0 is an array type describing the type of a value
8856    at ADDR, and that DVAL describes a record containing any
8857    discriminants used in TYPE0, returns a type for the value that
8858    contains no dynamic components (that is, no components whose sizes
8859    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8860    true, gives an error message if the resulting type's size is over
8861    varsize_limit.  */
8862
8863 static struct type *
8864 to_fixed_array_type (struct type *type0, struct value *dval,
8865                      int ignore_too_big)
8866 {
8867   struct type *index_type_desc;
8868   struct type *result;
8869   int constrained_packed_array_p;
8870   static const char *xa_suffix = "___XA";
8871
8872   type0 = ada_check_typedef (type0);
8873   if (TYPE_FIXED_INSTANCE (type0))
8874     return type0;
8875
8876   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8877   if (constrained_packed_array_p)
8878     type0 = decode_constrained_packed_array_type (type0);
8879
8880   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8881
8882   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8883      encoding suffixed with 'P' may still be generated.  If so,
8884      it should be used to find the XA type.  */
8885
8886   if (index_type_desc == NULL)
8887     {
8888       const char *type_name = ada_type_name (type0);
8889
8890       if (type_name != NULL)
8891         {
8892           const int len = strlen (type_name);
8893           char *name = (char *) alloca (len + strlen (xa_suffix));
8894
8895           if (type_name[len - 1] == 'P')
8896             {
8897               strcpy (name, type_name);
8898               strcpy (name + len - 1, xa_suffix);
8899               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8900             }
8901         }
8902     }
8903
8904   ada_fixup_array_indexes_type (index_type_desc);
8905   if (index_type_desc != NULL
8906       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8907     {
8908       /* Ignore this ___XA parallel type, as it does not bring any
8909          useful information.  This allows us to avoid creating fixed
8910          versions of the array's index types, which would be identical
8911          to the original ones.  This, in turn, can also help avoid
8912          the creation of fixed versions of the array itself.  */
8913       index_type_desc = NULL;
8914     }
8915
8916   if (index_type_desc == NULL)
8917     {
8918       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8919
8920       /* NOTE: elt_type---the fixed version of elt_type0---should never
8921          depend on the contents of the array in properly constructed
8922          debugging data.  */
8923       /* Create a fixed version of the array element type.
8924          We're not providing the address of an element here,
8925          and thus the actual object value cannot be inspected to do
8926          the conversion.  This should not be a problem, since arrays of
8927          unconstrained objects are not allowed.  In particular, all
8928          the elements of an array of a tagged type should all be of
8929          the same type specified in the debugging info.  No need to
8930          consult the object tag.  */
8931       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8932
8933       /* Make sure we always create a new array type when dealing with
8934          packed array types, since we're going to fix-up the array
8935          type length and element bitsize a little further down.  */
8936       if (elt_type0 == elt_type && !constrained_packed_array_p)
8937         result = type0;
8938       else
8939         result = create_array_type (alloc_type_copy (type0),
8940                                     elt_type, TYPE_INDEX_TYPE (type0));
8941     }
8942   else
8943     {
8944       int i;
8945       struct type *elt_type0;
8946
8947       elt_type0 = type0;
8948       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8949         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8950
8951       /* NOTE: result---the fixed version of elt_type0---should never
8952          depend on the contents of the array in properly constructed
8953          debugging data.  */
8954       /* Create a fixed version of the array element type.
8955          We're not providing the address of an element here,
8956          and thus the actual object value cannot be inspected to do
8957          the conversion.  This should not be a problem, since arrays of
8958          unconstrained objects are not allowed.  In particular, all
8959          the elements of an array of a tagged type should all be of
8960          the same type specified in the debugging info.  No need to
8961          consult the object tag.  */
8962       result =
8963         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8964
8965       elt_type0 = type0;
8966       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8967         {
8968           struct type *range_type =
8969             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8970
8971           result = create_array_type (alloc_type_copy (elt_type0),
8972                                       result, range_type);
8973           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8974         }
8975       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8976         error (_("array type with dynamic size is larger than varsize-limit"));
8977     }
8978
8979   /* We want to preserve the type name.  This can be useful when
8980      trying to get the type name of a value that has already been
8981      printed (for instance, if the user did "print VAR; whatis $".  */
8982   TYPE_NAME (result) = TYPE_NAME (type0);
8983
8984   if (constrained_packed_array_p)
8985     {
8986       /* So far, the resulting type has been created as if the original
8987          type was a regular (non-packed) array type.  As a result, the
8988          bitsize of the array elements needs to be set again, and the array
8989          length needs to be recomputed based on that bitsize.  */
8990       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8991       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8992
8993       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8994       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8995       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8996         TYPE_LENGTH (result)++;
8997     }
8998
8999   TYPE_FIXED_INSTANCE (result) = 1;
9000   return result;
9001 }
9002
9003
9004 /* A standard type (containing no dynamically sized components)
9005    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9006    DVAL describes a record containing any discriminants used in TYPE0,
9007    and may be NULL if there are none, or if the object of type TYPE at
9008    ADDRESS or in VALADDR contains these discriminants.
9009    
9010    If CHECK_TAG is not null, in the case of tagged types, this function
9011    attempts to locate the object's tag and use it to compute the actual
9012    type.  However, when ADDRESS is null, we cannot use it to determine the
9013    location of the tag, and therefore compute the tagged type's actual type.
9014    So we return the tagged type without consulting the tag.  */
9015    
9016 static struct type *
9017 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9018                    CORE_ADDR address, struct value *dval, int check_tag)
9019 {
9020   type = ada_check_typedef (type);
9021   switch (TYPE_CODE (type))
9022     {
9023     default:
9024       return type;
9025     case TYPE_CODE_STRUCT:
9026       {
9027         struct type *static_type = to_static_fixed_type (type);
9028         struct type *fixed_record_type =
9029           to_fixed_record_type (type, valaddr, address, NULL);
9030
9031         /* If STATIC_TYPE is a tagged type and we know the object's address,
9032            then we can determine its tag, and compute the object's actual
9033            type from there.  Note that we have to use the fixed record
9034            type (the parent part of the record may have dynamic fields
9035            and the way the location of _tag is expressed may depend on
9036            them).  */
9037
9038         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9039           {
9040             struct value *tag =
9041               value_tag_from_contents_and_address
9042               (fixed_record_type,
9043                valaddr,
9044                address);
9045             struct type *real_type = type_from_tag (tag);
9046             struct value *obj =
9047               value_from_contents_and_address (fixed_record_type,
9048                                                valaddr,
9049                                                address);
9050             fixed_record_type = value_type (obj);
9051             if (real_type != NULL)
9052               return to_fixed_record_type
9053                 (real_type, NULL,
9054                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9055           }
9056
9057         /* Check to see if there is a parallel ___XVZ variable.
9058            If there is, then it provides the actual size of our type.  */
9059         else if (ada_type_name (fixed_record_type) != NULL)
9060           {
9061             const char *name = ada_type_name (fixed_record_type);
9062             char *xvz_name
9063               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9064             bool xvz_found = false;
9065             LONGEST size;
9066
9067             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9068             TRY
9069               {
9070                 xvz_found = get_int_var_value (xvz_name, size);
9071               }
9072             CATCH (except, RETURN_MASK_ERROR)
9073               {
9074                 /* We found the variable, but somehow failed to read
9075                    its value.  Rethrow the same error, but with a little
9076                    bit more information, to help the user understand
9077                    what went wrong (Eg: the variable might have been
9078                    optimized out).  */
9079                 throw_error (except.error,
9080                              _("unable to read value of %s (%s)"),
9081                              xvz_name, except.message);
9082               }
9083             END_CATCH
9084
9085             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9086               {
9087                 fixed_record_type = copy_type (fixed_record_type);
9088                 TYPE_LENGTH (fixed_record_type) = size;
9089
9090                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9091                    observed this when the debugging info is STABS, and
9092                    apparently it is something that is hard to fix.
9093
9094                    In practice, we don't need the actual type definition
9095                    at all, because the presence of the XVZ variable allows us
9096                    to assume that there must be a XVS type as well, which we
9097                    should be able to use later, when we need the actual type
9098                    definition.
9099
9100                    In the meantime, pretend that the "fixed" type we are
9101                    returning is NOT a stub, because this can cause trouble
9102                    when using this type to create new types targeting it.
9103                    Indeed, the associated creation routines often check
9104                    whether the target type is a stub and will try to replace
9105                    it, thus using a type with the wrong size.  This, in turn,
9106                    might cause the new type to have the wrong size too.
9107                    Consider the case of an array, for instance, where the size
9108                    of the array is computed from the number of elements in
9109                    our array multiplied by the size of its element.  */
9110                 TYPE_STUB (fixed_record_type) = 0;
9111               }
9112           }
9113         return fixed_record_type;
9114       }
9115     case TYPE_CODE_ARRAY:
9116       return to_fixed_array_type (type, dval, 1);
9117     case TYPE_CODE_UNION:
9118       if (dval == NULL)
9119         return type;
9120       else
9121         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9122     }
9123 }
9124
9125 /* The same as ada_to_fixed_type_1, except that it preserves the type
9126    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9127
9128    The typedef layer needs be preserved in order to differentiate between
9129    arrays and array pointers when both types are implemented using the same
9130    fat pointer.  In the array pointer case, the pointer is encoded as
9131    a typedef of the pointer type.  For instance, considering:
9132
9133           type String_Access is access String;
9134           S1 : String_Access := null;
9135
9136    To the debugger, S1 is defined as a typedef of type String.  But
9137    to the user, it is a pointer.  So if the user tries to print S1,
9138    we should not dereference the array, but print the array address
9139    instead.
9140
9141    If we didn't preserve the typedef layer, we would lose the fact that
9142    the type is to be presented as a pointer (needs de-reference before
9143    being printed).  And we would also use the source-level type name.  */
9144
9145 struct type *
9146 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9147                    CORE_ADDR address, struct value *dval, int check_tag)
9148
9149 {
9150   struct type *fixed_type =
9151     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9152
9153   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9154       then preserve the typedef layer.
9155
9156       Implementation note: We can only check the main-type portion of
9157       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9158       from TYPE now returns a type that has the same instance flags
9159       as TYPE.  For instance, if TYPE is a "typedef const", and its
9160       target type is a "struct", then the typedef elimination will return
9161       a "const" version of the target type.  See check_typedef for more
9162       details about how the typedef layer elimination is done.
9163
9164       brobecker/2010-11-19: It seems to me that the only case where it is
9165       useful to preserve the typedef layer is when dealing with fat pointers.
9166       Perhaps, we could add a check for that and preserve the typedef layer
9167       only in that situation.  But this seems unecessary so far, probably
9168       because we call check_typedef/ada_check_typedef pretty much everywhere.
9169       */
9170   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9171       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9172           == TYPE_MAIN_TYPE (fixed_type)))
9173     return type;
9174
9175   return fixed_type;
9176 }
9177
9178 /* A standard (static-sized) type corresponding as well as possible to
9179    TYPE0, but based on no runtime data.  */
9180
9181 static struct type *
9182 to_static_fixed_type (struct type *type0)
9183 {
9184   struct type *type;
9185
9186   if (type0 == NULL)
9187     return NULL;
9188
9189   if (TYPE_FIXED_INSTANCE (type0))
9190     return type0;
9191
9192   type0 = ada_check_typedef (type0);
9193
9194   switch (TYPE_CODE (type0))
9195     {
9196     default:
9197       return type0;
9198     case TYPE_CODE_STRUCT:
9199       type = dynamic_template_type (type0);
9200       if (type != NULL)
9201         return template_to_static_fixed_type (type);
9202       else
9203         return template_to_static_fixed_type (type0);
9204     case TYPE_CODE_UNION:
9205       type = ada_find_parallel_type (type0, "___XVU");
9206       if (type != NULL)
9207         return template_to_static_fixed_type (type);
9208       else
9209         return template_to_static_fixed_type (type0);
9210     }
9211 }
9212
9213 /* A static approximation of TYPE with all type wrappers removed.  */
9214
9215 static struct type *
9216 static_unwrap_type (struct type *type)
9217 {
9218   if (ada_is_aligner_type (type))
9219     {
9220       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9221       if (ada_type_name (type1) == NULL)
9222         TYPE_NAME (type1) = ada_type_name (type);
9223
9224       return static_unwrap_type (type1);
9225     }
9226   else
9227     {
9228       struct type *raw_real_type = ada_get_base_type (type);
9229
9230       if (raw_real_type == type)
9231         return type;
9232       else
9233         return to_static_fixed_type (raw_real_type);
9234     }
9235 }
9236
9237 /* In some cases, incomplete and private types require
9238    cross-references that are not resolved as records (for example,
9239       type Foo;
9240       type FooP is access Foo;
9241       V: FooP;
9242       type Foo is array ...;
9243    ).  In these cases, since there is no mechanism for producing
9244    cross-references to such types, we instead substitute for FooP a
9245    stub enumeration type that is nowhere resolved, and whose tag is
9246    the name of the actual type.  Call these types "non-record stubs".  */
9247
9248 /* A type equivalent to TYPE that is not a non-record stub, if one
9249    exists, otherwise TYPE.  */
9250
9251 struct type *
9252 ada_check_typedef (struct type *type)
9253 {
9254   if (type == NULL)
9255     return NULL;
9256
9257   /* If our type is an access to an unconstrained array, which is encoded
9258      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9259      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9260      what allows us to distinguish between fat pointers that represent
9261      array types, and fat pointers that represent array access types
9262      (in both cases, the compiler implements them as fat pointers).  */
9263   if (ada_is_access_to_unconstrained_array (type))
9264     return type;
9265
9266   type = check_typedef (type);
9267   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9268       || !TYPE_STUB (type)
9269       || TYPE_NAME (type) == NULL)
9270     return type;
9271   else
9272     {
9273       const char *name = TYPE_NAME (type);
9274       struct type *type1 = ada_find_any_type (name);
9275
9276       if (type1 == NULL)
9277         return type;
9278
9279       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9280          stubs pointing to arrays, as we don't create symbols for array
9281          types, only for the typedef-to-array types).  If that's the case,
9282          strip the typedef layer.  */
9283       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9284         type1 = ada_check_typedef (type1);
9285
9286       return type1;
9287     }
9288 }
9289
9290 /* A value representing the data at VALADDR/ADDRESS as described by
9291    type TYPE0, but with a standard (static-sized) type that correctly
9292    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9293    type, then return VAL0 [this feature is simply to avoid redundant
9294    creation of struct values].  */
9295
9296 static struct value *
9297 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9298                            struct value *val0)
9299 {
9300   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9301
9302   if (type == type0 && val0 != NULL)
9303     return val0;
9304
9305   if (VALUE_LVAL (val0) != lval_memory)
9306     {
9307       /* Our value does not live in memory; it could be a convenience
9308          variable, for instance.  Create a not_lval value using val0's
9309          contents.  */
9310       return value_from_contents (type, value_contents (val0));
9311     }
9312
9313   return value_from_contents_and_address (type, 0, address);
9314 }
9315
9316 /* A value representing VAL, but with a standard (static-sized) type
9317    that correctly describes it.  Does not necessarily create a new
9318    value.  */
9319
9320 struct value *
9321 ada_to_fixed_value (struct value *val)
9322 {
9323   val = unwrap_value (val);
9324   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9325   return val;
9326 }
9327 \f
9328
9329 /* Attributes */
9330
9331 /* Table mapping attribute numbers to names.
9332    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9333
9334 static const char *attribute_names[] = {
9335   "<?>",
9336
9337   "first",
9338   "last",
9339   "length",
9340   "image",
9341   "max",
9342   "min",
9343   "modulus",
9344   "pos",
9345   "size",
9346   "tag",
9347   "val",
9348   0
9349 };
9350
9351 const char *
9352 ada_attribute_name (enum exp_opcode n)
9353 {
9354   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9355     return attribute_names[n - OP_ATR_FIRST + 1];
9356   else
9357     return attribute_names[0];
9358 }
9359
9360 /* Evaluate the 'POS attribute applied to ARG.  */
9361
9362 static LONGEST
9363 pos_atr (struct value *arg)
9364 {
9365   struct value *val = coerce_ref (arg);
9366   struct type *type = value_type (val);
9367   LONGEST result;
9368
9369   if (!discrete_type_p (type))
9370     error (_("'POS only defined on discrete types"));
9371
9372   if (!discrete_position (type, value_as_long (val), &result))
9373     error (_("enumeration value is invalid: can't find 'POS"));
9374
9375   return result;
9376 }
9377
9378 static struct value *
9379 value_pos_atr (struct type *type, struct value *arg)
9380 {
9381   return value_from_longest (type, pos_atr (arg));
9382 }
9383
9384 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9385
9386 static struct value *
9387 value_val_atr (struct type *type, struct value *arg)
9388 {
9389   if (!discrete_type_p (type))
9390     error (_("'VAL only defined on discrete types"));
9391   if (!integer_type_p (value_type (arg)))
9392     error (_("'VAL requires integral argument"));
9393
9394   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9395     {
9396       long pos = value_as_long (arg);
9397
9398       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9399         error (_("argument to 'VAL out of range"));
9400       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9401     }
9402   else
9403     return value_from_longest (type, value_as_long (arg));
9404 }
9405 \f
9406
9407                                 /* Evaluation */
9408
9409 /* True if TYPE appears to be an Ada character type.
9410    [At the moment, this is true only for Character and Wide_Character;
9411    It is a heuristic test that could stand improvement].  */
9412
9413 int
9414 ada_is_character_type (struct type *type)
9415 {
9416   const char *name;
9417
9418   /* If the type code says it's a character, then assume it really is,
9419      and don't check any further.  */
9420   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9421     return 1;
9422   
9423   /* Otherwise, assume it's a character type iff it is a discrete type
9424      with a known character type name.  */
9425   name = ada_type_name (type);
9426   return (name != NULL
9427           && (TYPE_CODE (type) == TYPE_CODE_INT
9428               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9429           && (strcmp (name, "character") == 0
9430               || strcmp (name, "wide_character") == 0
9431               || strcmp (name, "wide_wide_character") == 0
9432               || strcmp (name, "unsigned char") == 0));
9433 }
9434
9435 /* True if TYPE appears to be an Ada string type.  */
9436
9437 int
9438 ada_is_string_type (struct type *type)
9439 {
9440   type = ada_check_typedef (type);
9441   if (type != NULL
9442       && TYPE_CODE (type) != TYPE_CODE_PTR
9443       && (ada_is_simple_array_type (type)
9444           || ada_is_array_descriptor_type (type))
9445       && ada_array_arity (type) == 1)
9446     {
9447       struct type *elttype = ada_array_element_type (type, 1);
9448
9449       return ada_is_character_type (elttype);
9450     }
9451   else
9452     return 0;
9453 }
9454
9455 /* The compiler sometimes provides a parallel XVS type for a given
9456    PAD type.  Normally, it is safe to follow the PAD type directly,
9457    but older versions of the compiler have a bug that causes the offset
9458    of its "F" field to be wrong.  Following that field in that case
9459    would lead to incorrect results, but this can be worked around
9460    by ignoring the PAD type and using the associated XVS type instead.
9461
9462    Set to True if the debugger should trust the contents of PAD types.
9463    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9464 static int trust_pad_over_xvs = 1;
9465
9466 /* True if TYPE is a struct type introduced by the compiler to force the
9467    alignment of a value.  Such types have a single field with a
9468    distinctive name.  */
9469
9470 int
9471 ada_is_aligner_type (struct type *type)
9472 {
9473   type = ada_check_typedef (type);
9474
9475   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9476     return 0;
9477
9478   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9479           && TYPE_NFIELDS (type) == 1
9480           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9481 }
9482
9483 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9484    the parallel type.  */
9485
9486 struct type *
9487 ada_get_base_type (struct type *raw_type)
9488 {
9489   struct type *real_type_namer;
9490   struct type *raw_real_type;
9491
9492   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9493     return raw_type;
9494
9495   if (ada_is_aligner_type (raw_type))
9496     /* The encoding specifies that we should always use the aligner type.
9497        So, even if this aligner type has an associated XVS type, we should
9498        simply ignore it.
9499
9500        According to the compiler gurus, an XVS type parallel to an aligner
9501        type may exist because of a stabs limitation.  In stabs, aligner
9502        types are empty because the field has a variable-sized type, and
9503        thus cannot actually be used as an aligner type.  As a result,
9504        we need the associated parallel XVS type to decode the type.
9505        Since the policy in the compiler is to not change the internal
9506        representation based on the debugging info format, we sometimes
9507        end up having a redundant XVS type parallel to the aligner type.  */
9508     return raw_type;
9509
9510   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9511   if (real_type_namer == NULL
9512       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9513       || TYPE_NFIELDS (real_type_namer) != 1)
9514     return raw_type;
9515
9516   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9517     {
9518       /* This is an older encoding form where the base type needs to be
9519          looked up by name.  We prefer the newer enconding because it is
9520          more efficient.  */
9521       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9522       if (raw_real_type == NULL)
9523         return raw_type;
9524       else
9525         return raw_real_type;
9526     }
9527
9528   /* The field in our XVS type is a reference to the base type.  */
9529   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9530 }
9531
9532 /* The type of value designated by TYPE, with all aligners removed.  */
9533
9534 struct type *
9535 ada_aligned_type (struct type *type)
9536 {
9537   if (ada_is_aligner_type (type))
9538     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9539   else
9540     return ada_get_base_type (type);
9541 }
9542
9543
9544 /* The address of the aligned value in an object at address VALADDR
9545    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9546
9547 const gdb_byte *
9548 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9549 {
9550   if (ada_is_aligner_type (type))
9551     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9552                                    valaddr +
9553                                    TYPE_FIELD_BITPOS (type,
9554                                                       0) / TARGET_CHAR_BIT);
9555   else
9556     return valaddr;
9557 }
9558
9559
9560
9561 /* The printed representation of an enumeration literal with encoded
9562    name NAME.  The value is good to the next call of ada_enum_name.  */
9563 const char *
9564 ada_enum_name (const char *name)
9565 {
9566   static char *result;
9567   static size_t result_len = 0;
9568   const char *tmp;
9569
9570   /* First, unqualify the enumeration name:
9571      1. Search for the last '.' character.  If we find one, then skip
9572      all the preceding characters, the unqualified name starts
9573      right after that dot.
9574      2. Otherwise, we may be debugging on a target where the compiler
9575      translates dots into "__".  Search forward for double underscores,
9576      but stop searching when we hit an overloading suffix, which is
9577      of the form "__" followed by digits.  */
9578
9579   tmp = strrchr (name, '.');
9580   if (tmp != NULL)
9581     name = tmp + 1;
9582   else
9583     {
9584       while ((tmp = strstr (name, "__")) != NULL)
9585         {
9586           if (isdigit (tmp[2]))
9587             break;
9588           else
9589             name = tmp + 2;
9590         }
9591     }
9592
9593   if (name[0] == 'Q')
9594     {
9595       int v;
9596
9597       if (name[1] == 'U' || name[1] == 'W')
9598         {
9599           if (sscanf (name + 2, "%x", &v) != 1)
9600             return name;
9601         }
9602       else
9603         return name;
9604
9605       GROW_VECT (result, result_len, 16);
9606       if (isascii (v) && isprint (v))
9607         xsnprintf (result, result_len, "'%c'", v);
9608       else if (name[1] == 'U')
9609         xsnprintf (result, result_len, "[\"%02x\"]", v);
9610       else
9611         xsnprintf (result, result_len, "[\"%04x\"]", v);
9612
9613       return result;
9614     }
9615   else
9616     {
9617       tmp = strstr (name, "__");
9618       if (tmp == NULL)
9619         tmp = strstr (name, "$");
9620       if (tmp != NULL)
9621         {
9622           GROW_VECT (result, result_len, tmp - name + 1);
9623           strncpy (result, name, tmp - name);
9624           result[tmp - name] = '\0';
9625           return result;
9626         }
9627
9628       return name;
9629     }
9630 }
9631
9632 /* Evaluate the subexpression of EXP starting at *POS as for
9633    evaluate_type, updating *POS to point just past the evaluated
9634    expression.  */
9635
9636 static struct value *
9637 evaluate_subexp_type (struct expression *exp, int *pos)
9638 {
9639   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9640 }
9641
9642 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9643    value it wraps.  */
9644
9645 static struct value *
9646 unwrap_value (struct value *val)
9647 {
9648   struct type *type = ada_check_typedef (value_type (val));
9649
9650   if (ada_is_aligner_type (type))
9651     {
9652       struct value *v = ada_value_struct_elt (val, "F", 0);
9653       struct type *val_type = ada_check_typedef (value_type (v));
9654
9655       if (ada_type_name (val_type) == NULL)
9656         TYPE_NAME (val_type) = ada_type_name (type);
9657
9658       return unwrap_value (v);
9659     }
9660   else
9661     {
9662       struct type *raw_real_type =
9663         ada_check_typedef (ada_get_base_type (type));
9664
9665       /* If there is no parallel XVS or XVE type, then the value is
9666          already unwrapped.  Return it without further modification.  */
9667       if ((type == raw_real_type)
9668           && ada_find_parallel_type (type, "___XVE") == NULL)
9669         return val;
9670
9671       return
9672         coerce_unspec_val_to_type
9673         (val, ada_to_fixed_type (raw_real_type, 0,
9674                                  value_address (val),
9675                                  NULL, 1));
9676     }
9677 }
9678
9679 static struct value *
9680 cast_from_fixed (struct type *type, struct value *arg)
9681 {
9682   struct value *scale = ada_scaling_factor (value_type (arg));
9683   arg = value_cast (value_type (scale), arg);
9684
9685   arg = value_binop (arg, scale, BINOP_MUL);
9686   return value_cast (type, arg);
9687 }
9688
9689 static struct value *
9690 cast_to_fixed (struct type *type, struct value *arg)
9691 {
9692   if (type == value_type (arg))
9693     return arg;
9694
9695   struct value *scale = ada_scaling_factor (type);
9696   if (ada_is_fixed_point_type (value_type (arg)))
9697     arg = cast_from_fixed (value_type (scale), arg);
9698   else
9699     arg = value_cast (value_type (scale), arg);
9700
9701   arg = value_binop (arg, scale, BINOP_DIV);
9702   return value_cast (type, arg);
9703 }
9704
9705 /* Given two array types T1 and T2, return nonzero iff both arrays
9706    contain the same number of elements.  */
9707
9708 static int
9709 ada_same_array_size_p (struct type *t1, struct type *t2)
9710 {
9711   LONGEST lo1, hi1, lo2, hi2;
9712
9713   /* Get the array bounds in order to verify that the size of
9714      the two arrays match.  */
9715   if (!get_array_bounds (t1, &lo1, &hi1)
9716       || !get_array_bounds (t2, &lo2, &hi2))
9717     error (_("unable to determine array bounds"));
9718
9719   /* To make things easier for size comparison, normalize a bit
9720      the case of empty arrays by making sure that the difference
9721      between upper bound and lower bound is always -1.  */
9722   if (lo1 > hi1)
9723     hi1 = lo1 - 1;
9724   if (lo2 > hi2)
9725     hi2 = lo2 - 1;
9726
9727   return (hi1 - lo1 == hi2 - lo2);
9728 }
9729
9730 /* Assuming that VAL is an array of integrals, and TYPE represents
9731    an array with the same number of elements, but with wider integral
9732    elements, return an array "casted" to TYPE.  In practice, this
9733    means that the returned array is built by casting each element
9734    of the original array into TYPE's (wider) element type.  */
9735
9736 static struct value *
9737 ada_promote_array_of_integrals (struct type *type, struct value *val)
9738 {
9739   struct type *elt_type = TYPE_TARGET_TYPE (type);
9740   LONGEST lo, hi;
9741   struct value *res;
9742   LONGEST i;
9743
9744   /* Verify that both val and type are arrays of scalars, and
9745      that the size of val's elements is smaller than the size
9746      of type's element.  */
9747   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9748   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9749   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9750   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9751   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9752               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9753
9754   if (!get_array_bounds (type, &lo, &hi))
9755     error (_("unable to determine array bounds"));
9756
9757   res = allocate_value (type);
9758
9759   /* Promote each array element.  */
9760   for (i = 0; i < hi - lo + 1; i++)
9761     {
9762       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9763
9764       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9765               value_contents_all (elt), TYPE_LENGTH (elt_type));
9766     }
9767
9768   return res;
9769 }
9770
9771 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9772    return the converted value.  */
9773
9774 static struct value *
9775 coerce_for_assign (struct type *type, struct value *val)
9776 {
9777   struct type *type2 = value_type (val);
9778
9779   if (type == type2)
9780     return val;
9781
9782   type2 = ada_check_typedef (type2);
9783   type = ada_check_typedef (type);
9784
9785   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9786       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9787     {
9788       val = ada_value_ind (val);
9789       type2 = value_type (val);
9790     }
9791
9792   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9793       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9794     {
9795       if (!ada_same_array_size_p (type, type2))
9796         error (_("cannot assign arrays of different length"));
9797
9798       if (is_integral_type (TYPE_TARGET_TYPE (type))
9799           && is_integral_type (TYPE_TARGET_TYPE (type2))
9800           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9801                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9802         {
9803           /* Allow implicit promotion of the array elements to
9804              a wider type.  */
9805           return ada_promote_array_of_integrals (type, val);
9806         }
9807
9808       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9809           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9810         error (_("Incompatible types in assignment"));
9811       deprecated_set_value_type (val, type);
9812     }
9813   return val;
9814 }
9815
9816 static struct value *
9817 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9818 {
9819   struct value *val;
9820   struct type *type1, *type2;
9821   LONGEST v, v1, v2;
9822
9823   arg1 = coerce_ref (arg1);
9824   arg2 = coerce_ref (arg2);
9825   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9826   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9827
9828   if (TYPE_CODE (type1) != TYPE_CODE_INT
9829       || TYPE_CODE (type2) != TYPE_CODE_INT)
9830     return value_binop (arg1, arg2, op);
9831
9832   switch (op)
9833     {
9834     case BINOP_MOD:
9835     case BINOP_DIV:
9836     case BINOP_REM:
9837       break;
9838     default:
9839       return value_binop (arg1, arg2, op);
9840     }
9841
9842   v2 = value_as_long (arg2);
9843   if (v2 == 0)
9844     error (_("second operand of %s must not be zero."), op_string (op));
9845
9846   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9847     return value_binop (arg1, arg2, op);
9848
9849   v1 = value_as_long (arg1);
9850   switch (op)
9851     {
9852     case BINOP_DIV:
9853       v = v1 / v2;
9854       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9855         v += v > 0 ? -1 : 1;
9856       break;
9857     case BINOP_REM:
9858       v = v1 % v2;
9859       if (v * v1 < 0)
9860         v -= v2;
9861       break;
9862     default:
9863       /* Should not reach this point.  */
9864       v = 0;
9865     }
9866
9867   val = allocate_value (type1);
9868   store_unsigned_integer (value_contents_raw (val),
9869                           TYPE_LENGTH (value_type (val)),
9870                           gdbarch_byte_order (get_type_arch (type1)), v);
9871   return val;
9872 }
9873
9874 static int
9875 ada_value_equal (struct value *arg1, struct value *arg2)
9876 {
9877   if (ada_is_direct_array_type (value_type (arg1))
9878       || ada_is_direct_array_type (value_type (arg2)))
9879     {
9880       struct type *arg1_type, *arg2_type;
9881
9882       /* Automatically dereference any array reference before
9883          we attempt to perform the comparison.  */
9884       arg1 = ada_coerce_ref (arg1);
9885       arg2 = ada_coerce_ref (arg2);
9886
9887       arg1 = ada_coerce_to_simple_array (arg1);
9888       arg2 = ada_coerce_to_simple_array (arg2);
9889
9890       arg1_type = ada_check_typedef (value_type (arg1));
9891       arg2_type = ada_check_typedef (value_type (arg2));
9892
9893       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9894           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9895         error (_("Attempt to compare array with non-array"));
9896       /* FIXME: The following works only for types whose
9897          representations use all bits (no padding or undefined bits)
9898          and do not have user-defined equality.  */
9899       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9900               && memcmp (value_contents (arg1), value_contents (arg2),
9901                          TYPE_LENGTH (arg1_type)) == 0);
9902     }
9903   return value_equal (arg1, arg2);
9904 }
9905
9906 /* Total number of component associations in the aggregate starting at
9907    index PC in EXP.  Assumes that index PC is the start of an
9908    OP_AGGREGATE.  */
9909
9910 static int
9911 num_component_specs (struct expression *exp, int pc)
9912 {
9913   int n, m, i;
9914
9915   m = exp->elts[pc + 1].longconst;
9916   pc += 3;
9917   n = 0;
9918   for (i = 0; i < m; i += 1)
9919     {
9920       switch (exp->elts[pc].opcode) 
9921         {
9922         default:
9923           n += 1;
9924           break;
9925         case OP_CHOICES:
9926           n += exp->elts[pc + 1].longconst;
9927           break;
9928         }
9929       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9930     }
9931   return n;
9932 }
9933
9934 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9935    component of LHS (a simple array or a record), updating *POS past
9936    the expression, assuming that LHS is contained in CONTAINER.  Does
9937    not modify the inferior's memory, nor does it modify LHS (unless
9938    LHS == CONTAINER).  */
9939
9940 static void
9941 assign_component (struct value *container, struct value *lhs, LONGEST index,
9942                   struct expression *exp, int *pos)
9943 {
9944   struct value *mark = value_mark ();
9945   struct value *elt;
9946   struct type *lhs_type = check_typedef (value_type (lhs));
9947
9948   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9949     {
9950       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9951       struct value *index_val = value_from_longest (index_type, index);
9952
9953       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9954     }
9955   else
9956     {
9957       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9958       elt = ada_to_fixed_value (elt);
9959     }
9960
9961   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9962     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9963   else
9964     value_assign_to_component (container, elt, 
9965                                ada_evaluate_subexp (NULL, exp, pos, 
9966                                                     EVAL_NORMAL));
9967
9968   value_free_to_mark (mark);
9969 }
9970
9971 /* Assuming that LHS represents an lvalue having a record or array
9972    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9973    of that aggregate's value to LHS, advancing *POS past the
9974    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9975    lvalue containing LHS (possibly LHS itself).  Does not modify
9976    the inferior's memory, nor does it modify the contents of 
9977    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9978
9979 static struct value *
9980 assign_aggregate (struct value *container, 
9981                   struct value *lhs, struct expression *exp, 
9982                   int *pos, enum noside noside)
9983 {
9984   struct type *lhs_type;
9985   int n = exp->elts[*pos+1].longconst;
9986   LONGEST low_index, high_index;
9987   int num_specs;
9988   LONGEST *indices;
9989   int max_indices, num_indices;
9990   int i;
9991
9992   *pos += 3;
9993   if (noside != EVAL_NORMAL)
9994     {
9995       for (i = 0; i < n; i += 1)
9996         ada_evaluate_subexp (NULL, exp, pos, noside);
9997       return container;
9998     }
9999
10000   container = ada_coerce_ref (container);
10001   if (ada_is_direct_array_type (value_type (container)))
10002     container = ada_coerce_to_simple_array (container);
10003   lhs = ada_coerce_ref (lhs);
10004   if (!deprecated_value_modifiable (lhs))
10005     error (_("Left operand of assignment is not a modifiable lvalue."));
10006
10007   lhs_type = check_typedef (value_type (lhs));
10008   if (ada_is_direct_array_type (lhs_type))
10009     {
10010       lhs = ada_coerce_to_simple_array (lhs);
10011       lhs_type = check_typedef (value_type (lhs));
10012       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10013       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10014     }
10015   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10016     {
10017       low_index = 0;
10018       high_index = num_visible_fields (lhs_type) - 1;
10019     }
10020   else
10021     error (_("Left-hand side must be array or record."));
10022
10023   num_specs = num_component_specs (exp, *pos - 3);
10024   max_indices = 4 * num_specs + 4;
10025   indices = XALLOCAVEC (LONGEST, max_indices);
10026   indices[0] = indices[1] = low_index - 1;
10027   indices[2] = indices[3] = high_index + 1;
10028   num_indices = 4;
10029
10030   for (i = 0; i < n; i += 1)
10031     {
10032       switch (exp->elts[*pos].opcode)
10033         {
10034           case OP_CHOICES:
10035             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10036                                            &num_indices, max_indices,
10037                                            low_index, high_index);
10038             break;
10039           case OP_POSITIONAL:
10040             aggregate_assign_positional (container, lhs, exp, pos, indices,
10041                                          &num_indices, max_indices,
10042                                          low_index, high_index);
10043             break;
10044           case OP_OTHERS:
10045             if (i != n-1)
10046               error (_("Misplaced 'others' clause"));
10047             aggregate_assign_others (container, lhs, exp, pos, indices, 
10048                                      num_indices, low_index, high_index);
10049             break;
10050           default:
10051             error (_("Internal error: bad aggregate clause"));
10052         }
10053     }
10054
10055   return container;
10056 }
10057               
10058 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10059    construct at *POS, updating *POS past the construct, given that
10060    the positions are relative to lower bound LOW, where HIGH is the 
10061    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10062    updating *NUM_INDICES as needed.  CONTAINER is as for
10063    assign_aggregate.  */
10064 static void
10065 aggregate_assign_positional (struct value *container,
10066                              struct value *lhs, struct expression *exp,
10067                              int *pos, LONGEST *indices, int *num_indices,
10068                              int max_indices, LONGEST low, LONGEST high) 
10069 {
10070   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10071   
10072   if (ind - 1 == high)
10073     warning (_("Extra components in aggregate ignored."));
10074   if (ind <= high)
10075     {
10076       add_component_interval (ind, ind, indices, num_indices, max_indices);
10077       *pos += 3;
10078       assign_component (container, lhs, ind, exp, pos);
10079     }
10080   else
10081     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10082 }
10083
10084 /* Assign into the components of LHS indexed by the OP_CHOICES
10085    construct at *POS, updating *POS past the construct, given that
10086    the allowable indices are LOW..HIGH.  Record the indices assigned
10087    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10088    needed.  CONTAINER is as for assign_aggregate.  */
10089 static void
10090 aggregate_assign_from_choices (struct value *container,
10091                                struct value *lhs, struct expression *exp,
10092                                int *pos, LONGEST *indices, int *num_indices,
10093                                int max_indices, LONGEST low, LONGEST high) 
10094 {
10095   int j;
10096   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10097   int choice_pos, expr_pc;
10098   int is_array = ada_is_direct_array_type (value_type (lhs));
10099
10100   choice_pos = *pos += 3;
10101
10102   for (j = 0; j < n_choices; j += 1)
10103     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10104   expr_pc = *pos;
10105   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10106   
10107   for (j = 0; j < n_choices; j += 1)
10108     {
10109       LONGEST lower, upper;
10110       enum exp_opcode op = exp->elts[choice_pos].opcode;
10111
10112       if (op == OP_DISCRETE_RANGE)
10113         {
10114           choice_pos += 1;
10115           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10116                                                       EVAL_NORMAL));
10117           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10118                                                       EVAL_NORMAL));
10119         }
10120       else if (is_array)
10121         {
10122           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10123                                                       EVAL_NORMAL));
10124           upper = lower;
10125         }
10126       else
10127         {
10128           int ind;
10129           const char *name;
10130
10131           switch (op)
10132             {
10133             case OP_NAME:
10134               name = &exp->elts[choice_pos + 2].string;
10135               break;
10136             case OP_VAR_VALUE:
10137               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10138               break;
10139             default:
10140               error (_("Invalid record component association."));
10141             }
10142           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10143           ind = 0;
10144           if (! find_struct_field (name, value_type (lhs), 0, 
10145                                    NULL, NULL, NULL, NULL, &ind))
10146             error (_("Unknown component name: %s."), name);
10147           lower = upper = ind;
10148         }
10149
10150       if (lower <= upper && (lower < low || upper > high))
10151         error (_("Index in component association out of bounds."));
10152
10153       add_component_interval (lower, upper, indices, num_indices,
10154                               max_indices);
10155       while (lower <= upper)
10156         {
10157           int pos1;
10158
10159           pos1 = expr_pc;
10160           assign_component (container, lhs, lower, exp, &pos1);
10161           lower += 1;
10162         }
10163     }
10164 }
10165
10166 /* Assign the value of the expression in the OP_OTHERS construct in
10167    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10168    have not been previously assigned.  The index intervals already assigned
10169    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10170    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10171 static void
10172 aggregate_assign_others (struct value *container,
10173                          struct value *lhs, struct expression *exp,
10174                          int *pos, LONGEST *indices, int num_indices,
10175                          LONGEST low, LONGEST high) 
10176 {
10177   int i;
10178   int expr_pc = *pos + 1;
10179   
10180   for (i = 0; i < num_indices - 2; i += 2)
10181     {
10182       LONGEST ind;
10183
10184       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10185         {
10186           int localpos;
10187
10188           localpos = expr_pc;
10189           assign_component (container, lhs, ind, exp, &localpos);
10190         }
10191     }
10192   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10193 }
10194
10195 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10196    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10197    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10198    MAX_SIZE.  The resulting intervals do not overlap.  */
10199 static void
10200 add_component_interval (LONGEST low, LONGEST high, 
10201                         LONGEST* indices, int *size, int max_size)
10202 {
10203   int i, j;
10204
10205   for (i = 0; i < *size; i += 2) {
10206     if (high >= indices[i] && low <= indices[i + 1])
10207       {
10208         int kh;
10209
10210         for (kh = i + 2; kh < *size; kh += 2)
10211           if (high < indices[kh])
10212             break;
10213         if (low < indices[i])
10214           indices[i] = low;
10215         indices[i + 1] = indices[kh - 1];
10216         if (high > indices[i + 1])
10217           indices[i + 1] = high;
10218         memcpy (indices + i + 2, indices + kh, *size - kh);
10219         *size -= kh - i - 2;
10220         return;
10221       }
10222     else if (high < indices[i])
10223       break;
10224   }
10225         
10226   if (*size == max_size)
10227     error (_("Internal error: miscounted aggregate components."));
10228   *size += 2;
10229   for (j = *size-1; j >= i+2; j -= 1)
10230     indices[j] = indices[j - 2];
10231   indices[i] = low;
10232   indices[i + 1] = high;
10233 }
10234
10235 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10236    is different.  */
10237
10238 static struct value *
10239 ada_value_cast (struct type *type, struct value *arg2)
10240 {
10241   if (type == ada_check_typedef (value_type (arg2)))
10242     return arg2;
10243
10244   if (ada_is_fixed_point_type (type))
10245     return cast_to_fixed (type, arg2);
10246
10247   if (ada_is_fixed_point_type (value_type (arg2)))
10248     return cast_from_fixed (type, arg2);
10249
10250   return value_cast (type, arg2);
10251 }
10252
10253 /*  Evaluating Ada expressions, and printing their result.
10254     ------------------------------------------------------
10255
10256     1. Introduction:
10257     ----------------
10258
10259     We usually evaluate an Ada expression in order to print its value.
10260     We also evaluate an expression in order to print its type, which
10261     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10262     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10263     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10264     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10265     similar.
10266
10267     Evaluating expressions is a little more complicated for Ada entities
10268     than it is for entities in languages such as C.  The main reason for
10269     this is that Ada provides types whose definition might be dynamic.
10270     One example of such types is variant records.  Or another example
10271     would be an array whose bounds can only be known at run time.
10272
10273     The following description is a general guide as to what should be
10274     done (and what should NOT be done) in order to evaluate an expression
10275     involving such types, and when.  This does not cover how the semantic
10276     information is encoded by GNAT as this is covered separatly.  For the
10277     document used as the reference for the GNAT encoding, see exp_dbug.ads
10278     in the GNAT sources.
10279
10280     Ideally, we should embed each part of this description next to its
10281     associated code.  Unfortunately, the amount of code is so vast right
10282     now that it's hard to see whether the code handling a particular
10283     situation might be duplicated or not.  One day, when the code is
10284     cleaned up, this guide might become redundant with the comments
10285     inserted in the code, and we might want to remove it.
10286
10287     2. ``Fixing'' an Entity, the Simple Case:
10288     -----------------------------------------
10289
10290     When evaluating Ada expressions, the tricky issue is that they may
10291     reference entities whose type contents and size are not statically
10292     known.  Consider for instance a variant record:
10293
10294        type Rec (Empty : Boolean := True) is record
10295           case Empty is
10296              when True => null;
10297              when False => Value : Integer;
10298           end case;
10299        end record;
10300        Yes : Rec := (Empty => False, Value => 1);
10301        No  : Rec := (empty => True);
10302
10303     The size and contents of that record depends on the value of the
10304     descriminant (Rec.Empty).  At this point, neither the debugging
10305     information nor the associated type structure in GDB are able to
10306     express such dynamic types.  So what the debugger does is to create
10307     "fixed" versions of the type that applies to the specific object.
10308     We also informally refer to this opperation as "fixing" an object,
10309     which means creating its associated fixed type.
10310
10311     Example: when printing the value of variable "Yes" above, its fixed
10312     type would look like this:
10313
10314        type Rec is record
10315           Empty : Boolean;
10316           Value : Integer;
10317        end record;
10318
10319     On the other hand, if we printed the value of "No", its fixed type
10320     would become:
10321
10322        type Rec is record
10323           Empty : Boolean;
10324        end record;
10325
10326     Things become a little more complicated when trying to fix an entity
10327     with a dynamic type that directly contains another dynamic type,
10328     such as an array of variant records, for instance.  There are
10329     two possible cases: Arrays, and records.
10330
10331     3. ``Fixing'' Arrays:
10332     ---------------------
10333
10334     The type structure in GDB describes an array in terms of its bounds,
10335     and the type of its elements.  By design, all elements in the array
10336     have the same type and we cannot represent an array of variant elements
10337     using the current type structure in GDB.  When fixing an array,
10338     we cannot fix the array element, as we would potentially need one
10339     fixed type per element of the array.  As a result, the best we can do
10340     when fixing an array is to produce an array whose bounds and size
10341     are correct (allowing us to read it from memory), but without having
10342     touched its element type.  Fixing each element will be done later,
10343     when (if) necessary.
10344
10345     Arrays are a little simpler to handle than records, because the same
10346     amount of memory is allocated for each element of the array, even if
10347     the amount of space actually used by each element differs from element
10348     to element.  Consider for instance the following array of type Rec:
10349
10350        type Rec_Array is array (1 .. 2) of Rec;
10351
10352     The actual amount of memory occupied by each element might be different
10353     from element to element, depending on the value of their discriminant.
10354     But the amount of space reserved for each element in the array remains
10355     fixed regardless.  So we simply need to compute that size using
10356     the debugging information available, from which we can then determine
10357     the array size (we multiply the number of elements of the array by
10358     the size of each element).
10359
10360     The simplest case is when we have an array of a constrained element
10361     type. For instance, consider the following type declarations:
10362
10363         type Bounded_String (Max_Size : Integer) is
10364            Length : Integer;
10365            Buffer : String (1 .. Max_Size);
10366         end record;
10367         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10368
10369     In this case, the compiler describes the array as an array of
10370     variable-size elements (identified by its XVS suffix) for which
10371     the size can be read in the parallel XVZ variable.
10372
10373     In the case of an array of an unconstrained element type, the compiler
10374     wraps the array element inside a private PAD type.  This type should not
10375     be shown to the user, and must be "unwrap"'ed before printing.  Note
10376     that we also use the adjective "aligner" in our code to designate
10377     these wrapper types.
10378
10379     In some cases, the size allocated for each element is statically
10380     known.  In that case, the PAD type already has the correct size,
10381     and the array element should remain unfixed.
10382
10383     But there are cases when this size is not statically known.
10384     For instance, assuming that "Five" is an integer variable:
10385
10386         type Dynamic is array (1 .. Five) of Integer;
10387         type Wrapper (Has_Length : Boolean := False) is record
10388            Data : Dynamic;
10389            case Has_Length is
10390               when True => Length : Integer;
10391               when False => null;
10392            end case;
10393         end record;
10394         type Wrapper_Array is array (1 .. 2) of Wrapper;
10395
10396         Hello : Wrapper_Array := (others => (Has_Length => True,
10397                                              Data => (others => 17),
10398                                              Length => 1));
10399
10400
10401     The debugging info would describe variable Hello as being an
10402     array of a PAD type.  The size of that PAD type is not statically
10403     known, but can be determined using a parallel XVZ variable.
10404     In that case, a copy of the PAD type with the correct size should
10405     be used for the fixed array.
10406
10407     3. ``Fixing'' record type objects:
10408     ----------------------------------
10409
10410     Things are slightly different from arrays in the case of dynamic
10411     record types.  In this case, in order to compute the associated
10412     fixed type, we need to determine the size and offset of each of
10413     its components.  This, in turn, requires us to compute the fixed
10414     type of each of these components.
10415
10416     Consider for instance the example:
10417
10418         type Bounded_String (Max_Size : Natural) is record
10419            Str : String (1 .. Max_Size);
10420            Length : Natural;
10421         end record;
10422         My_String : Bounded_String (Max_Size => 10);
10423
10424     In that case, the position of field "Length" depends on the size
10425     of field Str, which itself depends on the value of the Max_Size
10426     discriminant.  In order to fix the type of variable My_String,
10427     we need to fix the type of field Str.  Therefore, fixing a variant
10428     record requires us to fix each of its components.
10429
10430     However, if a component does not have a dynamic size, the component
10431     should not be fixed.  In particular, fields that use a PAD type
10432     should not fixed.  Here is an example where this might happen
10433     (assuming type Rec above):
10434
10435        type Container (Big : Boolean) is record
10436           First : Rec;
10437           After : Integer;
10438           case Big is
10439              when True => Another : Integer;
10440              when False => null;
10441           end case;
10442        end record;
10443        My_Container : Container := (Big => False,
10444                                     First => (Empty => True),
10445                                     After => 42);
10446
10447     In that example, the compiler creates a PAD type for component First,
10448     whose size is constant, and then positions the component After just
10449     right after it.  The offset of component After is therefore constant
10450     in this case.
10451
10452     The debugger computes the position of each field based on an algorithm
10453     that uses, among other things, the actual position and size of the field
10454     preceding it.  Let's now imagine that the user is trying to print
10455     the value of My_Container.  If the type fixing was recursive, we would
10456     end up computing the offset of field After based on the size of the
10457     fixed version of field First.  And since in our example First has
10458     only one actual field, the size of the fixed type is actually smaller
10459     than the amount of space allocated to that field, and thus we would
10460     compute the wrong offset of field After.
10461
10462     To make things more complicated, we need to watch out for dynamic
10463     components of variant records (identified by the ___XVL suffix in
10464     the component name).  Even if the target type is a PAD type, the size
10465     of that type might not be statically known.  So the PAD type needs
10466     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10467     we might end up with the wrong size for our component.  This can be
10468     observed with the following type declarations:
10469
10470         type Octal is new Integer range 0 .. 7;
10471         type Octal_Array is array (Positive range <>) of Octal;
10472         pragma Pack (Octal_Array);
10473
10474         type Octal_Buffer (Size : Positive) is record
10475            Buffer : Octal_Array (1 .. Size);
10476            Length : Integer;
10477         end record;
10478
10479     In that case, Buffer is a PAD type whose size is unset and needs
10480     to be computed by fixing the unwrapped type.
10481
10482     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10483     ----------------------------------------------------------
10484
10485     Lastly, when should the sub-elements of an entity that remained unfixed
10486     thus far, be actually fixed?
10487
10488     The answer is: Only when referencing that element.  For instance
10489     when selecting one component of a record, this specific component
10490     should be fixed at that point in time.  Or when printing the value
10491     of a record, each component should be fixed before its value gets
10492     printed.  Similarly for arrays, the element of the array should be
10493     fixed when printing each element of the array, or when extracting
10494     one element out of that array.  On the other hand, fixing should
10495     not be performed on the elements when taking a slice of an array!
10496
10497     Note that one of the side effects of miscomputing the offset and
10498     size of each field is that we end up also miscomputing the size
10499     of the containing type.  This can have adverse results when computing
10500     the value of an entity.  GDB fetches the value of an entity based
10501     on the size of its type, and thus a wrong size causes GDB to fetch
10502     the wrong amount of memory.  In the case where the computed size is
10503     too small, GDB fetches too little data to print the value of our
10504     entity.  Results in this case are unpredictable, as we usually read
10505     past the buffer containing the data =:-o.  */
10506
10507 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10508    for that subexpression cast to TO_TYPE.  Advance *POS over the
10509    subexpression.  */
10510
10511 static value *
10512 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10513                               enum noside noside, struct type *to_type)
10514 {
10515   int pc = *pos;
10516
10517   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10518       || exp->elts[pc].opcode == OP_VAR_VALUE)
10519     {
10520       (*pos) += 4;
10521
10522       value *val;
10523       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10524         {
10525           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10526             return value_zero (to_type, not_lval);
10527
10528           val = evaluate_var_msym_value (noside,
10529                                          exp->elts[pc + 1].objfile,
10530                                          exp->elts[pc + 2].msymbol);
10531         }
10532       else
10533         val = evaluate_var_value (noside,
10534                                   exp->elts[pc + 1].block,
10535                                   exp->elts[pc + 2].symbol);
10536
10537       if (noside == EVAL_SKIP)
10538         return eval_skip_value (exp);
10539
10540       val = ada_value_cast (to_type, val);
10541
10542       /* Follow the Ada language semantics that do not allow taking
10543          an address of the result of a cast (view conversion in Ada).  */
10544       if (VALUE_LVAL (val) == lval_memory)
10545         {
10546           if (value_lazy (val))
10547             value_fetch_lazy (val);
10548           VALUE_LVAL (val) = not_lval;
10549         }
10550       return val;
10551     }
10552
10553   value *val = evaluate_subexp (to_type, exp, pos, noside);
10554   if (noside == EVAL_SKIP)
10555     return eval_skip_value (exp);
10556   return ada_value_cast (to_type, val);
10557 }
10558
10559 /* Implement the evaluate_exp routine in the exp_descriptor structure
10560    for the Ada language.  */
10561
10562 static struct value *
10563 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10564                      int *pos, enum noside noside)
10565 {
10566   enum exp_opcode op;
10567   int tem;
10568   int pc;
10569   int preeval_pos;
10570   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10571   struct type *type;
10572   int nargs, oplen;
10573   struct value **argvec;
10574
10575   pc = *pos;
10576   *pos += 1;
10577   op = exp->elts[pc].opcode;
10578
10579   switch (op)
10580     {
10581     default:
10582       *pos -= 1;
10583       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10584
10585       if (noside == EVAL_NORMAL)
10586         arg1 = unwrap_value (arg1);
10587
10588       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10589          then we need to perform the conversion manually, because
10590          evaluate_subexp_standard doesn't do it.  This conversion is
10591          necessary in Ada because the different kinds of float/fixed
10592          types in Ada have different representations.
10593
10594          Similarly, we need to perform the conversion from OP_LONG
10595          ourselves.  */
10596       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10597         arg1 = ada_value_cast (expect_type, arg1);
10598
10599       return arg1;
10600
10601     case OP_STRING:
10602       {
10603         struct value *result;
10604
10605         *pos -= 1;
10606         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10607         /* The result type will have code OP_STRING, bashed there from 
10608            OP_ARRAY.  Bash it back.  */
10609         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10610           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10611         return result;
10612       }
10613
10614     case UNOP_CAST:
10615       (*pos) += 2;
10616       type = exp->elts[pc + 1].type;
10617       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10618
10619     case UNOP_QUAL:
10620       (*pos) += 2;
10621       type = exp->elts[pc + 1].type;
10622       return ada_evaluate_subexp (type, exp, pos, noside);
10623
10624     case BINOP_ASSIGN:
10625       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10626       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10627         {
10628           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10629           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10630             return arg1;
10631           return ada_value_assign (arg1, arg1);
10632         }
10633       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10634          except if the lhs of our assignment is a convenience variable.
10635          In the case of assigning to a convenience variable, the lhs
10636          should be exactly the result of the evaluation of the rhs.  */
10637       type = value_type (arg1);
10638       if (VALUE_LVAL (arg1) == lval_internalvar)
10639          type = NULL;
10640       arg2 = evaluate_subexp (type, exp, pos, noside);
10641       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10642         return arg1;
10643       if (ada_is_fixed_point_type (value_type (arg1)))
10644         arg2 = cast_to_fixed (value_type (arg1), arg2);
10645       else if (ada_is_fixed_point_type (value_type (arg2)))
10646         error
10647           (_("Fixed-point values must be assigned to fixed-point variables"));
10648       else
10649         arg2 = coerce_for_assign (value_type (arg1), arg2);
10650       return ada_value_assign (arg1, arg2);
10651
10652     case BINOP_ADD:
10653       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10654       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10655       if (noside == EVAL_SKIP)
10656         goto nosideret;
10657       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10658         return (value_from_longest
10659                  (value_type (arg1),
10660                   value_as_long (arg1) + value_as_long (arg2)));
10661       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10662         return (value_from_longest
10663                  (value_type (arg2),
10664                   value_as_long (arg1) + value_as_long (arg2)));
10665       if ((ada_is_fixed_point_type (value_type (arg1))
10666            || ada_is_fixed_point_type (value_type (arg2)))
10667           && value_type (arg1) != value_type (arg2))
10668         error (_("Operands of fixed-point addition must have the same type"));
10669       /* Do the addition, and cast the result to the type of the first
10670          argument.  We cannot cast the result to a reference type, so if
10671          ARG1 is a reference type, find its underlying type.  */
10672       type = value_type (arg1);
10673       while (TYPE_CODE (type) == TYPE_CODE_REF)
10674         type = TYPE_TARGET_TYPE (type);
10675       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10676       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10677
10678     case BINOP_SUB:
10679       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10680       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10681       if (noside == EVAL_SKIP)
10682         goto nosideret;
10683       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10684         return (value_from_longest
10685                  (value_type (arg1),
10686                   value_as_long (arg1) - value_as_long (arg2)));
10687       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10688         return (value_from_longest
10689                  (value_type (arg2),
10690                   value_as_long (arg1) - value_as_long (arg2)));
10691       if ((ada_is_fixed_point_type (value_type (arg1))
10692            || ada_is_fixed_point_type (value_type (arg2)))
10693           && value_type (arg1) != value_type (arg2))
10694         error (_("Operands of fixed-point subtraction "
10695                  "must have the same type"));
10696       /* Do the substraction, and cast the result to the type of the first
10697          argument.  We cannot cast the result to a reference type, so if
10698          ARG1 is a reference type, find its underlying type.  */
10699       type = value_type (arg1);
10700       while (TYPE_CODE (type) == TYPE_CODE_REF)
10701         type = TYPE_TARGET_TYPE (type);
10702       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10703       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10704
10705     case BINOP_MUL:
10706     case BINOP_DIV:
10707     case BINOP_REM:
10708     case BINOP_MOD:
10709       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10710       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10711       if (noside == EVAL_SKIP)
10712         goto nosideret;
10713       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10714         {
10715           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10716           return value_zero (value_type (arg1), not_lval);
10717         }
10718       else
10719         {
10720           type = builtin_type (exp->gdbarch)->builtin_double;
10721           if (ada_is_fixed_point_type (value_type (arg1)))
10722             arg1 = cast_from_fixed (type, arg1);
10723           if (ada_is_fixed_point_type (value_type (arg2)))
10724             arg2 = cast_from_fixed (type, arg2);
10725           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10726           return ada_value_binop (arg1, arg2, op);
10727         }
10728
10729     case BINOP_EQUAL:
10730     case BINOP_NOTEQUAL:
10731       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10732       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10733       if (noside == EVAL_SKIP)
10734         goto nosideret;
10735       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10736         tem = 0;
10737       else
10738         {
10739           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10740           tem = ada_value_equal (arg1, arg2);
10741         }
10742       if (op == BINOP_NOTEQUAL)
10743         tem = !tem;
10744       type = language_bool_type (exp->language_defn, exp->gdbarch);
10745       return value_from_longest (type, (LONGEST) tem);
10746
10747     case UNOP_NEG:
10748       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10749       if (noside == EVAL_SKIP)
10750         goto nosideret;
10751       else if (ada_is_fixed_point_type (value_type (arg1)))
10752         return value_cast (value_type (arg1), value_neg (arg1));
10753       else
10754         {
10755           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10756           return value_neg (arg1);
10757         }
10758
10759     case BINOP_LOGICAL_AND:
10760     case BINOP_LOGICAL_OR:
10761     case UNOP_LOGICAL_NOT:
10762       {
10763         struct value *val;
10764
10765         *pos -= 1;
10766         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10767         type = language_bool_type (exp->language_defn, exp->gdbarch);
10768         return value_cast (type, val);
10769       }
10770
10771     case BINOP_BITWISE_AND:
10772     case BINOP_BITWISE_IOR:
10773     case BINOP_BITWISE_XOR:
10774       {
10775         struct value *val;
10776
10777         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10778         *pos = pc;
10779         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10780
10781         return value_cast (value_type (arg1), val);
10782       }
10783
10784     case OP_VAR_VALUE:
10785       *pos -= 1;
10786
10787       if (noside == EVAL_SKIP)
10788         {
10789           *pos += 4;
10790           goto nosideret;
10791         }
10792
10793       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10794         /* Only encountered when an unresolved symbol occurs in a
10795            context other than a function call, in which case, it is
10796            invalid.  */
10797         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10798                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10799
10800       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10801         {
10802           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10803           /* Check to see if this is a tagged type.  We also need to handle
10804              the case where the type is a reference to a tagged type, but
10805              we have to be careful to exclude pointers to tagged types.
10806              The latter should be shown as usual (as a pointer), whereas
10807              a reference should mostly be transparent to the user.  */
10808           if (ada_is_tagged_type (type, 0)
10809               || (TYPE_CODE (type) == TYPE_CODE_REF
10810                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10811             {
10812               /* Tagged types are a little special in the fact that the real
10813                  type is dynamic and can only be determined by inspecting the
10814                  object's tag.  This means that we need to get the object's
10815                  value first (EVAL_NORMAL) and then extract the actual object
10816                  type from its tag.
10817
10818                  Note that we cannot skip the final step where we extract
10819                  the object type from its tag, because the EVAL_NORMAL phase
10820                  results in dynamic components being resolved into fixed ones.
10821                  This can cause problems when trying to print the type
10822                  description of tagged types whose parent has a dynamic size:
10823                  We use the type name of the "_parent" component in order
10824                  to print the name of the ancestor type in the type description.
10825                  If that component had a dynamic size, the resolution into
10826                  a fixed type would result in the loss of that type name,
10827                  thus preventing us from printing the name of the ancestor
10828                  type in the type description.  */
10829               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10830
10831               if (TYPE_CODE (type) != TYPE_CODE_REF)
10832                 {
10833                   struct type *actual_type;
10834
10835                   actual_type = type_from_tag (ada_value_tag (arg1));
10836                   if (actual_type == NULL)
10837                     /* If, for some reason, we were unable to determine
10838                        the actual type from the tag, then use the static
10839                        approximation that we just computed as a fallback.
10840                        This can happen if the debugging information is
10841                        incomplete, for instance.  */
10842                     actual_type = type;
10843                   return value_zero (actual_type, not_lval);
10844                 }
10845               else
10846                 {
10847                   /* In the case of a ref, ada_coerce_ref takes care
10848                      of determining the actual type.  But the evaluation
10849                      should return a ref as it should be valid to ask
10850                      for its address; so rebuild a ref after coerce.  */
10851                   arg1 = ada_coerce_ref (arg1);
10852                   return value_ref (arg1, TYPE_CODE_REF);
10853                 }
10854             }
10855
10856           /* Records and unions for which GNAT encodings have been
10857              generated need to be statically fixed as well.
10858              Otherwise, non-static fixing produces a type where
10859              all dynamic properties are removed, which prevents "ptype"
10860              from being able to completely describe the type.
10861              For instance, a case statement in a variant record would be
10862              replaced by the relevant components based on the actual
10863              value of the discriminants.  */
10864           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10865                && dynamic_template_type (type) != NULL)
10866               || (TYPE_CODE (type) == TYPE_CODE_UNION
10867                   && ada_find_parallel_type (type, "___XVU") != NULL))
10868             {
10869               *pos += 4;
10870               return value_zero (to_static_fixed_type (type), not_lval);
10871             }
10872         }
10873
10874       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10875       return ada_to_fixed_value (arg1);
10876
10877     case OP_FUNCALL:
10878       (*pos) += 2;
10879
10880       /* Allocate arg vector, including space for the function to be
10881          called in argvec[0] and a terminating NULL.  */
10882       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10883       argvec = XALLOCAVEC (struct value *, nargs + 2);
10884
10885       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10886           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10887         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10888                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10889       else
10890         {
10891           for (tem = 0; tem <= nargs; tem += 1)
10892             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10893           argvec[tem] = 0;
10894
10895           if (noside == EVAL_SKIP)
10896             goto nosideret;
10897         }
10898
10899       if (ada_is_constrained_packed_array_type
10900           (desc_base_type (value_type (argvec[0]))))
10901         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10902       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10903                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10904         /* This is a packed array that has already been fixed, and
10905            therefore already coerced to a simple array.  Nothing further
10906            to do.  */
10907         ;
10908       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10909         {
10910           /* Make sure we dereference references so that all the code below
10911              feels like it's really handling the referenced value.  Wrapping
10912              types (for alignment) may be there, so make sure we strip them as
10913              well.  */
10914           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10915         }
10916       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10917                && VALUE_LVAL (argvec[0]) == lval_memory)
10918         argvec[0] = value_addr (argvec[0]);
10919
10920       type = ada_check_typedef (value_type (argvec[0]));
10921
10922       /* Ada allows us to implicitly dereference arrays when subscripting
10923          them.  So, if this is an array typedef (encoding use for array
10924          access types encoded as fat pointers), strip it now.  */
10925       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10926         type = ada_typedef_target_type (type);
10927
10928       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10929         {
10930           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10931             {
10932             case TYPE_CODE_FUNC:
10933               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10934               break;
10935             case TYPE_CODE_ARRAY:
10936               break;
10937             case TYPE_CODE_STRUCT:
10938               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10939                 argvec[0] = ada_value_ind (argvec[0]);
10940               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10941               break;
10942             default:
10943               error (_("cannot subscript or call something of type `%s'"),
10944                      ada_type_name (value_type (argvec[0])));
10945               break;
10946             }
10947         }
10948
10949       switch (TYPE_CODE (type))
10950         {
10951         case TYPE_CODE_FUNC:
10952           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10953             {
10954               if (TYPE_TARGET_TYPE (type) == NULL)
10955                 error_call_unknown_return_type (NULL);
10956               return allocate_value (TYPE_TARGET_TYPE (type));
10957             }
10958           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
10959         case TYPE_CODE_INTERNAL_FUNCTION:
10960           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10961             /* We don't know anything about what the internal
10962                function might return, but we have to return
10963                something.  */
10964             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10965                                not_lval);
10966           else
10967             return call_internal_function (exp->gdbarch, exp->language_defn,
10968                                            argvec[0], nargs, argvec + 1);
10969
10970         case TYPE_CODE_STRUCT:
10971           {
10972             int arity;
10973
10974             arity = ada_array_arity (type);
10975             type = ada_array_element_type (type, nargs);
10976             if (type == NULL)
10977               error (_("cannot subscript or call a record"));
10978             if (arity != nargs)
10979               error (_("wrong number of subscripts; expecting %d"), arity);
10980             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10981               return value_zero (ada_aligned_type (type), lval_memory);
10982             return
10983               unwrap_value (ada_value_subscript
10984                             (argvec[0], nargs, argvec + 1));
10985           }
10986         case TYPE_CODE_ARRAY:
10987           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10988             {
10989               type = ada_array_element_type (type, nargs);
10990               if (type == NULL)
10991                 error (_("element type of array unknown"));
10992               else
10993                 return value_zero (ada_aligned_type (type), lval_memory);
10994             }
10995           return
10996             unwrap_value (ada_value_subscript
10997                           (ada_coerce_to_simple_array (argvec[0]),
10998                            nargs, argvec + 1));
10999         case TYPE_CODE_PTR:     /* Pointer to array */
11000           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11001             {
11002               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11003               type = ada_array_element_type (type, nargs);
11004               if (type == NULL)
11005                 error (_("element type of array unknown"));
11006               else
11007                 return value_zero (ada_aligned_type (type), lval_memory);
11008             }
11009           return
11010             unwrap_value (ada_value_ptr_subscript (argvec[0],
11011                                                    nargs, argvec + 1));
11012
11013         default:
11014           error (_("Attempt to index or call something other than an "
11015                    "array or function"));
11016         }
11017
11018     case TERNOP_SLICE:
11019       {
11020         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11021         struct value *low_bound_val =
11022           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11023         struct value *high_bound_val =
11024           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11025         LONGEST low_bound;
11026         LONGEST high_bound;
11027
11028         low_bound_val = coerce_ref (low_bound_val);
11029         high_bound_val = coerce_ref (high_bound_val);
11030         low_bound = value_as_long (low_bound_val);
11031         high_bound = value_as_long (high_bound_val);
11032
11033         if (noside == EVAL_SKIP)
11034           goto nosideret;
11035
11036         /* If this is a reference to an aligner type, then remove all
11037            the aligners.  */
11038         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11039             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11040           TYPE_TARGET_TYPE (value_type (array)) =
11041             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11042
11043         if (ada_is_constrained_packed_array_type (value_type (array)))
11044           error (_("cannot slice a packed array"));
11045
11046         /* If this is a reference to an array or an array lvalue,
11047            convert to a pointer.  */
11048         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11049             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11050                 && VALUE_LVAL (array) == lval_memory))
11051           array = value_addr (array);
11052
11053         if (noside == EVAL_AVOID_SIDE_EFFECTS
11054             && ada_is_array_descriptor_type (ada_check_typedef
11055                                              (value_type (array))))
11056           return empty_array (ada_type_of_array (array, 0), low_bound);
11057
11058         array = ada_coerce_to_simple_array_ptr (array);
11059
11060         /* If we have more than one level of pointer indirection,
11061            dereference the value until we get only one level.  */
11062         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11063                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11064                      == TYPE_CODE_PTR))
11065           array = value_ind (array);
11066
11067         /* Make sure we really do have an array type before going further,
11068            to avoid a SEGV when trying to get the index type or the target
11069            type later down the road if the debug info generated by
11070            the compiler is incorrect or incomplete.  */
11071         if (!ada_is_simple_array_type (value_type (array)))
11072           error (_("cannot take slice of non-array"));
11073
11074         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11075             == TYPE_CODE_PTR)
11076           {
11077             struct type *type0 = ada_check_typedef (value_type (array));
11078
11079             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11080               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11081             else
11082               {
11083                 struct type *arr_type0 =
11084                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11085
11086                 return ada_value_slice_from_ptr (array, arr_type0,
11087                                                  longest_to_int (low_bound),
11088                                                  longest_to_int (high_bound));
11089               }
11090           }
11091         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11092           return array;
11093         else if (high_bound < low_bound)
11094           return empty_array (value_type (array), low_bound);
11095         else
11096           return ada_value_slice (array, longest_to_int (low_bound),
11097                                   longest_to_int (high_bound));
11098       }
11099
11100     case UNOP_IN_RANGE:
11101       (*pos) += 2;
11102       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11103       type = check_typedef (exp->elts[pc + 1].type);
11104
11105       if (noside == EVAL_SKIP)
11106         goto nosideret;
11107
11108       switch (TYPE_CODE (type))
11109         {
11110         default:
11111           lim_warning (_("Membership test incompletely implemented; "
11112                          "always returns true"));
11113           type = language_bool_type (exp->language_defn, exp->gdbarch);
11114           return value_from_longest (type, (LONGEST) 1);
11115
11116         case TYPE_CODE_RANGE:
11117           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11118           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11119           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11120           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11121           type = language_bool_type (exp->language_defn, exp->gdbarch);
11122           return
11123             value_from_longest (type,
11124                                 (value_less (arg1, arg3)
11125                                  || value_equal (arg1, arg3))
11126                                 && (value_less (arg2, arg1)
11127                                     || value_equal (arg2, arg1)));
11128         }
11129
11130     case BINOP_IN_BOUNDS:
11131       (*pos) += 2;
11132       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11133       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11134
11135       if (noside == EVAL_SKIP)
11136         goto nosideret;
11137
11138       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11139         {
11140           type = language_bool_type (exp->language_defn, exp->gdbarch);
11141           return value_zero (type, not_lval);
11142         }
11143
11144       tem = longest_to_int (exp->elts[pc + 1].longconst);
11145
11146       type = ada_index_type (value_type (arg2), tem, "range");
11147       if (!type)
11148         type = value_type (arg1);
11149
11150       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11151       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11152
11153       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11154       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11155       type = language_bool_type (exp->language_defn, exp->gdbarch);
11156       return
11157         value_from_longest (type,
11158                             (value_less (arg1, arg3)
11159                              || value_equal (arg1, arg3))
11160                             && (value_less (arg2, arg1)
11161                                 || value_equal (arg2, arg1)));
11162
11163     case TERNOP_IN_RANGE:
11164       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11165       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11166       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11167
11168       if (noside == EVAL_SKIP)
11169         goto nosideret;
11170
11171       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11172       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11173       type = language_bool_type (exp->language_defn, exp->gdbarch);
11174       return
11175         value_from_longest (type,
11176                             (value_less (arg1, arg3)
11177                              || value_equal (arg1, arg3))
11178                             && (value_less (arg2, arg1)
11179                                 || value_equal (arg2, arg1)));
11180
11181     case OP_ATR_FIRST:
11182     case OP_ATR_LAST:
11183     case OP_ATR_LENGTH:
11184       {
11185         struct type *type_arg;
11186
11187         if (exp->elts[*pos].opcode == OP_TYPE)
11188           {
11189             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11190             arg1 = NULL;
11191             type_arg = check_typedef (exp->elts[pc + 2].type);
11192           }
11193         else
11194           {
11195             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11196             type_arg = NULL;
11197           }
11198
11199         if (exp->elts[*pos].opcode != OP_LONG)
11200           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11201         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11202         *pos += 4;
11203
11204         if (noside == EVAL_SKIP)
11205           goto nosideret;
11206
11207         if (type_arg == NULL)
11208           {
11209             arg1 = ada_coerce_ref (arg1);
11210
11211             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11212               arg1 = ada_coerce_to_simple_array (arg1);
11213
11214             if (op == OP_ATR_LENGTH)
11215               type = builtin_type (exp->gdbarch)->builtin_int;
11216             else
11217               {
11218                 type = ada_index_type (value_type (arg1), tem,
11219                                        ada_attribute_name (op));
11220                 if (type == NULL)
11221                   type = builtin_type (exp->gdbarch)->builtin_int;
11222               }
11223
11224             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11225               return allocate_value (type);
11226
11227             switch (op)
11228               {
11229               default:          /* Should never happen.  */
11230                 error (_("unexpected attribute encountered"));
11231               case OP_ATR_FIRST:
11232                 return value_from_longest
11233                         (type, ada_array_bound (arg1, tem, 0));
11234               case OP_ATR_LAST:
11235                 return value_from_longest
11236                         (type, ada_array_bound (arg1, tem, 1));
11237               case OP_ATR_LENGTH:
11238                 return value_from_longest
11239                         (type, ada_array_length (arg1, tem));
11240               }
11241           }
11242         else if (discrete_type_p (type_arg))
11243           {
11244             struct type *range_type;
11245             const char *name = ada_type_name (type_arg);
11246
11247             range_type = NULL;
11248             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11249               range_type = to_fixed_range_type (type_arg, NULL);
11250             if (range_type == NULL)
11251               range_type = type_arg;
11252             switch (op)
11253               {
11254               default:
11255                 error (_("unexpected attribute encountered"));
11256               case OP_ATR_FIRST:
11257                 return value_from_longest 
11258                   (range_type, ada_discrete_type_low_bound (range_type));
11259               case OP_ATR_LAST:
11260                 return value_from_longest
11261                   (range_type, ada_discrete_type_high_bound (range_type));
11262               case OP_ATR_LENGTH:
11263                 error (_("the 'length attribute applies only to array types"));
11264               }
11265           }
11266         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11267           error (_("unimplemented type attribute"));
11268         else
11269           {
11270             LONGEST low, high;
11271
11272             if (ada_is_constrained_packed_array_type (type_arg))
11273               type_arg = decode_constrained_packed_array_type (type_arg);
11274
11275             if (op == OP_ATR_LENGTH)
11276               type = builtin_type (exp->gdbarch)->builtin_int;
11277             else
11278               {
11279                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11280                 if (type == NULL)
11281                   type = builtin_type (exp->gdbarch)->builtin_int;
11282               }
11283
11284             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11285               return allocate_value (type);
11286
11287             switch (op)
11288               {
11289               default:
11290                 error (_("unexpected attribute encountered"));
11291               case OP_ATR_FIRST:
11292                 low = ada_array_bound_from_type (type_arg, tem, 0);
11293                 return value_from_longest (type, low);
11294               case OP_ATR_LAST:
11295                 high = ada_array_bound_from_type (type_arg, tem, 1);
11296                 return value_from_longest (type, high);
11297               case OP_ATR_LENGTH:
11298                 low = ada_array_bound_from_type (type_arg, tem, 0);
11299                 high = ada_array_bound_from_type (type_arg, tem, 1);
11300                 return value_from_longest (type, high - low + 1);
11301               }
11302           }
11303       }
11304
11305     case OP_ATR_TAG:
11306       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11307       if (noside == EVAL_SKIP)
11308         goto nosideret;
11309
11310       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11311         return value_zero (ada_tag_type (arg1), not_lval);
11312
11313       return ada_value_tag (arg1);
11314
11315     case OP_ATR_MIN:
11316     case OP_ATR_MAX:
11317       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11318       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11319       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11320       if (noside == EVAL_SKIP)
11321         goto nosideret;
11322       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11323         return value_zero (value_type (arg1), not_lval);
11324       else
11325         {
11326           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11327           return value_binop (arg1, arg2,
11328                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11329         }
11330
11331     case OP_ATR_MODULUS:
11332       {
11333         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11334
11335         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11336         if (noside == EVAL_SKIP)
11337           goto nosideret;
11338
11339         if (!ada_is_modular_type (type_arg))
11340           error (_("'modulus must be applied to modular type"));
11341
11342         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11343                                    ada_modulus (type_arg));
11344       }
11345
11346
11347     case OP_ATR_POS:
11348       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11349       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11350       if (noside == EVAL_SKIP)
11351         goto nosideret;
11352       type = builtin_type (exp->gdbarch)->builtin_int;
11353       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11354         return value_zero (type, not_lval);
11355       else
11356         return value_pos_atr (type, arg1);
11357
11358     case OP_ATR_SIZE:
11359       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11360       type = value_type (arg1);
11361
11362       /* If the argument is a reference, then dereference its type, since
11363          the user is really asking for the size of the actual object,
11364          not the size of the pointer.  */
11365       if (TYPE_CODE (type) == TYPE_CODE_REF)
11366         type = TYPE_TARGET_TYPE (type);
11367
11368       if (noside == EVAL_SKIP)
11369         goto nosideret;
11370       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11371         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11372       else
11373         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11374                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11375
11376     case OP_ATR_VAL:
11377       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11378       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11379       type = exp->elts[pc + 2].type;
11380       if (noside == EVAL_SKIP)
11381         goto nosideret;
11382       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11383         return value_zero (type, not_lval);
11384       else
11385         return value_val_atr (type, arg1);
11386
11387     case BINOP_EXP:
11388       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11389       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11390       if (noside == EVAL_SKIP)
11391         goto nosideret;
11392       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11393         return value_zero (value_type (arg1), not_lval);
11394       else
11395         {
11396           /* For integer exponentiation operations,
11397              only promote the first argument.  */
11398           if (is_integral_type (value_type (arg2)))
11399             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11400           else
11401             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11402
11403           return value_binop (arg1, arg2, op);
11404         }
11405
11406     case UNOP_PLUS:
11407       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11408       if (noside == EVAL_SKIP)
11409         goto nosideret;
11410       else
11411         return arg1;
11412
11413     case UNOP_ABS:
11414       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11415       if (noside == EVAL_SKIP)
11416         goto nosideret;
11417       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11418       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11419         return value_neg (arg1);
11420       else
11421         return arg1;
11422
11423     case UNOP_IND:
11424       preeval_pos = *pos;
11425       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11426       if (noside == EVAL_SKIP)
11427         goto nosideret;
11428       type = ada_check_typedef (value_type (arg1));
11429       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11430         {
11431           if (ada_is_array_descriptor_type (type))
11432             /* GDB allows dereferencing GNAT array descriptors.  */
11433             {
11434               struct type *arrType = ada_type_of_array (arg1, 0);
11435
11436               if (arrType == NULL)
11437                 error (_("Attempt to dereference null array pointer."));
11438               return value_at_lazy (arrType, 0);
11439             }
11440           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11441                    || TYPE_CODE (type) == TYPE_CODE_REF
11442                    /* In C you can dereference an array to get the 1st elt.  */
11443                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11444             {
11445             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11446                only be determined by inspecting the object's tag.
11447                This means that we need to evaluate completely the
11448                expression in order to get its type.  */
11449
11450               if ((TYPE_CODE (type) == TYPE_CODE_REF
11451                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11452                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11453                 {
11454                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11455                                           EVAL_NORMAL);
11456                   type = value_type (ada_value_ind (arg1));
11457                 }
11458               else
11459                 {
11460                   type = to_static_fixed_type
11461                     (ada_aligned_type
11462                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11463                 }
11464               ada_ensure_varsize_limit (type);
11465               return value_zero (type, lval_memory);
11466             }
11467           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11468             {
11469               /* GDB allows dereferencing an int.  */
11470               if (expect_type == NULL)
11471                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11472                                    lval_memory);
11473               else
11474                 {
11475                   expect_type = 
11476                     to_static_fixed_type (ada_aligned_type (expect_type));
11477                   return value_zero (expect_type, lval_memory);
11478                 }
11479             }
11480           else
11481             error (_("Attempt to take contents of a non-pointer value."));
11482         }
11483       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11484       type = ada_check_typedef (value_type (arg1));
11485
11486       if (TYPE_CODE (type) == TYPE_CODE_INT)
11487           /* GDB allows dereferencing an int.  If we were given
11488              the expect_type, then use that as the target type.
11489              Otherwise, assume that the target type is an int.  */
11490         {
11491           if (expect_type != NULL)
11492             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11493                                               arg1));
11494           else
11495             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11496                                   (CORE_ADDR) value_as_address (arg1));
11497         }
11498
11499       if (ada_is_array_descriptor_type (type))
11500         /* GDB allows dereferencing GNAT array descriptors.  */
11501         return ada_coerce_to_simple_array (arg1);
11502       else
11503         return ada_value_ind (arg1);
11504
11505     case STRUCTOP_STRUCT:
11506       tem = longest_to_int (exp->elts[pc + 1].longconst);
11507       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11508       preeval_pos = *pos;
11509       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11510       if (noside == EVAL_SKIP)
11511         goto nosideret;
11512       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11513         {
11514           struct type *type1 = value_type (arg1);
11515
11516           if (ada_is_tagged_type (type1, 1))
11517             {
11518               type = ada_lookup_struct_elt_type (type1,
11519                                                  &exp->elts[pc + 2].string,
11520                                                  1, 1);
11521
11522               /* If the field is not found, check if it exists in the
11523                  extension of this object's type. This means that we
11524                  need to evaluate completely the expression.  */
11525
11526               if (type == NULL)
11527                 {
11528                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11529                                           EVAL_NORMAL);
11530                   arg1 = ada_value_struct_elt (arg1,
11531                                                &exp->elts[pc + 2].string,
11532                                                0);
11533                   arg1 = unwrap_value (arg1);
11534                   type = value_type (ada_to_fixed_value (arg1));
11535                 }
11536             }
11537           else
11538             type =
11539               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11540                                           0);
11541
11542           return value_zero (ada_aligned_type (type), lval_memory);
11543         }
11544       else
11545         {
11546           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11547           arg1 = unwrap_value (arg1);
11548           return ada_to_fixed_value (arg1);
11549         }
11550
11551     case OP_TYPE:
11552       /* The value is not supposed to be used.  This is here to make it
11553          easier to accommodate expressions that contain types.  */
11554       (*pos) += 2;
11555       if (noside == EVAL_SKIP)
11556         goto nosideret;
11557       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11558         return allocate_value (exp->elts[pc + 1].type);
11559       else
11560         error (_("Attempt to use a type name as an expression"));
11561
11562     case OP_AGGREGATE:
11563     case OP_CHOICES:
11564     case OP_OTHERS:
11565     case OP_DISCRETE_RANGE:
11566     case OP_POSITIONAL:
11567     case OP_NAME:
11568       if (noside == EVAL_NORMAL)
11569         switch (op) 
11570           {
11571           case OP_NAME:
11572             error (_("Undefined name, ambiguous name, or renaming used in "
11573                      "component association: %s."), &exp->elts[pc+2].string);
11574           case OP_AGGREGATE:
11575             error (_("Aggregates only allowed on the right of an assignment"));
11576           default:
11577             internal_error (__FILE__, __LINE__,
11578                             _("aggregate apparently mangled"));
11579           }
11580
11581       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11582       *pos += oplen - 1;
11583       for (tem = 0; tem < nargs; tem += 1) 
11584         ada_evaluate_subexp (NULL, exp, pos, noside);
11585       goto nosideret;
11586     }
11587
11588 nosideret:
11589   return eval_skip_value (exp);
11590 }
11591 \f
11592
11593                                 /* Fixed point */
11594
11595 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11596    type name that encodes the 'small and 'delta information.
11597    Otherwise, return NULL.  */
11598
11599 static const char *
11600 fixed_type_info (struct type *type)
11601 {
11602   const char *name = ada_type_name (type);
11603   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11604
11605   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11606     {
11607       const char *tail = strstr (name, "___XF_");
11608
11609       if (tail == NULL)
11610         return NULL;
11611       else
11612         return tail + 5;
11613     }
11614   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11615     return fixed_type_info (TYPE_TARGET_TYPE (type));
11616   else
11617     return NULL;
11618 }
11619
11620 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11621
11622 int
11623 ada_is_fixed_point_type (struct type *type)
11624 {
11625   return fixed_type_info (type) != NULL;
11626 }
11627
11628 /* Return non-zero iff TYPE represents a System.Address type.  */
11629
11630 int
11631 ada_is_system_address_type (struct type *type)
11632 {
11633   return (TYPE_NAME (type)
11634           && strcmp (TYPE_NAME (type), "system__address") == 0);
11635 }
11636
11637 /* Assuming that TYPE is the representation of an Ada fixed-point
11638    type, return the target floating-point type to be used to represent
11639    of this type during internal computation.  */
11640
11641 static struct type *
11642 ada_scaling_type (struct type *type)
11643 {
11644   return builtin_type (get_type_arch (type))->builtin_long_double;
11645 }
11646
11647 /* Assuming that TYPE is the representation of an Ada fixed-point
11648    type, return its delta, or NULL if the type is malformed and the
11649    delta cannot be determined.  */
11650
11651 struct value *
11652 ada_delta (struct type *type)
11653 {
11654   const char *encoding = fixed_type_info (type);
11655   struct type *scale_type = ada_scaling_type (type);
11656
11657   long long num, den;
11658
11659   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11660     return nullptr;
11661   else
11662     return value_binop (value_from_longest (scale_type, num),
11663                         value_from_longest (scale_type, den), BINOP_DIV);
11664 }
11665
11666 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11667    factor ('SMALL value) associated with the type.  */
11668
11669 struct value *
11670 ada_scaling_factor (struct type *type)
11671 {
11672   const char *encoding = fixed_type_info (type);
11673   struct type *scale_type = ada_scaling_type (type);
11674
11675   long long num0, den0, num1, den1;
11676   int n;
11677
11678   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11679               &num0, &den0, &num1, &den1);
11680
11681   if (n < 2)
11682     return value_from_longest (scale_type, 1);
11683   else if (n == 4)
11684     return value_binop (value_from_longest (scale_type, num1),
11685                         value_from_longest (scale_type, den1), BINOP_DIV);
11686   else
11687     return value_binop (value_from_longest (scale_type, num0),
11688                         value_from_longest (scale_type, den0), BINOP_DIV);
11689 }
11690
11691 \f
11692
11693                                 /* Range types */
11694
11695 /* Scan STR beginning at position K for a discriminant name, and
11696    return the value of that discriminant field of DVAL in *PX.  If
11697    PNEW_K is not null, put the position of the character beyond the
11698    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11699    not alter *PX and *PNEW_K if unsuccessful.  */
11700
11701 static int
11702 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11703                     int *pnew_k)
11704 {
11705   static char *bound_buffer = NULL;
11706   static size_t bound_buffer_len = 0;
11707   const char *pstart, *pend, *bound;
11708   struct value *bound_val;
11709
11710   if (dval == NULL || str == NULL || str[k] == '\0')
11711     return 0;
11712
11713   pstart = str + k;
11714   pend = strstr (pstart, "__");
11715   if (pend == NULL)
11716     {
11717       bound = pstart;
11718       k += strlen (bound);
11719     }
11720   else
11721     {
11722       int len = pend - pstart;
11723
11724       /* Strip __ and beyond.  */
11725       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11726       strncpy (bound_buffer, pstart, len);
11727       bound_buffer[len] = '\0';
11728
11729       bound = bound_buffer;
11730       k = pend - str;
11731     }
11732
11733   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11734   if (bound_val == NULL)
11735     return 0;
11736
11737   *px = value_as_long (bound_val);
11738   if (pnew_k != NULL)
11739     *pnew_k = k;
11740   return 1;
11741 }
11742
11743 /* Value of variable named NAME in the current environment.  If
11744    no such variable found, then if ERR_MSG is null, returns 0, and
11745    otherwise causes an error with message ERR_MSG.  */
11746
11747 static struct value *
11748 get_var_value (const char *name, const char *err_msg)
11749 {
11750   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11751
11752   std::vector<struct block_symbol> syms;
11753   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11754                                              get_selected_block (0),
11755                                              VAR_DOMAIN, &syms, 1);
11756
11757   if (nsyms != 1)
11758     {
11759       if (err_msg == NULL)
11760         return 0;
11761       else
11762         error (("%s"), err_msg);
11763     }
11764
11765   return value_of_variable (syms[0].symbol, syms[0].block);
11766 }
11767
11768 /* Value of integer variable named NAME in the current environment.
11769    If no such variable is found, returns false.  Otherwise, sets VALUE
11770    to the variable's value and returns true.  */
11771
11772 bool
11773 get_int_var_value (const char *name, LONGEST &value)
11774 {
11775   struct value *var_val = get_var_value (name, 0);
11776
11777   if (var_val == 0)
11778     return false;
11779
11780   value = value_as_long (var_val);
11781   return true;
11782 }
11783
11784
11785 /* Return a range type whose base type is that of the range type named
11786    NAME in the current environment, and whose bounds are calculated
11787    from NAME according to the GNAT range encoding conventions.
11788    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11789    corresponding range type from debug information; fall back to using it
11790    if symbol lookup fails.  If a new type must be created, allocate it
11791    like ORIG_TYPE was.  The bounds information, in general, is encoded
11792    in NAME, the base type given in the named range type.  */
11793
11794 static struct type *
11795 to_fixed_range_type (struct type *raw_type, struct value *dval)
11796 {
11797   const char *name;
11798   struct type *base_type;
11799   const char *subtype_info;
11800
11801   gdb_assert (raw_type != NULL);
11802   gdb_assert (TYPE_NAME (raw_type) != NULL);
11803
11804   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11805     base_type = TYPE_TARGET_TYPE (raw_type);
11806   else
11807     base_type = raw_type;
11808
11809   name = TYPE_NAME (raw_type);
11810   subtype_info = strstr (name, "___XD");
11811   if (subtype_info == NULL)
11812     {
11813       LONGEST L = ada_discrete_type_low_bound (raw_type);
11814       LONGEST U = ada_discrete_type_high_bound (raw_type);
11815
11816       if (L < INT_MIN || U > INT_MAX)
11817         return raw_type;
11818       else
11819         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11820                                          L, U);
11821     }
11822   else
11823     {
11824       static char *name_buf = NULL;
11825       static size_t name_len = 0;
11826       int prefix_len = subtype_info - name;
11827       LONGEST L, U;
11828       struct type *type;
11829       const char *bounds_str;
11830       int n;
11831
11832       GROW_VECT (name_buf, name_len, prefix_len + 5);
11833       strncpy (name_buf, name, prefix_len);
11834       name_buf[prefix_len] = '\0';
11835
11836       subtype_info += 5;
11837       bounds_str = strchr (subtype_info, '_');
11838       n = 1;
11839
11840       if (*subtype_info == 'L')
11841         {
11842           if (!ada_scan_number (bounds_str, n, &L, &n)
11843               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11844             return raw_type;
11845           if (bounds_str[n] == '_')
11846             n += 2;
11847           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11848             n += 1;
11849           subtype_info += 1;
11850         }
11851       else
11852         {
11853           strcpy (name_buf + prefix_len, "___L");
11854           if (!get_int_var_value (name_buf, L))
11855             {
11856               lim_warning (_("Unknown lower bound, using 1."));
11857               L = 1;
11858             }
11859         }
11860
11861       if (*subtype_info == 'U')
11862         {
11863           if (!ada_scan_number (bounds_str, n, &U, &n)
11864               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11865             return raw_type;
11866         }
11867       else
11868         {
11869           strcpy (name_buf + prefix_len, "___U");
11870           if (!get_int_var_value (name_buf, U))
11871             {
11872               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11873               U = L;
11874             }
11875         }
11876
11877       type = create_static_range_type (alloc_type_copy (raw_type),
11878                                        base_type, L, U);
11879       /* create_static_range_type alters the resulting type's length
11880          to match the size of the base_type, which is not what we want.
11881          Set it back to the original range type's length.  */
11882       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11883       TYPE_NAME (type) = name;
11884       return type;
11885     }
11886 }
11887
11888 /* True iff NAME is the name of a range type.  */
11889
11890 int
11891 ada_is_range_type_name (const char *name)
11892 {
11893   return (name != NULL && strstr (name, "___XD"));
11894 }
11895 \f
11896
11897                                 /* Modular types */
11898
11899 /* True iff TYPE is an Ada modular type.  */
11900
11901 int
11902 ada_is_modular_type (struct type *type)
11903 {
11904   struct type *subranged_type = get_base_type (type);
11905
11906   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11907           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11908           && TYPE_UNSIGNED (subranged_type));
11909 }
11910
11911 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11912
11913 ULONGEST
11914 ada_modulus (struct type *type)
11915 {
11916   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11917 }
11918 \f
11919
11920 /* Ada exception catchpoint support:
11921    ---------------------------------
11922
11923    We support 3 kinds of exception catchpoints:
11924      . catchpoints on Ada exceptions
11925      . catchpoints on unhandled Ada exceptions
11926      . catchpoints on failed assertions
11927
11928    Exceptions raised during failed assertions, or unhandled exceptions
11929    could perfectly be caught with the general catchpoint on Ada exceptions.
11930    However, we can easily differentiate these two special cases, and having
11931    the option to distinguish these two cases from the rest can be useful
11932    to zero-in on certain situations.
11933
11934    Exception catchpoints are a specialized form of breakpoint,
11935    since they rely on inserting breakpoints inside known routines
11936    of the GNAT runtime.  The implementation therefore uses a standard
11937    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11938    of breakpoint_ops.
11939
11940    Support in the runtime for exception catchpoints have been changed
11941    a few times already, and these changes affect the implementation
11942    of these catchpoints.  In order to be able to support several
11943    variants of the runtime, we use a sniffer that will determine
11944    the runtime variant used by the program being debugged.  */
11945
11946 /* Ada's standard exceptions.
11947
11948    The Ada 83 standard also defined Numeric_Error.  But there so many
11949    situations where it was unclear from the Ada 83 Reference Manual
11950    (RM) whether Constraint_Error or Numeric_Error should be raised,
11951    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11952    Interpretation saying that anytime the RM says that Numeric_Error
11953    should be raised, the implementation may raise Constraint_Error.
11954    Ada 95 went one step further and pretty much removed Numeric_Error
11955    from the list of standard exceptions (it made it a renaming of
11956    Constraint_Error, to help preserve compatibility when compiling
11957    an Ada83 compiler). As such, we do not include Numeric_Error from
11958    this list of standard exceptions.  */
11959
11960 static const char *standard_exc[] = {
11961   "constraint_error",
11962   "program_error",
11963   "storage_error",
11964   "tasking_error"
11965 };
11966
11967 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11968
11969 /* A structure that describes how to support exception catchpoints
11970    for a given executable.  */
11971
11972 struct exception_support_info
11973 {
11974    /* The name of the symbol to break on in order to insert
11975       a catchpoint on exceptions.  */
11976    const char *catch_exception_sym;
11977
11978    /* The name of the symbol to break on in order to insert
11979       a catchpoint on unhandled exceptions.  */
11980    const char *catch_exception_unhandled_sym;
11981
11982    /* The name of the symbol to break on in order to insert
11983       a catchpoint on failed assertions.  */
11984    const char *catch_assert_sym;
11985
11986    /* The name of the symbol to break on in order to insert
11987       a catchpoint on exception handling.  */
11988    const char *catch_handlers_sym;
11989
11990    /* Assuming that the inferior just triggered an unhandled exception
11991       catchpoint, this function is responsible for returning the address
11992       in inferior memory where the name of that exception is stored.
11993       Return zero if the address could not be computed.  */
11994    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11995 };
11996
11997 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11998 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11999
12000 /* The following exception support info structure describes how to
12001    implement exception catchpoints with the latest version of the
12002    Ada runtime (as of 2007-03-06).  */
12003
12004 static const struct exception_support_info default_exception_support_info =
12005 {
12006   "__gnat_debug_raise_exception", /* catch_exception_sym */
12007   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12008   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12009   "__gnat_begin_handler", /* catch_handlers_sym */
12010   ada_unhandled_exception_name_addr
12011 };
12012
12013 /* The following exception support info structure describes how to
12014    implement exception catchpoints with a slightly older version
12015    of the Ada runtime.  */
12016
12017 static const struct exception_support_info exception_support_info_fallback =
12018 {
12019   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12020   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12021   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12022   "__gnat_begin_handler", /* catch_handlers_sym */
12023   ada_unhandled_exception_name_addr_from_raise
12024 };
12025
12026 /* Return nonzero if we can detect the exception support routines
12027    described in EINFO.
12028
12029    This function errors out if an abnormal situation is detected
12030    (for instance, if we find the exception support routines, but
12031    that support is found to be incomplete).  */
12032
12033 static int
12034 ada_has_this_exception_support (const struct exception_support_info *einfo)
12035 {
12036   struct symbol *sym;
12037
12038   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12039      that should be compiled with debugging information.  As a result, we
12040      expect to find that symbol in the symtabs.  */
12041
12042   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12043   if (sym == NULL)
12044     {
12045       /* Perhaps we did not find our symbol because the Ada runtime was
12046          compiled without debugging info, or simply stripped of it.
12047          It happens on some GNU/Linux distributions for instance, where
12048          users have to install a separate debug package in order to get
12049          the runtime's debugging info.  In that situation, let the user
12050          know why we cannot insert an Ada exception catchpoint.
12051
12052          Note: Just for the purpose of inserting our Ada exception
12053          catchpoint, we could rely purely on the associated minimal symbol.
12054          But we would be operating in degraded mode anyway, since we are
12055          still lacking the debugging info needed later on to extract
12056          the name of the exception being raised (this name is printed in
12057          the catchpoint message, and is also used when trying to catch
12058          a specific exception).  We do not handle this case for now.  */
12059       struct bound_minimal_symbol msym
12060         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12061
12062       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12063         error (_("Your Ada runtime appears to be missing some debugging "
12064                  "information.\nCannot insert Ada exception catchpoint "
12065                  "in this configuration."));
12066
12067       return 0;
12068     }
12069
12070   /* Make sure that the symbol we found corresponds to a function.  */
12071
12072   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12073     error (_("Symbol \"%s\" is not a function (class = %d)"),
12074            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12075
12076   return 1;
12077 }
12078
12079 /* Inspect the Ada runtime and determine which exception info structure
12080    should be used to provide support for exception catchpoints.
12081
12082    This function will always set the per-inferior exception_info,
12083    or raise an error.  */
12084
12085 static void
12086 ada_exception_support_info_sniffer (void)
12087 {
12088   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12089
12090   /* If the exception info is already known, then no need to recompute it.  */
12091   if (data->exception_info != NULL)
12092     return;
12093
12094   /* Check the latest (default) exception support info.  */
12095   if (ada_has_this_exception_support (&default_exception_support_info))
12096     {
12097       data->exception_info = &default_exception_support_info;
12098       return;
12099     }
12100
12101   /* Try our fallback exception suport info.  */
12102   if (ada_has_this_exception_support (&exception_support_info_fallback))
12103     {
12104       data->exception_info = &exception_support_info_fallback;
12105       return;
12106     }
12107
12108   /* Sometimes, it is normal for us to not be able to find the routine
12109      we are looking for.  This happens when the program is linked with
12110      the shared version of the GNAT runtime, and the program has not been
12111      started yet.  Inform the user of these two possible causes if
12112      applicable.  */
12113
12114   if (ada_update_initial_language (language_unknown) != language_ada)
12115     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12116
12117   /* If the symbol does not exist, then check that the program is
12118      already started, to make sure that shared libraries have been
12119      loaded.  If it is not started, this may mean that the symbol is
12120      in a shared library.  */
12121
12122   if (inferior_ptid.pid () == 0)
12123     error (_("Unable to insert catchpoint. Try to start the program first."));
12124
12125   /* At this point, we know that we are debugging an Ada program and
12126      that the inferior has been started, but we still are not able to
12127      find the run-time symbols.  That can mean that we are in
12128      configurable run time mode, or that a-except as been optimized
12129      out by the linker...  In any case, at this point it is not worth
12130      supporting this feature.  */
12131
12132   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12133 }
12134
12135 /* True iff FRAME is very likely to be that of a function that is
12136    part of the runtime system.  This is all very heuristic, but is
12137    intended to be used as advice as to what frames are uninteresting
12138    to most users.  */
12139
12140 static int
12141 is_known_support_routine (struct frame_info *frame)
12142 {
12143   enum language func_lang;
12144   int i;
12145   const char *fullname;
12146
12147   /* If this code does not have any debugging information (no symtab),
12148      This cannot be any user code.  */
12149
12150   symtab_and_line sal = find_frame_sal (frame);
12151   if (sal.symtab == NULL)
12152     return 1;
12153
12154   /* If there is a symtab, but the associated source file cannot be
12155      located, then assume this is not user code:  Selecting a frame
12156      for which we cannot display the code would not be very helpful
12157      for the user.  This should also take care of case such as VxWorks
12158      where the kernel has some debugging info provided for a few units.  */
12159
12160   fullname = symtab_to_fullname (sal.symtab);
12161   if (access (fullname, R_OK) != 0)
12162     return 1;
12163
12164   /* Check the unit filename againt the Ada runtime file naming.
12165      We also check the name of the objfile against the name of some
12166      known system libraries that sometimes come with debugging info
12167      too.  */
12168
12169   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12170     {
12171       re_comp (known_runtime_file_name_patterns[i]);
12172       if (re_exec (lbasename (sal.symtab->filename)))
12173         return 1;
12174       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12175           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12176         return 1;
12177     }
12178
12179   /* Check whether the function is a GNAT-generated entity.  */
12180
12181   gdb::unique_xmalloc_ptr<char> func_name
12182     = find_frame_funname (frame, &func_lang, NULL);
12183   if (func_name == NULL)
12184     return 1;
12185
12186   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12187     {
12188       re_comp (known_auxiliary_function_name_patterns[i]);
12189       if (re_exec (func_name.get ()))
12190         return 1;
12191     }
12192
12193   return 0;
12194 }
12195
12196 /* Find the first frame that contains debugging information and that is not
12197    part of the Ada run-time, starting from FI and moving upward.  */
12198
12199 void
12200 ada_find_printable_frame (struct frame_info *fi)
12201 {
12202   for (; fi != NULL; fi = get_prev_frame (fi))
12203     {
12204       if (!is_known_support_routine (fi))
12205         {
12206           select_frame (fi);
12207           break;
12208         }
12209     }
12210
12211 }
12212
12213 /* Assuming that the inferior just triggered an unhandled exception
12214    catchpoint, return the address in inferior memory where the name
12215    of the exception is stored.
12216    
12217    Return zero if the address could not be computed.  */
12218
12219 static CORE_ADDR
12220 ada_unhandled_exception_name_addr (void)
12221 {
12222   return parse_and_eval_address ("e.full_name");
12223 }
12224
12225 /* Same as ada_unhandled_exception_name_addr, except that this function
12226    should be used when the inferior uses an older version of the runtime,
12227    where the exception name needs to be extracted from a specific frame
12228    several frames up in the callstack.  */
12229
12230 static CORE_ADDR
12231 ada_unhandled_exception_name_addr_from_raise (void)
12232 {
12233   int frame_level;
12234   struct frame_info *fi;
12235   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12236
12237   /* To determine the name of this exception, we need to select
12238      the frame corresponding to RAISE_SYM_NAME.  This frame is
12239      at least 3 levels up, so we simply skip the first 3 frames
12240      without checking the name of their associated function.  */
12241   fi = get_current_frame ();
12242   for (frame_level = 0; frame_level < 3; frame_level += 1)
12243     if (fi != NULL)
12244       fi = get_prev_frame (fi); 
12245
12246   while (fi != NULL)
12247     {
12248       enum language func_lang;
12249
12250       gdb::unique_xmalloc_ptr<char> func_name
12251         = find_frame_funname (fi, &func_lang, NULL);
12252       if (func_name != NULL)
12253         {
12254           if (strcmp (func_name.get (),
12255                       data->exception_info->catch_exception_sym) == 0)
12256             break; /* We found the frame we were looking for...  */
12257         }
12258       fi = get_prev_frame (fi);
12259     }
12260
12261   if (fi == NULL)
12262     return 0;
12263
12264   select_frame (fi);
12265   return parse_and_eval_address ("id.full_name");
12266 }
12267
12268 /* Assuming the inferior just triggered an Ada exception catchpoint
12269    (of any type), return the address in inferior memory where the name
12270    of the exception is stored, if applicable.
12271
12272    Assumes the selected frame is the current frame.
12273
12274    Return zero if the address could not be computed, or if not relevant.  */
12275
12276 static CORE_ADDR
12277 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12278                            struct breakpoint *b)
12279 {
12280   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12281
12282   switch (ex)
12283     {
12284       case ada_catch_exception:
12285         return (parse_and_eval_address ("e.full_name"));
12286         break;
12287
12288       case ada_catch_exception_unhandled:
12289         return data->exception_info->unhandled_exception_name_addr ();
12290         break;
12291
12292       case ada_catch_handlers:
12293         return 0;  /* The runtimes does not provide access to the exception
12294                       name.  */
12295         break;
12296
12297       case ada_catch_assert:
12298         return 0;  /* Exception name is not relevant in this case.  */
12299         break;
12300
12301       default:
12302         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12303         break;
12304     }
12305
12306   return 0; /* Should never be reached.  */
12307 }
12308
12309 /* Assuming the inferior is stopped at an exception catchpoint,
12310    return the message which was associated to the exception, if
12311    available.  Return NULL if the message could not be retrieved.
12312
12313    Note: The exception message can be associated to an exception
12314    either through the use of the Raise_Exception function, or
12315    more simply (Ada 2005 and later), via:
12316
12317        raise Exception_Name with "exception message";
12318
12319    */
12320
12321 static gdb::unique_xmalloc_ptr<char>
12322 ada_exception_message_1 (void)
12323 {
12324   struct value *e_msg_val;
12325   int e_msg_len;
12326
12327   /* For runtimes that support this feature, the exception message
12328      is passed as an unbounded string argument called "message".  */
12329   e_msg_val = parse_and_eval ("message");
12330   if (e_msg_val == NULL)
12331     return NULL; /* Exception message not supported.  */
12332
12333   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12334   gdb_assert (e_msg_val != NULL);
12335   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12336
12337   /* If the message string is empty, then treat it as if there was
12338      no exception message.  */
12339   if (e_msg_len <= 0)
12340     return NULL;
12341
12342   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12343   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12344   e_msg.get ()[e_msg_len] = '\0';
12345
12346   return e_msg;
12347 }
12348
12349 /* Same as ada_exception_message_1, except that all exceptions are
12350    contained here (returning NULL instead).  */
12351
12352 static gdb::unique_xmalloc_ptr<char>
12353 ada_exception_message (void)
12354 {
12355   gdb::unique_xmalloc_ptr<char> e_msg;
12356
12357   TRY
12358     {
12359       e_msg = ada_exception_message_1 ();
12360     }
12361   CATCH (e, RETURN_MASK_ERROR)
12362     {
12363       e_msg.reset (nullptr);
12364     }
12365   END_CATCH
12366
12367   return e_msg;
12368 }
12369
12370 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12371    any error that ada_exception_name_addr_1 might cause to be thrown.
12372    When an error is intercepted, a warning with the error message is printed,
12373    and zero is returned.  */
12374
12375 static CORE_ADDR
12376 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12377                          struct breakpoint *b)
12378 {
12379   CORE_ADDR result = 0;
12380
12381   TRY
12382     {
12383       result = ada_exception_name_addr_1 (ex, b);
12384     }
12385
12386   CATCH (e, RETURN_MASK_ERROR)
12387     {
12388       warning (_("failed to get exception name: %s"), e.message);
12389       return 0;
12390     }
12391   END_CATCH
12392
12393   return result;
12394 }
12395
12396 static std::string ada_exception_catchpoint_cond_string
12397   (const char *excep_string,
12398    enum ada_exception_catchpoint_kind ex);
12399
12400 /* Ada catchpoints.
12401
12402    In the case of catchpoints on Ada exceptions, the catchpoint will
12403    stop the target on every exception the program throws.  When a user
12404    specifies the name of a specific exception, we translate this
12405    request into a condition expression (in text form), and then parse
12406    it into an expression stored in each of the catchpoint's locations.
12407    We then use this condition to check whether the exception that was
12408    raised is the one the user is interested in.  If not, then the
12409    target is resumed again.  We store the name of the requested
12410    exception, in order to be able to re-set the condition expression
12411    when symbols change.  */
12412
12413 /* An instance of this type is used to represent an Ada catchpoint
12414    breakpoint location.  */
12415
12416 class ada_catchpoint_location : public bp_location
12417 {
12418 public:
12419   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12420     : bp_location (ops, owner)
12421   {}
12422
12423   /* The condition that checks whether the exception that was raised
12424      is the specific exception the user specified on catchpoint
12425      creation.  */
12426   expression_up excep_cond_expr;
12427 };
12428
12429 /* Implement the DTOR method in the bp_location_ops structure for all
12430    Ada exception catchpoint kinds.  */
12431
12432 static void
12433 ada_catchpoint_location_dtor (struct bp_location *bl)
12434 {
12435   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12436
12437   al->excep_cond_expr.reset ();
12438 }
12439
12440 /* The vtable to be used in Ada catchpoint locations.  */
12441
12442 static const struct bp_location_ops ada_catchpoint_location_ops =
12443 {
12444   ada_catchpoint_location_dtor
12445 };
12446
12447 /* An instance of this type is used to represent an Ada catchpoint.  */
12448
12449 struct ada_catchpoint : public breakpoint
12450 {
12451   /* The name of the specific exception the user specified.  */
12452   std::string excep_string;
12453 };
12454
12455 /* Parse the exception condition string in the context of each of the
12456    catchpoint's locations, and store them for later evaluation.  */
12457
12458 static void
12459 create_excep_cond_exprs (struct ada_catchpoint *c,
12460                          enum ada_exception_catchpoint_kind ex)
12461 {
12462   struct bp_location *bl;
12463
12464   /* Nothing to do if there's no specific exception to catch.  */
12465   if (c->excep_string.empty ())
12466     return;
12467
12468   /* Same if there are no locations... */
12469   if (c->loc == NULL)
12470     return;
12471
12472   /* Compute the condition expression in text form, from the specific
12473      expection we want to catch.  */
12474   std::string cond_string
12475     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12476
12477   /* Iterate over all the catchpoint's locations, and parse an
12478      expression for each.  */
12479   for (bl = c->loc; bl != NULL; bl = bl->next)
12480     {
12481       struct ada_catchpoint_location *ada_loc
12482         = (struct ada_catchpoint_location *) bl;
12483       expression_up exp;
12484
12485       if (!bl->shlib_disabled)
12486         {
12487           const char *s;
12488
12489           s = cond_string.c_str ();
12490           TRY
12491             {
12492               exp = parse_exp_1 (&s, bl->address,
12493                                  block_for_pc (bl->address),
12494                                  0);
12495             }
12496           CATCH (e, RETURN_MASK_ERROR)
12497             {
12498               warning (_("failed to reevaluate internal exception condition "
12499                          "for catchpoint %d: %s"),
12500                        c->number, e.message);
12501             }
12502           END_CATCH
12503         }
12504
12505       ada_loc->excep_cond_expr = std::move (exp);
12506     }
12507 }
12508
12509 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12510    structure for all exception catchpoint kinds.  */
12511
12512 static struct bp_location *
12513 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12514                              struct breakpoint *self)
12515 {
12516   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12517 }
12518
12519 /* Implement the RE_SET method in the breakpoint_ops structure for all
12520    exception catchpoint kinds.  */
12521
12522 static void
12523 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12524 {
12525   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12526
12527   /* Call the base class's method.  This updates the catchpoint's
12528      locations.  */
12529   bkpt_breakpoint_ops.re_set (b);
12530
12531   /* Reparse the exception conditional expressions.  One for each
12532      location.  */
12533   create_excep_cond_exprs (c, ex);
12534 }
12535
12536 /* Returns true if we should stop for this breakpoint hit.  If the
12537    user specified a specific exception, we only want to cause a stop
12538    if the program thrown that exception.  */
12539
12540 static int
12541 should_stop_exception (const struct bp_location *bl)
12542 {
12543   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12544   const struct ada_catchpoint_location *ada_loc
12545     = (const struct ada_catchpoint_location *) bl;
12546   int stop;
12547
12548   /* With no specific exception, should always stop.  */
12549   if (c->excep_string.empty ())
12550     return 1;
12551
12552   if (ada_loc->excep_cond_expr == NULL)
12553     {
12554       /* We will have a NULL expression if back when we were creating
12555          the expressions, this location's had failed to parse.  */
12556       return 1;
12557     }
12558
12559   stop = 1;
12560   TRY
12561     {
12562       struct value *mark;
12563
12564       mark = value_mark ();
12565       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12566       value_free_to_mark (mark);
12567     }
12568   CATCH (ex, RETURN_MASK_ALL)
12569     {
12570       exception_fprintf (gdb_stderr, ex,
12571                          _("Error in testing exception condition:\n"));
12572     }
12573   END_CATCH
12574
12575   return stop;
12576 }
12577
12578 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12579    for all exception catchpoint kinds.  */
12580
12581 static void
12582 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12583 {
12584   bs->stop = should_stop_exception (bs->bp_location_at);
12585 }
12586
12587 /* Implement the PRINT_IT method in the breakpoint_ops structure
12588    for all exception catchpoint kinds.  */
12589
12590 static enum print_stop_action
12591 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12592 {
12593   struct ui_out *uiout = current_uiout;
12594   struct breakpoint *b = bs->breakpoint_at;
12595
12596   annotate_catchpoint (b->number);
12597
12598   if (uiout->is_mi_like_p ())
12599     {
12600       uiout->field_string ("reason",
12601                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12602       uiout->field_string ("disp", bpdisp_text (b->disposition));
12603     }
12604
12605   uiout->text (b->disposition == disp_del
12606                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12607   uiout->field_int ("bkptno", b->number);
12608   uiout->text (", ");
12609
12610   /* ada_exception_name_addr relies on the selected frame being the
12611      current frame.  Need to do this here because this function may be
12612      called more than once when printing a stop, and below, we'll
12613      select the first frame past the Ada run-time (see
12614      ada_find_printable_frame).  */
12615   select_frame (get_current_frame ());
12616
12617   switch (ex)
12618     {
12619       case ada_catch_exception:
12620       case ada_catch_exception_unhandled:
12621       case ada_catch_handlers:
12622         {
12623           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12624           char exception_name[256];
12625
12626           if (addr != 0)
12627             {
12628               read_memory (addr, (gdb_byte *) exception_name,
12629                            sizeof (exception_name) - 1);
12630               exception_name [sizeof (exception_name) - 1] = '\0';
12631             }
12632           else
12633             {
12634               /* For some reason, we were unable to read the exception
12635                  name.  This could happen if the Runtime was compiled
12636                  without debugging info, for instance.  In that case,
12637                  just replace the exception name by the generic string
12638                  "exception" - it will read as "an exception" in the
12639                  notification we are about to print.  */
12640               memcpy (exception_name, "exception", sizeof ("exception"));
12641             }
12642           /* In the case of unhandled exception breakpoints, we print
12643              the exception name as "unhandled EXCEPTION_NAME", to make
12644              it clearer to the user which kind of catchpoint just got
12645              hit.  We used ui_out_text to make sure that this extra
12646              info does not pollute the exception name in the MI case.  */
12647           if (ex == ada_catch_exception_unhandled)
12648             uiout->text ("unhandled ");
12649           uiout->field_string ("exception-name", exception_name);
12650         }
12651         break;
12652       case ada_catch_assert:
12653         /* In this case, the name of the exception is not really
12654            important.  Just print "failed assertion" to make it clearer
12655            that his program just hit an assertion-failure catchpoint.
12656            We used ui_out_text because this info does not belong in
12657            the MI output.  */
12658         uiout->text ("failed assertion");
12659         break;
12660     }
12661
12662   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12663   if (exception_message != NULL)
12664     {
12665       uiout->text (" (");
12666       uiout->field_string ("exception-message", exception_message.get ());
12667       uiout->text (")");
12668     }
12669
12670   uiout->text (" at ");
12671   ada_find_printable_frame (get_current_frame ());
12672
12673   return PRINT_SRC_AND_LOC;
12674 }
12675
12676 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12677    for all exception catchpoint kinds.  */
12678
12679 static void
12680 print_one_exception (enum ada_exception_catchpoint_kind ex,
12681                      struct breakpoint *b, struct bp_location **last_loc)
12682
12683   struct ui_out *uiout = current_uiout;
12684   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12685   struct value_print_options opts;
12686
12687   get_user_print_options (&opts);
12688   if (opts.addressprint)
12689     {
12690       annotate_field (4);
12691       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12692     }
12693
12694   annotate_field (5);
12695   *last_loc = b->loc;
12696   switch (ex)
12697     {
12698       case ada_catch_exception:
12699         if (!c->excep_string.empty ())
12700           {
12701             std::string msg = string_printf (_("`%s' Ada exception"),
12702                                              c->excep_string.c_str ());
12703
12704             uiout->field_string ("what", msg);
12705           }
12706         else
12707           uiout->field_string ("what", "all Ada exceptions");
12708         
12709         break;
12710
12711       case ada_catch_exception_unhandled:
12712         uiout->field_string ("what", "unhandled Ada exceptions");
12713         break;
12714       
12715       case ada_catch_handlers:
12716         if (!c->excep_string.empty ())
12717           {
12718             uiout->field_fmt ("what",
12719                               _("`%s' Ada exception handlers"),
12720                               c->excep_string.c_str ());
12721           }
12722         else
12723           uiout->field_string ("what", "all Ada exceptions handlers");
12724         break;
12725
12726       case ada_catch_assert:
12727         uiout->field_string ("what", "failed Ada assertions");
12728         break;
12729
12730       default:
12731         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12732         break;
12733     }
12734 }
12735
12736 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12737    for all exception catchpoint kinds.  */
12738
12739 static void
12740 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12741                          struct breakpoint *b)
12742 {
12743   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12744   struct ui_out *uiout = current_uiout;
12745
12746   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12747                                                  : _("Catchpoint "));
12748   uiout->field_int ("bkptno", b->number);
12749   uiout->text (": ");
12750
12751   switch (ex)
12752     {
12753       case ada_catch_exception:
12754         if (!c->excep_string.empty ())
12755           {
12756             std::string info = string_printf (_("`%s' Ada exception"),
12757                                               c->excep_string.c_str ());
12758             uiout->text (info.c_str ());
12759           }
12760         else
12761           uiout->text (_("all Ada exceptions"));
12762         break;
12763
12764       case ada_catch_exception_unhandled:
12765         uiout->text (_("unhandled Ada exceptions"));
12766         break;
12767
12768       case ada_catch_handlers:
12769         if (!c->excep_string.empty ())
12770           {
12771             std::string info
12772               = string_printf (_("`%s' Ada exception handlers"),
12773                                c->excep_string.c_str ());
12774             uiout->text (info.c_str ());
12775           }
12776         else
12777           uiout->text (_("all Ada exceptions handlers"));
12778         break;
12779
12780       case ada_catch_assert:
12781         uiout->text (_("failed Ada assertions"));
12782         break;
12783
12784       default:
12785         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12786         break;
12787     }
12788 }
12789
12790 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12791    for all exception catchpoint kinds.  */
12792
12793 static void
12794 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12795                           struct breakpoint *b, struct ui_file *fp)
12796 {
12797   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12798
12799   switch (ex)
12800     {
12801       case ada_catch_exception:
12802         fprintf_filtered (fp, "catch exception");
12803         if (!c->excep_string.empty ())
12804           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12805         break;
12806
12807       case ada_catch_exception_unhandled:
12808         fprintf_filtered (fp, "catch exception unhandled");
12809         break;
12810
12811       case ada_catch_handlers:
12812         fprintf_filtered (fp, "catch handlers");
12813         break;
12814
12815       case ada_catch_assert:
12816         fprintf_filtered (fp, "catch assert");
12817         break;
12818
12819       default:
12820         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12821     }
12822   print_recreate_thread (b, fp);
12823 }
12824
12825 /* Virtual table for "catch exception" breakpoints.  */
12826
12827 static struct bp_location *
12828 allocate_location_catch_exception (struct breakpoint *self)
12829 {
12830   return allocate_location_exception (ada_catch_exception, self);
12831 }
12832
12833 static void
12834 re_set_catch_exception (struct breakpoint *b)
12835 {
12836   re_set_exception (ada_catch_exception, b);
12837 }
12838
12839 static void
12840 check_status_catch_exception (bpstat bs)
12841 {
12842   check_status_exception (ada_catch_exception, bs);
12843 }
12844
12845 static enum print_stop_action
12846 print_it_catch_exception (bpstat bs)
12847 {
12848   return print_it_exception (ada_catch_exception, bs);
12849 }
12850
12851 static void
12852 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12853 {
12854   print_one_exception (ada_catch_exception, b, last_loc);
12855 }
12856
12857 static void
12858 print_mention_catch_exception (struct breakpoint *b)
12859 {
12860   print_mention_exception (ada_catch_exception, b);
12861 }
12862
12863 static void
12864 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12865 {
12866   print_recreate_exception (ada_catch_exception, b, fp);
12867 }
12868
12869 static struct breakpoint_ops catch_exception_breakpoint_ops;
12870
12871 /* Virtual table for "catch exception unhandled" breakpoints.  */
12872
12873 static struct bp_location *
12874 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12875 {
12876   return allocate_location_exception (ada_catch_exception_unhandled, self);
12877 }
12878
12879 static void
12880 re_set_catch_exception_unhandled (struct breakpoint *b)
12881 {
12882   re_set_exception (ada_catch_exception_unhandled, b);
12883 }
12884
12885 static void
12886 check_status_catch_exception_unhandled (bpstat bs)
12887 {
12888   check_status_exception (ada_catch_exception_unhandled, bs);
12889 }
12890
12891 static enum print_stop_action
12892 print_it_catch_exception_unhandled (bpstat bs)
12893 {
12894   return print_it_exception (ada_catch_exception_unhandled, bs);
12895 }
12896
12897 static void
12898 print_one_catch_exception_unhandled (struct breakpoint *b,
12899                                      struct bp_location **last_loc)
12900 {
12901   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12902 }
12903
12904 static void
12905 print_mention_catch_exception_unhandled (struct breakpoint *b)
12906 {
12907   print_mention_exception (ada_catch_exception_unhandled, b);
12908 }
12909
12910 static void
12911 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12912                                           struct ui_file *fp)
12913 {
12914   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12915 }
12916
12917 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12918
12919 /* Virtual table for "catch assert" breakpoints.  */
12920
12921 static struct bp_location *
12922 allocate_location_catch_assert (struct breakpoint *self)
12923 {
12924   return allocate_location_exception (ada_catch_assert, self);
12925 }
12926
12927 static void
12928 re_set_catch_assert (struct breakpoint *b)
12929 {
12930   re_set_exception (ada_catch_assert, b);
12931 }
12932
12933 static void
12934 check_status_catch_assert (bpstat bs)
12935 {
12936   check_status_exception (ada_catch_assert, bs);
12937 }
12938
12939 static enum print_stop_action
12940 print_it_catch_assert (bpstat bs)
12941 {
12942   return print_it_exception (ada_catch_assert, bs);
12943 }
12944
12945 static void
12946 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12947 {
12948   print_one_exception (ada_catch_assert, b, last_loc);
12949 }
12950
12951 static void
12952 print_mention_catch_assert (struct breakpoint *b)
12953 {
12954   print_mention_exception (ada_catch_assert, b);
12955 }
12956
12957 static void
12958 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12959 {
12960   print_recreate_exception (ada_catch_assert, b, fp);
12961 }
12962
12963 static struct breakpoint_ops catch_assert_breakpoint_ops;
12964
12965 /* Virtual table for "catch handlers" breakpoints.  */
12966
12967 static struct bp_location *
12968 allocate_location_catch_handlers (struct breakpoint *self)
12969 {
12970   return allocate_location_exception (ada_catch_handlers, self);
12971 }
12972
12973 static void
12974 re_set_catch_handlers (struct breakpoint *b)
12975 {
12976   re_set_exception (ada_catch_handlers, b);
12977 }
12978
12979 static void
12980 check_status_catch_handlers (bpstat bs)
12981 {
12982   check_status_exception (ada_catch_handlers, bs);
12983 }
12984
12985 static enum print_stop_action
12986 print_it_catch_handlers (bpstat bs)
12987 {
12988   return print_it_exception (ada_catch_handlers, bs);
12989 }
12990
12991 static void
12992 print_one_catch_handlers (struct breakpoint *b,
12993                           struct bp_location **last_loc)
12994 {
12995   print_one_exception (ada_catch_handlers, b, last_loc);
12996 }
12997
12998 static void
12999 print_mention_catch_handlers (struct breakpoint *b)
13000 {
13001   print_mention_exception (ada_catch_handlers, b);
13002 }
13003
13004 static void
13005 print_recreate_catch_handlers (struct breakpoint *b,
13006                                struct ui_file *fp)
13007 {
13008   print_recreate_exception (ada_catch_handlers, b, fp);
13009 }
13010
13011 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13012
13013 /* Split the arguments specified in a "catch exception" command.  
13014    Set EX to the appropriate catchpoint type.
13015    Set EXCEP_STRING to the name of the specific exception if
13016    specified by the user.
13017    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13018    "catch handlers" command.  False otherwise.
13019    If a condition is found at the end of the arguments, the condition
13020    expression is stored in COND_STRING (memory must be deallocated
13021    after use).  Otherwise COND_STRING is set to NULL.  */
13022
13023 static void
13024 catch_ada_exception_command_split (const char *args,
13025                                    bool is_catch_handlers_cmd,
13026                                    enum ada_exception_catchpoint_kind *ex,
13027                                    std::string *excep_string,
13028                                    std::string *cond_string)
13029 {
13030   std::string exception_name;
13031
13032   exception_name = extract_arg (&args);
13033   if (exception_name == "if")
13034     {
13035       /* This is not an exception name; this is the start of a condition
13036          expression for a catchpoint on all exceptions.  So, "un-get"
13037          this token, and set exception_name to NULL.  */
13038       exception_name.clear ();
13039       args -= 2;
13040     }
13041
13042   /* Check to see if we have a condition.  */
13043
13044   args = skip_spaces (args);
13045   if (startswith (args, "if")
13046       && (isspace (args[2]) || args[2] == '\0'))
13047     {
13048       args += 2;
13049       args = skip_spaces (args);
13050
13051       if (args[0] == '\0')
13052         error (_("Condition missing after `if' keyword"));
13053       *cond_string = args;
13054
13055       args += strlen (args);
13056     }
13057
13058   /* Check that we do not have any more arguments.  Anything else
13059      is unexpected.  */
13060
13061   if (args[0] != '\0')
13062     error (_("Junk at end of expression"));
13063
13064   if (is_catch_handlers_cmd)
13065     {
13066       /* Catch handling of exceptions.  */
13067       *ex = ada_catch_handlers;
13068       *excep_string = exception_name;
13069     }
13070   else if (exception_name.empty ())
13071     {
13072       /* Catch all exceptions.  */
13073       *ex = ada_catch_exception;
13074       excep_string->clear ();
13075     }
13076   else if (exception_name == "unhandled")
13077     {
13078       /* Catch unhandled exceptions.  */
13079       *ex = ada_catch_exception_unhandled;
13080       excep_string->clear ();
13081     }
13082   else
13083     {
13084       /* Catch a specific exception.  */
13085       *ex = ada_catch_exception;
13086       *excep_string = exception_name;
13087     }
13088 }
13089
13090 /* Return the name of the symbol on which we should break in order to
13091    implement a catchpoint of the EX kind.  */
13092
13093 static const char *
13094 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13095 {
13096   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13097
13098   gdb_assert (data->exception_info != NULL);
13099
13100   switch (ex)
13101     {
13102       case ada_catch_exception:
13103         return (data->exception_info->catch_exception_sym);
13104         break;
13105       case ada_catch_exception_unhandled:
13106         return (data->exception_info->catch_exception_unhandled_sym);
13107         break;
13108       case ada_catch_assert:
13109         return (data->exception_info->catch_assert_sym);
13110         break;
13111       case ada_catch_handlers:
13112         return (data->exception_info->catch_handlers_sym);
13113         break;
13114       default:
13115         internal_error (__FILE__, __LINE__,
13116                         _("unexpected catchpoint kind (%d)"), ex);
13117     }
13118 }
13119
13120 /* Return the breakpoint ops "virtual table" used for catchpoints
13121    of the EX kind.  */
13122
13123 static const struct breakpoint_ops *
13124 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13125 {
13126   switch (ex)
13127     {
13128       case ada_catch_exception:
13129         return (&catch_exception_breakpoint_ops);
13130         break;
13131       case ada_catch_exception_unhandled:
13132         return (&catch_exception_unhandled_breakpoint_ops);
13133         break;
13134       case ada_catch_assert:
13135         return (&catch_assert_breakpoint_ops);
13136         break;
13137       case ada_catch_handlers:
13138         return (&catch_handlers_breakpoint_ops);
13139         break;
13140       default:
13141         internal_error (__FILE__, __LINE__,
13142                         _("unexpected catchpoint kind (%d)"), ex);
13143     }
13144 }
13145
13146 /* Return the condition that will be used to match the current exception
13147    being raised with the exception that the user wants to catch.  This
13148    assumes that this condition is used when the inferior just triggered
13149    an exception catchpoint.
13150    EX: the type of catchpoints used for catching Ada exceptions.  */
13151
13152 static std::string
13153 ada_exception_catchpoint_cond_string (const char *excep_string,
13154                                       enum ada_exception_catchpoint_kind ex)
13155 {
13156   int i;
13157   bool is_standard_exc = false;
13158   std::string result;
13159
13160   if (ex == ada_catch_handlers)
13161     {
13162       /* For exception handlers catchpoints, the condition string does
13163          not use the same parameter as for the other exceptions.  */
13164       result = ("long_integer (GNAT_GCC_exception_Access"
13165                 "(gcc_exception).all.occurrence.id)");
13166     }
13167   else
13168     result = "long_integer (e)";
13169
13170   /* The standard exceptions are a special case.  They are defined in
13171      runtime units that have been compiled without debugging info; if
13172      EXCEP_STRING is the not-fully-qualified name of a standard
13173      exception (e.g. "constraint_error") then, during the evaluation
13174      of the condition expression, the symbol lookup on this name would
13175      *not* return this standard exception.  The catchpoint condition
13176      may then be set only on user-defined exceptions which have the
13177      same not-fully-qualified name (e.g. my_package.constraint_error).
13178
13179      To avoid this unexcepted behavior, these standard exceptions are
13180      systematically prefixed by "standard".  This means that "catch
13181      exception constraint_error" is rewritten into "catch exception
13182      standard.constraint_error".
13183
13184      If an exception named contraint_error is defined in another package of
13185      the inferior program, then the only way to specify this exception as a
13186      breakpoint condition is to use its fully-qualified named:
13187      e.g. my_package.constraint_error.  */
13188
13189   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13190     {
13191       if (strcmp (standard_exc [i], excep_string) == 0)
13192         {
13193           is_standard_exc = true;
13194           break;
13195         }
13196     }
13197
13198   result += " = ";
13199
13200   if (is_standard_exc)
13201     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13202   else
13203     string_appendf (result, "long_integer (&%s)", excep_string);
13204
13205   return result;
13206 }
13207
13208 /* Return the symtab_and_line that should be used to insert an exception
13209    catchpoint of the TYPE kind.
13210
13211    ADDR_STRING returns the name of the function where the real
13212    breakpoint that implements the catchpoints is set, depending on the
13213    type of catchpoint we need to create.  */
13214
13215 static struct symtab_and_line
13216 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13217                    const char **addr_string, const struct breakpoint_ops **ops)
13218 {
13219   const char *sym_name;
13220   struct symbol *sym;
13221
13222   /* First, find out which exception support info to use.  */
13223   ada_exception_support_info_sniffer ();
13224
13225   /* Then lookup the function on which we will break in order to catch
13226      the Ada exceptions requested by the user.  */
13227   sym_name = ada_exception_sym_name (ex);
13228   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13229
13230   if (sym == NULL)
13231     error (_("Catchpoint symbol not found: %s"), sym_name);
13232
13233   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13234     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13235
13236   /* Set ADDR_STRING.  */
13237   *addr_string = xstrdup (sym_name);
13238
13239   /* Set OPS.  */
13240   *ops = ada_exception_breakpoint_ops (ex);
13241
13242   return find_function_start_sal (sym, 1);
13243 }
13244
13245 /* Create an Ada exception catchpoint.
13246
13247    EX_KIND is the kind of exception catchpoint to be created.
13248
13249    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13250    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13251    of the exception to which this catchpoint applies.
13252
13253    COND_STRING, if not empty, is the catchpoint condition.
13254
13255    TEMPFLAG, if nonzero, means that the underlying breakpoint
13256    should be temporary.
13257
13258    FROM_TTY is the usual argument passed to all commands implementations.  */
13259
13260 void
13261 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13262                                  enum ada_exception_catchpoint_kind ex_kind,
13263                                  const std::string &excep_string,
13264                                  const std::string &cond_string,
13265                                  int tempflag,
13266                                  int disabled,
13267                                  int from_tty)
13268 {
13269   const char *addr_string = NULL;
13270   const struct breakpoint_ops *ops = NULL;
13271   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13272
13273   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13274   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13275                                  ops, tempflag, disabled, from_tty);
13276   c->excep_string = excep_string;
13277   create_excep_cond_exprs (c.get (), ex_kind);
13278   if (!cond_string.empty ())
13279     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13280   install_breakpoint (0, std::move (c), 1);
13281 }
13282
13283 /* Implement the "catch exception" command.  */
13284
13285 static void
13286 catch_ada_exception_command (const char *arg_entry, int from_tty,
13287                              struct cmd_list_element *command)
13288 {
13289   const char *arg = arg_entry;
13290   struct gdbarch *gdbarch = get_current_arch ();
13291   int tempflag;
13292   enum ada_exception_catchpoint_kind ex_kind;
13293   std::string excep_string;
13294   std::string cond_string;
13295
13296   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13297
13298   if (!arg)
13299     arg = "";
13300   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13301                                      &cond_string);
13302   create_ada_exception_catchpoint (gdbarch, ex_kind,
13303                                    excep_string, cond_string,
13304                                    tempflag, 1 /* enabled */,
13305                                    from_tty);
13306 }
13307
13308 /* Implement the "catch handlers" command.  */
13309
13310 static void
13311 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13312                             struct cmd_list_element *command)
13313 {
13314   const char *arg = arg_entry;
13315   struct gdbarch *gdbarch = get_current_arch ();
13316   int tempflag;
13317   enum ada_exception_catchpoint_kind ex_kind;
13318   std::string excep_string;
13319   std::string cond_string;
13320
13321   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13322
13323   if (!arg)
13324     arg = "";
13325   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13326                                      &cond_string);
13327   create_ada_exception_catchpoint (gdbarch, ex_kind,
13328                                    excep_string, cond_string,
13329                                    tempflag, 1 /* enabled */,
13330                                    from_tty);
13331 }
13332
13333 /* Split the arguments specified in a "catch assert" command.
13334
13335    ARGS contains the command's arguments (or the empty string if
13336    no arguments were passed).
13337
13338    If ARGS contains a condition, set COND_STRING to that condition
13339    (the memory needs to be deallocated after use).  */
13340
13341 static void
13342 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13343 {
13344   args = skip_spaces (args);
13345
13346   /* Check whether a condition was provided.  */
13347   if (startswith (args, "if")
13348       && (isspace (args[2]) || args[2] == '\0'))
13349     {
13350       args += 2;
13351       args = skip_spaces (args);
13352       if (args[0] == '\0')
13353         error (_("condition missing after `if' keyword"));
13354       cond_string.assign (args);
13355     }
13356
13357   /* Otherwise, there should be no other argument at the end of
13358      the command.  */
13359   else if (args[0] != '\0')
13360     error (_("Junk at end of arguments."));
13361 }
13362
13363 /* Implement the "catch assert" command.  */
13364
13365 static void
13366 catch_assert_command (const char *arg_entry, int from_tty,
13367                       struct cmd_list_element *command)
13368 {
13369   const char *arg = arg_entry;
13370   struct gdbarch *gdbarch = get_current_arch ();
13371   int tempflag;
13372   std::string cond_string;
13373
13374   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13375
13376   if (!arg)
13377     arg = "";
13378   catch_ada_assert_command_split (arg, cond_string);
13379   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13380                                    "", cond_string,
13381                                    tempflag, 1 /* enabled */,
13382                                    from_tty);
13383 }
13384
13385 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13386
13387 static int
13388 ada_is_exception_sym (struct symbol *sym)
13389 {
13390   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13391
13392   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13393           && SYMBOL_CLASS (sym) != LOC_BLOCK
13394           && SYMBOL_CLASS (sym) != LOC_CONST
13395           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13396           && type_name != NULL && strcmp (type_name, "exception") == 0);
13397 }
13398
13399 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13400    Ada exception object.  This matches all exceptions except the ones
13401    defined by the Ada language.  */
13402
13403 static int
13404 ada_is_non_standard_exception_sym (struct symbol *sym)
13405 {
13406   int i;
13407
13408   if (!ada_is_exception_sym (sym))
13409     return 0;
13410
13411   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13412     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13413       return 0;  /* A standard exception.  */
13414
13415   /* Numeric_Error is also a standard exception, so exclude it.
13416      See the STANDARD_EXC description for more details as to why
13417      this exception is not listed in that array.  */
13418   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13419     return 0;
13420
13421   return 1;
13422 }
13423
13424 /* A helper function for std::sort, comparing two struct ada_exc_info
13425    objects.
13426
13427    The comparison is determined first by exception name, and then
13428    by exception address.  */
13429
13430 bool
13431 ada_exc_info::operator< (const ada_exc_info &other) const
13432 {
13433   int result;
13434
13435   result = strcmp (name, other.name);
13436   if (result < 0)
13437     return true;
13438   if (result == 0 && addr < other.addr)
13439     return true;
13440   return false;
13441 }
13442
13443 bool
13444 ada_exc_info::operator== (const ada_exc_info &other) const
13445 {
13446   return addr == other.addr && strcmp (name, other.name) == 0;
13447 }
13448
13449 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13450    routine, but keeping the first SKIP elements untouched.
13451
13452    All duplicates are also removed.  */
13453
13454 static void
13455 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13456                                       int skip)
13457 {
13458   std::sort (exceptions->begin () + skip, exceptions->end ());
13459   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13460                      exceptions->end ());
13461 }
13462
13463 /* Add all exceptions defined by the Ada standard whose name match
13464    a regular expression.
13465
13466    If PREG is not NULL, then this regexp_t object is used to
13467    perform the symbol name matching.  Otherwise, no name-based
13468    filtering is performed.
13469
13470    EXCEPTIONS is a vector of exceptions to which matching exceptions
13471    gets pushed.  */
13472
13473 static void
13474 ada_add_standard_exceptions (compiled_regex *preg,
13475                              std::vector<ada_exc_info> *exceptions)
13476 {
13477   int i;
13478
13479   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13480     {
13481       if (preg == NULL
13482           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13483         {
13484           struct bound_minimal_symbol msymbol
13485             = ada_lookup_simple_minsym (standard_exc[i]);
13486
13487           if (msymbol.minsym != NULL)
13488             {
13489               struct ada_exc_info info
13490                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13491
13492               exceptions->push_back (info);
13493             }
13494         }
13495     }
13496 }
13497
13498 /* Add all Ada exceptions defined locally and accessible from the given
13499    FRAME.
13500
13501    If PREG is not NULL, then this regexp_t object is used to
13502    perform the symbol name matching.  Otherwise, no name-based
13503    filtering is performed.
13504
13505    EXCEPTIONS is a vector of exceptions to which matching exceptions
13506    gets pushed.  */
13507
13508 static void
13509 ada_add_exceptions_from_frame (compiled_regex *preg,
13510                                struct frame_info *frame,
13511                                std::vector<ada_exc_info> *exceptions)
13512 {
13513   const struct block *block = get_frame_block (frame, 0);
13514
13515   while (block != 0)
13516     {
13517       struct block_iterator iter;
13518       struct symbol *sym;
13519
13520       ALL_BLOCK_SYMBOLS (block, iter, sym)
13521         {
13522           switch (SYMBOL_CLASS (sym))
13523             {
13524             case LOC_TYPEDEF:
13525             case LOC_BLOCK:
13526             case LOC_CONST:
13527               break;
13528             default:
13529               if (ada_is_exception_sym (sym))
13530                 {
13531                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13532                                               SYMBOL_VALUE_ADDRESS (sym)};
13533
13534                   exceptions->push_back (info);
13535                 }
13536             }
13537         }
13538       if (BLOCK_FUNCTION (block) != NULL)
13539         break;
13540       block = BLOCK_SUPERBLOCK (block);
13541     }
13542 }
13543
13544 /* Return true if NAME matches PREG or if PREG is NULL.  */
13545
13546 static bool
13547 name_matches_regex (const char *name, compiled_regex *preg)
13548 {
13549   return (preg == NULL
13550           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13551 }
13552
13553 /* Add all exceptions defined globally whose name name match
13554    a regular expression, excluding standard exceptions.
13555
13556    The reason we exclude standard exceptions is that they need
13557    to be handled separately: Standard exceptions are defined inside
13558    a runtime unit which is normally not compiled with debugging info,
13559    and thus usually do not show up in our symbol search.  However,
13560    if the unit was in fact built with debugging info, we need to
13561    exclude them because they would duplicate the entry we found
13562    during the special loop that specifically searches for those
13563    standard exceptions.
13564
13565    If PREG is not NULL, then this regexp_t object is used to
13566    perform the symbol name matching.  Otherwise, no name-based
13567    filtering is performed.
13568
13569    EXCEPTIONS is a vector of exceptions to which matching exceptions
13570    gets pushed.  */
13571
13572 static void
13573 ada_add_global_exceptions (compiled_regex *preg,
13574                            std::vector<ada_exc_info> *exceptions)
13575 {
13576   struct objfile *objfile;
13577   struct compunit_symtab *s;
13578
13579   /* In Ada, the symbol "search name" is a linkage name, whereas the
13580      regular expression used to do the matching refers to the natural
13581      name.  So match against the decoded name.  */
13582   expand_symtabs_matching (NULL,
13583                            lookup_name_info::match_any (),
13584                            [&] (const char *search_name)
13585                            {
13586                              const char *decoded = ada_decode (search_name);
13587                              return name_matches_regex (decoded, preg);
13588                            },
13589                            NULL,
13590                            VARIABLES_DOMAIN);
13591
13592   ALL_COMPUNITS (objfile, s)
13593     {
13594       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13595       int i;
13596
13597       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13598         {
13599           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13600           struct block_iterator iter;
13601           struct symbol *sym;
13602
13603           ALL_BLOCK_SYMBOLS (b, iter, sym)
13604             if (ada_is_non_standard_exception_sym (sym)
13605                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13606               {
13607                 struct ada_exc_info info
13608                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13609
13610                 exceptions->push_back (info);
13611               }
13612         }
13613     }
13614 }
13615
13616 /* Implements ada_exceptions_list with the regular expression passed
13617    as a regex_t, rather than a string.
13618
13619    If not NULL, PREG is used to filter out exceptions whose names
13620    do not match.  Otherwise, all exceptions are listed.  */
13621
13622 static std::vector<ada_exc_info>
13623 ada_exceptions_list_1 (compiled_regex *preg)
13624 {
13625   std::vector<ada_exc_info> result;
13626   int prev_len;
13627
13628   /* First, list the known standard exceptions.  These exceptions
13629      need to be handled separately, as they are usually defined in
13630      runtime units that have been compiled without debugging info.  */
13631
13632   ada_add_standard_exceptions (preg, &result);
13633
13634   /* Next, find all exceptions whose scope is local and accessible
13635      from the currently selected frame.  */
13636
13637   if (has_stack_frames ())
13638     {
13639       prev_len = result.size ();
13640       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13641                                      &result);
13642       if (result.size () > prev_len)
13643         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13644     }
13645
13646   /* Add all exceptions whose scope is global.  */
13647
13648   prev_len = result.size ();
13649   ada_add_global_exceptions (preg, &result);
13650   if (result.size () > prev_len)
13651     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13652
13653   return result;
13654 }
13655
13656 /* Return a vector of ada_exc_info.
13657
13658    If REGEXP is NULL, all exceptions are included in the result.
13659    Otherwise, it should contain a valid regular expression,
13660    and only the exceptions whose names match that regular expression
13661    are included in the result.
13662
13663    The exceptions are sorted in the following order:
13664      - Standard exceptions (defined by the Ada language), in
13665        alphabetical order;
13666      - Exceptions only visible from the current frame, in
13667        alphabetical order;
13668      - Exceptions whose scope is global, in alphabetical order.  */
13669
13670 std::vector<ada_exc_info>
13671 ada_exceptions_list (const char *regexp)
13672 {
13673   if (regexp == NULL)
13674     return ada_exceptions_list_1 (NULL);
13675
13676   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13677   return ada_exceptions_list_1 (&reg);
13678 }
13679
13680 /* Implement the "info exceptions" command.  */
13681
13682 static void
13683 info_exceptions_command (const char *regexp, int from_tty)
13684 {
13685   struct gdbarch *gdbarch = get_current_arch ();
13686
13687   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13688
13689   if (regexp != NULL)
13690     printf_filtered
13691       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13692   else
13693     printf_filtered (_("All defined Ada exceptions:\n"));
13694
13695   for (const ada_exc_info &info : exceptions)
13696     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13697 }
13698
13699                                 /* Operators */
13700 /* Information about operators given special treatment in functions
13701    below.  */
13702 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13703
13704 #define ADA_OPERATORS \
13705     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13706     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13707     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13708     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13709     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13710     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13711     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13712     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13713     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13714     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13715     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13716     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13717     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13718     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13719     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13720     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13721     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13722     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13723     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13724
13725 static void
13726 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13727                      int *argsp)
13728 {
13729   switch (exp->elts[pc - 1].opcode)
13730     {
13731     default:
13732       operator_length_standard (exp, pc, oplenp, argsp);
13733       break;
13734
13735 #define OP_DEFN(op, len, args, binop) \
13736     case op: *oplenp = len; *argsp = args; break;
13737       ADA_OPERATORS;
13738 #undef OP_DEFN
13739
13740     case OP_AGGREGATE:
13741       *oplenp = 3;
13742       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13743       break;
13744
13745     case OP_CHOICES:
13746       *oplenp = 3;
13747       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13748       break;
13749     }
13750 }
13751
13752 /* Implementation of the exp_descriptor method operator_check.  */
13753
13754 static int
13755 ada_operator_check (struct expression *exp, int pos,
13756                     int (*objfile_func) (struct objfile *objfile, void *data),
13757                     void *data)
13758 {
13759   const union exp_element *const elts = exp->elts;
13760   struct type *type = NULL;
13761
13762   switch (elts[pos].opcode)
13763     {
13764       case UNOP_IN_RANGE:
13765       case UNOP_QUAL:
13766         type = elts[pos + 1].type;
13767         break;
13768
13769       default:
13770         return operator_check_standard (exp, pos, objfile_func, data);
13771     }
13772
13773   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13774
13775   if (type && TYPE_OBJFILE (type)
13776       && (*objfile_func) (TYPE_OBJFILE (type), data))
13777     return 1;
13778
13779   return 0;
13780 }
13781
13782 static const char *
13783 ada_op_name (enum exp_opcode opcode)
13784 {
13785   switch (opcode)
13786     {
13787     default:
13788       return op_name_standard (opcode);
13789
13790 #define OP_DEFN(op, len, args, binop) case op: return #op;
13791       ADA_OPERATORS;
13792 #undef OP_DEFN
13793
13794     case OP_AGGREGATE:
13795       return "OP_AGGREGATE";
13796     case OP_CHOICES:
13797       return "OP_CHOICES";
13798     case OP_NAME:
13799       return "OP_NAME";
13800     }
13801 }
13802
13803 /* As for operator_length, but assumes PC is pointing at the first
13804    element of the operator, and gives meaningful results only for the 
13805    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13806
13807 static void
13808 ada_forward_operator_length (struct expression *exp, int pc,
13809                              int *oplenp, int *argsp)
13810 {
13811   switch (exp->elts[pc].opcode)
13812     {
13813     default:
13814       *oplenp = *argsp = 0;
13815       break;
13816
13817 #define OP_DEFN(op, len, args, binop) \
13818     case op: *oplenp = len; *argsp = args; break;
13819       ADA_OPERATORS;
13820 #undef OP_DEFN
13821
13822     case OP_AGGREGATE:
13823       *oplenp = 3;
13824       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13825       break;
13826
13827     case OP_CHOICES:
13828       *oplenp = 3;
13829       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13830       break;
13831
13832     case OP_STRING:
13833     case OP_NAME:
13834       {
13835         int len = longest_to_int (exp->elts[pc + 1].longconst);
13836
13837         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13838         *argsp = 0;
13839         break;
13840       }
13841     }
13842 }
13843
13844 static int
13845 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13846 {
13847   enum exp_opcode op = exp->elts[elt].opcode;
13848   int oplen, nargs;
13849   int pc = elt;
13850   int i;
13851
13852   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13853
13854   switch (op)
13855     {
13856       /* Ada attributes ('Foo).  */
13857     case OP_ATR_FIRST:
13858     case OP_ATR_LAST:
13859     case OP_ATR_LENGTH:
13860     case OP_ATR_IMAGE:
13861     case OP_ATR_MAX:
13862     case OP_ATR_MIN:
13863     case OP_ATR_MODULUS:
13864     case OP_ATR_POS:
13865     case OP_ATR_SIZE:
13866     case OP_ATR_TAG:
13867     case OP_ATR_VAL:
13868       break;
13869
13870     case UNOP_IN_RANGE:
13871     case UNOP_QUAL:
13872       /* XXX: gdb_sprint_host_address, type_sprint */
13873       fprintf_filtered (stream, _("Type @"));
13874       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13875       fprintf_filtered (stream, " (");
13876       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13877       fprintf_filtered (stream, ")");
13878       break;
13879     case BINOP_IN_BOUNDS:
13880       fprintf_filtered (stream, " (%d)",
13881                         longest_to_int (exp->elts[pc + 2].longconst));
13882       break;
13883     case TERNOP_IN_RANGE:
13884       break;
13885
13886     case OP_AGGREGATE:
13887     case OP_OTHERS:
13888     case OP_DISCRETE_RANGE:
13889     case OP_POSITIONAL:
13890     case OP_CHOICES:
13891       break;
13892
13893     case OP_NAME:
13894     case OP_STRING:
13895       {
13896         char *name = &exp->elts[elt + 2].string;
13897         int len = longest_to_int (exp->elts[elt + 1].longconst);
13898
13899         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13900         break;
13901       }
13902
13903     default:
13904       return dump_subexp_body_standard (exp, stream, elt);
13905     }
13906
13907   elt += oplen;
13908   for (i = 0; i < nargs; i += 1)
13909     elt = dump_subexp (exp, stream, elt);
13910
13911   return elt;
13912 }
13913
13914 /* The Ada extension of print_subexp (q.v.).  */
13915
13916 static void
13917 ada_print_subexp (struct expression *exp, int *pos,
13918                   struct ui_file *stream, enum precedence prec)
13919 {
13920   int oplen, nargs, i;
13921   int pc = *pos;
13922   enum exp_opcode op = exp->elts[pc].opcode;
13923
13924   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13925
13926   *pos += oplen;
13927   switch (op)
13928     {
13929     default:
13930       *pos -= oplen;
13931       print_subexp_standard (exp, pos, stream, prec);
13932       return;
13933
13934     case OP_VAR_VALUE:
13935       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13936       return;
13937
13938     case BINOP_IN_BOUNDS:
13939       /* XXX: sprint_subexp */
13940       print_subexp (exp, pos, stream, PREC_SUFFIX);
13941       fputs_filtered (" in ", stream);
13942       print_subexp (exp, pos, stream, PREC_SUFFIX);
13943       fputs_filtered ("'range", stream);
13944       if (exp->elts[pc + 1].longconst > 1)
13945         fprintf_filtered (stream, "(%ld)",
13946                           (long) exp->elts[pc + 1].longconst);
13947       return;
13948
13949     case TERNOP_IN_RANGE:
13950       if (prec >= PREC_EQUAL)
13951         fputs_filtered ("(", stream);
13952       /* XXX: sprint_subexp */
13953       print_subexp (exp, pos, stream, PREC_SUFFIX);
13954       fputs_filtered (" in ", stream);
13955       print_subexp (exp, pos, stream, PREC_EQUAL);
13956       fputs_filtered (" .. ", stream);
13957       print_subexp (exp, pos, stream, PREC_EQUAL);
13958       if (prec >= PREC_EQUAL)
13959         fputs_filtered (")", stream);
13960       return;
13961
13962     case OP_ATR_FIRST:
13963     case OP_ATR_LAST:
13964     case OP_ATR_LENGTH:
13965     case OP_ATR_IMAGE:
13966     case OP_ATR_MAX:
13967     case OP_ATR_MIN:
13968     case OP_ATR_MODULUS:
13969     case OP_ATR_POS:
13970     case OP_ATR_SIZE:
13971     case OP_ATR_TAG:
13972     case OP_ATR_VAL:
13973       if (exp->elts[*pos].opcode == OP_TYPE)
13974         {
13975           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13976             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13977                            &type_print_raw_options);
13978           *pos += 3;
13979         }
13980       else
13981         print_subexp (exp, pos, stream, PREC_SUFFIX);
13982       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13983       if (nargs > 1)
13984         {
13985           int tem;
13986
13987           for (tem = 1; tem < nargs; tem += 1)
13988             {
13989               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13990               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13991             }
13992           fputs_filtered (")", stream);
13993         }
13994       return;
13995
13996     case UNOP_QUAL:
13997       type_print (exp->elts[pc + 1].type, "", stream, 0);
13998       fputs_filtered ("'(", stream);
13999       print_subexp (exp, pos, stream, PREC_PREFIX);
14000       fputs_filtered (")", stream);
14001       return;
14002
14003     case UNOP_IN_RANGE:
14004       /* XXX: sprint_subexp */
14005       print_subexp (exp, pos, stream, PREC_SUFFIX);
14006       fputs_filtered (" in ", stream);
14007       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14008                      &type_print_raw_options);
14009       return;
14010
14011     case OP_DISCRETE_RANGE:
14012       print_subexp (exp, pos, stream, PREC_SUFFIX);
14013       fputs_filtered ("..", stream);
14014       print_subexp (exp, pos, stream, PREC_SUFFIX);
14015       return;
14016
14017     case OP_OTHERS:
14018       fputs_filtered ("others => ", stream);
14019       print_subexp (exp, pos, stream, PREC_SUFFIX);
14020       return;
14021
14022     case OP_CHOICES:
14023       for (i = 0; i < nargs-1; i += 1)
14024         {
14025           if (i > 0)
14026             fputs_filtered ("|", stream);
14027           print_subexp (exp, pos, stream, PREC_SUFFIX);
14028         }
14029       fputs_filtered (" => ", stream);
14030       print_subexp (exp, pos, stream, PREC_SUFFIX);
14031       return;
14032       
14033     case OP_POSITIONAL:
14034       print_subexp (exp, pos, stream, PREC_SUFFIX);
14035       return;
14036
14037     case OP_AGGREGATE:
14038       fputs_filtered ("(", stream);
14039       for (i = 0; i < nargs; i += 1)
14040         {
14041           if (i > 0)
14042             fputs_filtered (", ", stream);
14043           print_subexp (exp, pos, stream, PREC_SUFFIX);
14044         }
14045       fputs_filtered (")", stream);
14046       return;
14047     }
14048 }
14049
14050 /* Table mapping opcodes into strings for printing operators
14051    and precedences of the operators.  */
14052
14053 static const struct op_print ada_op_print_tab[] = {
14054   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14055   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14056   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14057   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14058   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14059   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14060   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14061   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14062   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14063   {">=", BINOP_GEQ, PREC_ORDER, 0},
14064   {">", BINOP_GTR, PREC_ORDER, 0},
14065   {"<", BINOP_LESS, PREC_ORDER, 0},
14066   {">>", BINOP_RSH, PREC_SHIFT, 0},
14067   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14068   {"+", BINOP_ADD, PREC_ADD, 0},
14069   {"-", BINOP_SUB, PREC_ADD, 0},
14070   {"&", BINOP_CONCAT, PREC_ADD, 0},
14071   {"*", BINOP_MUL, PREC_MUL, 0},
14072   {"/", BINOP_DIV, PREC_MUL, 0},
14073   {"rem", BINOP_REM, PREC_MUL, 0},
14074   {"mod", BINOP_MOD, PREC_MUL, 0},
14075   {"**", BINOP_EXP, PREC_REPEAT, 0},
14076   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14077   {"-", UNOP_NEG, PREC_PREFIX, 0},
14078   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14079   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14080   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14081   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14082   {".all", UNOP_IND, PREC_SUFFIX, 1},
14083   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14084   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14085   {NULL, OP_NULL, PREC_SUFFIX, 0}
14086 };
14087 \f
14088 enum ada_primitive_types {
14089   ada_primitive_type_int,
14090   ada_primitive_type_long,
14091   ada_primitive_type_short,
14092   ada_primitive_type_char,
14093   ada_primitive_type_float,
14094   ada_primitive_type_double,
14095   ada_primitive_type_void,
14096   ada_primitive_type_long_long,
14097   ada_primitive_type_long_double,
14098   ada_primitive_type_natural,
14099   ada_primitive_type_positive,
14100   ada_primitive_type_system_address,
14101   ada_primitive_type_storage_offset,
14102   nr_ada_primitive_types
14103 };
14104
14105 static void
14106 ada_language_arch_info (struct gdbarch *gdbarch,
14107                         struct language_arch_info *lai)
14108 {
14109   const struct builtin_type *builtin = builtin_type (gdbarch);
14110
14111   lai->primitive_type_vector
14112     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14113                               struct type *);
14114
14115   lai->primitive_type_vector [ada_primitive_type_int]
14116     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14117                          0, "integer");
14118   lai->primitive_type_vector [ada_primitive_type_long]
14119     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14120                          0, "long_integer");
14121   lai->primitive_type_vector [ada_primitive_type_short]
14122     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14123                          0, "short_integer");
14124   lai->string_char_type
14125     = lai->primitive_type_vector [ada_primitive_type_char]
14126     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14127   lai->primitive_type_vector [ada_primitive_type_float]
14128     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14129                        "float", gdbarch_float_format (gdbarch));
14130   lai->primitive_type_vector [ada_primitive_type_double]
14131     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14132                        "long_float", gdbarch_double_format (gdbarch));
14133   lai->primitive_type_vector [ada_primitive_type_long_long]
14134     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14135                          0, "long_long_integer");
14136   lai->primitive_type_vector [ada_primitive_type_long_double]
14137     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14138                        "long_long_float", gdbarch_long_double_format (gdbarch));
14139   lai->primitive_type_vector [ada_primitive_type_natural]
14140     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14141                          0, "natural");
14142   lai->primitive_type_vector [ada_primitive_type_positive]
14143     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14144                          0, "positive");
14145   lai->primitive_type_vector [ada_primitive_type_void]
14146     = builtin->builtin_void;
14147
14148   lai->primitive_type_vector [ada_primitive_type_system_address]
14149     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14150                                       "void"));
14151   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14152     = "system__address";
14153
14154   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14155      type.  This is a signed integral type whose size is the same as
14156      the size of addresses.  */
14157   {
14158     unsigned int addr_length = TYPE_LENGTH
14159       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14160
14161     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14162       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14163                            "storage_offset");
14164   }
14165
14166   lai->bool_type_symbol = NULL;
14167   lai->bool_type_default = builtin->builtin_bool;
14168 }
14169 \f
14170                                 /* Language vector */
14171
14172 /* Not really used, but needed in the ada_language_defn.  */
14173
14174 static void
14175 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14176 {
14177   ada_emit_char (c, type, stream, quoter, 1);
14178 }
14179
14180 static int
14181 parse (struct parser_state *ps)
14182 {
14183   warnings_issued = 0;
14184   return ada_parse (ps);
14185 }
14186
14187 static const struct exp_descriptor ada_exp_descriptor = {
14188   ada_print_subexp,
14189   ada_operator_length,
14190   ada_operator_check,
14191   ada_op_name,
14192   ada_dump_subexp_body,
14193   ada_evaluate_subexp
14194 };
14195
14196 /* symbol_name_matcher_ftype adapter for wild_match.  */
14197
14198 static bool
14199 do_wild_match (const char *symbol_search_name,
14200                const lookup_name_info &lookup_name,
14201                completion_match_result *comp_match_res)
14202 {
14203   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14204 }
14205
14206 /* symbol_name_matcher_ftype adapter for full_match.  */
14207
14208 static bool
14209 do_full_match (const char *symbol_search_name,
14210                const lookup_name_info &lookup_name,
14211                completion_match_result *comp_match_res)
14212 {
14213   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14214 }
14215
14216 /* Build the Ada lookup name for LOOKUP_NAME.  */
14217
14218 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14219 {
14220   const std::string &user_name = lookup_name.name ();
14221
14222   if (user_name[0] == '<')
14223     {
14224       if (user_name.back () == '>')
14225         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14226       else
14227         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14228       m_encoded_p = true;
14229       m_verbatim_p = true;
14230       m_wild_match_p = false;
14231       m_standard_p = false;
14232     }
14233   else
14234     {
14235       m_verbatim_p = false;
14236
14237       m_encoded_p = user_name.find ("__") != std::string::npos;
14238
14239       if (!m_encoded_p)
14240         {
14241           const char *folded = ada_fold_name (user_name.c_str ());
14242           const char *encoded = ada_encode_1 (folded, false);
14243           if (encoded != NULL)
14244             m_encoded_name = encoded;
14245           else
14246             m_encoded_name = user_name;
14247         }
14248       else
14249         m_encoded_name = user_name;
14250
14251       /* Handle the 'package Standard' special case.  See description
14252          of m_standard_p.  */
14253       if (startswith (m_encoded_name.c_str (), "standard__"))
14254         {
14255           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14256           m_standard_p = true;
14257         }
14258       else
14259         m_standard_p = false;
14260
14261       /* If the name contains a ".", then the user is entering a fully
14262          qualified entity name, and the match must not be done in wild
14263          mode.  Similarly, if the user wants to complete what looks
14264          like an encoded name, the match must not be done in wild
14265          mode.  Also, in the standard__ special case always do
14266          non-wild matching.  */
14267       m_wild_match_p
14268         = (lookup_name.match_type () != symbol_name_match_type::FULL
14269            && !m_encoded_p
14270            && !m_standard_p
14271            && user_name.find ('.') == std::string::npos);
14272     }
14273 }
14274
14275 /* symbol_name_matcher_ftype method for Ada.  This only handles
14276    completion mode.  */
14277
14278 static bool
14279 ada_symbol_name_matches (const char *symbol_search_name,
14280                          const lookup_name_info &lookup_name,
14281                          completion_match_result *comp_match_res)
14282 {
14283   return lookup_name.ada ().matches (symbol_search_name,
14284                                      lookup_name.match_type (),
14285                                      comp_match_res);
14286 }
14287
14288 /* A name matcher that matches the symbol name exactly, with
14289    strcmp.  */
14290
14291 static bool
14292 literal_symbol_name_matcher (const char *symbol_search_name,
14293                              const lookup_name_info &lookup_name,
14294                              completion_match_result *comp_match_res)
14295 {
14296   const std::string &name = lookup_name.name ();
14297
14298   int cmp = (lookup_name.completion_mode ()
14299              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14300              : strcmp (symbol_search_name, name.c_str ()));
14301   if (cmp == 0)
14302     {
14303       if (comp_match_res != NULL)
14304         comp_match_res->set_match (symbol_search_name);
14305       return true;
14306     }
14307   else
14308     return false;
14309 }
14310
14311 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14312    Ada.  */
14313
14314 static symbol_name_matcher_ftype *
14315 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14316 {
14317   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14318     return literal_symbol_name_matcher;
14319
14320   if (lookup_name.completion_mode ())
14321     return ada_symbol_name_matches;
14322   else
14323     {
14324       if (lookup_name.ada ().wild_match_p ())
14325         return do_wild_match;
14326       else
14327         return do_full_match;
14328     }
14329 }
14330
14331 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14332
14333 static struct value *
14334 ada_read_var_value (struct symbol *var, const struct block *var_block,
14335                     struct frame_info *frame)
14336 {
14337   const struct block *frame_block = NULL;
14338   struct symbol *renaming_sym = NULL;
14339
14340   /* The only case where default_read_var_value is not sufficient
14341      is when VAR is a renaming...  */
14342   if (frame)
14343     frame_block = get_frame_block (frame, NULL);
14344   if (frame_block)
14345     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14346   if (renaming_sym != NULL)
14347     return ada_read_renaming_var_value (renaming_sym, frame_block);
14348
14349   /* This is a typical case where we expect the default_read_var_value
14350      function to work.  */
14351   return default_read_var_value (var, var_block, frame);
14352 }
14353
14354 static const char *ada_extensions[] =
14355 {
14356   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14357 };
14358
14359 extern const struct language_defn ada_language_defn = {
14360   "ada",                        /* Language name */
14361   "Ada",
14362   language_ada,
14363   range_check_off,
14364   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14365                                    that's not quite what this means.  */
14366   array_row_major,
14367   macro_expansion_no,
14368   ada_extensions,
14369   &ada_exp_descriptor,
14370   parse,
14371   resolve,
14372   ada_printchar,                /* Print a character constant */
14373   ada_printstr,                 /* Function to print string constant */
14374   emit_char,                    /* Function to print single char (not used) */
14375   ada_print_type,               /* Print a type using appropriate syntax */
14376   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14377   ada_val_print,                /* Print a value using appropriate syntax */
14378   ada_value_print,              /* Print a top-level value */
14379   ada_read_var_value,           /* la_read_var_value */
14380   NULL,                         /* Language specific skip_trampoline */
14381   NULL,                         /* name_of_this */
14382   true,                         /* la_store_sym_names_in_linkage_form_p */
14383   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14384   basic_lookup_transparent_type,        /* lookup_transparent_type */
14385   ada_la_decode,                /* Language specific symbol demangler */
14386   ada_sniff_from_mangled_name,
14387   NULL,                         /* Language specific
14388                                    class_name_from_physname */
14389   ada_op_print_tab,             /* expression operators for printing */
14390   0,                            /* c-style arrays */
14391   1,                            /* String lower bound */
14392   ada_get_gdb_completer_word_break_characters,
14393   ada_collect_symbol_completion_matches,
14394   ada_language_arch_info,
14395   ada_print_array_index,
14396   default_pass_by_reference,
14397   c_get_string,
14398   c_watch_location_expression,
14399   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14400   ada_iterate_over_symbols,
14401   default_search_name_hash,
14402   &ada_varobj_ops,
14403   NULL,
14404   NULL,
14405   LANG_MAGIC
14406 };
14407
14408 /* Command-list for the "set/show ada" prefix command.  */
14409 static struct cmd_list_element *set_ada_list;
14410 static struct cmd_list_element *show_ada_list;
14411
14412 /* Implement the "set ada" prefix command.  */
14413
14414 static void
14415 set_ada_command (const char *arg, int from_tty)
14416 {
14417   printf_unfiltered (_(\
14418 "\"set ada\" must be followed by the name of a setting.\n"));
14419   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14420 }
14421
14422 /* Implement the "show ada" prefix command.  */
14423
14424 static void
14425 show_ada_command (const char *args, int from_tty)
14426 {
14427   cmd_show_list (show_ada_list, from_tty, "");
14428 }
14429
14430 static void
14431 initialize_ada_catchpoint_ops (void)
14432 {
14433   struct breakpoint_ops *ops;
14434
14435   initialize_breakpoint_ops ();
14436
14437   ops = &catch_exception_breakpoint_ops;
14438   *ops = bkpt_breakpoint_ops;
14439   ops->allocate_location = allocate_location_catch_exception;
14440   ops->re_set = re_set_catch_exception;
14441   ops->check_status = check_status_catch_exception;
14442   ops->print_it = print_it_catch_exception;
14443   ops->print_one = print_one_catch_exception;
14444   ops->print_mention = print_mention_catch_exception;
14445   ops->print_recreate = print_recreate_catch_exception;
14446
14447   ops = &catch_exception_unhandled_breakpoint_ops;
14448   *ops = bkpt_breakpoint_ops;
14449   ops->allocate_location = allocate_location_catch_exception_unhandled;
14450   ops->re_set = re_set_catch_exception_unhandled;
14451   ops->check_status = check_status_catch_exception_unhandled;
14452   ops->print_it = print_it_catch_exception_unhandled;
14453   ops->print_one = print_one_catch_exception_unhandled;
14454   ops->print_mention = print_mention_catch_exception_unhandled;
14455   ops->print_recreate = print_recreate_catch_exception_unhandled;
14456
14457   ops = &catch_assert_breakpoint_ops;
14458   *ops = bkpt_breakpoint_ops;
14459   ops->allocate_location = allocate_location_catch_assert;
14460   ops->re_set = re_set_catch_assert;
14461   ops->check_status = check_status_catch_assert;
14462   ops->print_it = print_it_catch_assert;
14463   ops->print_one = print_one_catch_assert;
14464   ops->print_mention = print_mention_catch_assert;
14465   ops->print_recreate = print_recreate_catch_assert;
14466
14467   ops = &catch_handlers_breakpoint_ops;
14468   *ops = bkpt_breakpoint_ops;
14469   ops->allocate_location = allocate_location_catch_handlers;
14470   ops->re_set = re_set_catch_handlers;
14471   ops->check_status = check_status_catch_handlers;
14472   ops->print_it = print_it_catch_handlers;
14473   ops->print_one = print_one_catch_handlers;
14474   ops->print_mention = print_mention_catch_handlers;
14475   ops->print_recreate = print_recreate_catch_handlers;
14476 }
14477
14478 /* This module's 'new_objfile' observer.  */
14479
14480 static void
14481 ada_new_objfile_observer (struct objfile *objfile)
14482 {
14483   ada_clear_symbol_cache ();
14484 }
14485
14486 /* This module's 'free_objfile' observer.  */
14487
14488 static void
14489 ada_free_objfile_observer (struct objfile *objfile)
14490 {
14491   ada_clear_symbol_cache ();
14492 }
14493
14494 void
14495 _initialize_ada_language (void)
14496 {
14497   initialize_ada_catchpoint_ops ();
14498
14499   add_prefix_cmd ("ada", no_class, set_ada_command,
14500                   _("Prefix command for changing Ada-specfic settings"),
14501                   &set_ada_list, "set ada ", 0, &setlist);
14502
14503   add_prefix_cmd ("ada", no_class, show_ada_command,
14504                   _("Generic command for showing Ada-specific settings."),
14505                   &show_ada_list, "show ada ", 0, &showlist);
14506
14507   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14508                            &trust_pad_over_xvs, _("\
14509 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14510 Show whether an optimization trusting PAD types over XVS types is activated"),
14511                            _("\
14512 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14513 should normally trust the contents of PAD types, but certain older versions\n\
14514 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14515 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14516 work around this bug.  It is always safe to turn this option \"off\", but\n\
14517 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14518 this option to \"off\" unless necessary."),
14519                             NULL, NULL, &set_ada_list, &show_ada_list);
14520
14521   add_setshow_boolean_cmd ("print-signatures", class_vars,
14522                            &print_signatures, _("\
14523 Enable or disable the output of formal and return types for functions in the \
14524 overloads selection menu"), _("\
14525 Show whether the output of formal and return types for functions in the \
14526 overloads selection menu is activated"),
14527                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14528
14529   add_catch_command ("exception", _("\
14530 Catch Ada exceptions, when raised.\n\
14531 With an argument, catch only exceptions with the given name."),
14532                      catch_ada_exception_command,
14533                      NULL,
14534                      CATCH_PERMANENT,
14535                      CATCH_TEMPORARY);
14536
14537   add_catch_command ("handlers", _("\
14538 Catch Ada exceptions, when handled.\n\
14539 With an argument, catch only exceptions with the given name."),
14540                      catch_ada_handlers_command,
14541                      NULL,
14542                      CATCH_PERMANENT,
14543                      CATCH_TEMPORARY);
14544   add_catch_command ("assert", _("\
14545 Catch failed Ada assertions, when raised.\n\
14546 With an argument, catch only exceptions with the given name."),
14547                      catch_assert_command,
14548                      NULL,
14549                      CATCH_PERMANENT,
14550                      CATCH_TEMPORARY);
14551
14552   varsize_limit = 65536;
14553   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14554                             &varsize_limit, _("\
14555 Set the maximum number of bytes allowed in a variable-size object."), _("\
14556 Show the maximum number of bytes allowed in a variable-size object."), _("\
14557 Attempts to access an object whose size is not a compile-time constant\n\
14558 and exceeds this limit will cause an error."),
14559                             NULL, NULL, &setlist, &showlist);
14560
14561   add_info ("exceptions", info_exceptions_command,
14562             _("\
14563 List all Ada exception names.\n\
14564 If a regular expression is passed as an argument, only those matching\n\
14565 the regular expression are listed."));
14566
14567   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14568                   _("Set Ada maintenance-related variables."),
14569                   &maint_set_ada_cmdlist, "maintenance set ada ",
14570                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14571
14572   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14573                   _("Show Ada maintenance-related variables"),
14574                   &maint_show_ada_cmdlist, "maintenance show ada ",
14575                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14576
14577   add_setshow_boolean_cmd
14578     ("ignore-descriptive-types", class_maintenance,
14579      &ada_ignore_descriptive_types_p,
14580      _("Set whether descriptive types generated by GNAT should be ignored."),
14581      _("Show whether descriptive types generated by GNAT should be ignored."),
14582      _("\
14583 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14584 DWARF attribute."),
14585      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14586
14587   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14588                                            NULL, xcalloc, xfree);
14589
14590   /* The ada-lang observers.  */
14591   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14592   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14593   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14594
14595   /* Setup various context-specific data.  */
14596   ada_inferior_data
14597     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14598   ada_pspace_data_handle
14599     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14600 }