Fix regresssion(internal-error) printing subprogram argument (PR gdb/22670)
[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 "observer.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 struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
229                                                 struct value *);
230
231 static int ada_resolve_function (struct block_symbol *, int,
232                                  struct value **, int, const char *,
233                                  struct type *);
234
235 static int ada_is_direct_array_type (struct type *);
236
237 static void ada_language_arch_info (struct gdbarch *,
238                                     struct language_arch_info *);
239
240 static struct value *ada_index_struct_field (int, struct value *, int,
241                                              struct type *);
242
243 static struct value *assign_aggregate (struct value *, struct value *, 
244                                        struct expression *,
245                                        int *, enum noside);
246
247 static void aggregate_assign_from_choices (struct value *, struct value *, 
248                                            struct expression *,
249                                            int *, LONGEST *, int *,
250                                            int, LONGEST, LONGEST);
251
252 static void aggregate_assign_positional (struct value *, struct value *,
253                                          struct expression *,
254                                          int *, LONGEST *, int *, int,
255                                          LONGEST, LONGEST);
256
257
258 static void aggregate_assign_others (struct value *, struct value *,
259                                      struct expression *,
260                                      int *, LONGEST *, int, LONGEST, LONGEST);
261
262
263 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
264
265
266 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
267                                           int *, enum noside);
268
269 static void ada_forward_operator_length (struct expression *, int, int *,
270                                          int *);
271
272 static struct type *ada_find_any_type (const char *name);
273
274 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
275   (const lookup_name_info &lookup_name);
276
277 \f
278
279 /* The result of a symbol lookup to be stored in our symbol cache.  */
280
281 struct cache_entry
282 {
283   /* The name used to perform the lookup.  */
284   const char *name;
285   /* The namespace used during the lookup.  */
286   domain_enum domain;
287   /* The symbol returned by the lookup, or NULL if no matching symbol
288      was found.  */
289   struct symbol *sym;
290   /* The block where the symbol was found, or NULL if no matching
291      symbol was found.  */
292   const struct block *block;
293   /* A pointer to the next entry with the same hash.  */
294   struct cache_entry *next;
295 };
296
297 /* The Ada symbol cache, used to store the result of Ada-mode symbol
298    lookups in the course of executing the user's commands.
299
300    The cache is implemented using a simple, fixed-sized hash.
301    The size is fixed on the grounds that there are not likely to be
302    all that many symbols looked up during any given session, regardless
303    of the size of the symbol table.  If we decide to go to a resizable
304    table, let's just use the stuff from libiberty instead.  */
305
306 #define HASH_SIZE 1009
307
308 struct ada_symbol_cache
309 {
310   /* An obstack used to store the entries in our cache.  */
311   struct obstack cache_space;
312
313   /* The root of the hash table used to implement our symbol cache.  */
314   struct cache_entry *root[HASH_SIZE];
315 };
316
317 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
318
319 /* Maximum-sized dynamic type.  */
320 static unsigned int varsize_limit;
321
322 static const char ada_completer_word_break_characters[] =
323 #ifdef VMS
324   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
325 #else
326   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
327 #endif
328
329 /* The name of the symbol to use to get the name of the main subprogram.  */
330 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
331   = "__gnat_ada_main_program_name";
332
333 /* Limit on the number of warnings to raise per expression evaluation.  */
334 static int warning_limit = 2;
335
336 /* Number of warning messages issued; reset to 0 by cleanups after
337    expression evaluation.  */
338 static int warnings_issued = 0;
339
340 static const char *known_runtime_file_name_patterns[] = {
341   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
342 };
343
344 static const char *known_auxiliary_function_name_patterns[] = {
345   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
346 };
347
348 /* Maintenance-related settings for this module.  */
349
350 static struct cmd_list_element *maint_set_ada_cmdlist;
351 static struct cmd_list_element *maint_show_ada_cmdlist;
352
353 /* Implement the "maintenance set ada" (prefix) command.  */
354
355 static void
356 maint_set_ada_cmd (const char *args, int from_tty)
357 {
358   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
359              gdb_stdout);
360 }
361
362 /* Implement the "maintenance show ada" (prefix) command.  */
363
364 static void
365 maint_show_ada_cmd (const char *args, int from_tty)
366 {
367   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
368 }
369
370 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
371
372 static int ada_ignore_descriptive_types_p = 0;
373
374                         /* Inferior-specific data.  */
375
376 /* Per-inferior data for this module.  */
377
378 struct ada_inferior_data
379 {
380   /* The ada__tags__type_specific_data type, which is used when decoding
381      tagged types.  With older versions of GNAT, this type was directly
382      accessible through a component ("tsd") in the object tag.  But this
383      is no longer the case, so we cache it for each inferior.  */
384   struct type *tsd_type;
385
386   /* The exception_support_info data.  This data is used to determine
387      how to implement support for Ada exception catchpoints in a given
388      inferior.  */
389   const struct exception_support_info *exception_info;
390 };
391
392 /* Our key to this module's inferior data.  */
393 static const struct inferior_data *ada_inferior_data;
394
395 /* A cleanup routine for our inferior data.  */
396 static void
397 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
398 {
399   struct ada_inferior_data *data;
400
401   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
402   if (data != NULL)
403     xfree (data);
404 }
405
406 /* Return our inferior data for the given inferior (INF).
407
408    This function always returns a valid pointer to an allocated
409    ada_inferior_data structure.  If INF's inferior data has not
410    been previously set, this functions creates a new one with all
411    fields set to zero, sets INF's inferior to it, and then returns
412    a pointer to that newly allocated ada_inferior_data.  */
413
414 static struct ada_inferior_data *
415 get_ada_inferior_data (struct inferior *inf)
416 {
417   struct ada_inferior_data *data;
418
419   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
420   if (data == NULL)
421     {
422       data = XCNEW (struct ada_inferior_data);
423       set_inferior_data (inf, ada_inferior_data, data);
424     }
425
426   return data;
427 }
428
429 /* Perform all necessary cleanups regarding our module's inferior data
430    that is required after the inferior INF just exited.  */
431
432 static void
433 ada_inferior_exit (struct inferior *inf)
434 {
435   ada_inferior_data_cleanup (inf, NULL);
436   set_inferior_data (inf, ada_inferior_data, NULL);
437 }
438
439
440                         /* program-space-specific data.  */
441
442 /* This module's per-program-space data.  */
443 struct ada_pspace_data
444 {
445   /* The Ada symbol cache.  */
446   struct ada_symbol_cache *sym_cache;
447 };
448
449 /* Key to our per-program-space data.  */
450 static const struct program_space_data *ada_pspace_data_handle;
451
452 /* Return this module's data for the given program space (PSPACE).
453    If not is found, add a zero'ed one now.
454
455    This function always returns a valid object.  */
456
457 static struct ada_pspace_data *
458 get_ada_pspace_data (struct program_space *pspace)
459 {
460   struct ada_pspace_data *data;
461
462   data = ((struct ada_pspace_data *)
463           program_space_data (pspace, ada_pspace_data_handle));
464   if (data == NULL)
465     {
466       data = XCNEW (struct ada_pspace_data);
467       set_program_space_data (pspace, ada_pspace_data_handle, data);
468     }
469
470   return data;
471 }
472
473 /* The cleanup callback for this module's per-program-space data.  */
474
475 static void
476 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
477 {
478   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
479
480   if (pspace_data->sym_cache != NULL)
481     ada_free_symbol_cache (pspace_data->sym_cache);
482   xfree (pspace_data);
483 }
484
485                         /* Utilities */
486
487 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
488    all typedef layers have been peeled.  Otherwise, return TYPE.
489
490    Normally, we really expect a typedef type to only have 1 typedef layer.
491    In other words, we really expect the target type of a typedef type to be
492    a non-typedef type.  This is particularly true for Ada units, because
493    the language does not have a typedef vs not-typedef distinction.
494    In that respect, the Ada compiler has been trying to eliminate as many
495    typedef definitions in the debugging information, since they generally
496    do not bring any extra information (we still use typedef under certain
497    circumstances related mostly to the GNAT encoding).
498
499    Unfortunately, we have seen situations where the debugging information
500    generated by the compiler leads to such multiple typedef layers.  For
501    instance, consider the following example with stabs:
502
503      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
504      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
505
506    This is an error in the debugging information which causes type
507    pck__float_array___XUP to be defined twice, and the second time,
508    it is defined as a typedef of a typedef.
509
510    This is on the fringe of legality as far as debugging information is
511    concerned, and certainly unexpected.  But it is easy to handle these
512    situations correctly, so we can afford to be lenient in this case.  */
513
514 static struct type *
515 ada_typedef_target_type (struct type *type)
516 {
517   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
518     type = TYPE_TARGET_TYPE (type);
519   return type;
520 }
521
522 /* Given DECODED_NAME a string holding a symbol name in its
523    decoded form (ie using the Ada dotted notation), returns
524    its unqualified name.  */
525
526 static const char *
527 ada_unqualified_name (const char *decoded_name)
528 {
529   const char *result;
530   
531   /* If the decoded name starts with '<', it means that the encoded
532      name does not follow standard naming conventions, and thus that
533      it is not your typical Ada symbol name.  Trying to unqualify it
534      is therefore pointless and possibly erroneous.  */
535   if (decoded_name[0] == '<')
536     return decoded_name;
537
538   result = strrchr (decoded_name, '.');
539   if (result != NULL)
540     result++;                   /* Skip the dot...  */
541   else
542     result = decoded_name;
543
544   return result;
545 }
546
547 /* Return a string starting with '<', followed by STR, and '>'.
548    The result is good until the next call.  */
549
550 static char *
551 add_angle_brackets (const char *str)
552 {
553   static char *result = NULL;
554
555   xfree (result);
556   result = xstrprintf ("<%s>", str);
557   return result;
558 }
559
560 static const char *
561 ada_get_gdb_completer_word_break_characters (void)
562 {
563   return ada_completer_word_break_characters;
564 }
565
566 /* Print an array element index using the Ada syntax.  */
567
568 static void
569 ada_print_array_index (struct value *index_value, struct ui_file *stream,
570                        const struct value_print_options *options)
571 {
572   LA_VALUE_PRINT (index_value, stream, options);
573   fprintf_filtered (stream, " => ");
574 }
575
576 /* Assuming VECT points to an array of *SIZE objects of size
577    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
578    updating *SIZE as necessary and returning the (new) array.  */
579
580 void *
581 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
582 {
583   if (*size < min_size)
584     {
585       *size *= 2;
586       if (*size < min_size)
587         *size = min_size;
588       vect = xrealloc (vect, *size * element_size);
589     }
590   return vect;
591 }
592
593 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
594    suffix of FIELD_NAME beginning "___".  */
595
596 static int
597 field_name_match (const char *field_name, const char *target)
598 {
599   int len = strlen (target);
600
601   return
602     (strncmp (field_name, target, len) == 0
603      && (field_name[len] == '\0'
604          || (startswith (field_name + len, "___")
605              && strcmp (field_name + strlen (field_name) - 6,
606                         "___XVN") != 0)));
607 }
608
609
610 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
611    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
612    and return its index.  This function also handles fields whose name
613    have ___ suffixes because the compiler sometimes alters their name
614    by adding such a suffix to represent fields with certain constraints.
615    If the field could not be found, return a negative number if
616    MAYBE_MISSING is set.  Otherwise raise an error.  */
617
618 int
619 ada_get_field_index (const struct type *type, const char *field_name,
620                      int maybe_missing)
621 {
622   int fieldno;
623   struct type *struct_type = check_typedef ((struct type *) type);
624
625   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
626     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
627       return fieldno;
628
629   if (!maybe_missing)
630     error (_("Unable to find field %s in struct %s.  Aborting"),
631            field_name, TYPE_NAME (struct_type));
632
633   return -1;
634 }
635
636 /* The length of the prefix of NAME prior to any "___" suffix.  */
637
638 int
639 ada_name_prefix_len (const char *name)
640 {
641   if (name == NULL)
642     return 0;
643   else
644     {
645       const char *p = strstr (name, "___");
646
647       if (p == NULL)
648         return strlen (name);
649       else
650         return p - name;
651     }
652 }
653
654 /* Return non-zero if SUFFIX is a suffix of STR.
655    Return zero if STR is null.  */
656
657 static int
658 is_suffix (const char *str, const char *suffix)
659 {
660   int len1, len2;
661
662   if (str == NULL)
663     return 0;
664   len1 = strlen (str);
665   len2 = strlen (suffix);
666   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
667 }
668
669 /* The contents of value VAL, treated as a value of type TYPE.  The
670    result is an lval in memory if VAL is.  */
671
672 static struct value *
673 coerce_unspec_val_to_type (struct value *val, struct type *type)
674 {
675   type = ada_check_typedef (type);
676   if (value_type (val) == type)
677     return val;
678   else
679     {
680       struct value *result;
681
682       /* Make sure that the object size is not unreasonable before
683          trying to allocate some memory for it.  */
684       ada_ensure_varsize_limit (type);
685
686       if (value_lazy (val)
687           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
688         result = allocate_value_lazy (type);
689       else
690         {
691           result = allocate_value (type);
692           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
693         }
694       set_value_component_location (result, val);
695       set_value_bitsize (result, value_bitsize (val));
696       set_value_bitpos (result, value_bitpos (val));
697       set_value_address (result, value_address (val));
698       return result;
699     }
700 }
701
702 static const gdb_byte *
703 cond_offset_host (const gdb_byte *valaddr, long offset)
704 {
705   if (valaddr == NULL)
706     return NULL;
707   else
708     return valaddr + offset;
709 }
710
711 static CORE_ADDR
712 cond_offset_target (CORE_ADDR address, long offset)
713 {
714   if (address == 0)
715     return 0;
716   else
717     return address + offset;
718 }
719
720 /* Issue a warning (as for the definition of warning in utils.c, but
721    with exactly one argument rather than ...), unless the limit on the
722    number of warnings has passed during the evaluation of the current
723    expression.  */
724
725 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
726    provided by "complaint".  */
727 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
728
729 static void
730 lim_warning (const char *format, ...)
731 {
732   va_list args;
733
734   va_start (args, format);
735   warnings_issued += 1;
736   if (warnings_issued <= warning_limit)
737     vwarning (format, args);
738
739   va_end (args);
740 }
741
742 /* Issue an error if the size of an object of type T is unreasonable,
743    i.e. if it would be a bad idea to allocate a value of this type in
744    GDB.  */
745
746 void
747 ada_ensure_varsize_limit (const struct type *type)
748 {
749   if (TYPE_LENGTH (type) > varsize_limit)
750     error (_("object size is larger than varsize-limit"));
751 }
752
753 /* Maximum value of a SIZE-byte signed integer type.  */
754 static LONGEST
755 max_of_size (int size)
756 {
757   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
758
759   return top_bit | (top_bit - 1);
760 }
761
762 /* Minimum value of a SIZE-byte signed integer type.  */
763 static LONGEST
764 min_of_size (int size)
765 {
766   return -max_of_size (size) - 1;
767 }
768
769 /* Maximum value of a SIZE-byte unsigned integer type.  */
770 static ULONGEST
771 umax_of_size (int size)
772 {
773   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
774
775   return top_bit | (top_bit - 1);
776 }
777
778 /* Maximum value of integral type T, as a signed quantity.  */
779 static LONGEST
780 max_of_type (struct type *t)
781 {
782   if (TYPE_UNSIGNED (t))
783     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
784   else
785     return max_of_size (TYPE_LENGTH (t));
786 }
787
788 /* Minimum value of integral type T, as a signed quantity.  */
789 static LONGEST
790 min_of_type (struct type *t)
791 {
792   if (TYPE_UNSIGNED (t)) 
793     return 0;
794   else
795     return min_of_size (TYPE_LENGTH (t));
796 }
797
798 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
799 LONGEST
800 ada_discrete_type_high_bound (struct type *type)
801 {
802   type = resolve_dynamic_type (type, NULL, 0);
803   switch (TYPE_CODE (type))
804     {
805     case TYPE_CODE_RANGE:
806       return TYPE_HIGH_BOUND (type);
807     case TYPE_CODE_ENUM:
808       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
809     case TYPE_CODE_BOOL:
810       return 1;
811     case TYPE_CODE_CHAR:
812     case TYPE_CODE_INT:
813       return max_of_type (type);
814     default:
815       error (_("Unexpected type in ada_discrete_type_high_bound."));
816     }
817 }
818
819 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
820 LONGEST
821 ada_discrete_type_low_bound (struct type *type)
822 {
823   type = resolve_dynamic_type (type, NULL, 0);
824   switch (TYPE_CODE (type))
825     {
826     case TYPE_CODE_RANGE:
827       return TYPE_LOW_BOUND (type);
828     case TYPE_CODE_ENUM:
829       return TYPE_FIELD_ENUMVAL (type, 0);
830     case TYPE_CODE_BOOL:
831       return 0;
832     case TYPE_CODE_CHAR:
833     case TYPE_CODE_INT:
834       return min_of_type (type);
835     default:
836       error (_("Unexpected type in ada_discrete_type_low_bound."));
837     }
838 }
839
840 /* The identity on non-range types.  For range types, the underlying
841    non-range scalar type.  */
842
843 static struct type *
844 get_base_type (struct type *type)
845 {
846   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
847     {
848       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
849         return type;
850       type = TYPE_TARGET_TYPE (type);
851     }
852   return type;
853 }
854
855 /* Return a decoded version of the given VALUE.  This means returning
856    a value whose type is obtained by applying all the GNAT-specific
857    encondings, making the resulting type a static but standard description
858    of the initial type.  */
859
860 struct value *
861 ada_get_decoded_value (struct value *value)
862 {
863   struct type *type = ada_check_typedef (value_type (value));
864
865   if (ada_is_array_descriptor_type (type)
866       || (ada_is_constrained_packed_array_type (type)
867           && TYPE_CODE (type) != TYPE_CODE_PTR))
868     {
869       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
870         value = ada_coerce_to_simple_array_ptr (value);
871       else
872         value = ada_coerce_to_simple_array (value);
873     }
874   else
875     value = ada_to_fixed_value (value);
876
877   return value;
878 }
879
880 /* Same as ada_get_decoded_value, but with the given TYPE.
881    Because there is no associated actual value for this type,
882    the resulting type might be a best-effort approximation in
883    the case of dynamic types.  */
884
885 struct type *
886 ada_get_decoded_type (struct type *type)
887 {
888   type = to_static_fixed_type (type);
889   if (ada_is_constrained_packed_array_type (type))
890     type = ada_coerce_to_simple_array_type (type);
891   return type;
892 }
893
894 \f
895
896                                 /* Language Selection */
897
898 /* If the main program is in Ada, return language_ada, otherwise return LANG
899    (the main program is in Ada iif the adainit symbol is found).  */
900
901 enum language
902 ada_update_initial_language (enum language lang)
903 {
904   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
905                              (struct objfile *) NULL).minsym != NULL)
906     return language_ada;
907
908   return lang;
909 }
910
911 /* If the main procedure is written in Ada, then return its name.
912    The result is good until the next call.  Return NULL if the main
913    procedure doesn't appear to be in Ada.  */
914
915 char *
916 ada_main_name (void)
917 {
918   struct bound_minimal_symbol msym;
919   static char *main_program_name = NULL;
920
921   /* For Ada, the name of the main procedure is stored in a specific
922      string constant, generated by the binder.  Look for that symbol,
923      extract its address, and then read that string.  If we didn't find
924      that string, then most probably the main procedure is not written
925      in Ada.  */
926   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
927
928   if (msym.minsym != NULL)
929     {
930       CORE_ADDR main_program_name_addr;
931       int err_code;
932
933       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
934       if (main_program_name_addr == 0)
935         error (_("Invalid address for Ada main program name."));
936
937       xfree (main_program_name);
938       target_read_string (main_program_name_addr, &main_program_name,
939                           1024, &err_code);
940
941       if (err_code != 0)
942         return NULL;
943       return main_program_name;
944     }
945
946   /* The main procedure doesn't seem to be in Ada.  */
947   return NULL;
948 }
949 \f
950                                 /* Symbols */
951
952 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
953    of NULLs.  */
954
955 const struct ada_opname_map ada_opname_table[] = {
956   {"Oadd", "\"+\"", BINOP_ADD},
957   {"Osubtract", "\"-\"", BINOP_SUB},
958   {"Omultiply", "\"*\"", BINOP_MUL},
959   {"Odivide", "\"/\"", BINOP_DIV},
960   {"Omod", "\"mod\"", BINOP_MOD},
961   {"Orem", "\"rem\"", BINOP_REM},
962   {"Oexpon", "\"**\"", BINOP_EXP},
963   {"Olt", "\"<\"", BINOP_LESS},
964   {"Ole", "\"<=\"", BINOP_LEQ},
965   {"Ogt", "\">\"", BINOP_GTR},
966   {"Oge", "\">=\"", BINOP_GEQ},
967   {"Oeq", "\"=\"", BINOP_EQUAL},
968   {"One", "\"/=\"", BINOP_NOTEQUAL},
969   {"Oand", "\"and\"", BINOP_BITWISE_AND},
970   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
971   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
972   {"Oconcat", "\"&\"", BINOP_CONCAT},
973   {"Oabs", "\"abs\"", UNOP_ABS},
974   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
975   {"Oadd", "\"+\"", UNOP_PLUS},
976   {"Osubtract", "\"-\"", UNOP_NEG},
977   {NULL, NULL}
978 };
979
980 /* The "encoded" form of DECODED, according to GNAT conventions.  The
981    result is valid until the next call to ada_encode.  If
982    THROW_ERRORS, throw an error if invalid operator name is found.
983    Otherwise, return NULL in that case.  */
984
985 static char *
986 ada_encode_1 (const char *decoded, bool throw_errors)
987 {
988   static char *encoding_buffer = NULL;
989   static size_t encoding_buffer_size = 0;
990   const char *p;
991   int k;
992
993   if (decoded == NULL)
994     return NULL;
995
996   GROW_VECT (encoding_buffer, encoding_buffer_size,
997              2 * strlen (decoded) + 10);
998
999   k = 0;
1000   for (p = decoded; *p != '\0'; p += 1)
1001     {
1002       if (*p == '.')
1003         {
1004           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1005           k += 2;
1006         }
1007       else if (*p == '"')
1008         {
1009           const struct ada_opname_map *mapping;
1010
1011           for (mapping = ada_opname_table;
1012                mapping->encoded != NULL
1013                && !startswith (p, mapping->decoded); mapping += 1)
1014             ;
1015           if (mapping->encoded == NULL)
1016             {
1017               if (throw_errors)
1018                 error (_("invalid Ada operator name: %s"), p);
1019               else
1020                 return NULL;
1021             }
1022           strcpy (encoding_buffer + k, mapping->encoded);
1023           k += strlen (mapping->encoded);
1024           break;
1025         }
1026       else
1027         {
1028           encoding_buffer[k] = *p;
1029           k += 1;
1030         }
1031     }
1032
1033   encoding_buffer[k] = '\0';
1034   return encoding_buffer;
1035 }
1036
1037 /* The "encoded" form of DECODED, according to GNAT conventions.
1038    The result is valid until the next call to ada_encode.  */
1039
1040 char *
1041 ada_encode (const char *decoded)
1042 {
1043   return ada_encode_1 (decoded, true);
1044 }
1045
1046 /* Return NAME folded to lower case, or, if surrounded by single
1047    quotes, unfolded, but with the quotes stripped away.  Result good
1048    to next call.  */
1049
1050 char *
1051 ada_fold_name (const char *name)
1052 {
1053   static char *fold_buffer = NULL;
1054   static size_t fold_buffer_size = 0;
1055
1056   int len = strlen (name);
1057   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1058
1059   if (name[0] == '\'')
1060     {
1061       strncpy (fold_buffer, name + 1, len - 2);
1062       fold_buffer[len - 2] = '\000';
1063     }
1064   else
1065     {
1066       int i;
1067
1068       for (i = 0; i <= len; i += 1)
1069         fold_buffer[i] = tolower (name[i]);
1070     }
1071
1072   return fold_buffer;
1073 }
1074
1075 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1076
1077 static int
1078 is_lower_alphanum (const char c)
1079 {
1080   return (isdigit (c) || (isalpha (c) && islower (c)));
1081 }
1082
1083 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1084    This function saves in LEN the length of that same symbol name but
1085    without either of these suffixes:
1086      . .{DIGIT}+
1087      . ${DIGIT}+
1088      . ___{DIGIT}+
1089      . __{DIGIT}+.
1090
1091    These are suffixes introduced by the compiler for entities such as
1092    nested subprogram for instance, in order to avoid name clashes.
1093    They do not serve any purpose for the debugger.  */
1094
1095 static void
1096 ada_remove_trailing_digits (const char *encoded, int *len)
1097 {
1098   if (*len > 1 && isdigit (encoded[*len - 1]))
1099     {
1100       int i = *len - 2;
1101
1102       while (i > 0 && isdigit (encoded[i]))
1103         i--;
1104       if (i >= 0 && encoded[i] == '.')
1105         *len = i;
1106       else if (i >= 0 && encoded[i] == '$')
1107         *len = i;
1108       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1109         *len = i - 2;
1110       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1111         *len = i - 1;
1112     }
1113 }
1114
1115 /* Remove the suffix introduced by the compiler for protected object
1116    subprograms.  */
1117
1118 static void
1119 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1120 {
1121   /* Remove trailing N.  */
1122
1123   /* Protected entry subprograms are broken into two
1124      separate subprograms: The first one is unprotected, and has
1125      a 'N' suffix; the second is the protected version, and has
1126      the 'P' suffix.  The second calls the first one after handling
1127      the protection.  Since the P subprograms are internally generated,
1128      we leave these names undecoded, giving the user a clue that this
1129      entity is internal.  */
1130
1131   if (*len > 1
1132       && encoded[*len - 1] == 'N'
1133       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1134     *len = *len - 1;
1135 }
1136
1137 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1138
1139 static void
1140 ada_remove_Xbn_suffix (const char *encoded, int *len)
1141 {
1142   int i = *len - 1;
1143
1144   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1145     i--;
1146
1147   if (encoded[i] != 'X')
1148     return;
1149
1150   if (i == 0)
1151     return;
1152
1153   if (isalnum (encoded[i-1]))
1154     *len = i;
1155 }
1156
1157 /* If ENCODED follows the GNAT entity encoding conventions, then return
1158    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1159    replaced by ENCODED.
1160
1161    The resulting string is valid until the next call of ada_decode.
1162    If the string is unchanged by decoding, the original string pointer
1163    is returned.  */
1164
1165 const char *
1166 ada_decode (const char *encoded)
1167 {
1168   int i, j;
1169   int len0;
1170   const char *p;
1171   char *decoded;
1172   int at_start_name;
1173   static char *decoding_buffer = NULL;
1174   static size_t decoding_buffer_size = 0;
1175
1176   /* The name of the Ada main procedure starts with "_ada_".
1177      This prefix is not part of the decoded name, so skip this part
1178      if we see this prefix.  */
1179   if (startswith (encoded, "_ada_"))
1180     encoded += 5;
1181
1182   /* If the name starts with '_', then it is not a properly encoded
1183      name, so do not attempt to decode it.  Similarly, if the name
1184      starts with '<', the name should not be decoded.  */
1185   if (encoded[0] == '_' || encoded[0] == '<')
1186     goto Suppress;
1187
1188   len0 = strlen (encoded);
1189
1190   ada_remove_trailing_digits (encoded, &len0);
1191   ada_remove_po_subprogram_suffix (encoded, &len0);
1192
1193   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1194      the suffix is located before the current "end" of ENCODED.  We want
1195      to avoid re-matching parts of ENCODED that have previously been
1196      marked as discarded (by decrementing LEN0).  */
1197   p = strstr (encoded, "___");
1198   if (p != NULL && p - encoded < len0 - 3)
1199     {
1200       if (p[3] == 'X')
1201         len0 = p - encoded;
1202       else
1203         goto Suppress;
1204     }
1205
1206   /* Remove any trailing TKB suffix.  It tells us that this symbol
1207      is for the body of a task, but that information does not actually
1208      appear in the decoded name.  */
1209
1210   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1211     len0 -= 3;
1212
1213   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1214      from the TKB suffix because it is used for non-anonymous task
1215      bodies.  */
1216
1217   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1218     len0 -= 2;
1219
1220   /* Remove trailing "B" suffixes.  */
1221   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1222
1223   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1224     len0 -= 1;
1225
1226   /* Make decoded big enough for possible expansion by operator name.  */
1227
1228   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1229   decoded = decoding_buffer;
1230
1231   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1232
1233   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1234     {
1235       i = len0 - 2;
1236       while ((i >= 0 && isdigit (encoded[i]))
1237              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1238         i -= 1;
1239       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1240         len0 = i - 1;
1241       else if (encoded[i] == '$')
1242         len0 = i;
1243     }
1244
1245   /* The first few characters that are not alphabetic are not part
1246      of any encoding we use, so we can copy them over verbatim.  */
1247
1248   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1249     decoded[j] = encoded[i];
1250
1251   at_start_name = 1;
1252   while (i < len0)
1253     {
1254       /* Is this a symbol function?  */
1255       if (at_start_name && encoded[i] == 'O')
1256         {
1257           int k;
1258
1259           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1260             {
1261               int op_len = strlen (ada_opname_table[k].encoded);
1262               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1263                             op_len - 1) == 0)
1264                   && !isalnum (encoded[i + op_len]))
1265                 {
1266                   strcpy (decoded + j, ada_opname_table[k].decoded);
1267                   at_start_name = 0;
1268                   i += op_len;
1269                   j += strlen (ada_opname_table[k].decoded);
1270                   break;
1271                 }
1272             }
1273           if (ada_opname_table[k].encoded != NULL)
1274             continue;
1275         }
1276       at_start_name = 0;
1277
1278       /* Replace "TK__" with "__", which will eventually be translated
1279          into "." (just below).  */
1280
1281       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1282         i += 2;
1283
1284       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1285          be translated into "." (just below).  These are internal names
1286          generated for anonymous blocks inside which our symbol is nested.  */
1287
1288       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1289           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1290           && isdigit (encoded [i+4]))
1291         {
1292           int k = i + 5;
1293           
1294           while (k < len0 && isdigit (encoded[k]))
1295             k++;  /* Skip any extra digit.  */
1296
1297           /* Double-check that the "__B_{DIGITS}+" sequence we found
1298              is indeed followed by "__".  */
1299           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1300             i = k;
1301         }
1302
1303       /* Remove _E{DIGITS}+[sb] */
1304
1305       /* Just as for protected object subprograms, there are 2 categories
1306          of subprograms created by the compiler for each entry.  The first
1307          one implements the actual entry code, and has a suffix following
1308          the convention above; the second one implements the barrier and
1309          uses the same convention as above, except that the 'E' is replaced
1310          by a 'B'.
1311
1312          Just as above, we do not decode the name of barrier functions
1313          to give the user a clue that the code he is debugging has been
1314          internally generated.  */
1315
1316       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1317           && isdigit (encoded[i+2]))
1318         {
1319           int k = i + 3;
1320
1321           while (k < len0 && isdigit (encoded[k]))
1322             k++;
1323
1324           if (k < len0
1325               && (encoded[k] == 'b' || encoded[k] == 's'))
1326             {
1327               k++;
1328               /* Just as an extra precaution, make sure that if this
1329                  suffix is followed by anything else, it is a '_'.
1330                  Otherwise, we matched this sequence by accident.  */
1331               if (k == len0
1332                   || (k < len0 && encoded[k] == '_'))
1333                 i = k;
1334             }
1335         }
1336
1337       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1338          the GNAT front-end in protected object subprograms.  */
1339
1340       if (i < len0 + 3
1341           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1342         {
1343           /* Backtrack a bit up until we reach either the begining of
1344              the encoded name, or "__".  Make sure that we only find
1345              digits or lowercase characters.  */
1346           const char *ptr = encoded + i - 1;
1347
1348           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1349             ptr--;
1350           if (ptr < encoded
1351               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1352             i++;
1353         }
1354
1355       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1356         {
1357           /* This is a X[bn]* sequence not separated from the previous
1358              part of the name with a non-alpha-numeric character (in other
1359              words, immediately following an alpha-numeric character), then
1360              verify that it is placed at the end of the encoded name.  If
1361              not, then the encoding is not valid and we should abort the
1362              decoding.  Otherwise, just skip it, it is used in body-nested
1363              package names.  */
1364           do
1365             i += 1;
1366           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1367           if (i < len0)
1368             goto Suppress;
1369         }
1370       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1371         {
1372          /* Replace '__' by '.'.  */
1373           decoded[j] = '.';
1374           at_start_name = 1;
1375           i += 2;
1376           j += 1;
1377         }
1378       else
1379         {
1380           /* It's a character part of the decoded name, so just copy it
1381              over.  */
1382           decoded[j] = encoded[i];
1383           i += 1;
1384           j += 1;
1385         }
1386     }
1387   decoded[j] = '\000';
1388
1389   /* Decoded names should never contain any uppercase character.
1390      Double-check this, and abort the decoding if we find one.  */
1391
1392   for (i = 0; decoded[i] != '\0'; i += 1)
1393     if (isupper (decoded[i]) || decoded[i] == ' ')
1394       goto Suppress;
1395
1396   if (strcmp (decoded, encoded) == 0)
1397     return encoded;
1398   else
1399     return decoded;
1400
1401 Suppress:
1402   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1403   decoded = decoding_buffer;
1404   if (encoded[0] == '<')
1405     strcpy (decoded, encoded);
1406   else
1407     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1408   return decoded;
1409
1410 }
1411
1412 /* Table for keeping permanent unique copies of decoded names.  Once
1413    allocated, names in this table are never released.  While this is a
1414    storage leak, it should not be significant unless there are massive
1415    changes in the set of decoded names in successive versions of a 
1416    symbol table loaded during a single session.  */
1417 static struct htab *decoded_names_store;
1418
1419 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1420    in the language-specific part of GSYMBOL, if it has not been
1421    previously computed.  Tries to save the decoded name in the same
1422    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1423    in any case, the decoded symbol has a lifetime at least that of
1424    GSYMBOL).
1425    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1426    const, but nevertheless modified to a semantically equivalent form
1427    when a decoded name is cached in it.  */
1428
1429 const char *
1430 ada_decode_symbol (const struct general_symbol_info *arg)
1431 {
1432   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1433   const char **resultp =
1434     &gsymbol->language_specific.demangled_name;
1435
1436   if (!gsymbol->ada_mangled)
1437     {
1438       const char *decoded = ada_decode (gsymbol->name);
1439       struct obstack *obstack = gsymbol->language_specific.obstack;
1440
1441       gsymbol->ada_mangled = 1;
1442
1443       if (obstack != NULL)
1444         *resultp
1445           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1446       else
1447         {
1448           /* Sometimes, we can't find a corresponding objfile, in
1449              which case, we put the result on the heap.  Since we only
1450              decode when needed, we hope this usually does not cause a
1451              significant memory leak (FIXME).  */
1452
1453           char **slot = (char **) htab_find_slot (decoded_names_store,
1454                                                   decoded, INSERT);
1455
1456           if (*slot == NULL)
1457             *slot = xstrdup (decoded);
1458           *resultp = *slot;
1459         }
1460     }
1461
1462   return *resultp;
1463 }
1464
1465 static char *
1466 ada_la_decode (const char *encoded, int options)
1467 {
1468   return xstrdup (ada_decode (encoded));
1469 }
1470
1471 /* Implement la_sniff_from_mangled_name for Ada.  */
1472
1473 static int
1474 ada_sniff_from_mangled_name (const char *mangled, char **out)
1475 {
1476   const char *demangled = ada_decode (mangled);
1477
1478   *out = NULL;
1479
1480   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1481     {
1482       /* Set the gsymbol language to Ada, but still return 0.
1483          Two reasons for that:
1484
1485          1. For Ada, we prefer computing the symbol's decoded name
1486          on the fly rather than pre-compute it, in order to save
1487          memory (Ada projects are typically very large).
1488
1489          2. There are some areas in the definition of the GNAT
1490          encoding where, with a bit of bad luck, we might be able
1491          to decode a non-Ada symbol, generating an incorrect
1492          demangled name (Eg: names ending with "TB" for instance
1493          are identified as task bodies and so stripped from
1494          the decoded name returned).
1495
1496          Returning 1, here, but not setting *DEMANGLED, helps us get a
1497          little bit of the best of both worlds.  Because we're last,
1498          we should not affect any of the other languages that were
1499          able to demangle the symbol before us; we get to correctly
1500          tag Ada symbols as such; and even if we incorrectly tagged a
1501          non-Ada symbol, which should be rare, any routing through the
1502          Ada language should be transparent (Ada tries to behave much
1503          like C/C++ with non-Ada symbols).  */
1504       return 1;
1505     }
1506
1507   return 0;
1508 }
1509
1510 \f
1511
1512                                 /* Arrays */
1513
1514 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1515    generated by the GNAT compiler to describe the index type used
1516    for each dimension of an array, check whether it follows the latest
1517    known encoding.  If not, fix it up to conform to the latest encoding.
1518    Otherwise, do nothing.  This function also does nothing if
1519    INDEX_DESC_TYPE is NULL.
1520
1521    The GNAT encoding used to describle the array index type evolved a bit.
1522    Initially, the information would be provided through the name of each
1523    field of the structure type only, while the type of these fields was
1524    described as unspecified and irrelevant.  The debugger was then expected
1525    to perform a global type lookup using the name of that field in order
1526    to get access to the full index type description.  Because these global
1527    lookups can be very expensive, the encoding was later enhanced to make
1528    the global lookup unnecessary by defining the field type as being
1529    the full index type description.
1530
1531    The purpose of this routine is to allow us to support older versions
1532    of the compiler by detecting the use of the older encoding, and by
1533    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1534    we essentially replace each field's meaningless type by the associated
1535    index subtype).  */
1536
1537 void
1538 ada_fixup_array_indexes_type (struct type *index_desc_type)
1539 {
1540   int i;
1541
1542   if (index_desc_type == NULL)
1543     return;
1544   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1545
1546   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1547      to check one field only, no need to check them all).  If not, return
1548      now.
1549
1550      If our INDEX_DESC_TYPE was generated using the older encoding,
1551      the field type should be a meaningless integer type whose name
1552      is not equal to the field name.  */
1553   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1554       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1555                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1556     return;
1557
1558   /* Fixup each field of INDEX_DESC_TYPE.  */
1559   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1560    {
1561      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1562      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1563
1564      if (raw_type)
1565        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1566    }
1567 }
1568
1569 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1570
1571 static const char *bound_name[] = {
1572   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1573   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1574 };
1575
1576 /* Maximum number of array dimensions we are prepared to handle.  */
1577
1578 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1579
1580
1581 /* The desc_* routines return primitive portions of array descriptors
1582    (fat pointers).  */
1583
1584 /* The descriptor or array type, if any, indicated by TYPE; removes
1585    level of indirection, if needed.  */
1586
1587 static struct type *
1588 desc_base_type (struct type *type)
1589 {
1590   if (type == NULL)
1591     return NULL;
1592   type = ada_check_typedef (type);
1593   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1594     type = ada_typedef_target_type (type);
1595
1596   if (type != NULL
1597       && (TYPE_CODE (type) == TYPE_CODE_PTR
1598           || TYPE_CODE (type) == TYPE_CODE_REF))
1599     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1600   else
1601     return type;
1602 }
1603
1604 /* True iff TYPE indicates a "thin" array pointer type.  */
1605
1606 static int
1607 is_thin_pntr (struct type *type)
1608 {
1609   return
1610     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1611     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1612 }
1613
1614 /* The descriptor type for thin pointer type TYPE.  */
1615
1616 static struct type *
1617 thin_descriptor_type (struct type *type)
1618 {
1619   struct type *base_type = desc_base_type (type);
1620
1621   if (base_type == NULL)
1622     return NULL;
1623   if (is_suffix (ada_type_name (base_type), "___XVE"))
1624     return base_type;
1625   else
1626     {
1627       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1628
1629       if (alt_type == NULL)
1630         return base_type;
1631       else
1632         return alt_type;
1633     }
1634 }
1635
1636 /* A pointer to the array data for thin-pointer value VAL.  */
1637
1638 static struct value *
1639 thin_data_pntr (struct value *val)
1640 {
1641   struct type *type = ada_check_typedef (value_type (val));
1642   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1643
1644   data_type = lookup_pointer_type (data_type);
1645
1646   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1647     return value_cast (data_type, value_copy (val));
1648   else
1649     return value_from_longest (data_type, value_address (val));
1650 }
1651
1652 /* True iff TYPE indicates a "thick" array pointer type.  */
1653
1654 static int
1655 is_thick_pntr (struct type *type)
1656 {
1657   type = desc_base_type (type);
1658   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1659           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1660 }
1661
1662 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1663    pointer to one, the type of its bounds data; otherwise, NULL.  */
1664
1665 static struct type *
1666 desc_bounds_type (struct type *type)
1667 {
1668   struct type *r;
1669
1670   type = desc_base_type (type);
1671
1672   if (type == NULL)
1673     return NULL;
1674   else if (is_thin_pntr (type))
1675     {
1676       type = thin_descriptor_type (type);
1677       if (type == NULL)
1678         return NULL;
1679       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1680       if (r != NULL)
1681         return ada_check_typedef (r);
1682     }
1683   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1684     {
1685       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1686       if (r != NULL)
1687         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1688     }
1689   return NULL;
1690 }
1691
1692 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1693    one, a pointer to its bounds data.   Otherwise NULL.  */
1694
1695 static struct value *
1696 desc_bounds (struct value *arr)
1697 {
1698   struct type *type = ada_check_typedef (value_type (arr));
1699
1700   if (is_thin_pntr (type))
1701     {
1702       struct type *bounds_type =
1703         desc_bounds_type (thin_descriptor_type (type));
1704       LONGEST addr;
1705
1706       if (bounds_type == NULL)
1707         error (_("Bad GNAT array descriptor"));
1708
1709       /* NOTE: The following calculation is not really kosher, but
1710          since desc_type is an XVE-encoded type (and shouldn't be),
1711          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1712       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1713         addr = value_as_long (arr);
1714       else
1715         addr = value_address (arr);
1716
1717       return
1718         value_from_longest (lookup_pointer_type (bounds_type),
1719                             addr - TYPE_LENGTH (bounds_type));
1720     }
1721
1722   else if (is_thick_pntr (type))
1723     {
1724       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1725                                                _("Bad GNAT array descriptor"));
1726       struct type *p_bounds_type = value_type (p_bounds);
1727
1728       if (p_bounds_type
1729           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1730         {
1731           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1732
1733           if (TYPE_STUB (target_type))
1734             p_bounds = value_cast (lookup_pointer_type
1735                                    (ada_check_typedef (target_type)),
1736                                    p_bounds);
1737         }
1738       else
1739         error (_("Bad GNAT array descriptor"));
1740
1741       return p_bounds;
1742     }
1743   else
1744     return NULL;
1745 }
1746
1747 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1748    position of the field containing the address of the bounds data.  */
1749
1750 static int
1751 fat_pntr_bounds_bitpos (struct type *type)
1752 {
1753   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1754 }
1755
1756 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1757    size of the field containing the address of the bounds data.  */
1758
1759 static int
1760 fat_pntr_bounds_bitsize (struct type *type)
1761 {
1762   type = desc_base_type (type);
1763
1764   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1765     return TYPE_FIELD_BITSIZE (type, 1);
1766   else
1767     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1768 }
1769
1770 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1771    pointer to one, the type of its array data (a array-with-no-bounds type);
1772    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1773    data.  */
1774
1775 static struct type *
1776 desc_data_target_type (struct type *type)
1777 {
1778   type = desc_base_type (type);
1779
1780   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1781   if (is_thin_pntr (type))
1782     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1783   else if (is_thick_pntr (type))
1784     {
1785       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1786
1787       if (data_type
1788           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1789         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1790     }
1791
1792   return NULL;
1793 }
1794
1795 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1796    its array data.  */
1797
1798 static struct value *
1799 desc_data (struct value *arr)
1800 {
1801   struct type *type = value_type (arr);
1802
1803   if (is_thin_pntr (type))
1804     return thin_data_pntr (arr);
1805   else if (is_thick_pntr (type))
1806     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1807                              _("Bad GNAT array descriptor"));
1808   else
1809     return NULL;
1810 }
1811
1812
1813 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1814    position of the field containing the address of the data.  */
1815
1816 static int
1817 fat_pntr_data_bitpos (struct type *type)
1818 {
1819   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1820 }
1821
1822 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1823    size of the field containing the address of the data.  */
1824
1825 static int
1826 fat_pntr_data_bitsize (struct type *type)
1827 {
1828   type = desc_base_type (type);
1829
1830   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1831     return TYPE_FIELD_BITSIZE (type, 0);
1832   else
1833     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1834 }
1835
1836 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1837    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1838    bound, if WHICH is 1.  The first bound is I=1.  */
1839
1840 static struct value *
1841 desc_one_bound (struct value *bounds, int i, int which)
1842 {
1843   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1844                            _("Bad GNAT array descriptor bounds"));
1845 }
1846
1847 /* If BOUNDS is an array-bounds structure type, return the bit position
1848    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1849    bound, if WHICH is 1.  The first bound is I=1.  */
1850
1851 static int
1852 desc_bound_bitpos (struct type *type, int i, int which)
1853 {
1854   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1855 }
1856
1857 /* If BOUNDS is an array-bounds structure type, return the bit field size
1858    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1859    bound, if WHICH is 1.  The first bound is I=1.  */
1860
1861 static int
1862 desc_bound_bitsize (struct type *type, int i, int which)
1863 {
1864   type = desc_base_type (type);
1865
1866   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1867     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1868   else
1869     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1870 }
1871
1872 /* If TYPE is the type of an array-bounds structure, the type of its
1873    Ith bound (numbering from 1).  Otherwise, NULL.  */
1874
1875 static struct type *
1876 desc_index_type (struct type *type, int i)
1877 {
1878   type = desc_base_type (type);
1879
1880   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1881     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1882   else
1883     return NULL;
1884 }
1885
1886 /* The number of index positions in the array-bounds type TYPE.
1887    Return 0 if TYPE is NULL.  */
1888
1889 static int
1890 desc_arity (struct type *type)
1891 {
1892   type = desc_base_type (type);
1893
1894   if (type != NULL)
1895     return TYPE_NFIELDS (type) / 2;
1896   return 0;
1897 }
1898
1899 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1900    an array descriptor type (representing an unconstrained array
1901    type).  */
1902
1903 static int
1904 ada_is_direct_array_type (struct type *type)
1905 {
1906   if (type == NULL)
1907     return 0;
1908   type = ada_check_typedef (type);
1909   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1910           || ada_is_array_descriptor_type (type));
1911 }
1912
1913 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1914  * to one.  */
1915
1916 static int
1917 ada_is_array_type (struct type *type)
1918 {
1919   while (type != NULL 
1920          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1921              || TYPE_CODE (type) == TYPE_CODE_REF))
1922     type = TYPE_TARGET_TYPE (type);
1923   return ada_is_direct_array_type (type);
1924 }
1925
1926 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1927
1928 int
1929 ada_is_simple_array_type (struct type *type)
1930 {
1931   if (type == NULL)
1932     return 0;
1933   type = ada_check_typedef (type);
1934   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1935           || (TYPE_CODE (type) == TYPE_CODE_PTR
1936               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1937                  == TYPE_CODE_ARRAY));
1938 }
1939
1940 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1941
1942 int
1943 ada_is_array_descriptor_type (struct type *type)
1944 {
1945   struct type *data_type = desc_data_target_type (type);
1946
1947   if (type == NULL)
1948     return 0;
1949   type = ada_check_typedef (type);
1950   return (data_type != NULL
1951           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1952           && desc_arity (desc_bounds_type (type)) > 0);
1953 }
1954
1955 /* Non-zero iff type is a partially mal-formed GNAT array
1956    descriptor.  FIXME: This is to compensate for some problems with
1957    debugging output from GNAT.  Re-examine periodically to see if it
1958    is still needed.  */
1959
1960 int
1961 ada_is_bogus_array_descriptor (struct type *type)
1962 {
1963   return
1964     type != NULL
1965     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1966     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1967         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1968     && !ada_is_array_descriptor_type (type);
1969 }
1970
1971
1972 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1973    (fat pointer) returns the type of the array data described---specifically,
1974    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1975    in from the descriptor; otherwise, they are left unspecified.  If
1976    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1977    returns NULL.  The result is simply the type of ARR if ARR is not
1978    a descriptor.  */
1979 struct type *
1980 ada_type_of_array (struct value *arr, int bounds)
1981 {
1982   if (ada_is_constrained_packed_array_type (value_type (arr)))
1983     return decode_constrained_packed_array_type (value_type (arr));
1984
1985   if (!ada_is_array_descriptor_type (value_type (arr)))
1986     return value_type (arr);
1987
1988   if (!bounds)
1989     {
1990       struct type *array_type =
1991         ada_check_typedef (desc_data_target_type (value_type (arr)));
1992
1993       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1994         TYPE_FIELD_BITSIZE (array_type, 0) =
1995           decode_packed_array_bitsize (value_type (arr));
1996       
1997       return array_type;
1998     }
1999   else
2000     {
2001       struct type *elt_type;
2002       int arity;
2003       struct value *descriptor;
2004
2005       elt_type = ada_array_element_type (value_type (arr), -1);
2006       arity = ada_array_arity (value_type (arr));
2007
2008       if (elt_type == NULL || arity == 0)
2009         return ada_check_typedef (value_type (arr));
2010
2011       descriptor = desc_bounds (arr);
2012       if (value_as_long (descriptor) == 0)
2013         return NULL;
2014       while (arity > 0)
2015         {
2016           struct type *range_type = alloc_type_copy (value_type (arr));
2017           struct type *array_type = alloc_type_copy (value_type (arr));
2018           struct value *low = desc_one_bound (descriptor, arity, 0);
2019           struct value *high = desc_one_bound (descriptor, arity, 1);
2020
2021           arity -= 1;
2022           create_static_range_type (range_type, value_type (low),
2023                                     longest_to_int (value_as_long (low)),
2024                                     longest_to_int (value_as_long (high)));
2025           elt_type = create_array_type (array_type, elt_type, range_type);
2026
2027           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2028             {
2029               /* We need to store the element packed bitsize, as well as
2030                  recompute the array size, because it was previously
2031                  computed based on the unpacked element size.  */
2032               LONGEST lo = value_as_long (low);
2033               LONGEST hi = value_as_long (high);
2034
2035               TYPE_FIELD_BITSIZE (elt_type, 0) =
2036                 decode_packed_array_bitsize (value_type (arr));
2037               /* If the array has no element, then the size is already
2038                  zero, and does not need to be recomputed.  */
2039               if (lo < hi)
2040                 {
2041                   int array_bitsize =
2042                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2043
2044                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2045                 }
2046             }
2047         }
2048
2049       return lookup_pointer_type (elt_type);
2050     }
2051 }
2052
2053 /* If ARR does not represent an array, returns ARR unchanged.
2054    Otherwise, returns either a standard GDB array with bounds set
2055    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2056    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2057
2058 struct value *
2059 ada_coerce_to_simple_array_ptr (struct value *arr)
2060 {
2061   if (ada_is_array_descriptor_type (value_type (arr)))
2062     {
2063       struct type *arrType = ada_type_of_array (arr, 1);
2064
2065       if (arrType == NULL)
2066         return NULL;
2067       return value_cast (arrType, value_copy (desc_data (arr)));
2068     }
2069   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2070     return decode_constrained_packed_array (arr);
2071   else
2072     return arr;
2073 }
2074
2075 /* If ARR does not represent an array, returns ARR unchanged.
2076    Otherwise, returns a standard GDB array describing ARR (which may
2077    be ARR itself if it already is in the proper form).  */
2078
2079 struct value *
2080 ada_coerce_to_simple_array (struct value *arr)
2081 {
2082   if (ada_is_array_descriptor_type (value_type (arr)))
2083     {
2084       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2085
2086       if (arrVal == NULL)
2087         error (_("Bounds unavailable for null array pointer."));
2088       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2089       return value_ind (arrVal);
2090     }
2091   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2092     return decode_constrained_packed_array (arr);
2093   else
2094     return arr;
2095 }
2096
2097 /* If TYPE represents a GNAT array type, return it translated to an
2098    ordinary GDB array type (possibly with BITSIZE fields indicating
2099    packing).  For other types, is the identity.  */
2100
2101 struct type *
2102 ada_coerce_to_simple_array_type (struct type *type)
2103 {
2104   if (ada_is_constrained_packed_array_type (type))
2105     return decode_constrained_packed_array_type (type);
2106
2107   if (ada_is_array_descriptor_type (type))
2108     return ada_check_typedef (desc_data_target_type (type));
2109
2110   return type;
2111 }
2112
2113 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2114
2115 static int
2116 ada_is_packed_array_type  (struct type *type)
2117 {
2118   if (type == NULL)
2119     return 0;
2120   type = desc_base_type (type);
2121   type = ada_check_typedef (type);
2122   return
2123     ada_type_name (type) != NULL
2124     && strstr (ada_type_name (type), "___XP") != NULL;
2125 }
2126
2127 /* Non-zero iff TYPE represents a standard GNAT constrained
2128    packed-array type.  */
2129
2130 int
2131 ada_is_constrained_packed_array_type (struct type *type)
2132 {
2133   return ada_is_packed_array_type (type)
2134     && !ada_is_array_descriptor_type (type);
2135 }
2136
2137 /* Non-zero iff TYPE represents an array descriptor for a
2138    unconstrained packed-array type.  */
2139
2140 static int
2141 ada_is_unconstrained_packed_array_type (struct type *type)
2142 {
2143   return ada_is_packed_array_type (type)
2144     && ada_is_array_descriptor_type (type);
2145 }
2146
2147 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2148    return the size of its elements in bits.  */
2149
2150 static long
2151 decode_packed_array_bitsize (struct type *type)
2152 {
2153   const char *raw_name;
2154   const char *tail;
2155   long bits;
2156
2157   /* Access to arrays implemented as fat pointers are encoded as a typedef
2158      of the fat pointer type.  We need the name of the fat pointer type
2159      to do the decoding, so strip the typedef layer.  */
2160   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2161     type = ada_typedef_target_type (type);
2162
2163   raw_name = ada_type_name (ada_check_typedef (type));
2164   if (!raw_name)
2165     raw_name = ada_type_name (desc_base_type (type));
2166
2167   if (!raw_name)
2168     return 0;
2169
2170   tail = strstr (raw_name, "___XP");
2171   gdb_assert (tail != NULL);
2172
2173   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2174     {
2175       lim_warning
2176         (_("could not understand bit size information on packed array"));
2177       return 0;
2178     }
2179
2180   return bits;
2181 }
2182
2183 /* Given that TYPE is a standard GDB array type with all bounds filled
2184    in, and that the element size of its ultimate scalar constituents
2185    (that is, either its elements, or, if it is an array of arrays, its
2186    elements' elements, etc.) is *ELT_BITS, return an identical type,
2187    but with the bit sizes of its elements (and those of any
2188    constituent arrays) recorded in the BITSIZE components of its
2189    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2190    in bits.
2191
2192    Note that, for arrays whose index type has an XA encoding where
2193    a bound references a record discriminant, getting that discriminant,
2194    and therefore the actual value of that bound, is not possible
2195    because none of the given parameters gives us access to the record.
2196    This function assumes that it is OK in the context where it is being
2197    used to return an array whose bounds are still dynamic and where
2198    the length is arbitrary.  */
2199
2200 static struct type *
2201 constrained_packed_array_type (struct type *type, long *elt_bits)
2202 {
2203   struct type *new_elt_type;
2204   struct type *new_type;
2205   struct type *index_type_desc;
2206   struct type *index_type;
2207   LONGEST low_bound, high_bound;
2208
2209   type = ada_check_typedef (type);
2210   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2211     return type;
2212
2213   index_type_desc = ada_find_parallel_type (type, "___XA");
2214   if (index_type_desc)
2215     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2216                                       NULL);
2217   else
2218     index_type = TYPE_INDEX_TYPE (type);
2219
2220   new_type = alloc_type_copy (type);
2221   new_elt_type =
2222     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2223                                    elt_bits);
2224   create_array_type (new_type, new_elt_type, index_type);
2225   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2226   TYPE_NAME (new_type) = ada_type_name (type);
2227
2228   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2229        && is_dynamic_type (check_typedef (index_type)))
2230       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2231     low_bound = high_bound = 0;
2232   if (high_bound < low_bound)
2233     *elt_bits = TYPE_LENGTH (new_type) = 0;
2234   else
2235     {
2236       *elt_bits *= (high_bound - low_bound + 1);
2237       TYPE_LENGTH (new_type) =
2238         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2239     }
2240
2241   TYPE_FIXED_INSTANCE (new_type) = 1;
2242   return new_type;
2243 }
2244
2245 /* The array type encoded by TYPE, where
2246    ada_is_constrained_packed_array_type (TYPE).  */
2247
2248 static struct type *
2249 decode_constrained_packed_array_type (struct type *type)
2250 {
2251   const char *raw_name = ada_type_name (ada_check_typedef (type));
2252   char *name;
2253   const char *tail;
2254   struct type *shadow_type;
2255   long bits;
2256
2257   if (!raw_name)
2258     raw_name = ada_type_name (desc_base_type (type));
2259
2260   if (!raw_name)
2261     return NULL;
2262
2263   name = (char *) alloca (strlen (raw_name) + 1);
2264   tail = strstr (raw_name, "___XP");
2265   type = desc_base_type (type);
2266
2267   memcpy (name, raw_name, tail - raw_name);
2268   name[tail - raw_name] = '\000';
2269
2270   shadow_type = ada_find_parallel_type_with_name (type, name);
2271
2272   if (shadow_type == NULL)
2273     {
2274       lim_warning (_("could not find bounds information on packed array"));
2275       return NULL;
2276     }
2277   shadow_type = check_typedef (shadow_type);
2278
2279   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2280     {
2281       lim_warning (_("could not understand bounds "
2282                      "information on packed array"));
2283       return NULL;
2284     }
2285
2286   bits = decode_packed_array_bitsize (type);
2287   return constrained_packed_array_type (shadow_type, &bits);
2288 }
2289
2290 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2291    array, returns a simple array that denotes that array.  Its type is a
2292    standard GDB array type except that the BITSIZEs of the array
2293    target types are set to the number of bits in each element, and the
2294    type length is set appropriately.  */
2295
2296 static struct value *
2297 decode_constrained_packed_array (struct value *arr)
2298 {
2299   struct type *type;
2300
2301   /* If our value is a pointer, then dereference it. Likewise if
2302      the value is a reference.  Make sure that this operation does not
2303      cause the target type to be fixed, as this would indirectly cause
2304      this array to be decoded.  The rest of the routine assumes that
2305      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2306      and "value_ind" routines to perform the dereferencing, as opposed
2307      to using "ada_coerce_ref" or "ada_value_ind".  */
2308   arr = coerce_ref (arr);
2309   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2310     arr = value_ind (arr);
2311
2312   type = decode_constrained_packed_array_type (value_type (arr));
2313   if (type == NULL)
2314     {
2315       error (_("can't unpack array"));
2316       return NULL;
2317     }
2318
2319   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2320       && ada_is_modular_type (value_type (arr)))
2321     {
2322        /* This is a (right-justified) modular type representing a packed
2323          array with no wrapper.  In order to interpret the value through
2324          the (left-justified) packed array type we just built, we must
2325          first left-justify it.  */
2326       int bit_size, bit_pos;
2327       ULONGEST mod;
2328
2329       mod = ada_modulus (value_type (arr)) - 1;
2330       bit_size = 0;
2331       while (mod > 0)
2332         {
2333           bit_size += 1;
2334           mod >>= 1;
2335         }
2336       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2337       arr = ada_value_primitive_packed_val (arr, NULL,
2338                                             bit_pos / HOST_CHAR_BIT,
2339                                             bit_pos % HOST_CHAR_BIT,
2340                                             bit_size,
2341                                             type);
2342     }
2343
2344   return coerce_unspec_val_to_type (arr, type);
2345 }
2346
2347
2348 /* The value of the element of packed array ARR at the ARITY indices
2349    given in IND.   ARR must be a simple array.  */
2350
2351 static struct value *
2352 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2353 {
2354   int i;
2355   int bits, elt_off, bit_off;
2356   long elt_total_bit_offset;
2357   struct type *elt_type;
2358   struct value *v;
2359
2360   bits = 0;
2361   elt_total_bit_offset = 0;
2362   elt_type = ada_check_typedef (value_type (arr));
2363   for (i = 0; i < arity; i += 1)
2364     {
2365       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2366           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2367         error
2368           (_("attempt to do packed indexing of "
2369              "something other than a packed array"));
2370       else
2371         {
2372           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2373           LONGEST lowerbound, upperbound;
2374           LONGEST idx;
2375
2376           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2377             {
2378               lim_warning (_("don't know bounds of array"));
2379               lowerbound = upperbound = 0;
2380             }
2381
2382           idx = pos_atr (ind[i]);
2383           if (idx < lowerbound || idx > upperbound)
2384             lim_warning (_("packed array index %ld out of bounds"),
2385                          (long) idx);
2386           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2387           elt_total_bit_offset += (idx - lowerbound) * bits;
2388           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2389         }
2390     }
2391   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2392   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2393
2394   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2395                                       bits, elt_type);
2396   return v;
2397 }
2398
2399 /* Non-zero iff TYPE includes negative integer values.  */
2400
2401 static int
2402 has_negatives (struct type *type)
2403 {
2404   switch (TYPE_CODE (type))
2405     {
2406     default:
2407       return 0;
2408     case TYPE_CODE_INT:
2409       return !TYPE_UNSIGNED (type);
2410     case TYPE_CODE_RANGE:
2411       return TYPE_LOW_BOUND (type) < 0;
2412     }
2413 }
2414
2415 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2416    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2417    the unpacked buffer.
2418
2419    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2420    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2421
2422    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2423    zero otherwise.
2424
2425    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2426
2427    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2428
2429 static void
2430 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2431                           gdb_byte *unpacked, int unpacked_len,
2432                           int is_big_endian, int is_signed_type,
2433                           int is_scalar)
2434 {
2435   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2436   int src_idx;                  /* Index into the source area */
2437   int src_bytes_left;           /* Number of source bytes left to process.  */
2438   int srcBitsLeft;              /* Number of source bits left to move */
2439   int unusedLS;                 /* Number of bits in next significant
2440                                    byte of source that are unused */
2441
2442   int unpacked_idx;             /* Index into the unpacked buffer */
2443   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2444
2445   unsigned long accum;          /* Staging area for bits being transferred */
2446   int accumSize;                /* Number of meaningful bits in accum */
2447   unsigned char sign;
2448
2449   /* Transmit bytes from least to most significant; delta is the direction
2450      the indices move.  */
2451   int delta = is_big_endian ? -1 : 1;
2452
2453   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2454      bits from SRC.  .*/
2455   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2456     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2457            bit_size, unpacked_len);
2458
2459   srcBitsLeft = bit_size;
2460   src_bytes_left = src_len;
2461   unpacked_bytes_left = unpacked_len;
2462   sign = 0;
2463
2464   if (is_big_endian)
2465     {
2466       src_idx = src_len - 1;
2467       if (is_signed_type
2468           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2469         sign = ~0;
2470
2471       unusedLS =
2472         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2473         % HOST_CHAR_BIT;
2474
2475       if (is_scalar)
2476         {
2477           accumSize = 0;
2478           unpacked_idx = unpacked_len - 1;
2479         }
2480       else
2481         {
2482           /* Non-scalar values must be aligned at a byte boundary...  */
2483           accumSize =
2484             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2485           /* ... And are placed at the beginning (most-significant) bytes
2486              of the target.  */
2487           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2488           unpacked_bytes_left = unpacked_idx + 1;
2489         }
2490     }
2491   else
2492     {
2493       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2494
2495       src_idx = unpacked_idx = 0;
2496       unusedLS = bit_offset;
2497       accumSize = 0;
2498
2499       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2500         sign = ~0;
2501     }
2502
2503   accum = 0;
2504   while (src_bytes_left > 0)
2505     {
2506       /* Mask for removing bits of the next source byte that are not
2507          part of the value.  */
2508       unsigned int unusedMSMask =
2509         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2510         1;
2511       /* Sign-extend bits for this byte.  */
2512       unsigned int signMask = sign & ~unusedMSMask;
2513
2514       accum |=
2515         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2516       accumSize += HOST_CHAR_BIT - unusedLS;
2517       if (accumSize >= HOST_CHAR_BIT)
2518         {
2519           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2520           accumSize -= HOST_CHAR_BIT;
2521           accum >>= HOST_CHAR_BIT;
2522           unpacked_bytes_left -= 1;
2523           unpacked_idx += delta;
2524         }
2525       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2526       unusedLS = 0;
2527       src_bytes_left -= 1;
2528       src_idx += delta;
2529     }
2530   while (unpacked_bytes_left > 0)
2531     {
2532       accum |= sign << accumSize;
2533       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2534       accumSize -= HOST_CHAR_BIT;
2535       if (accumSize < 0)
2536         accumSize = 0;
2537       accum >>= HOST_CHAR_BIT;
2538       unpacked_bytes_left -= 1;
2539       unpacked_idx += delta;
2540     }
2541 }
2542
2543 /* Create a new value of type TYPE from the contents of OBJ starting
2544    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2545    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2546    assigning through the result will set the field fetched from.
2547    VALADDR is ignored unless OBJ is NULL, in which case,
2548    VALADDR+OFFSET must address the start of storage containing the 
2549    packed value.  The value returned  in this case is never an lval.
2550    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2551
2552 struct value *
2553 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2554                                 long offset, int bit_offset, int bit_size,
2555                                 struct type *type)
2556 {
2557   struct value *v;
2558   const gdb_byte *src;                /* First byte containing data to unpack */
2559   gdb_byte *unpacked;
2560   const int is_scalar = is_scalar_type (type);
2561   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2562   gdb::byte_vector staging;
2563
2564   type = ada_check_typedef (type);
2565
2566   if (obj == NULL)
2567     src = valaddr + offset;
2568   else
2569     src = value_contents (obj) + offset;
2570
2571   if (is_dynamic_type (type))
2572     {
2573       /* The length of TYPE might by dynamic, so we need to resolve
2574          TYPE in order to know its actual size, which we then use
2575          to create the contents buffer of the value we return.
2576          The difficulty is that the data containing our object is
2577          packed, and therefore maybe not at a byte boundary.  So, what
2578          we do, is unpack the data into a byte-aligned buffer, and then
2579          use that buffer as our object's value for resolving the type.  */
2580       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2581       staging.resize (staging_len);
2582
2583       ada_unpack_from_contents (src, bit_offset, bit_size,
2584                                 staging.data (), staging.size (),
2585                                 is_big_endian, has_negatives (type),
2586                                 is_scalar);
2587       type = resolve_dynamic_type (type, staging.data (), 0);
2588       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2589         {
2590           /* This happens when the length of the object is dynamic,
2591              and is actually smaller than the space reserved for it.
2592              For instance, in an array of variant records, the bit_size
2593              we're given is the array stride, which is constant and
2594              normally equal to the maximum size of its element.
2595              But, in reality, each element only actually spans a portion
2596              of that stride.  */
2597           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2598         }
2599     }
2600
2601   if (obj == NULL)
2602     {
2603       v = allocate_value (type);
2604       src = valaddr + offset;
2605     }
2606   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2607     {
2608       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2609       gdb_byte *buf;
2610
2611       v = value_at (type, value_address (obj) + offset);
2612       buf = (gdb_byte *) alloca (src_len);
2613       read_memory (value_address (v), buf, src_len);
2614       src = buf;
2615     }
2616   else
2617     {
2618       v = allocate_value (type);
2619       src = value_contents (obj) + offset;
2620     }
2621
2622   if (obj != NULL)
2623     {
2624       long new_offset = offset;
2625
2626       set_value_component_location (v, obj);
2627       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2628       set_value_bitsize (v, bit_size);
2629       if (value_bitpos (v) >= HOST_CHAR_BIT)
2630         {
2631           ++new_offset;
2632           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2633         }
2634       set_value_offset (v, new_offset);
2635
2636       /* Also set the parent value.  This is needed when trying to
2637          assign a new value (in inferior memory).  */
2638       set_value_parent (v, obj);
2639     }
2640   else
2641     set_value_bitsize (v, bit_size);
2642   unpacked = value_contents_writeable (v);
2643
2644   if (bit_size == 0)
2645     {
2646       memset (unpacked, 0, TYPE_LENGTH (type));
2647       return v;
2648     }
2649
2650   if (staging.size () == TYPE_LENGTH (type))
2651     {
2652       /* Small short-cut: If we've unpacked the data into a buffer
2653          of the same size as TYPE's length, then we can reuse that,
2654          instead of doing the unpacking again.  */
2655       memcpy (unpacked, staging.data (), staging.size ());
2656     }
2657   else
2658     ada_unpack_from_contents (src, bit_offset, bit_size,
2659                               unpacked, TYPE_LENGTH (type),
2660                               is_big_endian, has_negatives (type), is_scalar);
2661
2662   return v;
2663 }
2664
2665 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2666    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2667    not overlap.  */
2668 static void
2669 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2670            int src_offset, int n, int bits_big_endian_p)
2671 {
2672   unsigned int accum, mask;
2673   int accum_bits, chunk_size;
2674
2675   target += targ_offset / HOST_CHAR_BIT;
2676   targ_offset %= HOST_CHAR_BIT;
2677   source += src_offset / HOST_CHAR_BIT;
2678   src_offset %= HOST_CHAR_BIT;
2679   if (bits_big_endian_p)
2680     {
2681       accum = (unsigned char) *source;
2682       source += 1;
2683       accum_bits = HOST_CHAR_BIT - src_offset;
2684
2685       while (n > 0)
2686         {
2687           int unused_right;
2688
2689           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2690           accum_bits += HOST_CHAR_BIT;
2691           source += 1;
2692           chunk_size = HOST_CHAR_BIT - targ_offset;
2693           if (chunk_size > n)
2694             chunk_size = n;
2695           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2696           mask = ((1 << chunk_size) - 1) << unused_right;
2697           *target =
2698             (*target & ~mask)
2699             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2700           n -= chunk_size;
2701           accum_bits -= chunk_size;
2702           target += 1;
2703           targ_offset = 0;
2704         }
2705     }
2706   else
2707     {
2708       accum = (unsigned char) *source >> src_offset;
2709       source += 1;
2710       accum_bits = HOST_CHAR_BIT - src_offset;
2711
2712       while (n > 0)
2713         {
2714           accum = accum + ((unsigned char) *source << accum_bits);
2715           accum_bits += HOST_CHAR_BIT;
2716           source += 1;
2717           chunk_size = HOST_CHAR_BIT - targ_offset;
2718           if (chunk_size > n)
2719             chunk_size = n;
2720           mask = ((1 << chunk_size) - 1) << targ_offset;
2721           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2722           n -= chunk_size;
2723           accum_bits -= chunk_size;
2724           accum >>= chunk_size;
2725           target += 1;
2726           targ_offset = 0;
2727         }
2728     }
2729 }
2730
2731 /* Store the contents of FROMVAL into the location of TOVAL.
2732    Return a new value with the location of TOVAL and contents of
2733    FROMVAL.   Handles assignment into packed fields that have
2734    floating-point or non-scalar types.  */
2735
2736 static struct value *
2737 ada_value_assign (struct value *toval, struct value *fromval)
2738 {
2739   struct type *type = value_type (toval);
2740   int bits = value_bitsize (toval);
2741
2742   toval = ada_coerce_ref (toval);
2743   fromval = ada_coerce_ref (fromval);
2744
2745   if (ada_is_direct_array_type (value_type (toval)))
2746     toval = ada_coerce_to_simple_array (toval);
2747   if (ada_is_direct_array_type (value_type (fromval)))
2748     fromval = ada_coerce_to_simple_array (fromval);
2749
2750   if (!deprecated_value_modifiable (toval))
2751     error (_("Left operand of assignment is not a modifiable lvalue."));
2752
2753   if (VALUE_LVAL (toval) == lval_memory
2754       && bits > 0
2755       && (TYPE_CODE (type) == TYPE_CODE_FLT
2756           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2757     {
2758       int len = (value_bitpos (toval)
2759                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2760       int from_size;
2761       gdb_byte *buffer = (gdb_byte *) alloca (len);
2762       struct value *val;
2763       CORE_ADDR to_addr = value_address (toval);
2764
2765       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2766         fromval = value_cast (type, fromval);
2767
2768       read_memory (to_addr, buffer, len);
2769       from_size = value_bitsize (fromval);
2770       if (from_size == 0)
2771         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2772       if (gdbarch_bits_big_endian (get_type_arch (type)))
2773         move_bits (buffer, value_bitpos (toval),
2774                    value_contents (fromval), from_size - bits, bits, 1);
2775       else
2776         move_bits (buffer, value_bitpos (toval),
2777                    value_contents (fromval), 0, bits, 0);
2778       write_memory_with_notification (to_addr, buffer, len);
2779
2780       val = value_copy (toval);
2781       memcpy (value_contents_raw (val), value_contents (fromval),
2782               TYPE_LENGTH (type));
2783       deprecated_set_value_type (val, type);
2784
2785       return val;
2786     }
2787
2788   return value_assign (toval, fromval);
2789 }
2790
2791
2792 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2793    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2794    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2795    COMPONENT, and not the inferior's memory.  The current contents
2796    of COMPONENT are ignored.
2797
2798    Although not part of the initial design, this function also works
2799    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2800    had a null address, and COMPONENT had an address which is equal to
2801    its offset inside CONTAINER.  */
2802
2803 static void
2804 value_assign_to_component (struct value *container, struct value *component,
2805                            struct value *val)
2806 {
2807   LONGEST offset_in_container =
2808     (LONGEST)  (value_address (component) - value_address (container));
2809   int bit_offset_in_container =
2810     value_bitpos (component) - value_bitpos (container);
2811   int bits;
2812
2813   val = value_cast (value_type (component), val);
2814
2815   if (value_bitsize (component) == 0)
2816     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2817   else
2818     bits = value_bitsize (component);
2819
2820   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2821     move_bits (value_contents_writeable (container) + offset_in_container,
2822                value_bitpos (container) + bit_offset_in_container,
2823                value_contents (val),
2824                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2825                bits, 1);
2826   else
2827     move_bits (value_contents_writeable (container) + offset_in_container,
2828                value_bitpos (container) + bit_offset_in_container,
2829                value_contents (val), 0, bits, 0);
2830 }
2831
2832 /* The value of the element of array ARR at the ARITY indices given in IND.
2833    ARR may be either a simple array, GNAT array descriptor, or pointer
2834    thereto.  */
2835
2836 struct value *
2837 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2838 {
2839   int k;
2840   struct value *elt;
2841   struct type *elt_type;
2842
2843   elt = ada_coerce_to_simple_array (arr);
2844
2845   elt_type = ada_check_typedef (value_type (elt));
2846   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2847       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2848     return value_subscript_packed (elt, arity, ind);
2849
2850   for (k = 0; k < arity; k += 1)
2851     {
2852       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2853         error (_("too many subscripts (%d expected)"), k);
2854       elt = value_subscript (elt, pos_atr (ind[k]));
2855     }
2856   return elt;
2857 }
2858
2859 /* Assuming ARR is a pointer to a GDB array, the value of the element
2860    of *ARR at the ARITY indices given in IND.
2861    Does not read the entire array into memory.
2862
2863    Note: Unlike what one would expect, this function is used instead of
2864    ada_value_subscript for basically all non-packed array types.  The reason
2865    for this is that a side effect of doing our own pointer arithmetics instead
2866    of relying on value_subscript is that there is no implicit typedef peeling.
2867    This is important for arrays of array accesses, where it allows us to
2868    preserve the fact that the array's element is an array access, where the
2869    access part os encoded in a typedef layer.  */
2870
2871 static struct value *
2872 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2873 {
2874   int k;
2875   struct value *array_ind = ada_value_ind (arr);
2876   struct type *type
2877     = check_typedef (value_enclosing_type (array_ind));
2878
2879   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2880       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2881     return value_subscript_packed (array_ind, arity, ind);
2882
2883   for (k = 0; k < arity; k += 1)
2884     {
2885       LONGEST lwb, upb;
2886       struct value *lwb_value;
2887
2888       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2889         error (_("too many subscripts (%d expected)"), k);
2890       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2891                         value_copy (arr));
2892       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2893       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2894       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2895       type = TYPE_TARGET_TYPE (type);
2896     }
2897
2898   return value_ind (arr);
2899 }
2900
2901 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2902    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2903    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2904    this array is LOW, as per Ada rules.  */
2905 static struct value *
2906 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2907                           int low, int high)
2908 {
2909   struct type *type0 = ada_check_typedef (type);
2910   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2911   struct type *index_type
2912     = create_static_range_type (NULL, base_index_type, low, high);
2913   struct type *slice_type = create_array_type_with_stride
2914                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2915                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2916                                TYPE_FIELD_BITSIZE (type0, 0));
2917   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2918   LONGEST base_low_pos, low_pos;
2919   CORE_ADDR base;
2920
2921   if (!discrete_position (base_index_type, low, &low_pos)
2922       || !discrete_position (base_index_type, base_low, &base_low_pos))
2923     {
2924       warning (_("unable to get positions in slice, use bounds instead"));
2925       low_pos = low;
2926       base_low_pos = base_low;
2927     }
2928
2929   base = value_as_address (array_ptr)
2930     + ((low_pos - base_low_pos)
2931        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2932   return value_at_lazy (slice_type, base);
2933 }
2934
2935
2936 static struct value *
2937 ada_value_slice (struct value *array, int low, int high)
2938 {
2939   struct type *type = ada_check_typedef (value_type (array));
2940   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2941   struct type *index_type
2942     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2943   struct type *slice_type = create_array_type_with_stride
2944                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2945                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2946                                TYPE_FIELD_BITSIZE (type, 0));
2947   LONGEST low_pos, high_pos;
2948
2949   if (!discrete_position (base_index_type, low, &low_pos)
2950       || !discrete_position (base_index_type, high, &high_pos))
2951     {
2952       warning (_("unable to get positions in slice, use bounds instead"));
2953       low_pos = low;
2954       high_pos = high;
2955     }
2956
2957   return value_cast (slice_type,
2958                      value_slice (array, low, high_pos - low_pos + 1));
2959 }
2960
2961 /* If type is a record type in the form of a standard GNAT array
2962    descriptor, returns the number of dimensions for type.  If arr is a
2963    simple array, returns the number of "array of"s that prefix its
2964    type designation.  Otherwise, returns 0.  */
2965
2966 int
2967 ada_array_arity (struct type *type)
2968 {
2969   int arity;
2970
2971   if (type == NULL)
2972     return 0;
2973
2974   type = desc_base_type (type);
2975
2976   arity = 0;
2977   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2978     return desc_arity (desc_bounds_type (type));
2979   else
2980     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2981       {
2982         arity += 1;
2983         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2984       }
2985
2986   return arity;
2987 }
2988
2989 /* If TYPE is a record type in the form of a standard GNAT array
2990    descriptor or a simple array type, returns the element type for
2991    TYPE after indexing by NINDICES indices, or by all indices if
2992    NINDICES is -1.  Otherwise, returns NULL.  */
2993
2994 struct type *
2995 ada_array_element_type (struct type *type, int nindices)
2996 {
2997   type = desc_base_type (type);
2998
2999   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3000     {
3001       int k;
3002       struct type *p_array_type;
3003
3004       p_array_type = desc_data_target_type (type);
3005
3006       k = ada_array_arity (type);
3007       if (k == 0)
3008         return NULL;
3009
3010       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3011       if (nindices >= 0 && k > nindices)
3012         k = nindices;
3013       while (k > 0 && p_array_type != NULL)
3014         {
3015           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3016           k -= 1;
3017         }
3018       return p_array_type;
3019     }
3020   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3021     {
3022       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3023         {
3024           type = TYPE_TARGET_TYPE (type);
3025           nindices -= 1;
3026         }
3027       return type;
3028     }
3029
3030   return NULL;
3031 }
3032
3033 /* The type of nth index in arrays of given type (n numbering from 1).
3034    Does not examine memory.  Throws an error if N is invalid or TYPE
3035    is not an array type.  NAME is the name of the Ada attribute being
3036    evaluated ('range, 'first, 'last, or 'length); it is used in building
3037    the error message.  */
3038
3039 static struct type *
3040 ada_index_type (struct type *type, int n, const char *name)
3041 {
3042   struct type *result_type;
3043
3044   type = desc_base_type (type);
3045
3046   if (n < 0 || n > ada_array_arity (type))
3047     error (_("invalid dimension number to '%s"), name);
3048
3049   if (ada_is_simple_array_type (type))
3050     {
3051       int i;
3052
3053       for (i = 1; i < n; i += 1)
3054         type = TYPE_TARGET_TYPE (type);
3055       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3056       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3057          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3058          perhaps stabsread.c would make more sense.  */
3059       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3060         result_type = NULL;
3061     }
3062   else
3063     {
3064       result_type = desc_index_type (desc_bounds_type (type), n);
3065       if (result_type == NULL)
3066         error (_("attempt to take bound of something that is not an array"));
3067     }
3068
3069   return result_type;
3070 }
3071
3072 /* Given that arr is an array type, returns the lower bound of the
3073    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3074    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3075    array-descriptor type.  It works for other arrays with bounds supplied
3076    by run-time quantities other than discriminants.  */
3077
3078 static LONGEST
3079 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3080 {
3081   struct type *type, *index_type_desc, *index_type;
3082   int i;
3083
3084   gdb_assert (which == 0 || which == 1);
3085
3086   if (ada_is_constrained_packed_array_type (arr_type))
3087     arr_type = decode_constrained_packed_array_type (arr_type);
3088
3089   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3090     return (LONGEST) - which;
3091
3092   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3093     type = TYPE_TARGET_TYPE (arr_type);
3094   else
3095     type = arr_type;
3096
3097   if (TYPE_FIXED_INSTANCE (type))
3098     {
3099       /* The array has already been fixed, so we do not need to
3100          check the parallel ___XA type again.  That encoding has
3101          already been applied, so ignore it now.  */
3102       index_type_desc = NULL;
3103     }
3104   else
3105     {
3106       index_type_desc = ada_find_parallel_type (type, "___XA");
3107       ada_fixup_array_indexes_type (index_type_desc);
3108     }
3109
3110   if (index_type_desc != NULL)
3111     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3112                                       NULL);
3113   else
3114     {
3115       struct type *elt_type = check_typedef (type);
3116
3117       for (i = 1; i < n; i++)
3118         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3119
3120       index_type = TYPE_INDEX_TYPE (elt_type);
3121     }
3122
3123   return
3124     (LONGEST) (which == 0
3125                ? ada_discrete_type_low_bound (index_type)
3126                : ada_discrete_type_high_bound (index_type));
3127 }
3128
3129 /* Given that arr is an array value, returns the lower bound of the
3130    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3131    WHICH is 1.  This routine will also work for arrays with bounds
3132    supplied by run-time quantities other than discriminants.  */
3133
3134 static LONGEST
3135 ada_array_bound (struct value *arr, int n, int which)
3136 {
3137   struct type *arr_type;
3138
3139   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3140     arr = value_ind (arr);
3141   arr_type = value_enclosing_type (arr);
3142
3143   if (ada_is_constrained_packed_array_type (arr_type))
3144     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3145   else if (ada_is_simple_array_type (arr_type))
3146     return ada_array_bound_from_type (arr_type, n, which);
3147   else
3148     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3149 }
3150
3151 /* Given that arr is an array value, returns the length of the
3152    nth index.  This routine will also work for arrays with bounds
3153    supplied by run-time quantities other than discriminants.
3154    Does not work for arrays indexed by enumeration types with representation
3155    clauses at the moment.  */
3156
3157 static LONGEST
3158 ada_array_length (struct value *arr, int n)
3159 {
3160   struct type *arr_type, *index_type;
3161   int low, high;
3162
3163   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3164     arr = value_ind (arr);
3165   arr_type = value_enclosing_type (arr);
3166
3167   if (ada_is_constrained_packed_array_type (arr_type))
3168     return ada_array_length (decode_constrained_packed_array (arr), n);
3169
3170   if (ada_is_simple_array_type (arr_type))
3171     {
3172       low = ada_array_bound_from_type (arr_type, n, 0);
3173       high = ada_array_bound_from_type (arr_type, n, 1);
3174     }
3175   else
3176     {
3177       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3178       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3179     }
3180
3181   arr_type = check_typedef (arr_type);
3182   index_type = ada_index_type (arr_type, n, "length");
3183   if (index_type != NULL)
3184     {
3185       struct type *base_type;
3186       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3187         base_type = TYPE_TARGET_TYPE (index_type);
3188       else
3189         base_type = index_type;
3190
3191       low = pos_atr (value_from_longest (base_type, low));
3192       high = pos_atr (value_from_longest (base_type, high));
3193     }
3194   return high - low + 1;
3195 }
3196
3197 /* An empty array whose type is that of ARR_TYPE (an array type),
3198    with bounds LOW to LOW-1.  */
3199
3200 static struct value *
3201 empty_array (struct type *arr_type, int low)
3202 {
3203   struct type *arr_type0 = ada_check_typedef (arr_type);
3204   struct type *index_type
3205     = create_static_range_type
3206         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3207   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3208
3209   return allocate_value (create_array_type (NULL, elt_type, index_type));
3210 }
3211 \f
3212
3213                                 /* Name resolution */
3214
3215 /* The "decoded" name for the user-definable Ada operator corresponding
3216    to OP.  */
3217
3218 static const char *
3219 ada_decoded_op_name (enum exp_opcode op)
3220 {
3221   int i;
3222
3223   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3224     {
3225       if (ada_opname_table[i].op == op)
3226         return ada_opname_table[i].decoded;
3227     }
3228   error (_("Could not find operator name for opcode"));
3229 }
3230
3231
3232 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3233    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3234    undefined namespace) and converts operators that are
3235    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3236    non-null, it provides a preferred result type [at the moment, only
3237    type void has any effect---causing procedures to be preferred over
3238    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3239    return type is preferred.  May change (expand) *EXP.  */
3240
3241 static void
3242 resolve (expression_up *expp, int void_context_p)
3243 {
3244   struct type *context_type = NULL;
3245   int pc = 0;
3246
3247   if (void_context_p)
3248     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3249
3250   resolve_subexp (expp, &pc, 1, context_type);
3251 }
3252
3253 /* Resolve the operator of the subexpression beginning at
3254    position *POS of *EXPP.  "Resolving" consists of replacing
3255    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3256    with their resolutions, replacing built-in operators with
3257    function calls to user-defined operators, where appropriate, and,
3258    when DEPROCEDURE_P is non-zero, converting function-valued variables
3259    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3260    are as in ada_resolve, above.  */
3261
3262 static struct value *
3263 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3264                 struct type *context_type)
3265 {
3266   int pc = *pos;
3267   int i;
3268   struct expression *exp;       /* Convenience: == *expp.  */
3269   enum exp_opcode op = (*expp)->elts[pc].opcode;
3270   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3271   int nargs;                    /* Number of operands.  */
3272   int oplen;
3273   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
3274
3275   argvec = NULL;
3276   nargs = 0;
3277   exp = expp->get ();
3278
3279   /* Pass one: resolve operands, saving their types and updating *pos,
3280      if needed.  */
3281   switch (op)
3282     {
3283     case OP_FUNCALL:
3284       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3285           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3286         *pos += 7;
3287       else
3288         {
3289           *pos += 3;
3290           resolve_subexp (expp, pos, 0, NULL);
3291         }
3292       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3293       break;
3294
3295     case UNOP_ADDR:
3296       *pos += 1;
3297       resolve_subexp (expp, pos, 0, NULL);
3298       break;
3299
3300     case UNOP_QUAL:
3301       *pos += 3;
3302       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3303       break;
3304
3305     case OP_ATR_MODULUS:
3306     case OP_ATR_SIZE:
3307     case OP_ATR_TAG:
3308     case OP_ATR_FIRST:
3309     case OP_ATR_LAST:
3310     case OP_ATR_LENGTH:
3311     case OP_ATR_POS:
3312     case OP_ATR_VAL:
3313     case OP_ATR_MIN:
3314     case OP_ATR_MAX:
3315     case TERNOP_IN_RANGE:
3316     case BINOP_IN_BOUNDS:
3317     case UNOP_IN_RANGE:
3318     case OP_AGGREGATE:
3319     case OP_OTHERS:
3320     case OP_CHOICES:
3321     case OP_POSITIONAL:
3322     case OP_DISCRETE_RANGE:
3323     case OP_NAME:
3324       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3325       *pos += oplen;
3326       break;
3327
3328     case BINOP_ASSIGN:
3329       {
3330         struct value *arg1;
3331
3332         *pos += 1;
3333         arg1 = resolve_subexp (expp, pos, 0, NULL);
3334         if (arg1 == NULL)
3335           resolve_subexp (expp, pos, 1, NULL);
3336         else
3337           resolve_subexp (expp, pos, 1, value_type (arg1));
3338         break;
3339       }
3340
3341     case UNOP_CAST:
3342       *pos += 3;
3343       nargs = 1;
3344       break;
3345
3346     case BINOP_ADD:
3347     case BINOP_SUB:
3348     case BINOP_MUL:
3349     case BINOP_DIV:
3350     case BINOP_REM:
3351     case BINOP_MOD:
3352     case BINOP_EXP:
3353     case BINOP_CONCAT:
3354     case BINOP_LOGICAL_AND:
3355     case BINOP_LOGICAL_OR:
3356     case BINOP_BITWISE_AND:
3357     case BINOP_BITWISE_IOR:
3358     case BINOP_BITWISE_XOR:
3359
3360     case BINOP_EQUAL:
3361     case BINOP_NOTEQUAL:
3362     case BINOP_LESS:
3363     case BINOP_GTR:
3364     case BINOP_LEQ:
3365     case BINOP_GEQ:
3366
3367     case BINOP_REPEAT:
3368     case BINOP_SUBSCRIPT:
3369     case BINOP_COMMA:
3370       *pos += 1;
3371       nargs = 2;
3372       break;
3373
3374     case UNOP_NEG:
3375     case UNOP_PLUS:
3376     case UNOP_LOGICAL_NOT:
3377     case UNOP_ABS:
3378     case UNOP_IND:
3379       *pos += 1;
3380       nargs = 1;
3381       break;
3382
3383     case OP_LONG:
3384     case OP_FLOAT:
3385     case OP_VAR_VALUE:
3386     case OP_VAR_MSYM_VALUE:
3387       *pos += 4;
3388       break;
3389
3390     case OP_TYPE:
3391     case OP_BOOL:
3392     case OP_LAST:
3393     case OP_INTERNALVAR:
3394       *pos += 3;
3395       break;
3396
3397     case UNOP_MEMVAL:
3398       *pos += 3;
3399       nargs = 1;
3400       break;
3401
3402     case OP_REGISTER:
3403       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3404       break;
3405
3406     case STRUCTOP_STRUCT:
3407       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3408       nargs = 1;
3409       break;
3410
3411     case TERNOP_SLICE:
3412       *pos += 1;
3413       nargs = 3;
3414       break;
3415
3416     case OP_STRING:
3417       break;
3418
3419     default:
3420       error (_("Unexpected operator during name resolution"));
3421     }
3422
3423   argvec = XALLOCAVEC (struct value *, nargs + 1);
3424   for (i = 0; i < nargs; i += 1)
3425     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3426   argvec[i] = NULL;
3427   exp = expp->get ();
3428
3429   /* Pass two: perform any resolution on principal operator.  */
3430   switch (op)
3431     {
3432     default:
3433       break;
3434
3435     case OP_VAR_VALUE:
3436       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3437         {
3438           struct block_symbol *candidates;
3439           int n_candidates;
3440
3441           n_candidates =
3442             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3443                                     (exp->elts[pc + 2].symbol),
3444                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3445                                     &candidates);
3446           make_cleanup (xfree, candidates);
3447
3448           if (n_candidates > 1)
3449             {
3450               /* Types tend to get re-introduced locally, so if there
3451                  are any local symbols that are not types, first filter
3452                  out all types.  */
3453               int j;
3454               for (j = 0; j < n_candidates; j += 1)
3455                 switch (SYMBOL_CLASS (candidates[j].symbol))
3456                   {
3457                   case LOC_REGISTER:
3458                   case LOC_ARG:
3459                   case LOC_REF_ARG:
3460                   case LOC_REGPARM_ADDR:
3461                   case LOC_LOCAL:
3462                   case LOC_COMPUTED:
3463                     goto FoundNonType;
3464                   default:
3465                     break;
3466                   }
3467             FoundNonType:
3468               if (j < n_candidates)
3469                 {
3470                   j = 0;
3471                   while (j < n_candidates)
3472                     {
3473                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3474                         {
3475                           candidates[j] = candidates[n_candidates - 1];
3476                           n_candidates -= 1;
3477                         }
3478                       else
3479                         j += 1;
3480                     }
3481                 }
3482             }
3483
3484           if (n_candidates == 0)
3485             error (_("No definition found for %s"),
3486                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3487           else if (n_candidates == 1)
3488             i = 0;
3489           else if (deprocedure_p
3490                    && !is_nonfunction (candidates, n_candidates))
3491             {
3492               i = ada_resolve_function
3493                 (candidates, n_candidates, NULL, 0,
3494                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3495                  context_type);
3496               if (i < 0)
3497                 error (_("Could not find a match for %s"),
3498                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3499             }
3500           else
3501             {
3502               printf_filtered (_("Multiple matches for %s\n"),
3503                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3504               user_select_syms (candidates, n_candidates, 1);
3505               i = 0;
3506             }
3507
3508           exp->elts[pc + 1].block = candidates[i].block;
3509           exp->elts[pc + 2].symbol = candidates[i].symbol;
3510           if (innermost_block == NULL
3511               || contained_in (candidates[i].block, innermost_block))
3512             innermost_block = candidates[i].block;
3513         }
3514
3515       if (deprocedure_p
3516           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3517               == TYPE_CODE_FUNC))
3518         {
3519           replace_operator_with_call (expp, pc, 0, 0,
3520                                       exp->elts[pc + 2].symbol,
3521                                       exp->elts[pc + 1].block);
3522           exp = expp->get ();
3523         }
3524       break;
3525
3526     case OP_FUNCALL:
3527       {
3528         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3529             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3530           {
3531             struct block_symbol *candidates;
3532             int n_candidates;
3533
3534             n_candidates =
3535               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3536                                       (exp->elts[pc + 5].symbol),
3537                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3538                                       &candidates);
3539             make_cleanup (xfree, candidates);
3540
3541             if (n_candidates == 1)
3542               i = 0;
3543             else
3544               {
3545                 i = ada_resolve_function
3546                   (candidates, n_candidates,
3547                    argvec, nargs,
3548                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3549                    context_type);
3550                 if (i < 0)
3551                   error (_("Could not find a match for %s"),
3552                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3553               }
3554
3555             exp->elts[pc + 4].block = candidates[i].block;
3556             exp->elts[pc + 5].symbol = candidates[i].symbol;
3557             if (innermost_block == NULL
3558                 || contained_in (candidates[i].block, innermost_block))
3559               innermost_block = candidates[i].block;
3560           }
3561       }
3562       break;
3563     case BINOP_ADD:
3564     case BINOP_SUB:
3565     case BINOP_MUL:
3566     case BINOP_DIV:
3567     case BINOP_REM:
3568     case BINOP_MOD:
3569     case BINOP_CONCAT:
3570     case BINOP_BITWISE_AND:
3571     case BINOP_BITWISE_IOR:
3572     case BINOP_BITWISE_XOR:
3573     case BINOP_EQUAL:
3574     case BINOP_NOTEQUAL:
3575     case BINOP_LESS:
3576     case BINOP_GTR:
3577     case BINOP_LEQ:
3578     case BINOP_GEQ:
3579     case BINOP_EXP:
3580     case UNOP_NEG:
3581     case UNOP_PLUS:
3582     case UNOP_LOGICAL_NOT:
3583     case UNOP_ABS:
3584       if (possible_user_operator_p (op, argvec))
3585         {
3586           struct block_symbol *candidates;
3587           int n_candidates;
3588
3589           n_candidates =
3590             ada_lookup_symbol_list (ada_decoded_op_name (op),
3591                                     (struct block *) NULL, VAR_DOMAIN,
3592                                     &candidates);
3593           make_cleanup (xfree, candidates);
3594
3595           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3596                                     ada_decoded_op_name (op), NULL);
3597           if (i < 0)
3598             break;
3599
3600           replace_operator_with_call (expp, pc, nargs, 1,
3601                                       candidates[i].symbol,
3602                                       candidates[i].block);
3603           exp = expp->get ();
3604         }
3605       break;
3606
3607     case OP_TYPE:
3608     case OP_REGISTER:
3609       do_cleanups (old_chain);
3610       return NULL;
3611     }
3612
3613   *pos = pc;
3614   do_cleanups (old_chain);
3615   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3616     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3617                                     exp->elts[pc + 1].objfile,
3618                                     exp->elts[pc + 2].msymbol);
3619   else
3620     return evaluate_subexp_type (exp, pos);
3621 }
3622
3623 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3624    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3625    a non-pointer.  */
3626 /* The term "match" here is rather loose.  The match is heuristic and
3627    liberal.  */
3628
3629 static int
3630 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3631 {
3632   ftype = ada_check_typedef (ftype);
3633   atype = ada_check_typedef (atype);
3634
3635   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3636     ftype = TYPE_TARGET_TYPE (ftype);
3637   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3638     atype = TYPE_TARGET_TYPE (atype);
3639
3640   switch (TYPE_CODE (ftype))
3641     {
3642     default:
3643       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3644     case TYPE_CODE_PTR:
3645       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3646         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3647                                TYPE_TARGET_TYPE (atype), 0);
3648       else
3649         return (may_deref
3650                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3651     case TYPE_CODE_INT:
3652     case TYPE_CODE_ENUM:
3653     case TYPE_CODE_RANGE:
3654       switch (TYPE_CODE (atype))
3655         {
3656         case TYPE_CODE_INT:
3657         case TYPE_CODE_ENUM:
3658         case TYPE_CODE_RANGE:
3659           return 1;
3660         default:
3661           return 0;
3662         }
3663
3664     case TYPE_CODE_ARRAY:
3665       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3666               || ada_is_array_descriptor_type (atype));
3667
3668     case TYPE_CODE_STRUCT:
3669       if (ada_is_array_descriptor_type (ftype))
3670         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3671                 || ada_is_array_descriptor_type (atype));
3672       else
3673         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3674                 && !ada_is_array_descriptor_type (atype));
3675
3676     case TYPE_CODE_UNION:
3677     case TYPE_CODE_FLT:
3678       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3679     }
3680 }
3681
3682 /* Return non-zero if the formals of FUNC "sufficiently match" the
3683    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3684    may also be an enumeral, in which case it is treated as a 0-
3685    argument function.  */
3686
3687 static int
3688 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3689 {
3690   int i;
3691   struct type *func_type = SYMBOL_TYPE (func);
3692
3693   if (SYMBOL_CLASS (func) == LOC_CONST
3694       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3695     return (n_actuals == 0);
3696   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3697     return 0;
3698
3699   if (TYPE_NFIELDS (func_type) != n_actuals)
3700     return 0;
3701
3702   for (i = 0; i < n_actuals; i += 1)
3703     {
3704       if (actuals[i] == NULL)
3705         return 0;
3706       else
3707         {
3708           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3709                                                                    i));
3710           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3711
3712           if (!ada_type_match (ftype, atype, 1))
3713             return 0;
3714         }
3715     }
3716   return 1;
3717 }
3718
3719 /* False iff function type FUNC_TYPE definitely does not produce a value
3720    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3721    FUNC_TYPE is not a valid function type with a non-null return type
3722    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3723
3724 static int
3725 return_match (struct type *func_type, struct type *context_type)
3726 {
3727   struct type *return_type;
3728
3729   if (func_type == NULL)
3730     return 1;
3731
3732   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3733     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3734   else
3735     return_type = get_base_type (func_type);
3736   if (return_type == NULL)
3737     return 1;
3738
3739   context_type = get_base_type (context_type);
3740
3741   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3742     return context_type == NULL || return_type == context_type;
3743   else if (context_type == NULL)
3744     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3745   else
3746     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3747 }
3748
3749
3750 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3751    function (if any) that matches the types of the NARGS arguments in
3752    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3753    that returns that type, then eliminate matches that don't.  If
3754    CONTEXT_TYPE is void and there is at least one match that does not
3755    return void, eliminate all matches that do.
3756
3757    Asks the user if there is more than one match remaining.  Returns -1
3758    if there is no such symbol or none is selected.  NAME is used
3759    solely for messages.  May re-arrange and modify SYMS in
3760    the process; the index returned is for the modified vector.  */
3761
3762 static int
3763 ada_resolve_function (struct block_symbol syms[],
3764                       int nsyms, struct value **args, int nargs,
3765                       const char *name, struct type *context_type)
3766 {
3767   int fallback;
3768   int k;
3769   int m;                        /* Number of hits */
3770
3771   m = 0;
3772   /* In the first pass of the loop, we only accept functions matching
3773      context_type.  If none are found, we add a second pass of the loop
3774      where every function is accepted.  */
3775   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3776     {
3777       for (k = 0; k < nsyms; k += 1)
3778         {
3779           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3780
3781           if (ada_args_match (syms[k].symbol, args, nargs)
3782               && (fallback || return_match (type, context_type)))
3783             {
3784               syms[m] = syms[k];
3785               m += 1;
3786             }
3787         }
3788     }
3789
3790   /* If we got multiple matches, ask the user which one to use.  Don't do this
3791      interactive thing during completion, though, as the purpose of the
3792      completion is providing a list of all possible matches.  Prompting the
3793      user to filter it down would be completely unexpected in this case.  */
3794   if (m == 0)
3795     return -1;
3796   else if (m > 1 && !parse_completion)
3797     {
3798       printf_filtered (_("Multiple matches for %s\n"), name);
3799       user_select_syms (syms, m, 1);
3800       return 0;
3801     }
3802   return 0;
3803 }
3804
3805 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3806    in a listing of choices during disambiguation (see sort_choices, below).
3807    The idea is that overloadings of a subprogram name from the
3808    same package should sort in their source order.  We settle for ordering
3809    such symbols by their trailing number (__N  or $N).  */
3810
3811 static int
3812 encoded_ordered_before (const char *N0, const char *N1)
3813 {
3814   if (N1 == NULL)
3815     return 0;
3816   else if (N0 == NULL)
3817     return 1;
3818   else
3819     {
3820       int k0, k1;
3821
3822       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3823         ;
3824       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3825         ;
3826       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3827           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3828         {
3829           int n0, n1;
3830
3831           n0 = k0;
3832           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3833             n0 -= 1;
3834           n1 = k1;
3835           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3836             n1 -= 1;
3837           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3838             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3839         }
3840       return (strcmp (N0, N1) < 0);
3841     }
3842 }
3843
3844 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3845    encoded names.  */
3846
3847 static void
3848 sort_choices (struct block_symbol syms[], int nsyms)
3849 {
3850   int i;
3851
3852   for (i = 1; i < nsyms; i += 1)
3853     {
3854       struct block_symbol sym = syms[i];
3855       int j;
3856
3857       for (j = i - 1; j >= 0; j -= 1)
3858         {
3859           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3860                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3861             break;
3862           syms[j + 1] = syms[j];
3863         }
3864       syms[j + 1] = sym;
3865     }
3866 }
3867
3868 /* Whether GDB should display formals and return types for functions in the
3869    overloads selection menu.  */
3870 static int print_signatures = 1;
3871
3872 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3873    all but functions, the signature is just the name of the symbol.  For
3874    functions, this is the name of the function, the list of types for formals
3875    and the return type (if any).  */
3876
3877 static void
3878 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3879                             const struct type_print_options *flags)
3880 {
3881   struct type *type = SYMBOL_TYPE (sym);
3882
3883   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3884   if (!print_signatures
3885       || type == NULL
3886       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3887     return;
3888
3889   if (TYPE_NFIELDS (type) > 0)
3890     {
3891       int i;
3892
3893       fprintf_filtered (stream, " (");
3894       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3895         {
3896           if (i > 0)
3897             fprintf_filtered (stream, "; ");
3898           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3899                           flags);
3900         }
3901       fprintf_filtered (stream, ")");
3902     }
3903   if (TYPE_TARGET_TYPE (type) != NULL
3904       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3905     {
3906       fprintf_filtered (stream, " return ");
3907       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3908     }
3909 }
3910
3911 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3912    by asking the user (if necessary), returning the number selected, 
3913    and setting the first elements of SYMS items.  Error if no symbols
3914    selected.  */
3915
3916 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3917    to be re-integrated one of these days.  */
3918
3919 int
3920 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3921 {
3922   int i;
3923   int *chosen = XALLOCAVEC (int , nsyms);
3924   int n_chosen;
3925   int first_choice = (max_results == 1) ? 1 : 2;
3926   const char *select_mode = multiple_symbols_select_mode ();
3927
3928   if (max_results < 1)
3929     error (_("Request to select 0 symbols!"));
3930   if (nsyms <= 1)
3931     return nsyms;
3932
3933   if (select_mode == multiple_symbols_cancel)
3934     error (_("\
3935 canceled because the command is ambiguous\n\
3936 See set/show multiple-symbol."));
3937   
3938   /* If select_mode is "all", then return all possible symbols.
3939      Only do that if more than one symbol can be selected, of course.
3940      Otherwise, display the menu as usual.  */
3941   if (select_mode == multiple_symbols_all && max_results > 1)
3942     return nsyms;
3943
3944   printf_unfiltered (_("[0] cancel\n"));
3945   if (max_results > 1)
3946     printf_unfiltered (_("[1] all\n"));
3947
3948   sort_choices (syms, nsyms);
3949
3950   for (i = 0; i < nsyms; i += 1)
3951     {
3952       if (syms[i].symbol == NULL)
3953         continue;
3954
3955       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3956         {
3957           struct symtab_and_line sal =
3958             find_function_start_sal (syms[i].symbol, 1);
3959
3960           printf_unfiltered ("[%d] ", i + first_choice);
3961           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3962                                       &type_print_raw_options);
3963           if (sal.symtab == NULL)
3964             printf_unfiltered (_(" at <no source file available>:%d\n"),
3965                                sal.line);
3966           else
3967             printf_unfiltered (_(" at %s:%d\n"),
3968                                symtab_to_filename_for_display (sal.symtab),
3969                                sal.line);
3970           continue;
3971         }
3972       else
3973         {
3974           int is_enumeral =
3975             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3976              && SYMBOL_TYPE (syms[i].symbol) != NULL
3977              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3978           struct symtab *symtab = NULL;
3979
3980           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3981             symtab = symbol_symtab (syms[i].symbol);
3982
3983           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3984             {
3985               printf_unfiltered ("[%d] ", i + first_choice);
3986               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3987                                           &type_print_raw_options);
3988               printf_unfiltered (_(" at %s:%d\n"),
3989                                  symtab_to_filename_for_display (symtab),
3990                                  SYMBOL_LINE (syms[i].symbol));
3991             }
3992           else if (is_enumeral
3993                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3994             {
3995               printf_unfiltered (("[%d] "), i + first_choice);
3996               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3997                               gdb_stdout, -1, 0, &type_print_raw_options);
3998               printf_unfiltered (_("'(%s) (enumeral)\n"),
3999                                  SYMBOL_PRINT_NAME (syms[i].symbol));
4000             }
4001           else
4002             {
4003               printf_unfiltered ("[%d] ", i + first_choice);
4004               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4005                                           &type_print_raw_options);
4006
4007               if (symtab != NULL)
4008                 printf_unfiltered (is_enumeral
4009                                    ? _(" in %s (enumeral)\n")
4010                                    : _(" at %s:?\n"),
4011                                    symtab_to_filename_for_display (symtab));
4012               else
4013                 printf_unfiltered (is_enumeral
4014                                    ? _(" (enumeral)\n")
4015                                    : _(" at ?\n"));
4016             }
4017         }
4018     }
4019
4020   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4021                              "overload-choice");
4022
4023   for (i = 0; i < n_chosen; i += 1)
4024     syms[i] = syms[chosen[i]];
4025
4026   return n_chosen;
4027 }
4028
4029 /* Read and validate a set of numeric choices from the user in the
4030    range 0 .. N_CHOICES-1.  Place the results in increasing
4031    order in CHOICES[0 .. N-1], and return N.
4032
4033    The user types choices as a sequence of numbers on one line
4034    separated by blanks, encoding them as follows:
4035
4036      + A choice of 0 means to cancel the selection, throwing an error.
4037      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4038      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4039
4040    The user is not allowed to choose more than MAX_RESULTS values.
4041
4042    ANNOTATION_SUFFIX, if present, is used to annotate the input
4043    prompts (for use with the -f switch).  */
4044
4045 int
4046 get_selections (int *choices, int n_choices, int max_results,
4047                 int is_all_choice, const char *annotation_suffix)
4048 {
4049   char *args;
4050   const char *prompt;
4051   int n_chosen;
4052   int first_choice = is_all_choice ? 2 : 1;
4053
4054   prompt = getenv ("PS2");
4055   if (prompt == NULL)
4056     prompt = "> ";
4057
4058   args = command_line_input (prompt, 0, annotation_suffix);
4059
4060   if (args == NULL)
4061     error_no_arg (_("one or more choice numbers"));
4062
4063   n_chosen = 0;
4064
4065   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4066      order, as given in args.  Choices are validated.  */
4067   while (1)
4068     {
4069       char *args2;
4070       int choice, j;
4071
4072       args = skip_spaces (args);
4073       if (*args == '\0' && n_chosen == 0)
4074         error_no_arg (_("one or more choice numbers"));
4075       else if (*args == '\0')
4076         break;
4077
4078       choice = strtol (args, &args2, 10);
4079       if (args == args2 || choice < 0
4080           || choice > n_choices + first_choice - 1)
4081         error (_("Argument must be choice number"));
4082       args = args2;
4083
4084       if (choice == 0)
4085         error (_("cancelled"));
4086
4087       if (choice < first_choice)
4088         {
4089           n_chosen = n_choices;
4090           for (j = 0; j < n_choices; j += 1)
4091             choices[j] = j;
4092           break;
4093         }
4094       choice -= first_choice;
4095
4096       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4097         {
4098         }
4099
4100       if (j < 0 || choice != choices[j])
4101         {
4102           int k;
4103
4104           for (k = n_chosen - 1; k > j; k -= 1)
4105             choices[k + 1] = choices[k];
4106           choices[j + 1] = choice;
4107           n_chosen += 1;
4108         }
4109     }
4110
4111   if (n_chosen > max_results)
4112     error (_("Select no more than %d of the above"), max_results);
4113
4114   return n_chosen;
4115 }
4116
4117 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4118    on the function identified by SYM and BLOCK, and taking NARGS
4119    arguments.  Update *EXPP as needed to hold more space.  */
4120
4121 static void
4122 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4123                             int oplen, struct symbol *sym,
4124                             const struct block *block)
4125 {
4126   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4127      symbol, -oplen for operator being replaced).  */
4128   struct expression *newexp = (struct expression *)
4129     xzalloc (sizeof (struct expression)
4130              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4131   struct expression *exp = expp->get ();
4132
4133   newexp->nelts = exp->nelts + 7 - oplen;
4134   newexp->language_defn = exp->language_defn;
4135   newexp->gdbarch = exp->gdbarch;
4136   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4137   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4138           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4139
4140   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4141   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4142
4143   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4144   newexp->elts[pc + 4].block = block;
4145   newexp->elts[pc + 5].symbol = sym;
4146
4147   expp->reset (newexp);
4148 }
4149
4150 /* Type-class predicates */
4151
4152 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4153    or FLOAT).  */
4154
4155 static int
4156 numeric_type_p (struct type *type)
4157 {
4158   if (type == NULL)
4159     return 0;
4160   else
4161     {
4162       switch (TYPE_CODE (type))
4163         {
4164         case TYPE_CODE_INT:
4165         case TYPE_CODE_FLT:
4166           return 1;
4167         case TYPE_CODE_RANGE:
4168           return (type == TYPE_TARGET_TYPE (type)
4169                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4170         default:
4171           return 0;
4172         }
4173     }
4174 }
4175
4176 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4177
4178 static int
4179 integer_type_p (struct type *type)
4180 {
4181   if (type == NULL)
4182     return 0;
4183   else
4184     {
4185       switch (TYPE_CODE (type))
4186         {
4187         case TYPE_CODE_INT:
4188           return 1;
4189         case TYPE_CODE_RANGE:
4190           return (type == TYPE_TARGET_TYPE (type)
4191                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4192         default:
4193           return 0;
4194         }
4195     }
4196 }
4197
4198 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4199
4200 static int
4201 scalar_type_p (struct type *type)
4202 {
4203   if (type == NULL)
4204     return 0;
4205   else
4206     {
4207       switch (TYPE_CODE (type))
4208         {
4209         case TYPE_CODE_INT:
4210         case TYPE_CODE_RANGE:
4211         case TYPE_CODE_ENUM:
4212         case TYPE_CODE_FLT:
4213           return 1;
4214         default:
4215           return 0;
4216         }
4217     }
4218 }
4219
4220 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4221
4222 static int
4223 discrete_type_p (struct type *type)
4224 {
4225   if (type == NULL)
4226     return 0;
4227   else
4228     {
4229       switch (TYPE_CODE (type))
4230         {
4231         case TYPE_CODE_INT:
4232         case TYPE_CODE_RANGE:
4233         case TYPE_CODE_ENUM:
4234         case TYPE_CODE_BOOL:
4235           return 1;
4236         default:
4237           return 0;
4238         }
4239     }
4240 }
4241
4242 /* Returns non-zero if OP with operands in the vector ARGS could be
4243    a user-defined function.  Errs on the side of pre-defined operators
4244    (i.e., result 0).  */
4245
4246 static int
4247 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4248 {
4249   struct type *type0 =
4250     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4251   struct type *type1 =
4252     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4253
4254   if (type0 == NULL)
4255     return 0;
4256
4257   switch (op)
4258     {
4259     default:
4260       return 0;
4261
4262     case BINOP_ADD:
4263     case BINOP_SUB:
4264     case BINOP_MUL:
4265     case BINOP_DIV:
4266       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4267
4268     case BINOP_REM:
4269     case BINOP_MOD:
4270     case BINOP_BITWISE_AND:
4271     case BINOP_BITWISE_IOR:
4272     case BINOP_BITWISE_XOR:
4273       return (!(integer_type_p (type0) && integer_type_p (type1)));
4274
4275     case BINOP_EQUAL:
4276     case BINOP_NOTEQUAL:
4277     case BINOP_LESS:
4278     case BINOP_GTR:
4279     case BINOP_LEQ:
4280     case BINOP_GEQ:
4281       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4282
4283     case BINOP_CONCAT:
4284       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4285
4286     case BINOP_EXP:
4287       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4288
4289     case UNOP_NEG:
4290     case UNOP_PLUS:
4291     case UNOP_LOGICAL_NOT:
4292     case UNOP_ABS:
4293       return (!numeric_type_p (type0));
4294
4295     }
4296 }
4297 \f
4298                                 /* Renaming */
4299
4300 /* NOTES: 
4301
4302    1. In the following, we assume that a renaming type's name may
4303       have an ___XD suffix.  It would be nice if this went away at some
4304       point.
4305    2. We handle both the (old) purely type-based representation of 
4306       renamings and the (new) variable-based encoding.  At some point,
4307       it is devoutly to be hoped that the former goes away 
4308       (FIXME: hilfinger-2007-07-09).
4309    3. Subprogram renamings are not implemented, although the XRS
4310       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4311
4312 /* If SYM encodes a renaming, 
4313
4314        <renaming> renames <renamed entity>,
4315
4316    sets *LEN to the length of the renamed entity's name,
4317    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4318    the string describing the subcomponent selected from the renamed
4319    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4320    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4321    are undefined).  Otherwise, returns a value indicating the category
4322    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4323    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4324    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4325    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4326    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4327    may be NULL, in which case they are not assigned.
4328
4329    [Currently, however, GCC does not generate subprogram renamings.]  */
4330
4331 enum ada_renaming_category
4332 ada_parse_renaming (struct symbol *sym,
4333                     const char **renamed_entity, int *len, 
4334                     const char **renaming_expr)
4335 {
4336   enum ada_renaming_category kind;
4337   const char *info;
4338   const char *suffix;
4339
4340   if (sym == NULL)
4341     return ADA_NOT_RENAMING;
4342   switch (SYMBOL_CLASS (sym)) 
4343     {
4344     default:
4345       return ADA_NOT_RENAMING;
4346     case LOC_TYPEDEF:
4347       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4348                                        renamed_entity, len, renaming_expr);
4349     case LOC_LOCAL:
4350     case LOC_STATIC:
4351     case LOC_COMPUTED:
4352     case LOC_OPTIMIZED_OUT:
4353       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4354       if (info == NULL)
4355         return ADA_NOT_RENAMING;
4356       switch (info[5])
4357         {
4358         case '_':
4359           kind = ADA_OBJECT_RENAMING;
4360           info += 6;
4361           break;
4362         case 'E':
4363           kind = ADA_EXCEPTION_RENAMING;
4364           info += 7;
4365           break;
4366         case 'P':
4367           kind = ADA_PACKAGE_RENAMING;
4368           info += 7;
4369           break;
4370         case 'S':
4371           kind = ADA_SUBPROGRAM_RENAMING;
4372           info += 7;
4373           break;
4374         default:
4375           return ADA_NOT_RENAMING;
4376         }
4377     }
4378
4379   if (renamed_entity != NULL)
4380     *renamed_entity = info;
4381   suffix = strstr (info, "___XE");
4382   if (suffix == NULL || suffix == info)
4383     return ADA_NOT_RENAMING;
4384   if (len != NULL)
4385     *len = strlen (info) - strlen (suffix);
4386   suffix += 5;
4387   if (renaming_expr != NULL)
4388     *renaming_expr = suffix;
4389   return kind;
4390 }
4391
4392 /* Assuming TYPE encodes a renaming according to the old encoding in
4393    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4394    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4395    ADA_NOT_RENAMING otherwise.  */
4396 static enum ada_renaming_category
4397 parse_old_style_renaming (struct type *type,
4398                           const char **renamed_entity, int *len, 
4399                           const char **renaming_expr)
4400 {
4401   enum ada_renaming_category kind;
4402   const char *name;
4403   const char *info;
4404   const char *suffix;
4405
4406   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4407       || TYPE_NFIELDS (type) != 1)
4408     return ADA_NOT_RENAMING;
4409
4410   name = type_name_no_tag (type);
4411   if (name == NULL)
4412     return ADA_NOT_RENAMING;
4413   
4414   name = strstr (name, "___XR");
4415   if (name == NULL)
4416     return ADA_NOT_RENAMING;
4417   switch (name[5])
4418     {
4419     case '\0':
4420     case '_':
4421       kind = ADA_OBJECT_RENAMING;
4422       break;
4423     case 'E':
4424       kind = ADA_EXCEPTION_RENAMING;
4425       break;
4426     case 'P':
4427       kind = ADA_PACKAGE_RENAMING;
4428       break;
4429     case 'S':
4430       kind = ADA_SUBPROGRAM_RENAMING;
4431       break;
4432     default:
4433       return ADA_NOT_RENAMING;
4434     }
4435
4436   info = TYPE_FIELD_NAME (type, 0);
4437   if (info == NULL)
4438     return ADA_NOT_RENAMING;
4439   if (renamed_entity != NULL)
4440     *renamed_entity = info;
4441   suffix = strstr (info, "___XE");
4442   if (renaming_expr != NULL)
4443     *renaming_expr = suffix + 5;
4444   if (suffix == NULL || suffix == info)
4445     return ADA_NOT_RENAMING;
4446   if (len != NULL)
4447     *len = suffix - info;
4448   return kind;
4449 }
4450
4451 /* Compute the value of the given RENAMING_SYM, which is expected to
4452    be a symbol encoding a renaming expression.  BLOCK is the block
4453    used to evaluate the renaming.  */
4454
4455 static struct value *
4456 ada_read_renaming_var_value (struct symbol *renaming_sym,
4457                              const struct block *block)
4458 {
4459   const char *sym_name;
4460
4461   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4462   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4463   return evaluate_expression (expr.get ());
4464 }
4465 \f
4466
4467                                 /* Evaluation: Function Calls */
4468
4469 /* Return an lvalue containing the value VAL.  This is the identity on
4470    lvalues, and otherwise has the side-effect of allocating memory
4471    in the inferior where a copy of the value contents is copied.  */
4472
4473 static struct value *
4474 ensure_lval (struct value *val)
4475 {
4476   if (VALUE_LVAL (val) == not_lval
4477       || VALUE_LVAL (val) == lval_internalvar)
4478     {
4479       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4480       const CORE_ADDR addr =
4481         value_as_long (value_allocate_space_in_inferior (len));
4482
4483       VALUE_LVAL (val) = lval_memory;
4484       set_value_address (val, addr);
4485       write_memory (addr, value_contents (val), len);
4486     }
4487
4488   return val;
4489 }
4490
4491 /* Return the value ACTUAL, converted to be an appropriate value for a
4492    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4493    allocating any necessary descriptors (fat pointers), or copies of
4494    values not residing in memory, updating it as needed.  */
4495
4496 struct value *
4497 ada_convert_actual (struct value *actual, struct type *formal_type0)
4498 {
4499   struct type *actual_type = ada_check_typedef (value_type (actual));
4500   struct type *formal_type = ada_check_typedef (formal_type0);
4501   struct type *formal_target =
4502     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4503     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4504   struct type *actual_target =
4505     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4506     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4507
4508   if (ada_is_array_descriptor_type (formal_target)
4509       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4510     return make_array_descriptor (formal_type, actual);
4511   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4512            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4513     {
4514       struct value *result;
4515
4516       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4517           && ada_is_array_descriptor_type (actual_target))
4518         result = desc_data (actual);
4519       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4520         {
4521           if (VALUE_LVAL (actual) != lval_memory)
4522             {
4523               struct value *val;
4524
4525               actual_type = ada_check_typedef (value_type (actual));
4526               val = allocate_value (actual_type);
4527               memcpy ((char *) value_contents_raw (val),
4528                       (char *) value_contents (actual),
4529                       TYPE_LENGTH (actual_type));
4530               actual = ensure_lval (val);
4531             }
4532           result = value_addr (actual);
4533         }
4534       else
4535         return actual;
4536       return value_cast_pointers (formal_type, result, 0);
4537     }
4538   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4539     return ada_value_ind (actual);
4540   else if (ada_is_aligner_type (formal_type))
4541     {
4542       /* We need to turn this parameter into an aligner type
4543          as well.  */
4544       struct value *aligner = allocate_value (formal_type);
4545       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4546
4547       value_assign_to_component (aligner, component, actual);
4548       return aligner;
4549     }
4550
4551   return actual;
4552 }
4553
4554 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4555    type TYPE.  This is usually an inefficient no-op except on some targets
4556    (such as AVR) where the representation of a pointer and an address
4557    differs.  */
4558
4559 static CORE_ADDR
4560 value_pointer (struct value *value, struct type *type)
4561 {
4562   struct gdbarch *gdbarch = get_type_arch (type);
4563   unsigned len = TYPE_LENGTH (type);
4564   gdb_byte *buf = (gdb_byte *) alloca (len);
4565   CORE_ADDR addr;
4566
4567   addr = value_address (value);
4568   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4569   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4570   return addr;
4571 }
4572
4573
4574 /* Push a descriptor of type TYPE for array value ARR on the stack at
4575    *SP, updating *SP to reflect the new descriptor.  Return either
4576    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4577    to-descriptor type rather than a descriptor type), a struct value *
4578    representing a pointer to this descriptor.  */
4579
4580 static struct value *
4581 make_array_descriptor (struct type *type, struct value *arr)
4582 {
4583   struct type *bounds_type = desc_bounds_type (type);
4584   struct type *desc_type = desc_base_type (type);
4585   struct value *descriptor = allocate_value (desc_type);
4586   struct value *bounds = allocate_value (bounds_type);
4587   int i;
4588
4589   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4590        i > 0; i -= 1)
4591     {
4592       modify_field (value_type (bounds), value_contents_writeable (bounds),
4593                     ada_array_bound (arr, i, 0),
4594                     desc_bound_bitpos (bounds_type, i, 0),
4595                     desc_bound_bitsize (bounds_type, i, 0));
4596       modify_field (value_type (bounds), value_contents_writeable (bounds),
4597                     ada_array_bound (arr, i, 1),
4598                     desc_bound_bitpos (bounds_type, i, 1),
4599                     desc_bound_bitsize (bounds_type, i, 1));
4600     }
4601
4602   bounds = ensure_lval (bounds);
4603
4604   modify_field (value_type (descriptor),
4605                 value_contents_writeable (descriptor),
4606                 value_pointer (ensure_lval (arr),
4607                                TYPE_FIELD_TYPE (desc_type, 0)),
4608                 fat_pntr_data_bitpos (desc_type),
4609                 fat_pntr_data_bitsize (desc_type));
4610
4611   modify_field (value_type (descriptor),
4612                 value_contents_writeable (descriptor),
4613                 value_pointer (bounds,
4614                                TYPE_FIELD_TYPE (desc_type, 1)),
4615                 fat_pntr_bounds_bitpos (desc_type),
4616                 fat_pntr_bounds_bitsize (desc_type));
4617
4618   descriptor = ensure_lval (descriptor);
4619
4620   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4621     return value_addr (descriptor);
4622   else
4623     return descriptor;
4624 }
4625 \f
4626                                 /* Symbol Cache Module */
4627
4628 /* Performance measurements made as of 2010-01-15 indicate that
4629    this cache does bring some noticeable improvements.  Depending
4630    on the type of entity being printed, the cache can make it as much
4631    as an order of magnitude faster than without it.
4632
4633    The descriptive type DWARF extension has significantly reduced
4634    the need for this cache, at least when DWARF is being used.  However,
4635    even in this case, some expensive name-based symbol searches are still
4636    sometimes necessary - to find an XVZ variable, mostly.  */
4637
4638 /* Initialize the contents of SYM_CACHE.  */
4639
4640 static void
4641 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4642 {
4643   obstack_init (&sym_cache->cache_space);
4644   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4645 }
4646
4647 /* Free the memory used by SYM_CACHE.  */
4648
4649 static void
4650 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4651 {
4652   obstack_free (&sym_cache->cache_space, NULL);
4653   xfree (sym_cache);
4654 }
4655
4656 /* Return the symbol cache associated to the given program space PSPACE.
4657    If not allocated for this PSPACE yet, allocate and initialize one.  */
4658
4659 static struct ada_symbol_cache *
4660 ada_get_symbol_cache (struct program_space *pspace)
4661 {
4662   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4663
4664   if (pspace_data->sym_cache == NULL)
4665     {
4666       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4667       ada_init_symbol_cache (pspace_data->sym_cache);
4668     }
4669
4670   return pspace_data->sym_cache;
4671 }
4672
4673 /* Clear all entries from the symbol cache.  */
4674
4675 static void
4676 ada_clear_symbol_cache (void)
4677 {
4678   struct ada_symbol_cache *sym_cache
4679     = ada_get_symbol_cache (current_program_space);
4680
4681   obstack_free (&sym_cache->cache_space, NULL);
4682   ada_init_symbol_cache (sym_cache);
4683 }
4684
4685 /* Search our cache for an entry matching NAME and DOMAIN.
4686    Return it if found, or NULL otherwise.  */
4687
4688 static struct cache_entry **
4689 find_entry (const char *name, domain_enum domain)
4690 {
4691   struct ada_symbol_cache *sym_cache
4692     = ada_get_symbol_cache (current_program_space);
4693   int h = msymbol_hash (name) % HASH_SIZE;
4694   struct cache_entry **e;
4695
4696   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4697     {
4698       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4699         return e;
4700     }
4701   return NULL;
4702 }
4703
4704 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4705    Return 1 if found, 0 otherwise.
4706
4707    If an entry was found and SYM is not NULL, set *SYM to the entry's
4708    SYM.  Same principle for BLOCK if not NULL.  */
4709
4710 static int
4711 lookup_cached_symbol (const char *name, domain_enum domain,
4712                       struct symbol **sym, const struct block **block)
4713 {
4714   struct cache_entry **e = find_entry (name, domain);
4715
4716   if (e == NULL)
4717     return 0;
4718   if (sym != NULL)
4719     *sym = (*e)->sym;
4720   if (block != NULL)
4721     *block = (*e)->block;
4722   return 1;
4723 }
4724
4725 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4726    in domain DOMAIN, save this result in our symbol cache.  */
4727
4728 static void
4729 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4730               const struct block *block)
4731 {
4732   struct ada_symbol_cache *sym_cache
4733     = ada_get_symbol_cache (current_program_space);
4734   int h;
4735   char *copy;
4736   struct cache_entry *e;
4737
4738   /* Symbols for builtin types don't have a block.
4739      For now don't cache such symbols.  */
4740   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4741     return;
4742
4743   /* If the symbol is a local symbol, then do not cache it, as a search
4744      for that symbol depends on the context.  To determine whether
4745      the symbol is local or not, we check the block where we found it
4746      against the global and static blocks of its associated symtab.  */
4747   if (sym
4748       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4749                             GLOBAL_BLOCK) != block
4750       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4751                             STATIC_BLOCK) != block)
4752     return;
4753
4754   h = msymbol_hash (name) % HASH_SIZE;
4755   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4756                                             sizeof (*e));
4757   e->next = sym_cache->root[h];
4758   sym_cache->root[h] = e;
4759   e->name = copy
4760     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4761   strcpy (copy, name);
4762   e->sym = sym;
4763   e->domain = domain;
4764   e->block = block;
4765 }
4766 \f
4767                                 /* Symbol Lookup */
4768
4769 /* Return the symbol name match type that should be used used when
4770    searching for all symbols matching LOOKUP_NAME.
4771
4772    LOOKUP_NAME is expected to be a symbol name after transformation
4773    for Ada lookups (see ada_name_for_lookup).  */
4774
4775 static symbol_name_match_type
4776 name_match_type_from_name (const char *lookup_name)
4777 {
4778   return (strstr (lookup_name, "__") == NULL
4779           ? symbol_name_match_type::WILD
4780           : symbol_name_match_type::FULL);
4781 }
4782
4783 /* Return the result of a standard (literal, C-like) lookup of NAME in
4784    given DOMAIN, visible from lexical block BLOCK.  */
4785
4786 static struct symbol *
4787 standard_lookup (const char *name, const struct block *block,
4788                  domain_enum domain)
4789 {
4790   /* Initialize it just to avoid a GCC false warning.  */
4791   struct block_symbol sym = {NULL, NULL};
4792
4793   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4794     return sym.symbol;
4795   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4796   cache_symbol (name, domain, sym.symbol, sym.block);
4797   return sym.symbol;
4798 }
4799
4800
4801 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4802    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4803    since they contend in overloading in the same way.  */
4804 static int
4805 is_nonfunction (struct block_symbol syms[], int n)
4806 {
4807   int i;
4808
4809   for (i = 0; i < n; i += 1)
4810     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4811         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4812             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4813       return 1;
4814
4815   return 0;
4816 }
4817
4818 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4819    struct types.  Otherwise, they may not.  */
4820
4821 static int
4822 equiv_types (struct type *type0, struct type *type1)
4823 {
4824   if (type0 == type1)
4825     return 1;
4826   if (type0 == NULL || type1 == NULL
4827       || TYPE_CODE (type0) != TYPE_CODE (type1))
4828     return 0;
4829   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4830        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4831       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4832       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4833     return 1;
4834
4835   return 0;
4836 }
4837
4838 /* True iff SYM0 represents the same entity as SYM1, or one that is
4839    no more defined than that of SYM1.  */
4840
4841 static int
4842 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4843 {
4844   if (sym0 == sym1)
4845     return 1;
4846   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4847       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4848     return 0;
4849
4850   switch (SYMBOL_CLASS (sym0))
4851     {
4852     case LOC_UNDEF:
4853       return 1;
4854     case LOC_TYPEDEF:
4855       {
4856         struct type *type0 = SYMBOL_TYPE (sym0);
4857         struct type *type1 = SYMBOL_TYPE (sym1);
4858         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4859         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4860         int len0 = strlen (name0);
4861
4862         return
4863           TYPE_CODE (type0) == TYPE_CODE (type1)
4864           && (equiv_types (type0, type1)
4865               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4866                   && startswith (name1 + len0, "___XV")));
4867       }
4868     case LOC_CONST:
4869       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4870         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4871     default:
4872       return 0;
4873     }
4874 }
4875
4876 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4877    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4878
4879 static void
4880 add_defn_to_vec (struct obstack *obstackp,
4881                  struct symbol *sym,
4882                  const struct block *block)
4883 {
4884   int i;
4885   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4886
4887   /* Do not try to complete stub types, as the debugger is probably
4888      already scanning all symbols matching a certain name at the
4889      time when this function is called.  Trying to replace the stub
4890      type by its associated full type will cause us to restart a scan
4891      which may lead to an infinite recursion.  Instead, the client
4892      collecting the matching symbols will end up collecting several
4893      matches, with at least one of them complete.  It can then filter
4894      out the stub ones if needed.  */
4895
4896   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4897     {
4898       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4899         return;
4900       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4901         {
4902           prevDefns[i].symbol = sym;
4903           prevDefns[i].block = block;
4904           return;
4905         }
4906     }
4907
4908   {
4909     struct block_symbol info;
4910
4911     info.symbol = sym;
4912     info.block = block;
4913     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4914   }
4915 }
4916
4917 /* Number of block_symbol structures currently collected in current vector in
4918    OBSTACKP.  */
4919
4920 static int
4921 num_defns_collected (struct obstack *obstackp)
4922 {
4923   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4924 }
4925
4926 /* Vector of block_symbol structures currently collected in current vector in
4927    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4928
4929 static struct block_symbol *
4930 defns_collected (struct obstack *obstackp, int finish)
4931 {
4932   if (finish)
4933     return (struct block_symbol *) obstack_finish (obstackp);
4934   else
4935     return (struct block_symbol *) obstack_base (obstackp);
4936 }
4937
4938 /* Return a bound minimal symbol matching NAME according to Ada
4939    decoding rules.  Returns an invalid symbol if there is no such
4940    minimal symbol.  Names prefixed with "standard__" are handled
4941    specially: "standard__" is first stripped off, and only static and
4942    global symbols are searched.  */
4943
4944 struct bound_minimal_symbol
4945 ada_lookup_simple_minsym (const char *name)
4946 {
4947   struct bound_minimal_symbol result;
4948   struct objfile *objfile;
4949   struct minimal_symbol *msymbol;
4950
4951   memset (&result, 0, sizeof (result));
4952
4953   symbol_name_match_type match_type = name_match_type_from_name (name);
4954   lookup_name_info lookup_name (name, match_type);
4955
4956   symbol_name_matcher_ftype *match_name
4957     = ada_get_symbol_name_matcher (lookup_name);
4958
4959   ALL_MSYMBOLS (objfile, msymbol)
4960   {
4961     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4962         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4963       {
4964         result.minsym = msymbol;
4965         result.objfile = objfile;
4966         break;
4967       }
4968   }
4969
4970   return result;
4971 }
4972
4973 /* For all subprograms that statically enclose the subprogram of the
4974    selected frame, add symbols matching identifier NAME in DOMAIN
4975    and their blocks to the list of data in OBSTACKP, as for
4976    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4977    with a wildcard prefix.  */
4978
4979 static void
4980 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4981                                   const lookup_name_info &lookup_name,
4982                                   domain_enum domain)
4983 {
4984 }
4985
4986 /* True if TYPE is definitely an artificial type supplied to a symbol
4987    for which no debugging information was given in the symbol file.  */
4988
4989 static int
4990 is_nondebugging_type (struct type *type)
4991 {
4992   const char *name = ada_type_name (type);
4993
4994   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4995 }
4996
4997 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4998    that are deemed "identical" for practical purposes.
4999
5000    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5001    types and that their number of enumerals is identical (in other
5002    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5003
5004 static int
5005 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5006 {
5007   int i;
5008
5009   /* The heuristic we use here is fairly conservative.  We consider
5010      that 2 enumerate types are identical if they have the same
5011      number of enumerals and that all enumerals have the same
5012      underlying value and name.  */
5013
5014   /* All enums in the type should have an identical underlying value.  */
5015   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5016     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5017       return 0;
5018
5019   /* All enumerals should also have the same name (modulo any numerical
5020      suffix).  */
5021   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5022     {
5023       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5024       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5025       int len_1 = strlen (name_1);
5026       int len_2 = strlen (name_2);
5027
5028       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5029       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5030       if (len_1 != len_2
5031           || strncmp (TYPE_FIELD_NAME (type1, i),
5032                       TYPE_FIELD_NAME (type2, i),
5033                       len_1) != 0)
5034         return 0;
5035     }
5036
5037   return 1;
5038 }
5039
5040 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5041    that are deemed "identical" for practical purposes.  Sometimes,
5042    enumerals are not strictly identical, but their types are so similar
5043    that they can be considered identical.
5044
5045    For instance, consider the following code:
5046
5047       type Color is (Black, Red, Green, Blue, White);
5048       type RGB_Color is new Color range Red .. Blue;
5049
5050    Type RGB_Color is a subrange of an implicit type which is a copy
5051    of type Color. If we call that implicit type RGB_ColorB ("B" is
5052    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5053    As a result, when an expression references any of the enumeral
5054    by name (Eg. "print green"), the expression is technically
5055    ambiguous and the user should be asked to disambiguate. But
5056    doing so would only hinder the user, since it wouldn't matter
5057    what choice he makes, the outcome would always be the same.
5058    So, for practical purposes, we consider them as the same.  */
5059
5060 static int
5061 symbols_are_identical_enums (struct block_symbol *syms, int nsyms)
5062 {
5063   int i;
5064
5065   /* Before performing a thorough comparison check of each type,
5066      we perform a series of inexpensive checks.  We expect that these
5067      checks will quickly fail in the vast majority of cases, and thus
5068      help prevent the unnecessary use of a more expensive comparison.
5069      Said comparison also expects us to make some of these checks
5070      (see ada_identical_enum_types_p).  */
5071
5072   /* Quick check: All symbols should have an enum type.  */
5073   for (i = 0; i < nsyms; i++)
5074     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5075       return 0;
5076
5077   /* Quick check: They should all have the same value.  */
5078   for (i = 1; i < nsyms; i++)
5079     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5080       return 0;
5081
5082   /* Quick check: They should all have the same number of enumerals.  */
5083   for (i = 1; i < nsyms; i++)
5084     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5085         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5086       return 0;
5087
5088   /* All the sanity checks passed, so we might have a set of
5089      identical enumeration types.  Perform a more complete
5090      comparison of the type of each symbol.  */
5091   for (i = 1; i < nsyms; i++)
5092     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5093                                      SYMBOL_TYPE (syms[0].symbol)))
5094       return 0;
5095
5096   return 1;
5097 }
5098
5099 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
5100    duplicate other symbols in the list (The only case I know of where
5101    this happens is when object files containing stabs-in-ecoff are
5102    linked with files containing ordinary ecoff debugging symbols (or no
5103    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5104    Returns the number of items in the modified list.  */
5105
5106 static int
5107 remove_extra_symbols (struct block_symbol *syms, int nsyms)
5108 {
5109   int i, j;
5110
5111   /* We should never be called with less than 2 symbols, as there
5112      cannot be any extra symbol in that case.  But it's easy to
5113      handle, since we have nothing to do in that case.  */
5114   if (nsyms < 2)
5115     return nsyms;
5116
5117   i = 0;
5118   while (i < nsyms)
5119     {
5120       int remove_p = 0;
5121
5122       /* If two symbols have the same name and one of them is a stub type,
5123          the get rid of the stub.  */
5124
5125       if (TYPE_STUB (SYMBOL_TYPE (syms[i].symbol))
5126           && SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL)
5127         {
5128           for (j = 0; j < nsyms; j++)
5129             {
5130               if (j != i
5131                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].symbol))
5132                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5133                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5134                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0)
5135                 remove_p = 1;
5136             }
5137         }
5138
5139       /* Two symbols with the same name, same class and same address
5140          should be identical.  */
5141
5142       else if (SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL
5143           && SYMBOL_CLASS (syms[i].symbol) == LOC_STATIC
5144           && is_nondebugging_type (SYMBOL_TYPE (syms[i].symbol)))
5145         {
5146           for (j = 0; j < nsyms; j += 1)
5147             {
5148               if (i != j
5149                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5150                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5151                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0
5152                   && SYMBOL_CLASS (syms[i].symbol)
5153                        == SYMBOL_CLASS (syms[j].symbol)
5154                   && SYMBOL_VALUE_ADDRESS (syms[i].symbol)
5155                   == SYMBOL_VALUE_ADDRESS (syms[j].symbol))
5156                 remove_p = 1;
5157             }
5158         }
5159       
5160       if (remove_p)
5161         {
5162           for (j = i + 1; j < nsyms; j += 1)
5163             syms[j - 1] = syms[j];
5164           nsyms -= 1;
5165         }
5166
5167       i += 1;
5168     }
5169
5170   /* If all the remaining symbols are identical enumerals, then
5171      just keep the first one and discard the rest.
5172
5173      Unlike what we did previously, we do not discard any entry
5174      unless they are ALL identical.  This is because the symbol
5175      comparison is not a strict comparison, but rather a practical
5176      comparison.  If all symbols are considered identical, then
5177      we can just go ahead and use the first one and discard the rest.
5178      But if we cannot reduce the list to a single element, we have
5179      to ask the user to disambiguate anyways.  And if we have to
5180      present a multiple-choice menu, it's less confusing if the list
5181      isn't missing some choices that were identical and yet distinct.  */
5182   if (symbols_are_identical_enums (syms, nsyms))
5183     nsyms = 1;
5184
5185   return nsyms;
5186 }
5187
5188 /* Given a type that corresponds to a renaming entity, use the type name
5189    to extract the scope (package name or function name, fully qualified,
5190    and following the GNAT encoding convention) where this renaming has been
5191    defined.  The string returned needs to be deallocated after use.  */
5192
5193 static char *
5194 xget_renaming_scope (struct type *renaming_type)
5195 {
5196   /* The renaming types adhere to the following convention:
5197      <scope>__<rename>___<XR extension>.
5198      So, to extract the scope, we search for the "___XR" extension,
5199      and then backtrack until we find the first "__".  */
5200
5201   const char *name = type_name_no_tag (renaming_type);
5202   const char *suffix = strstr (name, "___XR");
5203   const char *last;
5204   int scope_len;
5205   char *scope;
5206
5207   /* Now, backtrack a bit until we find the first "__".  Start looking
5208      at suffix - 3, as the <rename> part is at least one character long.  */
5209
5210   for (last = suffix - 3; last > name; last--)
5211     if (last[0] == '_' && last[1] == '_')
5212       break;
5213
5214   /* Make a copy of scope and return it.  */
5215
5216   scope_len = last - name;
5217   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
5218
5219   strncpy (scope, name, scope_len);
5220   scope[scope_len] = '\0';
5221
5222   return scope;
5223 }
5224
5225 /* Return nonzero if NAME corresponds to a package name.  */
5226
5227 static int
5228 is_package_name (const char *name)
5229 {
5230   /* Here, We take advantage of the fact that no symbols are generated
5231      for packages, while symbols are generated for each function.
5232      So the condition for NAME represent a package becomes equivalent
5233      to NAME not existing in our list of symbols.  There is only one
5234      small complication with library-level functions (see below).  */
5235
5236   char *fun_name;
5237
5238   /* If it is a function that has not been defined at library level,
5239      then we should be able to look it up in the symbols.  */
5240   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5241     return 0;
5242
5243   /* Library-level function names start with "_ada_".  See if function
5244      "_ada_" followed by NAME can be found.  */
5245
5246   /* Do a quick check that NAME does not contain "__", since library-level
5247      functions names cannot contain "__" in them.  */
5248   if (strstr (name, "__") != NULL)
5249     return 0;
5250
5251   fun_name = xstrprintf ("_ada_%s", name);
5252
5253   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
5254 }
5255
5256 /* Return nonzero if SYM corresponds to a renaming entity that is
5257    not visible from FUNCTION_NAME.  */
5258
5259 static int
5260 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5261 {
5262   char *scope;
5263   struct cleanup *old_chain;
5264
5265   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5266     return 0;
5267
5268   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5269   old_chain = make_cleanup (xfree, scope);
5270
5271   /* If the rename has been defined in a package, then it is visible.  */
5272   if (is_package_name (scope))
5273     {
5274       do_cleanups (old_chain);
5275       return 0;
5276     }
5277
5278   /* Check that the rename is in the current function scope by checking
5279      that its name starts with SCOPE.  */
5280
5281   /* If the function name starts with "_ada_", it means that it is
5282      a library-level function.  Strip this prefix before doing the
5283      comparison, as the encoding for the renaming does not contain
5284      this prefix.  */
5285   if (startswith (function_name, "_ada_"))
5286     function_name += 5;
5287
5288   {
5289     int is_invisible = !startswith (function_name, scope);
5290
5291     do_cleanups (old_chain);
5292     return is_invisible;
5293   }
5294 }
5295
5296 /* Remove entries from SYMS that corresponds to a renaming entity that
5297    is not visible from the function associated with CURRENT_BLOCK or
5298    that is superfluous due to the presence of more specific renaming
5299    information.  Places surviving symbols in the initial entries of
5300    SYMS and returns the number of surviving symbols.
5301    
5302    Rationale:
5303    First, in cases where an object renaming is implemented as a
5304    reference variable, GNAT may produce both the actual reference
5305    variable and the renaming encoding.  In this case, we discard the
5306    latter.
5307
5308    Second, GNAT emits a type following a specified encoding for each renaming
5309    entity.  Unfortunately, STABS currently does not support the definition
5310    of types that are local to a given lexical block, so all renamings types
5311    are emitted at library level.  As a consequence, if an application
5312    contains two renaming entities using the same name, and a user tries to
5313    print the value of one of these entities, the result of the ada symbol
5314    lookup will also contain the wrong renaming type.
5315
5316    This function partially covers for this limitation by attempting to
5317    remove from the SYMS list renaming symbols that should be visible
5318    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5319    method with the current information available.  The implementation
5320    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5321    
5322       - When the user tries to print a rename in a function while there
5323         is another rename entity defined in a package:  Normally, the
5324         rename in the function has precedence over the rename in the
5325         package, so the latter should be removed from the list.  This is
5326         currently not the case.
5327         
5328       - This function will incorrectly remove valid renames if
5329         the CURRENT_BLOCK corresponds to a function which symbol name
5330         has been changed by an "Export" pragma.  As a consequence,
5331         the user will be unable to print such rename entities.  */
5332
5333 static int
5334 remove_irrelevant_renamings (struct block_symbol *syms,
5335                              int nsyms, const struct block *current_block)
5336 {
5337   struct symbol *current_function;
5338   const char *current_function_name;
5339   int i;
5340   int is_new_style_renaming;
5341
5342   /* If there is both a renaming foo___XR... encoded as a variable and
5343      a simple variable foo in the same block, discard the latter.
5344      First, zero out such symbols, then compress.  */
5345   is_new_style_renaming = 0;
5346   for (i = 0; i < nsyms; i += 1)
5347     {
5348       struct symbol *sym = syms[i].symbol;
5349       const struct block *block = syms[i].block;
5350       const char *name;
5351       const char *suffix;
5352
5353       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5354         continue;
5355       name = SYMBOL_LINKAGE_NAME (sym);
5356       suffix = strstr (name, "___XR");
5357
5358       if (suffix != NULL)
5359         {
5360           int name_len = suffix - name;
5361           int j;
5362
5363           is_new_style_renaming = 1;
5364           for (j = 0; j < nsyms; j += 1)
5365             if (i != j && syms[j].symbol != NULL
5366                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].symbol),
5367                             name_len) == 0
5368                 && block == syms[j].block)
5369               syms[j].symbol = NULL;
5370         }
5371     }
5372   if (is_new_style_renaming)
5373     {
5374       int j, k;
5375
5376       for (j = k = 0; j < nsyms; j += 1)
5377         if (syms[j].symbol != NULL)
5378             {
5379               syms[k] = syms[j];
5380               k += 1;
5381             }
5382       return k;
5383     }
5384
5385   /* Extract the function name associated to CURRENT_BLOCK.
5386      Abort if unable to do so.  */
5387
5388   if (current_block == NULL)
5389     return nsyms;
5390
5391   current_function = block_linkage_function (current_block);
5392   if (current_function == NULL)
5393     return nsyms;
5394
5395   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5396   if (current_function_name == NULL)
5397     return nsyms;
5398
5399   /* Check each of the symbols, and remove it from the list if it is
5400      a type corresponding to a renaming that is out of the scope of
5401      the current block.  */
5402
5403   i = 0;
5404   while (i < nsyms)
5405     {
5406       if (ada_parse_renaming (syms[i].symbol, NULL, NULL, NULL)
5407           == ADA_OBJECT_RENAMING
5408           && old_renaming_is_invisible (syms[i].symbol, current_function_name))
5409         {
5410           int j;
5411
5412           for (j = i + 1; j < nsyms; j += 1)
5413             syms[j - 1] = syms[j];
5414           nsyms -= 1;
5415         }
5416       else
5417         i += 1;
5418     }
5419
5420   return nsyms;
5421 }
5422
5423 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5424    whose name and domain match NAME and DOMAIN respectively.
5425    If no match was found, then extend the search to "enclosing"
5426    routines (in other words, if we're inside a nested function,
5427    search the symbols defined inside the enclosing functions).
5428    If WILD_MATCH_P is nonzero, perform the naming matching in
5429    "wild" mode (see function "wild_match" for more info).
5430
5431    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5432
5433 static void
5434 ada_add_local_symbols (struct obstack *obstackp,
5435                        const lookup_name_info &lookup_name,
5436                        const struct block *block, domain_enum domain)
5437 {
5438   int block_depth = 0;
5439
5440   while (block != NULL)
5441     {
5442       block_depth += 1;
5443       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5444
5445       /* If we found a non-function match, assume that's the one.  */
5446       if (is_nonfunction (defns_collected (obstackp, 0),
5447                           num_defns_collected (obstackp)))
5448         return;
5449
5450       block = BLOCK_SUPERBLOCK (block);
5451     }
5452
5453   /* If no luck so far, try to find NAME as a local symbol in some lexically
5454      enclosing subprogram.  */
5455   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5456     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5457 }
5458
5459 /* An object of this type is used as the user_data argument when
5460    calling the map_matching_symbols method.  */
5461
5462 struct match_data
5463 {
5464   struct objfile *objfile;
5465   struct obstack *obstackp;
5466   struct symbol *arg_sym;
5467   int found_sym;
5468 };
5469
5470 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5471    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5472    containing the obstack that collects the symbol list, the file that SYM
5473    must come from, a flag indicating whether a non-argument symbol has
5474    been found in the current block, and the last argument symbol
5475    passed in SYM within the current block (if any).  When SYM is null,
5476    marking the end of a block, the argument symbol is added if no
5477    other has been found.  */
5478
5479 static int
5480 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5481 {
5482   struct match_data *data = (struct match_data *) data0;
5483   
5484   if (sym == NULL)
5485     {
5486       if (!data->found_sym && data->arg_sym != NULL) 
5487         add_defn_to_vec (data->obstackp,
5488                          fixup_symbol_section (data->arg_sym, data->objfile),
5489                          block);
5490       data->found_sym = 0;
5491       data->arg_sym = NULL;
5492     }
5493   else 
5494     {
5495       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5496         return 0;
5497       else if (SYMBOL_IS_ARGUMENT (sym))
5498         data->arg_sym = sym;
5499       else
5500         {
5501           data->found_sym = 1;
5502           add_defn_to_vec (data->obstackp,
5503                            fixup_symbol_section (sym, data->objfile),
5504                            block);
5505         }
5506     }
5507   return 0;
5508 }
5509
5510 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5511    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5512    symbols to OBSTACKP.  Return whether we found such symbols.  */
5513
5514 static int
5515 ada_add_block_renamings (struct obstack *obstackp,
5516                          const struct block *block,
5517                          const lookup_name_info &lookup_name,
5518                          domain_enum domain)
5519 {
5520   struct using_direct *renaming;
5521   int defns_mark = num_defns_collected (obstackp);
5522
5523   symbol_name_matcher_ftype *name_match
5524     = ada_get_symbol_name_matcher (lookup_name);
5525
5526   for (renaming = block_using (block);
5527        renaming != NULL;
5528        renaming = renaming->next)
5529     {
5530       const char *r_name;
5531
5532       /* Avoid infinite recursions: skip this renaming if we are actually
5533          already traversing it.
5534
5535          Currently, symbol lookup in Ada don't use the namespace machinery from
5536          C++/Fortran support: skip namespace imports that use them.  */
5537       if (renaming->searched
5538           || (renaming->import_src != NULL
5539               && renaming->import_src[0] != '\0')
5540           || (renaming->import_dest != NULL
5541               && renaming->import_dest[0] != '\0'))
5542         continue;
5543       renaming->searched = 1;
5544
5545       /* TODO: here, we perform another name-based symbol lookup, which can
5546          pull its own multiple overloads.  In theory, we should be able to do
5547          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5548          not a simple name.  But in order to do this, we would need to enhance
5549          the DWARF reader to associate a symbol to this renaming, instead of a
5550          name.  So, for now, we do something simpler: re-use the C++/Fortran
5551          namespace machinery.  */
5552       r_name = (renaming->alias != NULL
5553                 ? renaming->alias
5554                 : renaming->declaration);
5555       if (name_match (r_name, lookup_name, NULL))
5556         {
5557           lookup_name_info decl_lookup_name (renaming->declaration,
5558                                              lookup_name.match_type ());
5559           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5560                                1, NULL);
5561         }
5562       renaming->searched = 0;
5563     }
5564   return num_defns_collected (obstackp) != defns_mark;
5565 }
5566
5567 /* Implements compare_names, but only applying the comparision using
5568    the given CASING.  */
5569
5570 static int
5571 compare_names_with_case (const char *string1, const char *string2,
5572                          enum case_sensitivity casing)
5573 {
5574   while (*string1 != '\0' && *string2 != '\0')
5575     {
5576       char c1, c2;
5577
5578       if (isspace (*string1) || isspace (*string2))
5579         return strcmp_iw_ordered (string1, string2);
5580
5581       if (casing == case_sensitive_off)
5582         {
5583           c1 = tolower (*string1);
5584           c2 = tolower (*string2);
5585         }
5586       else
5587         {
5588           c1 = *string1;
5589           c2 = *string2;
5590         }
5591       if (c1 != c2)
5592         break;
5593
5594       string1 += 1;
5595       string2 += 1;
5596     }
5597
5598   switch (*string1)
5599     {
5600     case '(':
5601       return strcmp_iw_ordered (string1, string2);
5602     case '_':
5603       if (*string2 == '\0')
5604         {
5605           if (is_name_suffix (string1))
5606             return 0;
5607           else
5608             return 1;
5609         }
5610       /* FALLTHROUGH */
5611     default:
5612       if (*string2 == '(')
5613         return strcmp_iw_ordered (string1, string2);
5614       else
5615         {
5616           if (casing == case_sensitive_off)
5617             return tolower (*string1) - tolower (*string2);
5618           else
5619             return *string1 - *string2;
5620         }
5621     }
5622 }
5623
5624 /* Compare STRING1 to STRING2, with results as for strcmp.
5625    Compatible with strcmp_iw_ordered in that...
5626
5627        strcmp_iw_ordered (STRING1, STRING2) <= 0
5628
5629    ... implies...
5630
5631        compare_names (STRING1, STRING2) <= 0
5632
5633    (they may differ as to what symbols compare equal).  */
5634
5635 static int
5636 compare_names (const char *string1, const char *string2)
5637 {
5638   int result;
5639
5640   /* Similar to what strcmp_iw_ordered does, we need to perform
5641      a case-insensitive comparison first, and only resort to
5642      a second, case-sensitive, comparison if the first one was
5643      not sufficient to differentiate the two strings.  */
5644
5645   result = compare_names_with_case (string1, string2, case_sensitive_off);
5646   if (result == 0)
5647     result = compare_names_with_case (string1, string2, case_sensitive_on);
5648
5649   return result;
5650 }
5651
5652 /* Convenience function to get at the Ada encoded lookup name for
5653    LOOKUP_NAME, as a C string.  */
5654
5655 static const char *
5656 ada_lookup_name (const lookup_name_info &lookup_name)
5657 {
5658   return lookup_name.ada ().lookup_name ().c_str ();
5659 }
5660
5661 /* Add to OBSTACKP all non-local symbols whose name and domain match
5662    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5663    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5664    symbols otherwise.  */
5665
5666 static void
5667 add_nonlocal_symbols (struct obstack *obstackp,
5668                       const lookup_name_info &lookup_name,
5669                       domain_enum domain, int global)
5670 {
5671   struct objfile *objfile;
5672   struct compunit_symtab *cu;
5673   struct match_data data;
5674
5675   memset (&data, 0, sizeof data);
5676   data.obstackp = obstackp;
5677
5678   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5679
5680   ALL_OBJFILES (objfile)
5681     {
5682       data.objfile = objfile;
5683
5684       if (is_wild_match)
5685         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5686                                                domain, global,
5687                                                aux_add_nonlocal_symbols, &data,
5688                                                symbol_name_match_type::WILD,
5689                                                NULL);
5690       else
5691         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5692                                                domain, global,
5693                                                aux_add_nonlocal_symbols, &data,
5694                                                symbol_name_match_type::FULL,
5695                                                compare_names);
5696
5697       ALL_OBJFILE_COMPUNITS (objfile, cu)
5698         {
5699           const struct block *global_block
5700             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5701
5702           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5703                                        domain))
5704             data.found_sym = 1;
5705         }
5706     }
5707
5708   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5709     {
5710       const char *name = ada_lookup_name (lookup_name);
5711       std::string name1 = std::string ("<_ada_") + name + '>';
5712
5713       ALL_OBJFILES (objfile)
5714         {
5715           data.objfile = objfile;
5716           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5717                                                  domain, global,
5718                                                  aux_add_nonlocal_symbols,
5719                                                  &data,
5720                                                  symbol_name_match_type::FULL,
5721                                                  compare_names);
5722         }
5723     }           
5724 }
5725
5726 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5727    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5728    returning the number of matches.  Add these to OBSTACKP.
5729
5730    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5731    symbol match within the nest of blocks whose innermost member is BLOCK,
5732    is the one match returned (no other matches in that or
5733    enclosing blocks is returned).  If there are any matches in or
5734    surrounding BLOCK, then these alone are returned.
5735
5736    Names prefixed with "standard__" are handled specially:
5737    "standard__" is first stripped off (by the lookup_name
5738    constructor), and only static and global symbols are searched.
5739
5740    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5741    to lookup global symbols.  */
5742
5743 static void
5744 ada_add_all_symbols (struct obstack *obstackp,
5745                      const struct block *block,
5746                      const lookup_name_info &lookup_name,
5747                      domain_enum domain,
5748                      int full_search,
5749                      int *made_global_lookup_p)
5750 {
5751   struct symbol *sym;
5752
5753   if (made_global_lookup_p)
5754     *made_global_lookup_p = 0;
5755
5756   /* Special case: If the user specifies a symbol name inside package
5757      Standard, do a non-wild matching of the symbol name without
5758      the "standard__" prefix.  This was primarily introduced in order
5759      to allow the user to specifically access the standard exceptions
5760      using, for instance, Standard.Constraint_Error when Constraint_Error
5761      is ambiguous (due to the user defining its own Constraint_Error
5762      entity inside its program).  */
5763   if (lookup_name.ada ().standard_p ())
5764     block = NULL;
5765
5766   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5767
5768   if (block != NULL)
5769     {
5770       if (full_search)
5771         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5772       else
5773         {
5774           /* In the !full_search case we're are being called by
5775              ada_iterate_over_symbols, and we don't want to search
5776              superblocks.  */
5777           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5778         }
5779       if (num_defns_collected (obstackp) > 0 || !full_search)
5780         return;
5781     }
5782
5783   /* No non-global symbols found.  Check our cache to see if we have
5784      already performed this search before.  If we have, then return
5785      the same result.  */
5786
5787   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5788                             domain, &sym, &block))
5789     {
5790       if (sym != NULL)
5791         add_defn_to_vec (obstackp, sym, block);
5792       return;
5793     }
5794
5795   if (made_global_lookup_p)
5796     *made_global_lookup_p = 1;
5797
5798   /* Search symbols from all global blocks.  */
5799  
5800   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5801
5802   /* Now add symbols from all per-file blocks if we've gotten no hits
5803      (not strictly correct, but perhaps better than an error).  */
5804
5805   if (num_defns_collected (obstackp) == 0)
5806     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5807 }
5808
5809 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5810    is non-zero, enclosing scope and in global scopes, returning the number of
5811    matches.
5812    Sets *RESULTS to point to a newly allocated vector of (SYM,BLOCK) tuples,
5813    indicating the symbols found and the blocks and symbol tables (if
5814    any) in which they were found.  This vector should be freed when
5815    no longer useful.
5816
5817    When full_search is non-zero, any non-function/non-enumeral
5818    symbol match within the nest of blocks whose innermost member is BLOCK,
5819    is the one match returned (no other matches in that or
5820    enclosing blocks is returned).  If there are any matches in or
5821    surrounding BLOCK, then these alone are returned.
5822
5823    Names prefixed with "standard__" are handled specially: "standard__"
5824    is first stripped off, and only static and global symbols are searched.  */
5825
5826 static int
5827 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5828                                const struct block *block,
5829                                domain_enum domain,
5830                                struct block_symbol **results,
5831                                int full_search)
5832 {
5833   int syms_from_global_search;
5834   int ndefns;
5835   int results_size;
5836   auto_obstack obstack;
5837
5838   ada_add_all_symbols (&obstack, block, lookup_name,
5839                        domain, full_search, &syms_from_global_search);
5840
5841   ndefns = num_defns_collected (&obstack);
5842
5843   results_size = obstack_object_size (&obstack);
5844   *results = (struct block_symbol *) malloc (results_size);
5845   memcpy (*results, defns_collected (&obstack, 1), results_size);
5846
5847   ndefns = remove_extra_symbols (*results, ndefns);
5848
5849   if (ndefns == 0 && full_search && syms_from_global_search)
5850     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5851
5852   if (ndefns == 1 && full_search && syms_from_global_search)
5853     cache_symbol (ada_lookup_name (lookup_name), domain,
5854                   (*results)[0].symbol, (*results)[0].block);
5855
5856   ndefns = remove_irrelevant_renamings (*results, ndefns, block);
5857
5858   return ndefns;
5859 }
5860
5861 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5862    in global scopes, returning the number of matches, and setting *RESULTS
5863    to a newly-allocated vector of (SYM,BLOCK) tuples.  This newly-allocated
5864    vector should be freed when no longer useful.
5865
5866    See ada_lookup_symbol_list_worker for further details.  */
5867
5868 int
5869 ada_lookup_symbol_list (const char *name, const struct block *block,
5870                         domain_enum domain, struct block_symbol **results)
5871 {
5872   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5873   lookup_name_info lookup_name (name, name_match_type);
5874
5875   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5876 }
5877
5878 /* Implementation of the la_iterate_over_symbols method.  */
5879
5880 static void
5881 ada_iterate_over_symbols
5882   (const struct block *block, const lookup_name_info &name,
5883    domain_enum domain,
5884    gdb::function_view<symbol_found_callback_ftype> callback)
5885 {
5886   int ndefs, i;
5887   struct block_symbol *results;
5888   struct cleanup *old_chain;
5889
5890   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5891   old_chain = make_cleanup (xfree, results);
5892
5893   for (i = 0; i < ndefs; ++i)
5894     {
5895       if (!callback (results[i].symbol))
5896         break;
5897     }
5898
5899   do_cleanups (old_chain);
5900 }
5901
5902 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5903    to 1, but choosing the first symbol found if there are multiple
5904    choices.
5905
5906    The result is stored in *INFO, which must be non-NULL.
5907    If no match is found, INFO->SYM is set to NULL.  */
5908
5909 void
5910 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5911                            domain_enum domain,
5912                            struct block_symbol *info)
5913 {
5914   /* Since we already have an encoded name, wrap it in '<>' to force a
5915      verbatim match.  Otherwise, if the name happens to not look like
5916      an encoded name (because it doesn't include a "__"),
5917      ada_lookup_name_info would re-encode/fold it again, and that
5918      would e.g., incorrectly lowercase object renaming names like
5919      "R28b" -> "r28b".  */
5920   std::string verbatim = std::string ("<") + name + '>';
5921
5922   gdb_assert (info != NULL);
5923   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5924 }
5925
5926 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5927    scope and in global scopes, or NULL if none.  NAME is folded and
5928    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5929    choosing the first symbol if there are multiple choices.
5930    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5931
5932 struct block_symbol
5933 ada_lookup_symbol (const char *name, const struct block *block0,
5934                    domain_enum domain, int *is_a_field_of_this)
5935 {
5936   if (is_a_field_of_this != NULL)
5937     *is_a_field_of_this = 0;
5938
5939   struct block_symbol *candidates;
5940   int n_candidates;
5941   struct cleanup *old_chain;
5942
5943   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5944   old_chain = make_cleanup (xfree, candidates);
5945
5946   if (n_candidates == 0)
5947     {
5948       do_cleanups (old_chain);
5949       return {};
5950     }
5951
5952   block_symbol info = candidates[0];
5953   info.symbol = fixup_symbol_section (info.symbol, NULL);
5954
5955   do_cleanups (old_chain);
5956
5957   return info;
5958 }
5959
5960 static struct block_symbol
5961 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5962                             const char *name,
5963                             const struct block *block,
5964                             const domain_enum domain)
5965 {
5966   struct block_symbol sym;
5967
5968   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5969   if (sym.symbol != NULL)
5970     return sym;
5971
5972   /* If we haven't found a match at this point, try the primitive
5973      types.  In other languages, this search is performed before
5974      searching for global symbols in order to short-circuit that
5975      global-symbol search if it happens that the name corresponds
5976      to a primitive type.  But we cannot do the same in Ada, because
5977      it is perfectly legitimate for a program to declare a type which
5978      has the same name as a standard type.  If looking up a type in
5979      that situation, we have traditionally ignored the primitive type
5980      in favor of user-defined types.  This is why, unlike most other
5981      languages, we search the primitive types this late and only after
5982      having searched the global symbols without success.  */
5983
5984   if (domain == VAR_DOMAIN)
5985     {
5986       struct gdbarch *gdbarch;
5987
5988       if (block == NULL)
5989         gdbarch = target_gdbarch ();
5990       else
5991         gdbarch = block_gdbarch (block);
5992       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5993       if (sym.symbol != NULL)
5994         return sym;
5995     }
5996
5997   return (struct block_symbol) {NULL, NULL};
5998 }
5999
6000
6001 /* True iff STR is a possible encoded suffix of a normal Ada name
6002    that is to be ignored for matching purposes.  Suffixes of parallel
6003    names (e.g., XVE) are not included here.  Currently, the possible suffixes
6004    are given by any of the regular expressions:
6005
6006    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
6007    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
6008    TKB              [subprogram suffix for task bodies]
6009    _E[0-9]+[bs]$    [protected object entry suffixes]
6010    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
6011
6012    Also, any leading "__[0-9]+" sequence is skipped before the suffix
6013    match is performed.  This sequence is used to differentiate homonyms,
6014    is an optional part of a valid name suffix.  */
6015
6016 static int
6017 is_name_suffix (const char *str)
6018 {
6019   int k;
6020   const char *matching;
6021   const int len = strlen (str);
6022
6023   /* Skip optional leading __[0-9]+.  */
6024
6025   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
6026     {
6027       str += 3;
6028       while (isdigit (str[0]))
6029         str += 1;
6030     }
6031   
6032   /* [.$][0-9]+ */
6033
6034   if (str[0] == '.' || str[0] == '$')
6035     {
6036       matching = str + 1;
6037       while (isdigit (matching[0]))
6038         matching += 1;
6039       if (matching[0] == '\0')
6040         return 1;
6041     }
6042
6043   /* ___[0-9]+ */
6044
6045   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6046     {
6047       matching = str + 3;
6048       while (isdigit (matching[0]))
6049         matching += 1;
6050       if (matching[0] == '\0')
6051         return 1;
6052     }
6053
6054   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6055
6056   if (strcmp (str, "TKB") == 0)
6057     return 1;
6058
6059 #if 0
6060   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6061      with a N at the end.  Unfortunately, the compiler uses the same
6062      convention for other internal types it creates.  So treating
6063      all entity names that end with an "N" as a name suffix causes
6064      some regressions.  For instance, consider the case of an enumerated
6065      type.  To support the 'Image attribute, it creates an array whose
6066      name ends with N.
6067      Having a single character like this as a suffix carrying some
6068      information is a bit risky.  Perhaps we should change the encoding
6069      to be something like "_N" instead.  In the meantime, do not do
6070      the following check.  */
6071   /* Protected Object Subprograms */
6072   if (len == 1 && str [0] == 'N')
6073     return 1;
6074 #endif
6075
6076   /* _E[0-9]+[bs]$ */
6077   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6078     {
6079       matching = str + 3;
6080       while (isdigit (matching[0]))
6081         matching += 1;
6082       if ((matching[0] == 'b' || matching[0] == 's')
6083           && matching [1] == '\0')
6084         return 1;
6085     }
6086
6087   /* ??? We should not modify STR directly, as we are doing below.  This
6088      is fine in this case, but may become problematic later if we find
6089      that this alternative did not work, and want to try matching
6090      another one from the begining of STR.  Since we modified it, we
6091      won't be able to find the begining of the string anymore!  */
6092   if (str[0] == 'X')
6093     {
6094       str += 1;
6095       while (str[0] != '_' && str[0] != '\0')
6096         {
6097           if (str[0] != 'n' && str[0] != 'b')
6098             return 0;
6099           str += 1;
6100         }
6101     }
6102
6103   if (str[0] == '\000')
6104     return 1;
6105
6106   if (str[0] == '_')
6107     {
6108       if (str[1] != '_' || str[2] == '\000')
6109         return 0;
6110       if (str[2] == '_')
6111         {
6112           if (strcmp (str + 3, "JM") == 0)
6113             return 1;
6114           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6115              the LJM suffix in favor of the JM one.  But we will
6116              still accept LJM as a valid suffix for a reasonable
6117              amount of time, just to allow ourselves to debug programs
6118              compiled using an older version of GNAT.  */
6119           if (strcmp (str + 3, "LJM") == 0)
6120             return 1;
6121           if (str[3] != 'X')
6122             return 0;
6123           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6124               || str[4] == 'U' || str[4] == 'P')
6125             return 1;
6126           if (str[4] == 'R' && str[5] != 'T')
6127             return 1;
6128           return 0;
6129         }
6130       if (!isdigit (str[2]))
6131         return 0;
6132       for (k = 3; str[k] != '\0'; k += 1)
6133         if (!isdigit (str[k]) && str[k] != '_')
6134           return 0;
6135       return 1;
6136     }
6137   if (str[0] == '$' && isdigit (str[1]))
6138     {
6139       for (k = 2; str[k] != '\0'; k += 1)
6140         if (!isdigit (str[k]) && str[k] != '_')
6141           return 0;
6142       return 1;
6143     }
6144   return 0;
6145 }
6146
6147 /* Return non-zero if the string starting at NAME and ending before
6148    NAME_END contains no capital letters.  */
6149
6150 static int
6151 is_valid_name_for_wild_match (const char *name0)
6152 {
6153   const char *decoded_name = ada_decode (name0);
6154   int i;
6155
6156   /* If the decoded name starts with an angle bracket, it means that
6157      NAME0 does not follow the GNAT encoding format.  It should then
6158      not be allowed as a possible wild match.  */
6159   if (decoded_name[0] == '<')
6160     return 0;
6161
6162   for (i=0; decoded_name[i] != '\0'; i++)
6163     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6164       return 0;
6165
6166   return 1;
6167 }
6168
6169 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6170    that could start a simple name.  Assumes that *NAMEP points into
6171    the string beginning at NAME0.  */
6172
6173 static int
6174 advance_wild_match (const char **namep, const char *name0, int target0)
6175 {
6176   const char *name = *namep;
6177
6178   while (1)
6179     {
6180       int t0, t1;
6181
6182       t0 = *name;
6183       if (t0 == '_')
6184         {
6185           t1 = name[1];
6186           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6187             {
6188               name += 1;
6189               if (name == name0 + 5 && startswith (name0, "_ada"))
6190                 break;
6191               else
6192                 name += 1;
6193             }
6194           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6195                                  || name[2] == target0))
6196             {
6197               name += 2;
6198               break;
6199             }
6200           else
6201             return 0;
6202         }
6203       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6204         name += 1;
6205       else
6206         return 0;
6207     }
6208
6209   *namep = name;
6210   return 1;
6211 }
6212
6213 /* Return true iff NAME encodes a name of the form prefix.PATN.
6214    Ignores any informational suffixes of NAME (i.e., for which
6215    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6216    simple name.  */
6217
6218 static bool
6219 wild_match (const char *name, const char *patn)
6220 {
6221   const char *p;
6222   const char *name0 = name;
6223
6224   while (1)
6225     {
6226       const char *match = name;
6227
6228       if (*name == *patn)
6229         {
6230           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6231             if (*p != *name)
6232               break;
6233           if (*p == '\0' && is_name_suffix (name))
6234             return match == name0 || is_valid_name_for_wild_match (name0);
6235
6236           if (name[-1] == '_')
6237             name -= 1;
6238         }
6239       if (!advance_wild_match (&name, name0, *patn))
6240         return false;
6241     }
6242 }
6243
6244 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6245    any trailing suffixes that encode debugging information or leading
6246    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6247    information that is ignored).  */
6248
6249 static bool
6250 full_match (const char *sym_name, const char *search_name)
6251 {
6252   size_t search_name_len = strlen (search_name);
6253
6254   if (strncmp (sym_name, search_name, search_name_len) == 0
6255       && is_name_suffix (sym_name + search_name_len))
6256     return true;
6257
6258   if (startswith (sym_name, "_ada_")
6259       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6260       && is_name_suffix (sym_name + search_name_len + 5))
6261     return true;
6262
6263   return false;
6264 }
6265
6266 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6267    *defn_symbols, updating the list of symbols in OBSTACKP (if
6268    necessary).  OBJFILE is the section containing BLOCK.  */
6269
6270 static void
6271 ada_add_block_symbols (struct obstack *obstackp,
6272                        const struct block *block,
6273                        const lookup_name_info &lookup_name,
6274                        domain_enum domain, struct objfile *objfile)
6275 {
6276   struct block_iterator iter;
6277   /* A matching argument symbol, if any.  */
6278   struct symbol *arg_sym;
6279   /* Set true when we find a matching non-argument symbol.  */
6280   int found_sym;
6281   struct symbol *sym;
6282
6283   arg_sym = NULL;
6284   found_sym = 0;
6285   for (sym = block_iter_match_first (block, lookup_name, &iter);
6286        sym != NULL;
6287        sym = block_iter_match_next (lookup_name, &iter))
6288     {
6289       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6290                                  SYMBOL_DOMAIN (sym), domain))
6291         {
6292           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6293             {
6294               if (SYMBOL_IS_ARGUMENT (sym))
6295                 arg_sym = sym;
6296               else
6297                 {
6298                   found_sym = 1;
6299                   add_defn_to_vec (obstackp,
6300                                    fixup_symbol_section (sym, objfile),
6301                                    block);
6302                 }
6303             }
6304         }
6305     }
6306
6307   /* Handle renamings.  */
6308
6309   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6310     found_sym = 1;
6311
6312   if (!found_sym && arg_sym != NULL)
6313     {
6314       add_defn_to_vec (obstackp,
6315                        fixup_symbol_section (arg_sym, objfile),
6316                        block);
6317     }
6318
6319   if (!lookup_name.ada ().wild_match_p ())
6320     {
6321       arg_sym = NULL;
6322       found_sym = 0;
6323       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6324       const char *name = ada_lookup_name.c_str ();
6325       size_t name_len = ada_lookup_name.size ();
6326
6327       ALL_BLOCK_SYMBOLS (block, iter, sym)
6328       {
6329         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6330                                    SYMBOL_DOMAIN (sym), domain))
6331           {
6332             int cmp;
6333
6334             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6335             if (cmp == 0)
6336               {
6337                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6338                 if (cmp == 0)
6339                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6340                                  name_len);
6341               }
6342
6343             if (cmp == 0
6344                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6345               {
6346                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6347                   {
6348                     if (SYMBOL_IS_ARGUMENT (sym))
6349                       arg_sym = sym;
6350                     else
6351                       {
6352                         found_sym = 1;
6353                         add_defn_to_vec (obstackp,
6354                                          fixup_symbol_section (sym, objfile),
6355                                          block);
6356                       }
6357                   }
6358               }
6359           }
6360       }
6361
6362       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6363          They aren't parameters, right?  */
6364       if (!found_sym && arg_sym != NULL)
6365         {
6366           add_defn_to_vec (obstackp,
6367                            fixup_symbol_section (arg_sym, objfile),
6368                            block);
6369         }
6370     }
6371 }
6372 \f
6373
6374                                 /* Symbol Completion */
6375
6376 /* See symtab.h.  */
6377
6378 bool
6379 ada_lookup_name_info::matches
6380   (const char *sym_name,
6381    symbol_name_match_type match_type,
6382    completion_match_result *comp_match_res) const
6383 {
6384   bool match = false;
6385   const char *text = m_encoded_name.c_str ();
6386   size_t text_len = m_encoded_name.size ();
6387
6388   /* First, test against the fully qualified name of the symbol.  */
6389
6390   if (strncmp (sym_name, text, text_len) == 0)
6391     match = true;
6392
6393   if (match && !m_encoded_p)
6394     {
6395       /* One needed check before declaring a positive match is to verify
6396          that iff we are doing a verbatim match, the decoded version
6397          of the symbol name starts with '<'.  Otherwise, this symbol name
6398          is not a suitable completion.  */
6399       const char *sym_name_copy = sym_name;
6400       bool has_angle_bracket;
6401
6402       sym_name = ada_decode (sym_name);
6403       has_angle_bracket = (sym_name[0] == '<');
6404       match = (has_angle_bracket == m_verbatim_p);
6405       sym_name = sym_name_copy;
6406     }
6407
6408   if (match && !m_verbatim_p)
6409     {
6410       /* When doing non-verbatim match, another check that needs to
6411          be done is to verify that the potentially matching symbol name
6412          does not include capital letters, because the ada-mode would
6413          not be able to understand these symbol names without the
6414          angle bracket notation.  */
6415       const char *tmp;
6416
6417       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6418       if (*tmp != '\0')
6419         match = false;
6420     }
6421
6422   /* Second: Try wild matching...  */
6423
6424   if (!match && m_wild_match_p)
6425     {
6426       /* Since we are doing wild matching, this means that TEXT
6427          may represent an unqualified symbol name.  We therefore must
6428          also compare TEXT against the unqualified name of the symbol.  */
6429       sym_name = ada_unqualified_name (ada_decode (sym_name));
6430
6431       if (strncmp (sym_name, text, text_len) == 0)
6432         match = true;
6433     }
6434
6435   /* Finally: If we found a match, prepare the result to return.  */
6436
6437   if (!match)
6438     return false;
6439
6440   if (comp_match_res != NULL)
6441     {
6442       std::string &match_str = comp_match_res->match.storage ();
6443
6444       if (!m_encoded_p)
6445         match_str = ada_decode (sym_name);
6446       else
6447         {
6448           if (m_verbatim_p)
6449             match_str = add_angle_brackets (sym_name);
6450           else
6451             match_str = sym_name;
6452
6453         }
6454
6455       comp_match_res->set_match (match_str.c_str ());
6456     }
6457
6458   return true;
6459 }
6460
6461 /* Add the list of possible symbol names completing TEXT to TRACKER.
6462    WORD is the entire command on which completion is made.  */
6463
6464 static void
6465 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6466                                        complete_symbol_mode mode,
6467                                        symbol_name_match_type name_match_type,
6468                                        const char *text, const char *word,
6469                                        enum type_code code)
6470 {
6471   struct symbol *sym;
6472   struct compunit_symtab *s;
6473   struct minimal_symbol *msymbol;
6474   struct objfile *objfile;
6475   const struct block *b, *surrounding_static_block = 0;
6476   struct block_iterator iter;
6477   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6478
6479   gdb_assert (code == TYPE_CODE_UNDEF);
6480
6481   lookup_name_info lookup_name (text, name_match_type, true);
6482
6483   /* First, look at the partial symtab symbols.  */
6484   expand_symtabs_matching (NULL,
6485                            lookup_name,
6486                            NULL,
6487                            NULL,
6488                            ALL_DOMAIN);
6489
6490   /* At this point scan through the misc symbol vectors and add each
6491      symbol you find to the list.  Eventually we want to ignore
6492      anything that isn't a text symbol (everything else will be
6493      handled by the psymtab code above).  */
6494
6495   ALL_MSYMBOLS (objfile, msymbol)
6496   {
6497     QUIT;
6498
6499     if (completion_skip_symbol (mode, msymbol))
6500       continue;
6501
6502     completion_list_add_name (tracker,
6503                               MSYMBOL_LANGUAGE (msymbol),
6504                               MSYMBOL_LINKAGE_NAME (msymbol),
6505                               lookup_name, text, word);
6506   }
6507
6508   /* Search upwards from currently selected frame (so that we can
6509      complete on local vars.  */
6510
6511   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6512     {
6513       if (!BLOCK_SUPERBLOCK (b))
6514         surrounding_static_block = b;   /* For elmin of dups */
6515
6516       ALL_BLOCK_SYMBOLS (b, iter, sym)
6517       {
6518         if (completion_skip_symbol (mode, sym))
6519           continue;
6520
6521         completion_list_add_name (tracker,
6522                                   SYMBOL_LANGUAGE (sym),
6523                                   SYMBOL_LINKAGE_NAME (sym),
6524                                   lookup_name, text, word);
6525       }
6526     }
6527
6528   /* Go through the symtabs and check the externs and statics for
6529      symbols which match.  */
6530
6531   ALL_COMPUNITS (objfile, s)
6532   {
6533     QUIT;
6534     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6535     ALL_BLOCK_SYMBOLS (b, iter, sym)
6536     {
6537       if (completion_skip_symbol (mode, sym))
6538         continue;
6539
6540       completion_list_add_name (tracker,
6541                                 SYMBOL_LANGUAGE (sym),
6542                                 SYMBOL_LINKAGE_NAME (sym),
6543                                 lookup_name, text, word);
6544     }
6545   }
6546
6547   ALL_COMPUNITS (objfile, s)
6548   {
6549     QUIT;
6550     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6551     /* Don't do this block twice.  */
6552     if (b == surrounding_static_block)
6553       continue;
6554     ALL_BLOCK_SYMBOLS (b, iter, sym)
6555     {
6556       if (completion_skip_symbol (mode, sym))
6557         continue;
6558
6559       completion_list_add_name (tracker,
6560                                 SYMBOL_LANGUAGE (sym),
6561                                 SYMBOL_LINKAGE_NAME (sym),
6562                                 lookup_name, text, word);
6563     }
6564   }
6565
6566   do_cleanups (old_chain);
6567 }
6568
6569                                 /* Field Access */
6570
6571 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6572    for tagged types.  */
6573
6574 static int
6575 ada_is_dispatch_table_ptr_type (struct type *type)
6576 {
6577   const char *name;
6578
6579   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6580     return 0;
6581
6582   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6583   if (name == NULL)
6584     return 0;
6585
6586   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6587 }
6588
6589 /* Return non-zero if TYPE is an interface tag.  */
6590
6591 static int
6592 ada_is_interface_tag (struct type *type)
6593 {
6594   const char *name = TYPE_NAME (type);
6595
6596   if (name == NULL)
6597     return 0;
6598
6599   return (strcmp (name, "ada__tags__interface_tag") == 0);
6600 }
6601
6602 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6603    to be invisible to users.  */
6604
6605 int
6606 ada_is_ignored_field (struct type *type, int field_num)
6607 {
6608   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6609     return 1;
6610
6611   /* Check the name of that field.  */
6612   {
6613     const char *name = TYPE_FIELD_NAME (type, field_num);
6614
6615     /* Anonymous field names should not be printed.
6616        brobecker/2007-02-20: I don't think this can actually happen
6617        but we don't want to print the value of annonymous fields anyway.  */
6618     if (name == NULL)
6619       return 1;
6620
6621     /* Normally, fields whose name start with an underscore ("_")
6622        are fields that have been internally generated by the compiler,
6623        and thus should not be printed.  The "_parent" field is special,
6624        however: This is a field internally generated by the compiler
6625        for tagged types, and it contains the components inherited from
6626        the parent type.  This field should not be printed as is, but
6627        should not be ignored either.  */
6628     if (name[0] == '_' && !startswith (name, "_parent"))
6629       return 1;
6630   }
6631
6632   /* If this is the dispatch table of a tagged type or an interface tag,
6633      then ignore.  */
6634   if (ada_is_tagged_type (type, 1)
6635       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6636           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6637     return 1;
6638
6639   /* Not a special field, so it should not be ignored.  */
6640   return 0;
6641 }
6642
6643 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6644    pointer or reference type whose ultimate target has a tag field.  */
6645
6646 int
6647 ada_is_tagged_type (struct type *type, int refok)
6648 {
6649   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6650 }
6651
6652 /* True iff TYPE represents the type of X'Tag */
6653
6654 int
6655 ada_is_tag_type (struct type *type)
6656 {
6657   type = ada_check_typedef (type);
6658
6659   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6660     return 0;
6661   else
6662     {
6663       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6664
6665       return (name != NULL
6666               && strcmp (name, "ada__tags__dispatch_table") == 0);
6667     }
6668 }
6669
6670 /* The type of the tag on VAL.  */
6671
6672 struct type *
6673 ada_tag_type (struct value *val)
6674 {
6675   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6676 }
6677
6678 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6679    retired at Ada 05).  */
6680
6681 static int
6682 is_ada95_tag (struct value *tag)
6683 {
6684   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6685 }
6686
6687 /* The value of the tag on VAL.  */
6688
6689 struct value *
6690 ada_value_tag (struct value *val)
6691 {
6692   return ada_value_struct_elt (val, "_tag", 0);
6693 }
6694
6695 /* The value of the tag on the object of type TYPE whose contents are
6696    saved at VALADDR, if it is non-null, or is at memory address
6697    ADDRESS.  */
6698
6699 static struct value *
6700 value_tag_from_contents_and_address (struct type *type,
6701                                      const gdb_byte *valaddr,
6702                                      CORE_ADDR address)
6703 {
6704   int tag_byte_offset;
6705   struct type *tag_type;
6706
6707   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6708                          NULL, NULL, NULL))
6709     {
6710       const gdb_byte *valaddr1 = ((valaddr == NULL)
6711                                   ? NULL
6712                                   : valaddr + tag_byte_offset);
6713       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6714
6715       return value_from_contents_and_address (tag_type, valaddr1, address1);
6716     }
6717   return NULL;
6718 }
6719
6720 static struct type *
6721 type_from_tag (struct value *tag)
6722 {
6723   const char *type_name = ada_tag_name (tag);
6724
6725   if (type_name != NULL)
6726     return ada_find_any_type (ada_encode (type_name));
6727   return NULL;
6728 }
6729
6730 /* Given a value OBJ of a tagged type, return a value of this
6731    type at the base address of the object.  The base address, as
6732    defined in Ada.Tags, it is the address of the primary tag of
6733    the object, and therefore where the field values of its full
6734    view can be fetched.  */
6735
6736 struct value *
6737 ada_tag_value_at_base_address (struct value *obj)
6738 {
6739   struct value *val;
6740   LONGEST offset_to_top = 0;
6741   struct type *ptr_type, *obj_type;
6742   struct value *tag;
6743   CORE_ADDR base_address;
6744
6745   obj_type = value_type (obj);
6746
6747   /* It is the responsability of the caller to deref pointers.  */
6748
6749   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6750       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6751     return obj;
6752
6753   tag = ada_value_tag (obj);
6754   if (!tag)
6755     return obj;
6756
6757   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6758
6759   if (is_ada95_tag (tag))
6760     return obj;
6761
6762   ptr_type = language_lookup_primitive_type
6763     (language_def (language_ada), target_gdbarch(), "storage_offset");
6764   ptr_type = lookup_pointer_type (ptr_type);
6765   val = value_cast (ptr_type, tag);
6766   if (!val)
6767     return obj;
6768
6769   /* It is perfectly possible that an exception be raised while
6770      trying to determine the base address, just like for the tag;
6771      see ada_tag_name for more details.  We do not print the error
6772      message for the same reason.  */
6773
6774   TRY
6775     {
6776       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6777     }
6778
6779   CATCH (e, RETURN_MASK_ERROR)
6780     {
6781       return obj;
6782     }
6783   END_CATCH
6784
6785   /* If offset is null, nothing to do.  */
6786
6787   if (offset_to_top == 0)
6788     return obj;
6789
6790   /* -1 is a special case in Ada.Tags; however, what should be done
6791      is not quite clear from the documentation.  So do nothing for
6792      now.  */
6793
6794   if (offset_to_top == -1)
6795     return obj;
6796
6797   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6798      from the base address.  This was however incompatible with
6799      C++ dispatch table: C++ uses a *negative* value to *add*
6800      to the base address.  Ada's convention has therefore been
6801      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6802      use the same convention.  Here, we support both cases by
6803      checking the sign of OFFSET_TO_TOP.  */
6804
6805   if (offset_to_top > 0)
6806     offset_to_top = -offset_to_top;
6807
6808   base_address = value_address (obj) + offset_to_top;
6809   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6810
6811   /* Make sure that we have a proper tag at the new address.
6812      Otherwise, offset_to_top is bogus (which can happen when
6813      the object is not initialized yet).  */
6814
6815   if (!tag)
6816     return obj;
6817
6818   obj_type = type_from_tag (tag);
6819
6820   if (!obj_type)
6821     return obj;
6822
6823   return value_from_contents_and_address (obj_type, NULL, base_address);
6824 }
6825
6826 /* Return the "ada__tags__type_specific_data" type.  */
6827
6828 static struct type *
6829 ada_get_tsd_type (struct inferior *inf)
6830 {
6831   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6832
6833   if (data->tsd_type == 0)
6834     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6835   return data->tsd_type;
6836 }
6837
6838 /* Return the TSD (type-specific data) associated to the given TAG.
6839    TAG is assumed to be the tag of a tagged-type entity.
6840
6841    May return NULL if we are unable to get the TSD.  */
6842
6843 static struct value *
6844 ada_get_tsd_from_tag (struct value *tag)
6845 {
6846   struct value *val;
6847   struct type *type;
6848
6849   /* First option: The TSD is simply stored as a field of our TAG.
6850      Only older versions of GNAT would use this format, but we have
6851      to test it first, because there are no visible markers for
6852      the current approach except the absence of that field.  */
6853
6854   val = ada_value_struct_elt (tag, "tsd", 1);
6855   if (val)
6856     return val;
6857
6858   /* Try the second representation for the dispatch table (in which
6859      there is no explicit 'tsd' field in the referent of the tag pointer,
6860      and instead the tsd pointer is stored just before the dispatch
6861      table.  */
6862
6863   type = ada_get_tsd_type (current_inferior());
6864   if (type == NULL)
6865     return NULL;
6866   type = lookup_pointer_type (lookup_pointer_type (type));
6867   val = value_cast (type, tag);
6868   if (val == NULL)
6869     return NULL;
6870   return value_ind (value_ptradd (val, -1));
6871 }
6872
6873 /* Given the TSD of a tag (type-specific data), return a string
6874    containing the name of the associated type.
6875
6876    The returned value is good until the next call.  May return NULL
6877    if we are unable to determine the tag name.  */
6878
6879 static char *
6880 ada_tag_name_from_tsd (struct value *tsd)
6881 {
6882   static char name[1024];
6883   char *p;
6884   struct value *val;
6885
6886   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6887   if (val == NULL)
6888     return NULL;
6889   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6890   for (p = name; *p != '\0'; p += 1)
6891     if (isalpha (*p))
6892       *p = tolower (*p);
6893   return name;
6894 }
6895
6896 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6897    a C string.
6898
6899    Return NULL if the TAG is not an Ada tag, or if we were unable to
6900    determine the name of that tag.  The result is good until the next
6901    call.  */
6902
6903 const char *
6904 ada_tag_name (struct value *tag)
6905 {
6906   char *name = NULL;
6907
6908   if (!ada_is_tag_type (value_type (tag)))
6909     return NULL;
6910
6911   /* It is perfectly possible that an exception be raised while trying
6912      to determine the TAG's name, even under normal circumstances:
6913      The associated variable may be uninitialized or corrupted, for
6914      instance. We do not let any exception propagate past this point.
6915      instead we return NULL.
6916
6917      We also do not print the error message either (which often is very
6918      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6919      the caller print a more meaningful message if necessary.  */
6920   TRY
6921     {
6922       struct value *tsd = ada_get_tsd_from_tag (tag);
6923
6924       if (tsd != NULL)
6925         name = ada_tag_name_from_tsd (tsd);
6926     }
6927   CATCH (e, RETURN_MASK_ERROR)
6928     {
6929     }
6930   END_CATCH
6931
6932   return name;
6933 }
6934
6935 /* The parent type of TYPE, or NULL if none.  */
6936
6937 struct type *
6938 ada_parent_type (struct type *type)
6939 {
6940   int i;
6941
6942   type = ada_check_typedef (type);
6943
6944   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6945     return NULL;
6946
6947   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6948     if (ada_is_parent_field (type, i))
6949       {
6950         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6951
6952         /* If the _parent field is a pointer, then dereference it.  */
6953         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6954           parent_type = TYPE_TARGET_TYPE (parent_type);
6955         /* If there is a parallel XVS type, get the actual base type.  */
6956         parent_type = ada_get_base_type (parent_type);
6957
6958         return ada_check_typedef (parent_type);
6959       }
6960
6961   return NULL;
6962 }
6963
6964 /* True iff field number FIELD_NUM of structure type TYPE contains the
6965    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6966    a structure type with at least FIELD_NUM+1 fields.  */
6967
6968 int
6969 ada_is_parent_field (struct type *type, int field_num)
6970 {
6971   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6972
6973   return (name != NULL
6974           && (startswith (name, "PARENT")
6975               || startswith (name, "_parent")));
6976 }
6977
6978 /* True iff field number FIELD_NUM of structure type TYPE is a
6979    transparent wrapper field (which should be silently traversed when doing
6980    field selection and flattened when printing).  Assumes TYPE is a
6981    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6982    structures.  */
6983
6984 int
6985 ada_is_wrapper_field (struct type *type, int field_num)
6986 {
6987   const char *name = TYPE_FIELD_NAME (type, field_num);
6988
6989   if (name != NULL && strcmp (name, "RETVAL") == 0)
6990     {
6991       /* This happens in functions with "out" or "in out" parameters
6992          which are passed by copy.  For such functions, GNAT describes
6993          the function's return type as being a struct where the return
6994          value is in a field called RETVAL, and where the other "out"
6995          or "in out" parameters are fields of that struct.  This is not
6996          a wrapper.  */
6997       return 0;
6998     }
6999
7000   return (name != NULL
7001           && (startswith (name, "PARENT")
7002               || strcmp (name, "REP") == 0
7003               || startswith (name, "_parent")
7004               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
7005 }
7006
7007 /* True iff field number FIELD_NUM of structure or union type TYPE
7008    is a variant wrapper.  Assumes TYPE is a structure type with at least
7009    FIELD_NUM+1 fields.  */
7010
7011 int
7012 ada_is_variant_part (struct type *type, int field_num)
7013 {
7014   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7015
7016   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7017           || (is_dynamic_field (type, field_num)
7018               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7019                   == TYPE_CODE_UNION)));
7020 }
7021
7022 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7023    whose discriminants are contained in the record type OUTER_TYPE,
7024    returns the type of the controlling discriminant for the variant.
7025    May return NULL if the type could not be found.  */
7026
7027 struct type *
7028 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7029 {
7030   const char *name = ada_variant_discrim_name (var_type);
7031
7032   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7033 }
7034
7035 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7036    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7037    represents a 'when others' clause; otherwise 0.  */
7038
7039 int
7040 ada_is_others_clause (struct type *type, int field_num)
7041 {
7042   const char *name = TYPE_FIELD_NAME (type, field_num);
7043
7044   return (name != NULL && name[0] == 'O');
7045 }
7046
7047 /* Assuming that TYPE0 is the type of the variant part of a record,
7048    returns the name of the discriminant controlling the variant.
7049    The value is valid until the next call to ada_variant_discrim_name.  */
7050
7051 const char *
7052 ada_variant_discrim_name (struct type *type0)
7053 {
7054   static char *result = NULL;
7055   static size_t result_len = 0;
7056   struct type *type;
7057   const char *name;
7058   const char *discrim_end;
7059   const char *discrim_start;
7060
7061   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7062     type = TYPE_TARGET_TYPE (type0);
7063   else
7064     type = type0;
7065
7066   name = ada_type_name (type);
7067
7068   if (name == NULL || name[0] == '\000')
7069     return "";
7070
7071   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7072        discrim_end -= 1)
7073     {
7074       if (startswith (discrim_end, "___XVN"))
7075         break;
7076     }
7077   if (discrim_end == name)
7078     return "";
7079
7080   for (discrim_start = discrim_end; discrim_start != name + 3;
7081        discrim_start -= 1)
7082     {
7083       if (discrim_start == name + 1)
7084         return "";
7085       if ((discrim_start > name + 3
7086            && startswith (discrim_start - 3, "___"))
7087           || discrim_start[-1] == '.')
7088         break;
7089     }
7090
7091   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7092   strncpy (result, discrim_start, discrim_end - discrim_start);
7093   result[discrim_end - discrim_start] = '\0';
7094   return result;
7095 }
7096
7097 /* Scan STR for a subtype-encoded number, beginning at position K.
7098    Put the position of the character just past the number scanned in
7099    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7100    Return 1 if there was a valid number at the given position, and 0
7101    otherwise.  A "subtype-encoded" number consists of the absolute value
7102    in decimal, followed by the letter 'm' to indicate a negative number.
7103    Assumes 0m does not occur.  */
7104
7105 int
7106 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7107 {
7108   ULONGEST RU;
7109
7110   if (!isdigit (str[k]))
7111     return 0;
7112
7113   /* Do it the hard way so as not to make any assumption about
7114      the relationship of unsigned long (%lu scan format code) and
7115      LONGEST.  */
7116   RU = 0;
7117   while (isdigit (str[k]))
7118     {
7119       RU = RU * 10 + (str[k] - '0');
7120       k += 1;
7121     }
7122
7123   if (str[k] == 'm')
7124     {
7125       if (R != NULL)
7126         *R = (-(LONGEST) (RU - 1)) - 1;
7127       k += 1;
7128     }
7129   else if (R != NULL)
7130     *R = (LONGEST) RU;
7131
7132   /* NOTE on the above: Technically, C does not say what the results of
7133      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7134      number representable as a LONGEST (although either would probably work
7135      in most implementations).  When RU>0, the locution in the then branch
7136      above is always equivalent to the negative of RU.  */
7137
7138   if (new_k != NULL)
7139     *new_k = k;
7140   return 1;
7141 }
7142
7143 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7144    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7145    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7146
7147 int
7148 ada_in_variant (LONGEST val, struct type *type, int field_num)
7149 {
7150   const char *name = TYPE_FIELD_NAME (type, field_num);
7151   int p;
7152
7153   p = 0;
7154   while (1)
7155     {
7156       switch (name[p])
7157         {
7158         case '\0':
7159           return 0;
7160         case 'S':
7161           {
7162             LONGEST W;
7163
7164             if (!ada_scan_number (name, p + 1, &W, &p))
7165               return 0;
7166             if (val == W)
7167               return 1;
7168             break;
7169           }
7170         case 'R':
7171           {
7172             LONGEST L, U;
7173
7174             if (!ada_scan_number (name, p + 1, &L, &p)
7175                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7176               return 0;
7177             if (val >= L && val <= U)
7178               return 1;
7179             break;
7180           }
7181         case 'O':
7182           return 1;
7183         default:
7184           return 0;
7185         }
7186     }
7187 }
7188
7189 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7190
7191 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7192    ARG_TYPE, extract and return the value of one of its (non-static)
7193    fields.  FIELDNO says which field.   Differs from value_primitive_field
7194    only in that it can handle packed values of arbitrary type.  */
7195
7196 static struct value *
7197 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7198                            struct type *arg_type)
7199 {
7200   struct type *type;
7201
7202   arg_type = ada_check_typedef (arg_type);
7203   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7204
7205   /* Handle packed fields.  */
7206
7207   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7208     {
7209       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7210       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7211
7212       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7213                                              offset + bit_pos / 8,
7214                                              bit_pos % 8, bit_size, type);
7215     }
7216   else
7217     return value_primitive_field (arg1, offset, fieldno, arg_type);
7218 }
7219
7220 /* Find field with name NAME in object of type TYPE.  If found, 
7221    set the following for each argument that is non-null:
7222     - *FIELD_TYPE_P to the field's type; 
7223     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7224       an object of that type;
7225     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7226     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7227       0 otherwise;
7228    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7229    fields up to but not including the desired field, or by the total
7230    number of fields if not found.   A NULL value of NAME never
7231    matches; the function just counts visible fields in this case.
7232    
7233    Notice that we need to handle when a tagged record hierarchy
7234    has some components with the same name, like in this scenario:
7235
7236       type Top_T is tagged record
7237          N : Integer := 1;
7238          U : Integer := 974;
7239          A : Integer := 48;
7240       end record;
7241
7242       type Middle_T is new Top.Top_T with record
7243          N : Character := 'a';
7244          C : Integer := 3;
7245       end record;
7246
7247      type Bottom_T is new Middle.Middle_T with record
7248         N : Float := 4.0;
7249         C : Character := '5';
7250         X : Integer := 6;
7251         A : Character := 'J';
7252      end record;
7253
7254    Let's say we now have a variable declared and initialized as follow:
7255
7256      TC : Top_A := new Bottom_T;
7257
7258    And then we use this variable to call this function
7259
7260      procedure Assign (Obj: in out Top_T; TV : Integer);
7261
7262    as follow:
7263
7264       Assign (Top_T (B), 12);
7265
7266    Now, we're in the debugger, and we're inside that procedure
7267    then and we want to print the value of obj.c:
7268
7269    Usually, the tagged record or one of the parent type owns the
7270    component to print and there's no issue but in this particular
7271    case, what does it mean to ask for Obj.C? Since the actual
7272    type for object is type Bottom_T, it could mean two things: type
7273    component C from the Middle_T view, but also component C from
7274    Bottom_T.  So in that "undefined" case, when the component is
7275    not found in the non-resolved type (which includes all the
7276    components of the parent type), then resolve it and see if we
7277    get better luck once expanded.
7278
7279    In the case of homonyms in the derived tagged type, we don't
7280    guaranty anything, and pick the one that's easiest for us
7281    to program.
7282
7283    Returns 1 if found, 0 otherwise.  */
7284
7285 static int
7286 find_struct_field (const char *name, struct type *type, int offset,
7287                    struct type **field_type_p,
7288                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7289                    int *index_p)
7290 {
7291   int i;
7292   int parent_offset = -1;
7293
7294   type = ada_check_typedef (type);
7295
7296   if (field_type_p != NULL)
7297     *field_type_p = NULL;
7298   if (byte_offset_p != NULL)
7299     *byte_offset_p = 0;
7300   if (bit_offset_p != NULL)
7301     *bit_offset_p = 0;
7302   if (bit_size_p != NULL)
7303     *bit_size_p = 0;
7304
7305   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7306     {
7307       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7308       int fld_offset = offset + bit_pos / 8;
7309       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7310
7311       if (t_field_name == NULL)
7312         continue;
7313
7314       else if (ada_is_parent_field (type, i))
7315         {
7316           /* This is a field pointing us to the parent type of a tagged
7317              type.  As hinted in this function's documentation, we give
7318              preference to fields in the current record first, so what
7319              we do here is just record the index of this field before
7320              we skip it.  If it turns out we couldn't find our field
7321              in the current record, then we'll get back to it and search
7322              inside it whether the field might exist in the parent.  */
7323
7324           parent_offset = i;
7325           continue;
7326         }
7327
7328       else if (name != NULL && field_name_match (t_field_name, name))
7329         {
7330           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7331
7332           if (field_type_p != NULL)
7333             *field_type_p = TYPE_FIELD_TYPE (type, i);
7334           if (byte_offset_p != NULL)
7335             *byte_offset_p = fld_offset;
7336           if (bit_offset_p != NULL)
7337             *bit_offset_p = bit_pos % 8;
7338           if (bit_size_p != NULL)
7339             *bit_size_p = bit_size;
7340           return 1;
7341         }
7342       else if (ada_is_wrapper_field (type, i))
7343         {
7344           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7345                                  field_type_p, byte_offset_p, bit_offset_p,
7346                                  bit_size_p, index_p))
7347             return 1;
7348         }
7349       else if (ada_is_variant_part (type, i))
7350         {
7351           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7352              fixed type?? */
7353           int j;
7354           struct type *field_type
7355             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7356
7357           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7358             {
7359               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7360                                      fld_offset
7361                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7362                                      field_type_p, byte_offset_p,
7363                                      bit_offset_p, bit_size_p, index_p))
7364                 return 1;
7365             }
7366         }
7367       else if (index_p != NULL)
7368         *index_p += 1;
7369     }
7370
7371   /* Field not found so far.  If this is a tagged type which
7372      has a parent, try finding that field in the parent now.  */
7373
7374   if (parent_offset != -1)
7375     {
7376       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7377       int fld_offset = offset + bit_pos / 8;
7378
7379       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7380                              fld_offset, field_type_p, byte_offset_p,
7381                              bit_offset_p, bit_size_p, index_p))
7382         return 1;
7383     }
7384
7385   return 0;
7386 }
7387
7388 /* Number of user-visible fields in record type TYPE.  */
7389
7390 static int
7391 num_visible_fields (struct type *type)
7392 {
7393   int n;
7394
7395   n = 0;
7396   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7397   return n;
7398 }
7399
7400 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7401    and search in it assuming it has (class) type TYPE.
7402    If found, return value, else return NULL.
7403
7404    Searches recursively through wrapper fields (e.g., '_parent').
7405
7406    In the case of homonyms in the tagged types, please refer to the
7407    long explanation in find_struct_field's function documentation.  */
7408
7409 static struct value *
7410 ada_search_struct_field (const char *name, struct value *arg, int offset,
7411                          struct type *type)
7412 {
7413   int i;
7414   int parent_offset = -1;
7415
7416   type = ada_check_typedef (type);
7417   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7418     {
7419       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7420
7421       if (t_field_name == NULL)
7422         continue;
7423
7424       else if (ada_is_parent_field (type, i))
7425         {
7426           /* This is a field pointing us to the parent type of a tagged
7427              type.  As hinted in this function's documentation, we give
7428              preference to fields in the current record first, so what
7429              we do here is just record the index of this field before
7430              we skip it.  If it turns out we couldn't find our field
7431              in the current record, then we'll get back to it and search
7432              inside it whether the field might exist in the parent.  */
7433
7434           parent_offset = i;
7435           continue;
7436         }
7437
7438       else if (field_name_match (t_field_name, name))
7439         return ada_value_primitive_field (arg, offset, i, type);
7440
7441       else if (ada_is_wrapper_field (type, i))
7442         {
7443           struct value *v =     /* Do not let indent join lines here.  */
7444             ada_search_struct_field (name, arg,
7445                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7446                                      TYPE_FIELD_TYPE (type, i));
7447
7448           if (v != NULL)
7449             return v;
7450         }
7451
7452       else if (ada_is_variant_part (type, i))
7453         {
7454           /* PNH: Do we ever get here?  See find_struct_field.  */
7455           int j;
7456           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7457                                                                         i));
7458           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7459
7460           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7461             {
7462               struct value *v = ada_search_struct_field /* Force line
7463                                                            break.  */
7464                 (name, arg,
7465                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7466                  TYPE_FIELD_TYPE (field_type, j));
7467
7468               if (v != NULL)
7469                 return v;
7470             }
7471         }
7472     }
7473
7474   /* Field not found so far.  If this is a tagged type which
7475      has a parent, try finding that field in the parent now.  */
7476
7477   if (parent_offset != -1)
7478     {
7479       struct value *v = ada_search_struct_field (
7480         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7481         TYPE_FIELD_TYPE (type, parent_offset));
7482
7483       if (v != NULL)
7484         return v;
7485     }
7486
7487   return NULL;
7488 }
7489
7490 static struct value *ada_index_struct_field_1 (int *, struct value *,
7491                                                int, struct type *);
7492
7493
7494 /* Return field #INDEX in ARG, where the index is that returned by
7495  * find_struct_field through its INDEX_P argument.  Adjust the address
7496  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7497  * If found, return value, else return NULL.  */
7498
7499 static struct value *
7500 ada_index_struct_field (int index, struct value *arg, int offset,
7501                         struct type *type)
7502 {
7503   return ada_index_struct_field_1 (&index, arg, offset, type);
7504 }
7505
7506
7507 /* Auxiliary function for ada_index_struct_field.  Like
7508  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7509  * *INDEX_P.  */
7510
7511 static struct value *
7512 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7513                           struct type *type)
7514 {
7515   int i;
7516   type = ada_check_typedef (type);
7517
7518   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7519     {
7520       if (TYPE_FIELD_NAME (type, i) == NULL)
7521         continue;
7522       else if (ada_is_wrapper_field (type, i))
7523         {
7524           struct value *v =     /* Do not let indent join lines here.  */
7525             ada_index_struct_field_1 (index_p, arg,
7526                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7527                                       TYPE_FIELD_TYPE (type, i));
7528
7529           if (v != NULL)
7530             return v;
7531         }
7532
7533       else if (ada_is_variant_part (type, i))
7534         {
7535           /* PNH: Do we ever get here?  See ada_search_struct_field,
7536              find_struct_field.  */
7537           error (_("Cannot assign this kind of variant record"));
7538         }
7539       else if (*index_p == 0)
7540         return ada_value_primitive_field (arg, offset, i, type);
7541       else
7542         *index_p -= 1;
7543     }
7544   return NULL;
7545 }
7546
7547 /* Given ARG, a value of type (pointer or reference to a)*
7548    structure/union, extract the component named NAME from the ultimate
7549    target structure/union and return it as a value with its
7550    appropriate type.
7551
7552    The routine searches for NAME among all members of the structure itself
7553    and (recursively) among all members of any wrapper members
7554    (e.g., '_parent').
7555
7556    If NO_ERR, then simply return NULL in case of error, rather than 
7557    calling error.  */
7558
7559 struct value *
7560 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7561 {
7562   struct type *t, *t1;
7563   struct value *v;
7564
7565   v = NULL;
7566   t1 = t = ada_check_typedef (value_type (arg));
7567   if (TYPE_CODE (t) == TYPE_CODE_REF)
7568     {
7569       t1 = TYPE_TARGET_TYPE (t);
7570       if (t1 == NULL)
7571         goto BadValue;
7572       t1 = ada_check_typedef (t1);
7573       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7574         {
7575           arg = coerce_ref (arg);
7576           t = t1;
7577         }
7578     }
7579
7580   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7581     {
7582       t1 = TYPE_TARGET_TYPE (t);
7583       if (t1 == NULL)
7584         goto BadValue;
7585       t1 = ada_check_typedef (t1);
7586       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7587         {
7588           arg = value_ind (arg);
7589           t = t1;
7590         }
7591       else
7592         break;
7593     }
7594
7595   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7596     goto BadValue;
7597
7598   if (t1 == t)
7599     v = ada_search_struct_field (name, arg, 0, t);
7600   else
7601     {
7602       int bit_offset, bit_size, byte_offset;
7603       struct type *field_type;
7604       CORE_ADDR address;
7605
7606       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7607         address = value_address (ada_value_ind (arg));
7608       else
7609         address = value_address (ada_coerce_ref (arg));
7610
7611       /* Check to see if this is a tagged type.  We also need to handle
7612          the case where the type is a reference to a tagged type, but
7613          we have to be careful to exclude pointers to tagged types.
7614          The latter should be shown as usual (as a pointer), whereas
7615          a reference should mostly be transparent to the user.  */
7616
7617       if (ada_is_tagged_type (t1, 0)
7618           || (TYPE_CODE (t1) == TYPE_CODE_REF
7619               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7620         {
7621           /* We first try to find the searched field in the current type.
7622              If not found then let's look in the fixed type.  */
7623
7624           if (!find_struct_field (name, t1, 0,
7625                                   &field_type, &byte_offset, &bit_offset,
7626                                   &bit_size, NULL))
7627             t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7628                                     address, NULL, 1);
7629         }
7630       else
7631         t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7632                                 address, NULL, 1);
7633
7634       if (find_struct_field (name, t1, 0,
7635                              &field_type, &byte_offset, &bit_offset,
7636                              &bit_size, NULL))
7637         {
7638           if (bit_size != 0)
7639             {
7640               if (TYPE_CODE (t) == TYPE_CODE_REF)
7641                 arg = ada_coerce_ref (arg);
7642               else
7643                 arg = ada_value_ind (arg);
7644               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7645                                                   bit_offset, bit_size,
7646                                                   field_type);
7647             }
7648           else
7649             v = value_at_lazy (field_type, address + byte_offset);
7650         }
7651     }
7652
7653   if (v != NULL || no_err)
7654     return v;
7655   else
7656     error (_("There is no member named %s."), name);
7657
7658  BadValue:
7659   if (no_err)
7660     return NULL;
7661   else
7662     error (_("Attempt to extract a component of "
7663              "a value that is not a record."));
7664 }
7665
7666 /* Return a string representation of type TYPE.  */
7667
7668 static std::string
7669 type_as_string (struct type *type)
7670 {
7671   string_file tmp_stream;
7672
7673   type_print (type, "", &tmp_stream, -1);
7674
7675   return std::move (tmp_stream.string ());
7676 }
7677
7678 /* Given a type TYPE, look up the type of the component of type named NAME.
7679    If DISPP is non-null, add its byte displacement from the beginning of a
7680    structure (pointed to by a value) of type TYPE to *DISPP (does not
7681    work for packed fields).
7682
7683    Matches any field whose name has NAME as a prefix, possibly
7684    followed by "___".
7685
7686    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7687    be a (pointer or reference)+ to a struct or union, and the
7688    ultimate target type will be searched.
7689
7690    Looks recursively into variant clauses and parent types.
7691
7692    In the case of homonyms in the tagged types, please refer to the
7693    long explanation in find_struct_field's function documentation.
7694
7695    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7696    TYPE is not a type of the right kind.  */
7697
7698 static struct type *
7699 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7700                             int noerr)
7701 {
7702   int i;
7703   int parent_offset = -1;
7704
7705   if (name == NULL)
7706     goto BadName;
7707
7708   if (refok && type != NULL)
7709     while (1)
7710       {
7711         type = ada_check_typedef (type);
7712         if (TYPE_CODE (type) != TYPE_CODE_PTR
7713             && TYPE_CODE (type) != TYPE_CODE_REF)
7714           break;
7715         type = TYPE_TARGET_TYPE (type);
7716       }
7717
7718   if (type == NULL
7719       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7720           && TYPE_CODE (type) != TYPE_CODE_UNION))
7721     {
7722       if (noerr)
7723         return NULL;
7724
7725       error (_("Type %s is not a structure or union type"),
7726              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7727     }
7728
7729   type = to_static_fixed_type (type);
7730
7731   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7732     {
7733       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7734       struct type *t;
7735
7736       if (t_field_name == NULL)
7737         continue;
7738
7739       else if (ada_is_parent_field (type, i))
7740         {
7741           /* This is a field pointing us to the parent type of a tagged
7742              type.  As hinted in this function's documentation, we give
7743              preference to fields in the current record first, so what
7744              we do here is just record the index of this field before
7745              we skip it.  If it turns out we couldn't find our field
7746              in the current record, then we'll get back to it and search
7747              inside it whether the field might exist in the parent.  */
7748
7749           parent_offset = i;
7750           continue;
7751         }
7752
7753       else if (field_name_match (t_field_name, name))
7754         return TYPE_FIELD_TYPE (type, i);
7755
7756       else if (ada_is_wrapper_field (type, i))
7757         {
7758           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7759                                           0, 1);
7760           if (t != NULL)
7761             return t;
7762         }
7763
7764       else if (ada_is_variant_part (type, i))
7765         {
7766           int j;
7767           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7768                                                                         i));
7769
7770           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7771             {
7772               /* FIXME pnh 2008/01/26: We check for a field that is
7773                  NOT wrapped in a struct, since the compiler sometimes
7774                  generates these for unchecked variant types.  Revisit
7775                  if the compiler changes this practice.  */
7776               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7777
7778               if (v_field_name != NULL 
7779                   && field_name_match (v_field_name, name))
7780                 t = TYPE_FIELD_TYPE (field_type, j);
7781               else
7782                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7783                                                                  j),
7784                                                 name, 0, 1);
7785
7786               if (t != NULL)
7787                 return t;
7788             }
7789         }
7790
7791     }
7792
7793     /* Field not found so far.  If this is a tagged type which
7794        has a parent, try finding that field in the parent now.  */
7795
7796     if (parent_offset != -1)
7797       {
7798         struct type *t;
7799
7800         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7801                                         name, 0, 1);
7802         if (t != NULL)
7803           return t;
7804       }
7805
7806 BadName:
7807   if (!noerr)
7808     {
7809       const char *name_str = name != NULL ? name : _("<null>");
7810
7811       error (_("Type %s has no component named %s"),
7812              type_as_string (type).c_str (), name_str);
7813     }
7814
7815   return NULL;
7816 }
7817
7818 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7819    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7820    represents an unchecked union (that is, the variant part of a
7821    record that is named in an Unchecked_Union pragma).  */
7822
7823 static int
7824 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7825 {
7826   const char *discrim_name = ada_variant_discrim_name (var_type);
7827
7828   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7829 }
7830
7831
7832 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7833    within a value of type OUTER_TYPE that is stored in GDB at
7834    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7835    numbering from 0) is applicable.  Returns -1 if none are.  */
7836
7837 int
7838 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7839                            const gdb_byte *outer_valaddr)
7840 {
7841   int others_clause;
7842   int i;
7843   const char *discrim_name = ada_variant_discrim_name (var_type);
7844   struct value *outer;
7845   struct value *discrim;
7846   LONGEST discrim_val;
7847
7848   /* Using plain value_from_contents_and_address here causes problems
7849      because we will end up trying to resolve a type that is currently
7850      being constructed.  */
7851   outer = value_from_contents_and_address_unresolved (outer_type,
7852                                                       outer_valaddr, 0);
7853   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7854   if (discrim == NULL)
7855     return -1;
7856   discrim_val = value_as_long (discrim);
7857
7858   others_clause = -1;
7859   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7860     {
7861       if (ada_is_others_clause (var_type, i))
7862         others_clause = i;
7863       else if (ada_in_variant (discrim_val, var_type, i))
7864         return i;
7865     }
7866
7867   return others_clause;
7868 }
7869 \f
7870
7871
7872                                 /* Dynamic-Sized Records */
7873
7874 /* Strategy: The type ostensibly attached to a value with dynamic size
7875    (i.e., a size that is not statically recorded in the debugging
7876    data) does not accurately reflect the size or layout of the value.
7877    Our strategy is to convert these values to values with accurate,
7878    conventional types that are constructed on the fly.  */
7879
7880 /* There is a subtle and tricky problem here.  In general, we cannot
7881    determine the size of dynamic records without its data.  However,
7882    the 'struct value' data structure, which GDB uses to represent
7883    quantities in the inferior process (the target), requires the size
7884    of the type at the time of its allocation in order to reserve space
7885    for GDB's internal copy of the data.  That's why the
7886    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7887    rather than struct value*s.
7888
7889    However, GDB's internal history variables ($1, $2, etc.) are
7890    struct value*s containing internal copies of the data that are not, in
7891    general, the same as the data at their corresponding addresses in
7892    the target.  Fortunately, the types we give to these values are all
7893    conventional, fixed-size types (as per the strategy described
7894    above), so that we don't usually have to perform the
7895    'to_fixed_xxx_type' conversions to look at their values.
7896    Unfortunately, there is one exception: if one of the internal
7897    history variables is an array whose elements are unconstrained
7898    records, then we will need to create distinct fixed types for each
7899    element selected.  */
7900
7901 /* The upshot of all of this is that many routines take a (type, host
7902    address, target address) triple as arguments to represent a value.
7903    The host address, if non-null, is supposed to contain an internal
7904    copy of the relevant data; otherwise, the program is to consult the
7905    target at the target address.  */
7906
7907 /* Assuming that VAL0 represents a pointer value, the result of
7908    dereferencing it.  Differs from value_ind in its treatment of
7909    dynamic-sized types.  */
7910
7911 struct value *
7912 ada_value_ind (struct value *val0)
7913 {
7914   struct value *val = value_ind (val0);
7915
7916   if (ada_is_tagged_type (value_type (val), 0))
7917     val = ada_tag_value_at_base_address (val);
7918
7919   return ada_to_fixed_value (val);
7920 }
7921
7922 /* The value resulting from dereferencing any "reference to"
7923    qualifiers on VAL0.  */
7924
7925 static struct value *
7926 ada_coerce_ref (struct value *val0)
7927 {
7928   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7929     {
7930       struct value *val = val0;
7931
7932       val = coerce_ref (val);
7933
7934       if (ada_is_tagged_type (value_type (val), 0))
7935         val = ada_tag_value_at_base_address (val);
7936
7937       return ada_to_fixed_value (val);
7938     }
7939   else
7940     return val0;
7941 }
7942
7943 /* Return OFF rounded upward if necessary to a multiple of
7944    ALIGNMENT (a power of 2).  */
7945
7946 static unsigned int
7947 align_value (unsigned int off, unsigned int alignment)
7948 {
7949   return (off + alignment - 1) & ~(alignment - 1);
7950 }
7951
7952 /* Return the bit alignment required for field #F of template type TYPE.  */
7953
7954 static unsigned int
7955 field_alignment (struct type *type, int f)
7956 {
7957   const char *name = TYPE_FIELD_NAME (type, f);
7958   int len;
7959   int align_offset;
7960
7961   /* The field name should never be null, unless the debugging information
7962      is somehow malformed.  In this case, we assume the field does not
7963      require any alignment.  */
7964   if (name == NULL)
7965     return 1;
7966
7967   len = strlen (name);
7968
7969   if (!isdigit (name[len - 1]))
7970     return 1;
7971
7972   if (isdigit (name[len - 2]))
7973     align_offset = len - 2;
7974   else
7975     align_offset = len - 1;
7976
7977   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7978     return TARGET_CHAR_BIT;
7979
7980   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7981 }
7982
7983 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7984
7985 static struct symbol *
7986 ada_find_any_type_symbol (const char *name)
7987 {
7988   struct symbol *sym;
7989
7990   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7991   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7992     return sym;
7993
7994   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7995   return sym;
7996 }
7997
7998 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7999    solely for types defined by debug info, it will not search the GDB
8000    primitive types.  */
8001
8002 static struct type *
8003 ada_find_any_type (const char *name)
8004 {
8005   struct symbol *sym = ada_find_any_type_symbol (name);
8006
8007   if (sym != NULL)
8008     return SYMBOL_TYPE (sym);
8009
8010   return NULL;
8011 }
8012
8013 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8014    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8015    symbol, in which case it is returned.  Otherwise, this looks for
8016    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8017    Return symbol if found, and NULL otherwise.  */
8018
8019 struct symbol *
8020 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8021 {
8022   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8023   struct symbol *sym;
8024
8025   if (strstr (name, "___XR") != NULL)
8026      return name_sym;
8027
8028   sym = find_old_style_renaming_symbol (name, block);
8029
8030   if (sym != NULL)
8031     return sym;
8032
8033   /* Not right yet.  FIXME pnh 7/20/2007.  */
8034   sym = ada_find_any_type_symbol (name);
8035   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8036     return sym;
8037   else
8038     return NULL;
8039 }
8040
8041 static struct symbol *
8042 find_old_style_renaming_symbol (const char *name, const struct block *block)
8043 {
8044   const struct symbol *function_sym = block_linkage_function (block);
8045   char *rename;
8046
8047   if (function_sym != NULL)
8048     {
8049       /* If the symbol is defined inside a function, NAME is not fully
8050          qualified.  This means we need to prepend the function name
8051          as well as adding the ``___XR'' suffix to build the name of
8052          the associated renaming symbol.  */
8053       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8054       /* Function names sometimes contain suffixes used
8055          for instance to qualify nested subprograms.  When building
8056          the XR type name, we need to make sure that this suffix is
8057          not included.  So do not include any suffix in the function
8058          name length below.  */
8059       int function_name_len = ada_name_prefix_len (function_name);
8060       const int rename_len = function_name_len + 2      /*  "__" */
8061         + strlen (name) + 6 /* "___XR\0" */ ;
8062
8063       /* Strip the suffix if necessary.  */
8064       ada_remove_trailing_digits (function_name, &function_name_len);
8065       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8066       ada_remove_Xbn_suffix (function_name, &function_name_len);
8067
8068       /* Library-level functions are a special case, as GNAT adds
8069          a ``_ada_'' prefix to the function name to avoid namespace
8070          pollution.  However, the renaming symbols themselves do not
8071          have this prefix, so we need to skip this prefix if present.  */
8072       if (function_name_len > 5 /* "_ada_" */
8073           && strstr (function_name, "_ada_") == function_name)
8074         {
8075           function_name += 5;
8076           function_name_len -= 5;
8077         }
8078
8079       rename = (char *) alloca (rename_len * sizeof (char));
8080       strncpy (rename, function_name, function_name_len);
8081       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8082                  "__%s___XR", name);
8083     }
8084   else
8085     {
8086       const int rename_len = strlen (name) + 6;
8087
8088       rename = (char *) alloca (rename_len * sizeof (char));
8089       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8090     }
8091
8092   return ada_find_any_type_symbol (rename);
8093 }
8094
8095 /* Because of GNAT encoding conventions, several GDB symbols may match a
8096    given type name.  If the type denoted by TYPE0 is to be preferred to
8097    that of TYPE1 for purposes of type printing, return non-zero;
8098    otherwise return 0.  */
8099
8100 int
8101 ada_prefer_type (struct type *type0, struct type *type1)
8102 {
8103   if (type1 == NULL)
8104     return 1;
8105   else if (type0 == NULL)
8106     return 0;
8107   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8108     return 1;
8109   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8110     return 0;
8111   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8112     return 1;
8113   else if (ada_is_constrained_packed_array_type (type0))
8114     return 1;
8115   else if (ada_is_array_descriptor_type (type0)
8116            && !ada_is_array_descriptor_type (type1))
8117     return 1;
8118   else
8119     {
8120       const char *type0_name = type_name_no_tag (type0);
8121       const char *type1_name = type_name_no_tag (type1);
8122
8123       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8124           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8125         return 1;
8126     }
8127   return 0;
8128 }
8129
8130 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
8131    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
8132
8133 const char *
8134 ada_type_name (struct type *type)
8135 {
8136   if (type == NULL)
8137     return NULL;
8138   else if (TYPE_NAME (type) != NULL)
8139     return TYPE_NAME (type);
8140   else
8141     return TYPE_TAG_NAME (type);
8142 }
8143
8144 /* Search the list of "descriptive" types associated to TYPE for a type
8145    whose name is NAME.  */
8146
8147 static struct type *
8148 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8149 {
8150   struct type *result, *tmp;
8151
8152   if (ada_ignore_descriptive_types_p)
8153     return NULL;
8154
8155   /* If there no descriptive-type info, then there is no parallel type
8156      to be found.  */
8157   if (!HAVE_GNAT_AUX_INFO (type))
8158     return NULL;
8159
8160   result = TYPE_DESCRIPTIVE_TYPE (type);
8161   while (result != NULL)
8162     {
8163       const char *result_name = ada_type_name (result);
8164
8165       if (result_name == NULL)
8166         {
8167           warning (_("unexpected null name on descriptive type"));
8168           return NULL;
8169         }
8170
8171       /* If the names match, stop.  */
8172       if (strcmp (result_name, name) == 0)
8173         break;
8174
8175       /* Otherwise, look at the next item on the list, if any.  */
8176       if (HAVE_GNAT_AUX_INFO (result))
8177         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8178       else
8179         tmp = NULL;
8180
8181       /* If not found either, try after having resolved the typedef.  */
8182       if (tmp != NULL)
8183         result = tmp;
8184       else
8185         {
8186           result = check_typedef (result);
8187           if (HAVE_GNAT_AUX_INFO (result))
8188             result = TYPE_DESCRIPTIVE_TYPE (result);
8189           else
8190             result = NULL;
8191         }
8192     }
8193
8194   /* If we didn't find a match, see whether this is a packed array.  With
8195      older compilers, the descriptive type information is either absent or
8196      irrelevant when it comes to packed arrays so the above lookup fails.
8197      Fall back to using a parallel lookup by name in this case.  */
8198   if (result == NULL && ada_is_constrained_packed_array_type (type))
8199     return ada_find_any_type (name);
8200
8201   return result;
8202 }
8203
8204 /* Find a parallel type to TYPE with the specified NAME, using the
8205    descriptive type taken from the debugging information, if available,
8206    and otherwise using the (slower) name-based method.  */
8207
8208 static struct type *
8209 ada_find_parallel_type_with_name (struct type *type, const char *name)
8210 {
8211   struct type *result = NULL;
8212
8213   if (HAVE_GNAT_AUX_INFO (type))
8214     result = find_parallel_type_by_descriptive_type (type, name);
8215   else
8216     result = ada_find_any_type (name);
8217
8218   return result;
8219 }
8220
8221 /* Same as above, but specify the name of the parallel type by appending
8222    SUFFIX to the name of TYPE.  */
8223
8224 struct type *
8225 ada_find_parallel_type (struct type *type, const char *suffix)
8226 {
8227   char *name;
8228   const char *type_name = ada_type_name (type);
8229   int len;
8230
8231   if (type_name == NULL)
8232     return NULL;
8233
8234   len = strlen (type_name);
8235
8236   name = (char *) alloca (len + strlen (suffix) + 1);
8237
8238   strcpy (name, type_name);
8239   strcpy (name + len, suffix);
8240
8241   return ada_find_parallel_type_with_name (type, name);
8242 }
8243
8244 /* If TYPE is a variable-size record type, return the corresponding template
8245    type describing its fields.  Otherwise, return NULL.  */
8246
8247 static struct type *
8248 dynamic_template_type (struct type *type)
8249 {
8250   type = ada_check_typedef (type);
8251
8252   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8253       || ada_type_name (type) == NULL)
8254     return NULL;
8255   else
8256     {
8257       int len = strlen (ada_type_name (type));
8258
8259       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8260         return type;
8261       else
8262         return ada_find_parallel_type (type, "___XVE");
8263     }
8264 }
8265
8266 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8267    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8268
8269 static int
8270 is_dynamic_field (struct type *templ_type, int field_num)
8271 {
8272   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8273
8274   return name != NULL
8275     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8276     && strstr (name, "___XVL") != NULL;
8277 }
8278
8279 /* The index of the variant field of TYPE, or -1 if TYPE does not
8280    represent a variant record type.  */
8281
8282 static int
8283 variant_field_index (struct type *type)
8284 {
8285   int f;
8286
8287   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8288     return -1;
8289
8290   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8291     {
8292       if (ada_is_variant_part (type, f))
8293         return f;
8294     }
8295   return -1;
8296 }
8297
8298 /* A record type with no fields.  */
8299
8300 static struct type *
8301 empty_record (struct type *templ)
8302 {
8303   struct type *type = alloc_type_copy (templ);
8304
8305   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8306   TYPE_NFIELDS (type) = 0;
8307   TYPE_FIELDS (type) = NULL;
8308   INIT_CPLUS_SPECIFIC (type);
8309   TYPE_NAME (type) = "<empty>";
8310   TYPE_TAG_NAME (type) = NULL;
8311   TYPE_LENGTH (type) = 0;
8312   return type;
8313 }
8314
8315 /* An ordinary record type (with fixed-length fields) that describes
8316    the value of type TYPE at VALADDR or ADDRESS (see comments at
8317    the beginning of this section) VAL according to GNAT conventions.
8318    DVAL0 should describe the (portion of a) record that contains any
8319    necessary discriminants.  It should be NULL if value_type (VAL) is
8320    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8321    variant field (unless unchecked) is replaced by a particular branch
8322    of the variant.
8323
8324    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8325    length are not statically known are discarded.  As a consequence,
8326    VALADDR, ADDRESS and DVAL0 are ignored.
8327
8328    NOTE: Limitations: For now, we assume that dynamic fields and
8329    variants occupy whole numbers of bytes.  However, they need not be
8330    byte-aligned.  */
8331
8332 struct type *
8333 ada_template_to_fixed_record_type_1 (struct type *type,
8334                                      const gdb_byte *valaddr,
8335                                      CORE_ADDR address, struct value *dval0,
8336                                      int keep_dynamic_fields)
8337 {
8338   struct value *mark = value_mark ();
8339   struct value *dval;
8340   struct type *rtype;
8341   int nfields, bit_len;
8342   int variant_field;
8343   long off;
8344   int fld_bit_len;
8345   int f;
8346
8347   /* Compute the number of fields in this record type that are going
8348      to be processed: unless keep_dynamic_fields, this includes only
8349      fields whose position and length are static will be processed.  */
8350   if (keep_dynamic_fields)
8351     nfields = TYPE_NFIELDS (type);
8352   else
8353     {
8354       nfields = 0;
8355       while (nfields < TYPE_NFIELDS (type)
8356              && !ada_is_variant_part (type, nfields)
8357              && !is_dynamic_field (type, nfields))
8358         nfields++;
8359     }
8360
8361   rtype = alloc_type_copy (type);
8362   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8363   INIT_CPLUS_SPECIFIC (rtype);
8364   TYPE_NFIELDS (rtype) = nfields;
8365   TYPE_FIELDS (rtype) = (struct field *)
8366     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8367   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8368   TYPE_NAME (rtype) = ada_type_name (type);
8369   TYPE_TAG_NAME (rtype) = NULL;
8370   TYPE_FIXED_INSTANCE (rtype) = 1;
8371
8372   off = 0;
8373   bit_len = 0;
8374   variant_field = -1;
8375
8376   for (f = 0; f < nfields; f += 1)
8377     {
8378       off = align_value (off, field_alignment (type, f))
8379         + TYPE_FIELD_BITPOS (type, f);
8380       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8381       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8382
8383       if (ada_is_variant_part (type, f))
8384         {
8385           variant_field = f;
8386           fld_bit_len = 0;
8387         }
8388       else if (is_dynamic_field (type, f))
8389         {
8390           const gdb_byte *field_valaddr = valaddr;
8391           CORE_ADDR field_address = address;
8392           struct type *field_type =
8393             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8394
8395           if (dval0 == NULL)
8396             {
8397               /* rtype's length is computed based on the run-time
8398                  value of discriminants.  If the discriminants are not
8399                  initialized, the type size may be completely bogus and
8400                  GDB may fail to allocate a value for it.  So check the
8401                  size first before creating the value.  */
8402               ada_ensure_varsize_limit (rtype);
8403               /* Using plain value_from_contents_and_address here
8404                  causes problems because we will end up trying to
8405                  resolve a type that is currently being
8406                  constructed.  */
8407               dval = value_from_contents_and_address_unresolved (rtype,
8408                                                                  valaddr,
8409                                                                  address);
8410               rtype = value_type (dval);
8411             }
8412           else
8413             dval = dval0;
8414
8415           /* If the type referenced by this field is an aligner type, we need
8416              to unwrap that aligner type, because its size might not be set.
8417              Keeping the aligner type would cause us to compute the wrong
8418              size for this field, impacting the offset of the all the fields
8419              that follow this one.  */
8420           if (ada_is_aligner_type (field_type))
8421             {
8422               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8423
8424               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8425               field_address = cond_offset_target (field_address, field_offset);
8426               field_type = ada_aligned_type (field_type);
8427             }
8428
8429           field_valaddr = cond_offset_host (field_valaddr,
8430                                             off / TARGET_CHAR_BIT);
8431           field_address = cond_offset_target (field_address,
8432                                               off / TARGET_CHAR_BIT);
8433
8434           /* Get the fixed type of the field.  Note that, in this case,
8435              we do not want to get the real type out of the tag: if
8436              the current field is the parent part of a tagged record,
8437              we will get the tag of the object.  Clearly wrong: the real
8438              type of the parent is not the real type of the child.  We
8439              would end up in an infinite loop.  */
8440           field_type = ada_get_base_type (field_type);
8441           field_type = ada_to_fixed_type (field_type, field_valaddr,
8442                                           field_address, dval, 0);
8443           /* If the field size is already larger than the maximum
8444              object size, then the record itself will necessarily
8445              be larger than the maximum object size.  We need to make
8446              this check now, because the size might be so ridiculously
8447              large (due to an uninitialized variable in the inferior)
8448              that it would cause an overflow when adding it to the
8449              record size.  */
8450           ada_ensure_varsize_limit (field_type);
8451
8452           TYPE_FIELD_TYPE (rtype, f) = field_type;
8453           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8454           /* The multiplication can potentially overflow.  But because
8455              the field length has been size-checked just above, and
8456              assuming that the maximum size is a reasonable value,
8457              an overflow should not happen in practice.  So rather than
8458              adding overflow recovery code to this already complex code,
8459              we just assume that it's not going to happen.  */
8460           fld_bit_len =
8461             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8462         }
8463       else
8464         {
8465           /* Note: If this field's type is a typedef, it is important
8466              to preserve the typedef layer.
8467
8468              Otherwise, we might be transforming a typedef to a fat
8469              pointer (encoding a pointer to an unconstrained array),
8470              into a basic fat pointer (encoding an unconstrained
8471              array).  As both types are implemented using the same
8472              structure, the typedef is the only clue which allows us
8473              to distinguish between the two options.  Stripping it
8474              would prevent us from printing this field appropriately.  */
8475           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8476           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8477           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8478             fld_bit_len =
8479               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8480           else
8481             {
8482               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8483
8484               /* We need to be careful of typedefs when computing
8485                  the length of our field.  If this is a typedef,
8486                  get the length of the target type, not the length
8487                  of the typedef.  */
8488               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8489                 field_type = ada_typedef_target_type (field_type);
8490
8491               fld_bit_len =
8492                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8493             }
8494         }
8495       if (off + fld_bit_len > bit_len)
8496         bit_len = off + fld_bit_len;
8497       off += fld_bit_len;
8498       TYPE_LENGTH (rtype) =
8499         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8500     }
8501
8502   /* We handle the variant part, if any, at the end because of certain
8503      odd cases in which it is re-ordered so as NOT to be the last field of
8504      the record.  This can happen in the presence of representation
8505      clauses.  */
8506   if (variant_field >= 0)
8507     {
8508       struct type *branch_type;
8509
8510       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8511
8512       if (dval0 == NULL)
8513         {
8514           /* Using plain value_from_contents_and_address here causes
8515              problems because we will end up trying to resolve a type
8516              that is currently being constructed.  */
8517           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8518                                                              address);
8519           rtype = value_type (dval);
8520         }
8521       else
8522         dval = dval0;
8523
8524       branch_type =
8525         to_fixed_variant_branch_type
8526         (TYPE_FIELD_TYPE (type, variant_field),
8527          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8528          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8529       if (branch_type == NULL)
8530         {
8531           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8532             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8533           TYPE_NFIELDS (rtype) -= 1;
8534         }
8535       else
8536         {
8537           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8538           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8539           fld_bit_len =
8540             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8541             TARGET_CHAR_BIT;
8542           if (off + fld_bit_len > bit_len)
8543             bit_len = off + fld_bit_len;
8544           TYPE_LENGTH (rtype) =
8545             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8546         }
8547     }
8548
8549   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8550      should contain the alignment of that record, which should be a strictly
8551      positive value.  If null or negative, then something is wrong, most
8552      probably in the debug info.  In that case, we don't round up the size
8553      of the resulting type.  If this record is not part of another structure,
8554      the current RTYPE length might be good enough for our purposes.  */
8555   if (TYPE_LENGTH (type) <= 0)
8556     {
8557       if (TYPE_NAME (rtype))
8558         warning (_("Invalid type size for `%s' detected: %d."),
8559                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8560       else
8561         warning (_("Invalid type size for <unnamed> detected: %d."),
8562                  TYPE_LENGTH (type));
8563     }
8564   else
8565     {
8566       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8567                                          TYPE_LENGTH (type));
8568     }
8569
8570   value_free_to_mark (mark);
8571   if (TYPE_LENGTH (rtype) > varsize_limit)
8572     error (_("record type with dynamic size is larger than varsize-limit"));
8573   return rtype;
8574 }
8575
8576 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8577    of 1.  */
8578
8579 static struct type *
8580 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8581                                CORE_ADDR address, struct value *dval0)
8582 {
8583   return ada_template_to_fixed_record_type_1 (type, valaddr,
8584                                               address, dval0, 1);
8585 }
8586
8587 /* An ordinary record type in which ___XVL-convention fields and
8588    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8589    static approximations, containing all possible fields.  Uses
8590    no runtime values.  Useless for use in values, but that's OK,
8591    since the results are used only for type determinations.   Works on both
8592    structs and unions.  Representation note: to save space, we memorize
8593    the result of this function in the TYPE_TARGET_TYPE of the
8594    template type.  */
8595
8596 static struct type *
8597 template_to_static_fixed_type (struct type *type0)
8598 {
8599   struct type *type;
8600   int nfields;
8601   int f;
8602
8603   /* No need no do anything if the input type is already fixed.  */
8604   if (TYPE_FIXED_INSTANCE (type0))
8605     return type0;
8606
8607   /* Likewise if we already have computed the static approximation.  */
8608   if (TYPE_TARGET_TYPE (type0) != NULL)
8609     return TYPE_TARGET_TYPE (type0);
8610
8611   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8612   type = type0;
8613   nfields = TYPE_NFIELDS (type0);
8614
8615   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8616      recompute all over next time.  */
8617   TYPE_TARGET_TYPE (type0) = type;
8618
8619   for (f = 0; f < nfields; f += 1)
8620     {
8621       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8622       struct type *new_type;
8623
8624       if (is_dynamic_field (type0, f))
8625         {
8626           field_type = ada_check_typedef (field_type);
8627           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8628         }
8629       else
8630         new_type = static_unwrap_type (field_type);
8631
8632       if (new_type != field_type)
8633         {
8634           /* Clone TYPE0 only the first time we get a new field type.  */
8635           if (type == type0)
8636             {
8637               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8638               TYPE_CODE (type) = TYPE_CODE (type0);
8639               INIT_CPLUS_SPECIFIC (type);
8640               TYPE_NFIELDS (type) = nfields;
8641               TYPE_FIELDS (type) = (struct field *)
8642                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8643               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8644                       sizeof (struct field) * nfields);
8645               TYPE_NAME (type) = ada_type_name (type0);
8646               TYPE_TAG_NAME (type) = NULL;
8647               TYPE_FIXED_INSTANCE (type) = 1;
8648               TYPE_LENGTH (type) = 0;
8649             }
8650           TYPE_FIELD_TYPE (type, f) = new_type;
8651           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8652         }
8653     }
8654
8655   return type;
8656 }
8657
8658 /* Given an object of type TYPE whose contents are at VALADDR and
8659    whose address in memory is ADDRESS, returns a revision of TYPE,
8660    which should be a non-dynamic-sized record, in which the variant
8661    part, if any, is replaced with the appropriate branch.  Looks
8662    for discriminant values in DVAL0, which can be NULL if the record
8663    contains the necessary discriminant values.  */
8664
8665 static struct type *
8666 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8667                                    CORE_ADDR address, struct value *dval0)
8668 {
8669   struct value *mark = value_mark ();
8670   struct value *dval;
8671   struct type *rtype;
8672   struct type *branch_type;
8673   int nfields = TYPE_NFIELDS (type);
8674   int variant_field = variant_field_index (type);
8675
8676   if (variant_field == -1)
8677     return type;
8678
8679   if (dval0 == NULL)
8680     {
8681       dval = value_from_contents_and_address (type, valaddr, address);
8682       type = value_type (dval);
8683     }
8684   else
8685     dval = dval0;
8686
8687   rtype = alloc_type_copy (type);
8688   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8689   INIT_CPLUS_SPECIFIC (rtype);
8690   TYPE_NFIELDS (rtype) = nfields;
8691   TYPE_FIELDS (rtype) =
8692     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8693   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8694           sizeof (struct field) * nfields);
8695   TYPE_NAME (rtype) = ada_type_name (type);
8696   TYPE_TAG_NAME (rtype) = NULL;
8697   TYPE_FIXED_INSTANCE (rtype) = 1;
8698   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8699
8700   branch_type = to_fixed_variant_branch_type
8701     (TYPE_FIELD_TYPE (type, variant_field),
8702      cond_offset_host (valaddr,
8703                        TYPE_FIELD_BITPOS (type, variant_field)
8704                        / TARGET_CHAR_BIT),
8705      cond_offset_target (address,
8706                          TYPE_FIELD_BITPOS (type, variant_field)
8707                          / TARGET_CHAR_BIT), dval);
8708   if (branch_type == NULL)
8709     {
8710       int f;
8711
8712       for (f = variant_field + 1; f < nfields; f += 1)
8713         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8714       TYPE_NFIELDS (rtype) -= 1;
8715     }
8716   else
8717     {
8718       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8719       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8720       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8721       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8722     }
8723   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8724
8725   value_free_to_mark (mark);
8726   return rtype;
8727 }
8728
8729 /* An ordinary record type (with fixed-length fields) that describes
8730    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8731    beginning of this section].   Any necessary discriminants' values
8732    should be in DVAL, a record value; it may be NULL if the object
8733    at ADDR itself contains any necessary discriminant values.
8734    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8735    values from the record are needed.  Except in the case that DVAL,
8736    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8737    unchecked) is replaced by a particular branch of the variant.
8738
8739    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8740    is questionable and may be removed.  It can arise during the
8741    processing of an unconstrained-array-of-record type where all the
8742    variant branches have exactly the same size.  This is because in
8743    such cases, the compiler does not bother to use the XVS convention
8744    when encoding the record.  I am currently dubious of this
8745    shortcut and suspect the compiler should be altered.  FIXME.  */
8746
8747 static struct type *
8748 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8749                       CORE_ADDR address, struct value *dval)
8750 {
8751   struct type *templ_type;
8752
8753   if (TYPE_FIXED_INSTANCE (type0))
8754     return type0;
8755
8756   templ_type = dynamic_template_type (type0);
8757
8758   if (templ_type != NULL)
8759     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8760   else if (variant_field_index (type0) >= 0)
8761     {
8762       if (dval == NULL && valaddr == NULL && address == 0)
8763         return type0;
8764       return to_record_with_fixed_variant_part (type0, valaddr, address,
8765                                                 dval);
8766     }
8767   else
8768     {
8769       TYPE_FIXED_INSTANCE (type0) = 1;
8770       return type0;
8771     }
8772
8773 }
8774
8775 /* An ordinary record type (with fixed-length fields) that describes
8776    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8777    union type.  Any necessary discriminants' values should be in DVAL,
8778    a record value.  That is, this routine selects the appropriate
8779    branch of the union at ADDR according to the discriminant value
8780    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8781    it represents a variant subject to a pragma Unchecked_Union.  */
8782
8783 static struct type *
8784 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8785                               CORE_ADDR address, struct value *dval)
8786 {
8787   int which;
8788   struct type *templ_type;
8789   struct type *var_type;
8790
8791   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8792     var_type = TYPE_TARGET_TYPE (var_type0);
8793   else
8794     var_type = var_type0;
8795
8796   templ_type = ada_find_parallel_type (var_type, "___XVU");
8797
8798   if (templ_type != NULL)
8799     var_type = templ_type;
8800
8801   if (is_unchecked_variant (var_type, value_type (dval)))
8802       return var_type0;
8803   which =
8804     ada_which_variant_applies (var_type,
8805                                value_type (dval), value_contents (dval));
8806
8807   if (which < 0)
8808     return empty_record (var_type);
8809   else if (is_dynamic_field (var_type, which))
8810     return to_fixed_record_type
8811       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8812        valaddr, address, dval);
8813   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8814     return
8815       to_fixed_record_type
8816       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8817   else
8818     return TYPE_FIELD_TYPE (var_type, which);
8819 }
8820
8821 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8822    ENCODING_TYPE, a type following the GNAT conventions for discrete
8823    type encodings, only carries redundant information.  */
8824
8825 static int
8826 ada_is_redundant_range_encoding (struct type *range_type,
8827                                  struct type *encoding_type)
8828 {
8829   const char *bounds_str;
8830   int n;
8831   LONGEST lo, hi;
8832
8833   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8834
8835   if (TYPE_CODE (get_base_type (range_type))
8836       != TYPE_CODE (get_base_type (encoding_type)))
8837     {
8838       /* The compiler probably used a simple base type to describe
8839          the range type instead of the range's actual base type,
8840          expecting us to get the real base type from the encoding
8841          anyway.  In this situation, the encoding cannot be ignored
8842          as redundant.  */
8843       return 0;
8844     }
8845
8846   if (is_dynamic_type (range_type))
8847     return 0;
8848
8849   if (TYPE_NAME (encoding_type) == NULL)
8850     return 0;
8851
8852   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8853   if (bounds_str == NULL)
8854     return 0;
8855
8856   n = 8; /* Skip "___XDLU_".  */
8857   if (!ada_scan_number (bounds_str, n, &lo, &n))
8858     return 0;
8859   if (TYPE_LOW_BOUND (range_type) != lo)
8860     return 0;
8861
8862   n += 2; /* Skip the "__" separator between the two bounds.  */
8863   if (!ada_scan_number (bounds_str, n, &hi, &n))
8864     return 0;
8865   if (TYPE_HIGH_BOUND (range_type) != hi)
8866     return 0;
8867
8868   return 1;
8869 }
8870
8871 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8872    a type following the GNAT encoding for describing array type
8873    indices, only carries redundant information.  */
8874
8875 static int
8876 ada_is_redundant_index_type_desc (struct type *array_type,
8877                                   struct type *desc_type)
8878 {
8879   struct type *this_layer = check_typedef (array_type);
8880   int i;
8881
8882   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8883     {
8884       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8885                                             TYPE_FIELD_TYPE (desc_type, i)))
8886         return 0;
8887       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8888     }
8889
8890   return 1;
8891 }
8892
8893 /* Assuming that TYPE0 is an array type describing the type of a value
8894    at ADDR, and that DVAL describes a record containing any
8895    discriminants used in TYPE0, returns a type for the value that
8896    contains no dynamic components (that is, no components whose sizes
8897    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8898    true, gives an error message if the resulting type's size is over
8899    varsize_limit.  */
8900
8901 static struct type *
8902 to_fixed_array_type (struct type *type0, struct value *dval,
8903                      int ignore_too_big)
8904 {
8905   struct type *index_type_desc;
8906   struct type *result;
8907   int constrained_packed_array_p;
8908   static const char *xa_suffix = "___XA";
8909
8910   type0 = ada_check_typedef (type0);
8911   if (TYPE_FIXED_INSTANCE (type0))
8912     return type0;
8913
8914   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8915   if (constrained_packed_array_p)
8916     type0 = decode_constrained_packed_array_type (type0);
8917
8918   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8919
8920   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8921      encoding suffixed with 'P' may still be generated.  If so,
8922      it should be used to find the XA type.  */
8923
8924   if (index_type_desc == NULL)
8925     {
8926       const char *type_name = ada_type_name (type0);
8927
8928       if (type_name != NULL)
8929         {
8930           const int len = strlen (type_name);
8931           char *name = (char *) alloca (len + strlen (xa_suffix));
8932
8933           if (type_name[len - 1] == 'P')
8934             {
8935               strcpy (name, type_name);
8936               strcpy (name + len - 1, xa_suffix);
8937               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8938             }
8939         }
8940     }
8941
8942   ada_fixup_array_indexes_type (index_type_desc);
8943   if (index_type_desc != NULL
8944       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8945     {
8946       /* Ignore this ___XA parallel type, as it does not bring any
8947          useful information.  This allows us to avoid creating fixed
8948          versions of the array's index types, which would be identical
8949          to the original ones.  This, in turn, can also help avoid
8950          the creation of fixed versions of the array itself.  */
8951       index_type_desc = NULL;
8952     }
8953
8954   if (index_type_desc == NULL)
8955     {
8956       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8957
8958       /* NOTE: elt_type---the fixed version of elt_type0---should never
8959          depend on the contents of the array in properly constructed
8960          debugging data.  */
8961       /* Create a fixed version of the array element type.
8962          We're not providing the address of an element here,
8963          and thus the actual object value cannot be inspected to do
8964          the conversion.  This should not be a problem, since arrays of
8965          unconstrained objects are not allowed.  In particular, all
8966          the elements of an array of a tagged type should all be of
8967          the same type specified in the debugging info.  No need to
8968          consult the object tag.  */
8969       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8970
8971       /* Make sure we always create a new array type when dealing with
8972          packed array types, since we're going to fix-up the array
8973          type length and element bitsize a little further down.  */
8974       if (elt_type0 == elt_type && !constrained_packed_array_p)
8975         result = type0;
8976       else
8977         result = create_array_type (alloc_type_copy (type0),
8978                                     elt_type, TYPE_INDEX_TYPE (type0));
8979     }
8980   else
8981     {
8982       int i;
8983       struct type *elt_type0;
8984
8985       elt_type0 = type0;
8986       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8987         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8988
8989       /* NOTE: result---the fixed version of elt_type0---should never
8990          depend on the contents of the array in properly constructed
8991          debugging data.  */
8992       /* Create a fixed version of the array element type.
8993          We're not providing the address of an element here,
8994          and thus the actual object value cannot be inspected to do
8995          the conversion.  This should not be a problem, since arrays of
8996          unconstrained objects are not allowed.  In particular, all
8997          the elements of an array of a tagged type should all be of
8998          the same type specified in the debugging info.  No need to
8999          consult the object tag.  */
9000       result =
9001         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
9002
9003       elt_type0 = type0;
9004       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
9005         {
9006           struct type *range_type =
9007             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
9008
9009           result = create_array_type (alloc_type_copy (elt_type0),
9010                                       result, range_type);
9011           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
9012         }
9013       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
9014         error (_("array type with dynamic size is larger than varsize-limit"));
9015     }
9016
9017   /* We want to preserve the type name.  This can be useful when
9018      trying to get the type name of a value that has already been
9019      printed (for instance, if the user did "print VAR; whatis $".  */
9020   TYPE_NAME (result) = TYPE_NAME (type0);
9021
9022   if (constrained_packed_array_p)
9023     {
9024       /* So far, the resulting type has been created as if the original
9025          type was a regular (non-packed) array type.  As a result, the
9026          bitsize of the array elements needs to be set again, and the array
9027          length needs to be recomputed based on that bitsize.  */
9028       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9029       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9030
9031       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9032       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9033       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9034         TYPE_LENGTH (result)++;
9035     }
9036
9037   TYPE_FIXED_INSTANCE (result) = 1;
9038   return result;
9039 }
9040
9041
9042 /* A standard type (containing no dynamically sized components)
9043    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9044    DVAL describes a record containing any discriminants used in TYPE0,
9045    and may be NULL if there are none, or if the object of type TYPE at
9046    ADDRESS or in VALADDR contains these discriminants.
9047    
9048    If CHECK_TAG is not null, in the case of tagged types, this function
9049    attempts to locate the object's tag and use it to compute the actual
9050    type.  However, when ADDRESS is null, we cannot use it to determine the
9051    location of the tag, and therefore compute the tagged type's actual type.
9052    So we return the tagged type without consulting the tag.  */
9053    
9054 static struct type *
9055 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9056                    CORE_ADDR address, struct value *dval, int check_tag)
9057 {
9058   type = ada_check_typedef (type);
9059   switch (TYPE_CODE (type))
9060     {
9061     default:
9062       return type;
9063     case TYPE_CODE_STRUCT:
9064       {
9065         struct type *static_type = to_static_fixed_type (type);
9066         struct type *fixed_record_type =
9067           to_fixed_record_type (type, valaddr, address, NULL);
9068
9069         /* If STATIC_TYPE is a tagged type and we know the object's address,
9070            then we can determine its tag, and compute the object's actual
9071            type from there.  Note that we have to use the fixed record
9072            type (the parent part of the record may have dynamic fields
9073            and the way the location of _tag is expressed may depend on
9074            them).  */
9075
9076         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9077           {
9078             struct value *tag =
9079               value_tag_from_contents_and_address
9080               (fixed_record_type,
9081                valaddr,
9082                address);
9083             struct type *real_type = type_from_tag (tag);
9084             struct value *obj =
9085               value_from_contents_and_address (fixed_record_type,
9086                                                valaddr,
9087                                                address);
9088             fixed_record_type = value_type (obj);
9089             if (real_type != NULL)
9090               return to_fixed_record_type
9091                 (real_type, NULL,
9092                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9093           }
9094
9095         /* Check to see if there is a parallel ___XVZ variable.
9096            If there is, then it provides the actual size of our type.  */
9097         else if (ada_type_name (fixed_record_type) != NULL)
9098           {
9099             const char *name = ada_type_name (fixed_record_type);
9100             char *xvz_name
9101               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9102             bool xvz_found = false;
9103             LONGEST size;
9104
9105             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9106             TRY
9107               {
9108                 xvz_found = get_int_var_value (xvz_name, size);
9109               }
9110             CATCH (except, RETURN_MASK_ERROR)
9111               {
9112                 /* We found the variable, but somehow failed to read
9113                    its value.  Rethrow the same error, but with a little
9114                    bit more information, to help the user understand
9115                    what went wrong (Eg: the variable might have been
9116                    optimized out).  */
9117                 throw_error (except.error,
9118                              _("unable to read value of %s (%s)"),
9119                              xvz_name, except.message);
9120               }
9121             END_CATCH
9122
9123             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9124               {
9125                 fixed_record_type = copy_type (fixed_record_type);
9126                 TYPE_LENGTH (fixed_record_type) = size;
9127
9128                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9129                    observed this when the debugging info is STABS, and
9130                    apparently it is something that is hard to fix.
9131
9132                    In practice, we don't need the actual type definition
9133                    at all, because the presence of the XVZ variable allows us
9134                    to assume that there must be a XVS type as well, which we
9135                    should be able to use later, when we need the actual type
9136                    definition.
9137
9138                    In the meantime, pretend that the "fixed" type we are
9139                    returning is NOT a stub, because this can cause trouble
9140                    when using this type to create new types targeting it.
9141                    Indeed, the associated creation routines often check
9142                    whether the target type is a stub and will try to replace
9143                    it, thus using a type with the wrong size.  This, in turn,
9144                    might cause the new type to have the wrong size too.
9145                    Consider the case of an array, for instance, where the size
9146                    of the array is computed from the number of elements in
9147                    our array multiplied by the size of its element.  */
9148                 TYPE_STUB (fixed_record_type) = 0;
9149               }
9150           }
9151         return fixed_record_type;
9152       }
9153     case TYPE_CODE_ARRAY:
9154       return to_fixed_array_type (type, dval, 1);
9155     case TYPE_CODE_UNION:
9156       if (dval == NULL)
9157         return type;
9158       else
9159         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9160     }
9161 }
9162
9163 /* The same as ada_to_fixed_type_1, except that it preserves the type
9164    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9165
9166    The typedef layer needs be preserved in order to differentiate between
9167    arrays and array pointers when both types are implemented using the same
9168    fat pointer.  In the array pointer case, the pointer is encoded as
9169    a typedef of the pointer type.  For instance, considering:
9170
9171           type String_Access is access String;
9172           S1 : String_Access := null;
9173
9174    To the debugger, S1 is defined as a typedef of type String.  But
9175    to the user, it is a pointer.  So if the user tries to print S1,
9176    we should not dereference the array, but print the array address
9177    instead.
9178
9179    If we didn't preserve the typedef layer, we would lose the fact that
9180    the type is to be presented as a pointer (needs de-reference before
9181    being printed).  And we would also use the source-level type name.  */
9182
9183 struct type *
9184 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9185                    CORE_ADDR address, struct value *dval, int check_tag)
9186
9187 {
9188   struct type *fixed_type =
9189     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9190
9191   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9192       then preserve the typedef layer.
9193
9194       Implementation note: We can only check the main-type portion of
9195       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9196       from TYPE now returns a type that has the same instance flags
9197       as TYPE.  For instance, if TYPE is a "typedef const", and its
9198       target type is a "struct", then the typedef elimination will return
9199       a "const" version of the target type.  See check_typedef for more
9200       details about how the typedef layer elimination is done.
9201
9202       brobecker/2010-11-19: It seems to me that the only case where it is
9203       useful to preserve the typedef layer is when dealing with fat pointers.
9204       Perhaps, we could add a check for that and preserve the typedef layer
9205       only in that situation.  But this seems unecessary so far, probably
9206       because we call check_typedef/ada_check_typedef pretty much everywhere.
9207       */
9208   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9209       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9210           == TYPE_MAIN_TYPE (fixed_type)))
9211     return type;
9212
9213   return fixed_type;
9214 }
9215
9216 /* A standard (static-sized) type corresponding as well as possible to
9217    TYPE0, but based on no runtime data.  */
9218
9219 static struct type *
9220 to_static_fixed_type (struct type *type0)
9221 {
9222   struct type *type;
9223
9224   if (type0 == NULL)
9225     return NULL;
9226
9227   if (TYPE_FIXED_INSTANCE (type0))
9228     return type0;
9229
9230   type0 = ada_check_typedef (type0);
9231
9232   switch (TYPE_CODE (type0))
9233     {
9234     default:
9235       return type0;
9236     case TYPE_CODE_STRUCT:
9237       type = dynamic_template_type (type0);
9238       if (type != NULL)
9239         return template_to_static_fixed_type (type);
9240       else
9241         return template_to_static_fixed_type (type0);
9242     case TYPE_CODE_UNION:
9243       type = ada_find_parallel_type (type0, "___XVU");
9244       if (type != NULL)
9245         return template_to_static_fixed_type (type);
9246       else
9247         return template_to_static_fixed_type (type0);
9248     }
9249 }
9250
9251 /* A static approximation of TYPE with all type wrappers removed.  */
9252
9253 static struct type *
9254 static_unwrap_type (struct type *type)
9255 {
9256   if (ada_is_aligner_type (type))
9257     {
9258       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9259       if (ada_type_name (type1) == NULL)
9260         TYPE_NAME (type1) = ada_type_name (type);
9261
9262       return static_unwrap_type (type1);
9263     }
9264   else
9265     {
9266       struct type *raw_real_type = ada_get_base_type (type);
9267
9268       if (raw_real_type == type)
9269         return type;
9270       else
9271         return to_static_fixed_type (raw_real_type);
9272     }
9273 }
9274
9275 /* In some cases, incomplete and private types require
9276    cross-references that are not resolved as records (for example,
9277       type Foo;
9278       type FooP is access Foo;
9279       V: FooP;
9280       type Foo is array ...;
9281    ).  In these cases, since there is no mechanism for producing
9282    cross-references to such types, we instead substitute for FooP a
9283    stub enumeration type that is nowhere resolved, and whose tag is
9284    the name of the actual type.  Call these types "non-record stubs".  */
9285
9286 /* A type equivalent to TYPE that is not a non-record stub, if one
9287    exists, otherwise TYPE.  */
9288
9289 struct type *
9290 ada_check_typedef (struct type *type)
9291 {
9292   if (type == NULL)
9293     return NULL;
9294
9295   /* If our type is a typedef type of a fat pointer, then we're done.
9296      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9297      what allows us to distinguish between fat pointers that represent
9298      array types, and fat pointers that represent array access types
9299      (in both cases, the compiler implements them as fat pointers).  */
9300   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9301       && is_thick_pntr (ada_typedef_target_type (type)))
9302     return type;
9303
9304   type = check_typedef (type);
9305   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9306       || !TYPE_STUB (type)
9307       || TYPE_TAG_NAME (type) == NULL)
9308     return type;
9309   else
9310     {
9311       const char *name = TYPE_TAG_NAME (type);
9312       struct type *type1 = ada_find_any_type (name);
9313
9314       if (type1 == NULL)
9315         return type;
9316
9317       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9318          stubs pointing to arrays, as we don't create symbols for array
9319          types, only for the typedef-to-array types).  If that's the case,
9320          strip the typedef layer.  */
9321       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9322         type1 = ada_check_typedef (type1);
9323
9324       return type1;
9325     }
9326 }
9327
9328 /* A value representing the data at VALADDR/ADDRESS as described by
9329    type TYPE0, but with a standard (static-sized) type that correctly
9330    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9331    type, then return VAL0 [this feature is simply to avoid redundant
9332    creation of struct values].  */
9333
9334 static struct value *
9335 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9336                            struct value *val0)
9337 {
9338   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9339
9340   if (type == type0 && val0 != NULL)
9341     return val0;
9342
9343   if (VALUE_LVAL (val0) != lval_memory)
9344     {
9345       /* Our value does not live in memory; it could be a convenience
9346          variable, for instance.  Create a not_lval value using val0's
9347          contents.  */
9348       return value_from_contents (type, value_contents (val0));
9349     }
9350
9351   return value_from_contents_and_address (type, 0, address);
9352 }
9353
9354 /* A value representing VAL, but with a standard (static-sized) type
9355    that correctly describes it.  Does not necessarily create a new
9356    value.  */
9357
9358 struct value *
9359 ada_to_fixed_value (struct value *val)
9360 {
9361   val = unwrap_value (val);
9362   val = ada_to_fixed_value_create (value_type (val),
9363                                       value_address (val),
9364                                       val);
9365   return val;
9366 }
9367 \f
9368
9369 /* Attributes */
9370
9371 /* Table mapping attribute numbers to names.
9372    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9373
9374 static const char *attribute_names[] = {
9375   "<?>",
9376
9377   "first",
9378   "last",
9379   "length",
9380   "image",
9381   "max",
9382   "min",
9383   "modulus",
9384   "pos",
9385   "size",
9386   "tag",
9387   "val",
9388   0
9389 };
9390
9391 const char *
9392 ada_attribute_name (enum exp_opcode n)
9393 {
9394   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9395     return attribute_names[n - OP_ATR_FIRST + 1];
9396   else
9397     return attribute_names[0];
9398 }
9399
9400 /* Evaluate the 'POS attribute applied to ARG.  */
9401
9402 static LONGEST
9403 pos_atr (struct value *arg)
9404 {
9405   struct value *val = coerce_ref (arg);
9406   struct type *type = value_type (val);
9407   LONGEST result;
9408
9409   if (!discrete_type_p (type))
9410     error (_("'POS only defined on discrete types"));
9411
9412   if (!discrete_position (type, value_as_long (val), &result))
9413     error (_("enumeration value is invalid: can't find 'POS"));
9414
9415   return result;
9416 }
9417
9418 static struct value *
9419 value_pos_atr (struct type *type, struct value *arg)
9420 {
9421   return value_from_longest (type, pos_atr (arg));
9422 }
9423
9424 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9425
9426 static struct value *
9427 value_val_atr (struct type *type, struct value *arg)
9428 {
9429   if (!discrete_type_p (type))
9430     error (_("'VAL only defined on discrete types"));
9431   if (!integer_type_p (value_type (arg)))
9432     error (_("'VAL requires integral argument"));
9433
9434   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9435     {
9436       long pos = value_as_long (arg);
9437
9438       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9439         error (_("argument to 'VAL out of range"));
9440       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9441     }
9442   else
9443     return value_from_longest (type, value_as_long (arg));
9444 }
9445 \f
9446
9447                                 /* Evaluation */
9448
9449 /* True if TYPE appears to be an Ada character type.
9450    [At the moment, this is true only for Character and Wide_Character;
9451    It is a heuristic test that could stand improvement].  */
9452
9453 int
9454 ada_is_character_type (struct type *type)
9455 {
9456   const char *name;
9457
9458   /* If the type code says it's a character, then assume it really is,
9459      and don't check any further.  */
9460   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9461     return 1;
9462   
9463   /* Otherwise, assume it's a character type iff it is a discrete type
9464      with a known character type name.  */
9465   name = ada_type_name (type);
9466   return (name != NULL
9467           && (TYPE_CODE (type) == TYPE_CODE_INT
9468               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9469           && (strcmp (name, "character") == 0
9470               || strcmp (name, "wide_character") == 0
9471               || strcmp (name, "wide_wide_character") == 0
9472               || strcmp (name, "unsigned char") == 0));
9473 }
9474
9475 /* True if TYPE appears to be an Ada string type.  */
9476
9477 int
9478 ada_is_string_type (struct type *type)
9479 {
9480   type = ada_check_typedef (type);
9481   if (type != NULL
9482       && TYPE_CODE (type) != TYPE_CODE_PTR
9483       && (ada_is_simple_array_type (type)
9484           || ada_is_array_descriptor_type (type))
9485       && ada_array_arity (type) == 1)
9486     {
9487       struct type *elttype = ada_array_element_type (type, 1);
9488
9489       return ada_is_character_type (elttype);
9490     }
9491   else
9492     return 0;
9493 }
9494
9495 /* The compiler sometimes provides a parallel XVS type for a given
9496    PAD type.  Normally, it is safe to follow the PAD type directly,
9497    but older versions of the compiler have a bug that causes the offset
9498    of its "F" field to be wrong.  Following that field in that case
9499    would lead to incorrect results, but this can be worked around
9500    by ignoring the PAD type and using the associated XVS type instead.
9501
9502    Set to True if the debugger should trust the contents of PAD types.
9503    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9504 static int trust_pad_over_xvs = 1;
9505
9506 /* True if TYPE is a struct type introduced by the compiler to force the
9507    alignment of a value.  Such types have a single field with a
9508    distinctive name.  */
9509
9510 int
9511 ada_is_aligner_type (struct type *type)
9512 {
9513   type = ada_check_typedef (type);
9514
9515   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9516     return 0;
9517
9518   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9519           && TYPE_NFIELDS (type) == 1
9520           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9521 }
9522
9523 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9524    the parallel type.  */
9525
9526 struct type *
9527 ada_get_base_type (struct type *raw_type)
9528 {
9529   struct type *real_type_namer;
9530   struct type *raw_real_type;
9531
9532   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9533     return raw_type;
9534
9535   if (ada_is_aligner_type (raw_type))
9536     /* The encoding specifies that we should always use the aligner type.
9537        So, even if this aligner type has an associated XVS type, we should
9538        simply ignore it.
9539
9540        According to the compiler gurus, an XVS type parallel to an aligner
9541        type may exist because of a stabs limitation.  In stabs, aligner
9542        types are empty because the field has a variable-sized type, and
9543        thus cannot actually be used as an aligner type.  As a result,
9544        we need the associated parallel XVS type to decode the type.
9545        Since the policy in the compiler is to not change the internal
9546        representation based on the debugging info format, we sometimes
9547        end up having a redundant XVS type parallel to the aligner type.  */
9548     return raw_type;
9549
9550   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9551   if (real_type_namer == NULL
9552       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9553       || TYPE_NFIELDS (real_type_namer) != 1)
9554     return raw_type;
9555
9556   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9557     {
9558       /* This is an older encoding form where the base type needs to be
9559          looked up by name.  We prefer the newer enconding because it is
9560          more efficient.  */
9561       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9562       if (raw_real_type == NULL)
9563         return raw_type;
9564       else
9565         return raw_real_type;
9566     }
9567
9568   /* The field in our XVS type is a reference to the base type.  */
9569   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9570 }
9571
9572 /* The type of value designated by TYPE, with all aligners removed.  */
9573
9574 struct type *
9575 ada_aligned_type (struct type *type)
9576 {
9577   if (ada_is_aligner_type (type))
9578     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9579   else
9580     return ada_get_base_type (type);
9581 }
9582
9583
9584 /* The address of the aligned value in an object at address VALADDR
9585    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9586
9587 const gdb_byte *
9588 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9589 {
9590   if (ada_is_aligner_type (type))
9591     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9592                                    valaddr +
9593                                    TYPE_FIELD_BITPOS (type,
9594                                                       0) / TARGET_CHAR_BIT);
9595   else
9596     return valaddr;
9597 }
9598
9599
9600
9601 /* The printed representation of an enumeration literal with encoded
9602    name NAME.  The value is good to the next call of ada_enum_name.  */
9603 const char *
9604 ada_enum_name (const char *name)
9605 {
9606   static char *result;
9607   static size_t result_len = 0;
9608   const char *tmp;
9609
9610   /* First, unqualify the enumeration name:
9611      1. Search for the last '.' character.  If we find one, then skip
9612      all the preceding characters, the unqualified name starts
9613      right after that dot.
9614      2. Otherwise, we may be debugging on a target where the compiler
9615      translates dots into "__".  Search forward for double underscores,
9616      but stop searching when we hit an overloading suffix, which is
9617      of the form "__" followed by digits.  */
9618
9619   tmp = strrchr (name, '.');
9620   if (tmp != NULL)
9621     name = tmp + 1;
9622   else
9623     {
9624       while ((tmp = strstr (name, "__")) != NULL)
9625         {
9626           if (isdigit (tmp[2]))
9627             break;
9628           else
9629             name = tmp + 2;
9630         }
9631     }
9632
9633   if (name[0] == 'Q')
9634     {
9635       int v;
9636
9637       if (name[1] == 'U' || name[1] == 'W')
9638         {
9639           if (sscanf (name + 2, "%x", &v) != 1)
9640             return name;
9641         }
9642       else
9643         return name;
9644
9645       GROW_VECT (result, result_len, 16);
9646       if (isascii (v) && isprint (v))
9647         xsnprintf (result, result_len, "'%c'", v);
9648       else if (name[1] == 'U')
9649         xsnprintf (result, result_len, "[\"%02x\"]", v);
9650       else
9651         xsnprintf (result, result_len, "[\"%04x\"]", v);
9652
9653       return result;
9654     }
9655   else
9656     {
9657       tmp = strstr (name, "__");
9658       if (tmp == NULL)
9659         tmp = strstr (name, "$");
9660       if (tmp != NULL)
9661         {
9662           GROW_VECT (result, result_len, tmp - name + 1);
9663           strncpy (result, name, tmp - name);
9664           result[tmp - name] = '\0';
9665           return result;
9666         }
9667
9668       return name;
9669     }
9670 }
9671
9672 /* Evaluate the subexpression of EXP starting at *POS as for
9673    evaluate_type, updating *POS to point just past the evaluated
9674    expression.  */
9675
9676 static struct value *
9677 evaluate_subexp_type (struct expression *exp, int *pos)
9678 {
9679   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9680 }
9681
9682 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9683    value it wraps.  */
9684
9685 static struct value *
9686 unwrap_value (struct value *val)
9687 {
9688   struct type *type = ada_check_typedef (value_type (val));
9689
9690   if (ada_is_aligner_type (type))
9691     {
9692       struct value *v = ada_value_struct_elt (val, "F", 0);
9693       struct type *val_type = ada_check_typedef (value_type (v));
9694
9695       if (ada_type_name (val_type) == NULL)
9696         TYPE_NAME (val_type) = ada_type_name (type);
9697
9698       return unwrap_value (v);
9699     }
9700   else
9701     {
9702       struct type *raw_real_type =
9703         ada_check_typedef (ada_get_base_type (type));
9704
9705       /* If there is no parallel XVS or XVE type, then the value is
9706          already unwrapped.  Return it without further modification.  */
9707       if ((type == raw_real_type)
9708           && ada_find_parallel_type (type, "___XVE") == NULL)
9709         return val;
9710
9711       return
9712         coerce_unspec_val_to_type
9713         (val, ada_to_fixed_type (raw_real_type, 0,
9714                                  value_address (val),
9715                                  NULL, 1));
9716     }
9717 }
9718
9719 static struct value *
9720 cast_from_fixed (struct type *type, struct value *arg)
9721 {
9722   struct value *scale = ada_scaling_factor (value_type (arg));
9723   arg = value_cast (value_type (scale), arg);
9724
9725   arg = value_binop (arg, scale, BINOP_MUL);
9726   return value_cast (type, arg);
9727 }
9728
9729 static struct value *
9730 cast_to_fixed (struct type *type, struct value *arg)
9731 {
9732   if (type == value_type (arg))
9733     return arg;
9734
9735   struct value *scale = ada_scaling_factor (type);
9736   if (ada_is_fixed_point_type (value_type (arg)))
9737     arg = cast_from_fixed (value_type (scale), arg);
9738   else
9739     arg = value_cast (value_type (scale), arg);
9740
9741   arg = value_binop (arg, scale, BINOP_DIV);
9742   return value_cast (type, arg);
9743 }
9744
9745 /* Given two array types T1 and T2, return nonzero iff both arrays
9746    contain the same number of elements.  */
9747
9748 static int
9749 ada_same_array_size_p (struct type *t1, struct type *t2)
9750 {
9751   LONGEST lo1, hi1, lo2, hi2;
9752
9753   /* Get the array bounds in order to verify that the size of
9754      the two arrays match.  */
9755   if (!get_array_bounds (t1, &lo1, &hi1)
9756       || !get_array_bounds (t2, &lo2, &hi2))
9757     error (_("unable to determine array bounds"));
9758
9759   /* To make things easier for size comparison, normalize a bit
9760      the case of empty arrays by making sure that the difference
9761      between upper bound and lower bound is always -1.  */
9762   if (lo1 > hi1)
9763     hi1 = lo1 - 1;
9764   if (lo2 > hi2)
9765     hi2 = lo2 - 1;
9766
9767   return (hi1 - lo1 == hi2 - lo2);
9768 }
9769
9770 /* Assuming that VAL is an array of integrals, and TYPE represents
9771    an array with the same number of elements, but with wider integral
9772    elements, return an array "casted" to TYPE.  In practice, this
9773    means that the returned array is built by casting each element
9774    of the original array into TYPE's (wider) element type.  */
9775
9776 static struct value *
9777 ada_promote_array_of_integrals (struct type *type, struct value *val)
9778 {
9779   struct type *elt_type = TYPE_TARGET_TYPE (type);
9780   LONGEST lo, hi;
9781   struct value *res;
9782   LONGEST i;
9783
9784   /* Verify that both val and type are arrays of scalars, and
9785      that the size of val's elements is smaller than the size
9786      of type's element.  */
9787   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9788   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9789   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9790   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9791   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9792               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9793
9794   if (!get_array_bounds (type, &lo, &hi))
9795     error (_("unable to determine array bounds"));
9796
9797   res = allocate_value (type);
9798
9799   /* Promote each array element.  */
9800   for (i = 0; i < hi - lo + 1; i++)
9801     {
9802       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9803
9804       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9805               value_contents_all (elt), TYPE_LENGTH (elt_type));
9806     }
9807
9808   return res;
9809 }
9810
9811 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9812    return the converted value.  */
9813
9814 static struct value *
9815 coerce_for_assign (struct type *type, struct value *val)
9816 {
9817   struct type *type2 = value_type (val);
9818
9819   if (type == type2)
9820     return val;
9821
9822   type2 = ada_check_typedef (type2);
9823   type = ada_check_typedef (type);
9824
9825   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9826       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9827     {
9828       val = ada_value_ind (val);
9829       type2 = value_type (val);
9830     }
9831
9832   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9833       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9834     {
9835       if (!ada_same_array_size_p (type, type2))
9836         error (_("cannot assign arrays of different length"));
9837
9838       if (is_integral_type (TYPE_TARGET_TYPE (type))
9839           && is_integral_type (TYPE_TARGET_TYPE (type2))
9840           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9841                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9842         {
9843           /* Allow implicit promotion of the array elements to
9844              a wider type.  */
9845           return ada_promote_array_of_integrals (type, val);
9846         }
9847
9848       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9849           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9850         error (_("Incompatible types in assignment"));
9851       deprecated_set_value_type (val, type);
9852     }
9853   return val;
9854 }
9855
9856 static struct value *
9857 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9858 {
9859   struct value *val;
9860   struct type *type1, *type2;
9861   LONGEST v, v1, v2;
9862
9863   arg1 = coerce_ref (arg1);
9864   arg2 = coerce_ref (arg2);
9865   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9866   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9867
9868   if (TYPE_CODE (type1) != TYPE_CODE_INT
9869       || TYPE_CODE (type2) != TYPE_CODE_INT)
9870     return value_binop (arg1, arg2, op);
9871
9872   switch (op)
9873     {
9874     case BINOP_MOD:
9875     case BINOP_DIV:
9876     case BINOP_REM:
9877       break;
9878     default:
9879       return value_binop (arg1, arg2, op);
9880     }
9881
9882   v2 = value_as_long (arg2);
9883   if (v2 == 0)
9884     error (_("second operand of %s must not be zero."), op_string (op));
9885
9886   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9887     return value_binop (arg1, arg2, op);
9888
9889   v1 = value_as_long (arg1);
9890   switch (op)
9891     {
9892     case BINOP_DIV:
9893       v = v1 / v2;
9894       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9895         v += v > 0 ? -1 : 1;
9896       break;
9897     case BINOP_REM:
9898       v = v1 % v2;
9899       if (v * v1 < 0)
9900         v -= v2;
9901       break;
9902     default:
9903       /* Should not reach this point.  */
9904       v = 0;
9905     }
9906
9907   val = allocate_value (type1);
9908   store_unsigned_integer (value_contents_raw (val),
9909                           TYPE_LENGTH (value_type (val)),
9910                           gdbarch_byte_order (get_type_arch (type1)), v);
9911   return val;
9912 }
9913
9914 static int
9915 ada_value_equal (struct value *arg1, struct value *arg2)
9916 {
9917   if (ada_is_direct_array_type (value_type (arg1))
9918       || ada_is_direct_array_type (value_type (arg2)))
9919     {
9920       struct type *arg1_type, *arg2_type;
9921
9922       /* Automatically dereference any array reference before
9923          we attempt to perform the comparison.  */
9924       arg1 = ada_coerce_ref (arg1);
9925       arg2 = ada_coerce_ref (arg2);
9926
9927       arg1 = ada_coerce_to_simple_array (arg1);
9928       arg2 = ada_coerce_to_simple_array (arg2);
9929
9930       arg1_type = ada_check_typedef (value_type (arg1));
9931       arg2_type = ada_check_typedef (value_type (arg2));
9932
9933       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9934           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9935         error (_("Attempt to compare array with non-array"));
9936       /* FIXME: The following works only for types whose
9937          representations use all bits (no padding or undefined bits)
9938          and do not have user-defined equality.  */
9939       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9940               && memcmp (value_contents (arg1), value_contents (arg2),
9941                          TYPE_LENGTH (arg1_type)) == 0);
9942     }
9943   return value_equal (arg1, arg2);
9944 }
9945
9946 /* Total number of component associations in the aggregate starting at
9947    index PC in EXP.  Assumes that index PC is the start of an
9948    OP_AGGREGATE.  */
9949
9950 static int
9951 num_component_specs (struct expression *exp, int pc)
9952 {
9953   int n, m, i;
9954
9955   m = exp->elts[pc + 1].longconst;
9956   pc += 3;
9957   n = 0;
9958   for (i = 0; i < m; i += 1)
9959     {
9960       switch (exp->elts[pc].opcode) 
9961         {
9962         default:
9963           n += 1;
9964           break;
9965         case OP_CHOICES:
9966           n += exp->elts[pc + 1].longconst;
9967           break;
9968         }
9969       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9970     }
9971   return n;
9972 }
9973
9974 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9975    component of LHS (a simple array or a record), updating *POS past
9976    the expression, assuming that LHS is contained in CONTAINER.  Does
9977    not modify the inferior's memory, nor does it modify LHS (unless
9978    LHS == CONTAINER).  */
9979
9980 static void
9981 assign_component (struct value *container, struct value *lhs, LONGEST index,
9982                   struct expression *exp, int *pos)
9983 {
9984   struct value *mark = value_mark ();
9985   struct value *elt;
9986   struct type *lhs_type = check_typedef (value_type (lhs));
9987
9988   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9989     {
9990       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9991       struct value *index_val = value_from_longest (index_type, index);
9992
9993       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9994     }
9995   else
9996     {
9997       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9998       elt = ada_to_fixed_value (elt);
9999     }
10000
10001   if (exp->elts[*pos].opcode == OP_AGGREGATE)
10002     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
10003   else
10004     value_assign_to_component (container, elt, 
10005                                ada_evaluate_subexp (NULL, exp, pos, 
10006                                                     EVAL_NORMAL));
10007
10008   value_free_to_mark (mark);
10009 }
10010
10011 /* Assuming that LHS represents an lvalue having a record or array
10012    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
10013    of that aggregate's value to LHS, advancing *POS past the
10014    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10015    lvalue containing LHS (possibly LHS itself).  Does not modify
10016    the inferior's memory, nor does it modify the contents of 
10017    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10018
10019 static struct value *
10020 assign_aggregate (struct value *container, 
10021                   struct value *lhs, struct expression *exp, 
10022                   int *pos, enum noside noside)
10023 {
10024   struct type *lhs_type;
10025   int n = exp->elts[*pos+1].longconst;
10026   LONGEST low_index, high_index;
10027   int num_specs;
10028   LONGEST *indices;
10029   int max_indices, num_indices;
10030   int i;
10031
10032   *pos += 3;
10033   if (noside != EVAL_NORMAL)
10034     {
10035       for (i = 0; i < n; i += 1)
10036         ada_evaluate_subexp (NULL, exp, pos, noside);
10037       return container;
10038     }
10039
10040   container = ada_coerce_ref (container);
10041   if (ada_is_direct_array_type (value_type (container)))
10042     container = ada_coerce_to_simple_array (container);
10043   lhs = ada_coerce_ref (lhs);
10044   if (!deprecated_value_modifiable (lhs))
10045     error (_("Left operand of assignment is not a modifiable lvalue."));
10046
10047   lhs_type = check_typedef (value_type (lhs));
10048   if (ada_is_direct_array_type (lhs_type))
10049     {
10050       lhs = ada_coerce_to_simple_array (lhs);
10051       lhs_type = check_typedef (value_type (lhs));
10052       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10053       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10054     }
10055   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10056     {
10057       low_index = 0;
10058       high_index = num_visible_fields (lhs_type) - 1;
10059     }
10060   else
10061     error (_("Left-hand side must be array or record."));
10062
10063   num_specs = num_component_specs (exp, *pos - 3);
10064   max_indices = 4 * num_specs + 4;
10065   indices = XALLOCAVEC (LONGEST, max_indices);
10066   indices[0] = indices[1] = low_index - 1;
10067   indices[2] = indices[3] = high_index + 1;
10068   num_indices = 4;
10069
10070   for (i = 0; i < n; i += 1)
10071     {
10072       switch (exp->elts[*pos].opcode)
10073         {
10074           case OP_CHOICES:
10075             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10076                                            &num_indices, max_indices,
10077                                            low_index, high_index);
10078             break;
10079           case OP_POSITIONAL:
10080             aggregate_assign_positional (container, lhs, exp, pos, indices,
10081                                          &num_indices, max_indices,
10082                                          low_index, high_index);
10083             break;
10084           case OP_OTHERS:
10085             if (i != n-1)
10086               error (_("Misplaced 'others' clause"));
10087             aggregate_assign_others (container, lhs, exp, pos, indices, 
10088                                      num_indices, low_index, high_index);
10089             break;
10090           default:
10091             error (_("Internal error: bad aggregate clause"));
10092         }
10093     }
10094
10095   return container;
10096 }
10097               
10098 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10099    construct at *POS, updating *POS past the construct, given that
10100    the positions are relative to lower bound LOW, where HIGH is the 
10101    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10102    updating *NUM_INDICES as needed.  CONTAINER is as for
10103    assign_aggregate.  */
10104 static void
10105 aggregate_assign_positional (struct value *container,
10106                              struct value *lhs, struct expression *exp,
10107                              int *pos, LONGEST *indices, int *num_indices,
10108                              int max_indices, LONGEST low, LONGEST high) 
10109 {
10110   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10111   
10112   if (ind - 1 == high)
10113     warning (_("Extra components in aggregate ignored."));
10114   if (ind <= high)
10115     {
10116       add_component_interval (ind, ind, indices, num_indices, max_indices);
10117       *pos += 3;
10118       assign_component (container, lhs, ind, exp, pos);
10119     }
10120   else
10121     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10122 }
10123
10124 /* Assign into the components of LHS indexed by the OP_CHOICES
10125    construct at *POS, updating *POS past the construct, given that
10126    the allowable indices are LOW..HIGH.  Record the indices assigned
10127    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10128    needed.  CONTAINER is as for assign_aggregate.  */
10129 static void
10130 aggregate_assign_from_choices (struct value *container,
10131                                struct value *lhs, struct expression *exp,
10132                                int *pos, LONGEST *indices, int *num_indices,
10133                                int max_indices, LONGEST low, LONGEST high) 
10134 {
10135   int j;
10136   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10137   int choice_pos, expr_pc;
10138   int is_array = ada_is_direct_array_type (value_type (lhs));
10139
10140   choice_pos = *pos += 3;
10141
10142   for (j = 0; j < n_choices; j += 1)
10143     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10144   expr_pc = *pos;
10145   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10146   
10147   for (j = 0; j < n_choices; j += 1)
10148     {
10149       LONGEST lower, upper;
10150       enum exp_opcode op = exp->elts[choice_pos].opcode;
10151
10152       if (op == OP_DISCRETE_RANGE)
10153         {
10154           choice_pos += 1;
10155           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10156                                                       EVAL_NORMAL));
10157           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10158                                                       EVAL_NORMAL));
10159         }
10160       else if (is_array)
10161         {
10162           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10163                                                       EVAL_NORMAL));
10164           upper = lower;
10165         }
10166       else
10167         {
10168           int ind;
10169           const char *name;
10170
10171           switch (op)
10172             {
10173             case OP_NAME:
10174               name = &exp->elts[choice_pos + 2].string;
10175               break;
10176             case OP_VAR_VALUE:
10177               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10178               break;
10179             default:
10180               error (_("Invalid record component association."));
10181             }
10182           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10183           ind = 0;
10184           if (! find_struct_field (name, value_type (lhs), 0, 
10185                                    NULL, NULL, NULL, NULL, &ind))
10186             error (_("Unknown component name: %s."), name);
10187           lower = upper = ind;
10188         }
10189
10190       if (lower <= upper && (lower < low || upper > high))
10191         error (_("Index in component association out of bounds."));
10192
10193       add_component_interval (lower, upper, indices, num_indices,
10194                               max_indices);
10195       while (lower <= upper)
10196         {
10197           int pos1;
10198
10199           pos1 = expr_pc;
10200           assign_component (container, lhs, lower, exp, &pos1);
10201           lower += 1;
10202         }
10203     }
10204 }
10205
10206 /* Assign the value of the expression in the OP_OTHERS construct in
10207    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10208    have not been previously assigned.  The index intervals already assigned
10209    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10210    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10211 static void
10212 aggregate_assign_others (struct value *container,
10213                          struct value *lhs, struct expression *exp,
10214                          int *pos, LONGEST *indices, int num_indices,
10215                          LONGEST low, LONGEST high) 
10216 {
10217   int i;
10218   int expr_pc = *pos + 1;
10219   
10220   for (i = 0; i < num_indices - 2; i += 2)
10221     {
10222       LONGEST ind;
10223
10224       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10225         {
10226           int localpos;
10227
10228           localpos = expr_pc;
10229           assign_component (container, lhs, ind, exp, &localpos);
10230         }
10231     }
10232   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10233 }
10234
10235 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10236    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10237    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10238    MAX_SIZE.  The resulting intervals do not overlap.  */
10239 static void
10240 add_component_interval (LONGEST low, LONGEST high, 
10241                         LONGEST* indices, int *size, int max_size)
10242 {
10243   int i, j;
10244
10245   for (i = 0; i < *size; i += 2) {
10246     if (high >= indices[i] && low <= indices[i + 1])
10247       {
10248         int kh;
10249
10250         for (kh = i + 2; kh < *size; kh += 2)
10251           if (high < indices[kh])
10252             break;
10253         if (low < indices[i])
10254           indices[i] = low;
10255         indices[i + 1] = indices[kh - 1];
10256         if (high > indices[i + 1])
10257           indices[i + 1] = high;
10258         memcpy (indices + i + 2, indices + kh, *size - kh);
10259         *size -= kh - i - 2;
10260         return;
10261       }
10262     else if (high < indices[i])
10263       break;
10264   }
10265         
10266   if (*size == max_size)
10267     error (_("Internal error: miscounted aggregate components."));
10268   *size += 2;
10269   for (j = *size-1; j >= i+2; j -= 1)
10270     indices[j] = indices[j - 2];
10271   indices[i] = low;
10272   indices[i + 1] = high;
10273 }
10274
10275 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10276    is different.  */
10277
10278 static struct value *
10279 ada_value_cast (struct type *type, struct value *arg2)
10280 {
10281   if (type == ada_check_typedef (value_type (arg2)))
10282     return arg2;
10283
10284   if (ada_is_fixed_point_type (type))
10285     return (cast_to_fixed (type, arg2));
10286
10287   if (ada_is_fixed_point_type (value_type (arg2)))
10288     return cast_from_fixed (type, arg2);
10289
10290   return value_cast (type, arg2);
10291 }
10292
10293 /*  Evaluating Ada expressions, and printing their result.
10294     ------------------------------------------------------
10295
10296     1. Introduction:
10297     ----------------
10298
10299     We usually evaluate an Ada expression in order to print its value.
10300     We also evaluate an expression in order to print its type, which
10301     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10302     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10303     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10304     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10305     similar.
10306
10307     Evaluating expressions is a little more complicated for Ada entities
10308     than it is for entities in languages such as C.  The main reason for
10309     this is that Ada provides types whose definition might be dynamic.
10310     One example of such types is variant records.  Or another example
10311     would be an array whose bounds can only be known at run time.
10312
10313     The following description is a general guide as to what should be
10314     done (and what should NOT be done) in order to evaluate an expression
10315     involving such types, and when.  This does not cover how the semantic
10316     information is encoded by GNAT as this is covered separatly.  For the
10317     document used as the reference for the GNAT encoding, see exp_dbug.ads
10318     in the GNAT sources.
10319
10320     Ideally, we should embed each part of this description next to its
10321     associated code.  Unfortunately, the amount of code is so vast right
10322     now that it's hard to see whether the code handling a particular
10323     situation might be duplicated or not.  One day, when the code is
10324     cleaned up, this guide might become redundant with the comments
10325     inserted in the code, and we might want to remove it.
10326
10327     2. ``Fixing'' an Entity, the Simple Case:
10328     -----------------------------------------
10329
10330     When evaluating Ada expressions, the tricky issue is that they may
10331     reference entities whose type contents and size are not statically
10332     known.  Consider for instance a variant record:
10333
10334        type Rec (Empty : Boolean := True) is record
10335           case Empty is
10336              when True => null;
10337              when False => Value : Integer;
10338           end case;
10339        end record;
10340        Yes : Rec := (Empty => False, Value => 1);
10341        No  : Rec := (empty => True);
10342
10343     The size and contents of that record depends on the value of the
10344     descriminant (Rec.Empty).  At this point, neither the debugging
10345     information nor the associated type structure in GDB are able to
10346     express such dynamic types.  So what the debugger does is to create
10347     "fixed" versions of the type that applies to the specific object.
10348     We also informally refer to this opperation as "fixing" an object,
10349     which means creating its associated fixed type.
10350
10351     Example: when printing the value of variable "Yes" above, its fixed
10352     type would look like this:
10353
10354        type Rec is record
10355           Empty : Boolean;
10356           Value : Integer;
10357        end record;
10358
10359     On the other hand, if we printed the value of "No", its fixed type
10360     would become:
10361
10362        type Rec is record
10363           Empty : Boolean;
10364        end record;
10365
10366     Things become a little more complicated when trying to fix an entity
10367     with a dynamic type that directly contains another dynamic type,
10368     such as an array of variant records, for instance.  There are
10369     two possible cases: Arrays, and records.
10370
10371     3. ``Fixing'' Arrays:
10372     ---------------------
10373
10374     The type structure in GDB describes an array in terms of its bounds,
10375     and the type of its elements.  By design, all elements in the array
10376     have the same type and we cannot represent an array of variant elements
10377     using the current type structure in GDB.  When fixing an array,
10378     we cannot fix the array element, as we would potentially need one
10379     fixed type per element of the array.  As a result, the best we can do
10380     when fixing an array is to produce an array whose bounds and size
10381     are correct (allowing us to read it from memory), but without having
10382     touched its element type.  Fixing each element will be done later,
10383     when (if) necessary.
10384
10385     Arrays are a little simpler to handle than records, because the same
10386     amount of memory is allocated for each element of the array, even if
10387     the amount of space actually used by each element differs from element
10388     to element.  Consider for instance the following array of type Rec:
10389
10390        type Rec_Array is array (1 .. 2) of Rec;
10391
10392     The actual amount of memory occupied by each element might be different
10393     from element to element, depending on the value of their discriminant.
10394     But the amount of space reserved for each element in the array remains
10395     fixed regardless.  So we simply need to compute that size using
10396     the debugging information available, from which we can then determine
10397     the array size (we multiply the number of elements of the array by
10398     the size of each element).
10399
10400     The simplest case is when we have an array of a constrained element
10401     type. For instance, consider the following type declarations:
10402
10403         type Bounded_String (Max_Size : Integer) is
10404            Length : Integer;
10405            Buffer : String (1 .. Max_Size);
10406         end record;
10407         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10408
10409     In this case, the compiler describes the array as an array of
10410     variable-size elements (identified by its XVS suffix) for which
10411     the size can be read in the parallel XVZ variable.
10412
10413     In the case of an array of an unconstrained element type, the compiler
10414     wraps the array element inside a private PAD type.  This type should not
10415     be shown to the user, and must be "unwrap"'ed before printing.  Note
10416     that we also use the adjective "aligner" in our code to designate
10417     these wrapper types.
10418
10419     In some cases, the size allocated for each element is statically
10420     known.  In that case, the PAD type already has the correct size,
10421     and the array element should remain unfixed.
10422
10423     But there are cases when this size is not statically known.
10424     For instance, assuming that "Five" is an integer variable:
10425
10426         type Dynamic is array (1 .. Five) of Integer;
10427         type Wrapper (Has_Length : Boolean := False) is record
10428            Data : Dynamic;
10429            case Has_Length is
10430               when True => Length : Integer;
10431               when False => null;
10432            end case;
10433         end record;
10434         type Wrapper_Array is array (1 .. 2) of Wrapper;
10435
10436         Hello : Wrapper_Array := (others => (Has_Length => True,
10437                                              Data => (others => 17),
10438                                              Length => 1));
10439
10440
10441     The debugging info would describe variable Hello as being an
10442     array of a PAD type.  The size of that PAD type is not statically
10443     known, but can be determined using a parallel XVZ variable.
10444     In that case, a copy of the PAD type with the correct size should
10445     be used for the fixed array.
10446
10447     3. ``Fixing'' record type objects:
10448     ----------------------------------
10449
10450     Things are slightly different from arrays in the case of dynamic
10451     record types.  In this case, in order to compute the associated
10452     fixed type, we need to determine the size and offset of each of
10453     its components.  This, in turn, requires us to compute the fixed
10454     type of each of these components.
10455
10456     Consider for instance the example:
10457
10458         type Bounded_String (Max_Size : Natural) is record
10459            Str : String (1 .. Max_Size);
10460            Length : Natural;
10461         end record;
10462         My_String : Bounded_String (Max_Size => 10);
10463
10464     In that case, the position of field "Length" depends on the size
10465     of field Str, which itself depends on the value of the Max_Size
10466     discriminant.  In order to fix the type of variable My_String,
10467     we need to fix the type of field Str.  Therefore, fixing a variant
10468     record requires us to fix each of its components.
10469
10470     However, if a component does not have a dynamic size, the component
10471     should not be fixed.  In particular, fields that use a PAD type
10472     should not fixed.  Here is an example where this might happen
10473     (assuming type Rec above):
10474
10475        type Container (Big : Boolean) is record
10476           First : Rec;
10477           After : Integer;
10478           case Big is
10479              when True => Another : Integer;
10480              when False => null;
10481           end case;
10482        end record;
10483        My_Container : Container := (Big => False,
10484                                     First => (Empty => True),
10485                                     After => 42);
10486
10487     In that example, the compiler creates a PAD type for component First,
10488     whose size is constant, and then positions the component After just
10489     right after it.  The offset of component After is therefore constant
10490     in this case.
10491
10492     The debugger computes the position of each field based on an algorithm
10493     that uses, among other things, the actual position and size of the field
10494     preceding it.  Let's now imagine that the user is trying to print
10495     the value of My_Container.  If the type fixing was recursive, we would
10496     end up computing the offset of field After based on the size of the
10497     fixed version of field First.  And since in our example First has
10498     only one actual field, the size of the fixed type is actually smaller
10499     than the amount of space allocated to that field, and thus we would
10500     compute the wrong offset of field After.
10501
10502     To make things more complicated, we need to watch out for dynamic
10503     components of variant records (identified by the ___XVL suffix in
10504     the component name).  Even if the target type is a PAD type, the size
10505     of that type might not be statically known.  So the PAD type needs
10506     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10507     we might end up with the wrong size for our component.  This can be
10508     observed with the following type declarations:
10509
10510         type Octal is new Integer range 0 .. 7;
10511         type Octal_Array is array (Positive range <>) of Octal;
10512         pragma Pack (Octal_Array);
10513
10514         type Octal_Buffer (Size : Positive) is record
10515            Buffer : Octal_Array (1 .. Size);
10516            Length : Integer;
10517         end record;
10518
10519     In that case, Buffer is a PAD type whose size is unset and needs
10520     to be computed by fixing the unwrapped type.
10521
10522     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10523     ----------------------------------------------------------
10524
10525     Lastly, when should the sub-elements of an entity that remained unfixed
10526     thus far, be actually fixed?
10527
10528     The answer is: Only when referencing that element.  For instance
10529     when selecting one component of a record, this specific component
10530     should be fixed at that point in time.  Or when printing the value
10531     of a record, each component should be fixed before its value gets
10532     printed.  Similarly for arrays, the element of the array should be
10533     fixed when printing each element of the array, or when extracting
10534     one element out of that array.  On the other hand, fixing should
10535     not be performed on the elements when taking a slice of an array!
10536
10537     Note that one of the side effects of miscomputing the offset and
10538     size of each field is that we end up also miscomputing the size
10539     of the containing type.  This can have adverse results when computing
10540     the value of an entity.  GDB fetches the value of an entity based
10541     on the size of its type, and thus a wrong size causes GDB to fetch
10542     the wrong amount of memory.  In the case where the computed size is
10543     too small, GDB fetches too little data to print the value of our
10544     entity.  Results in this case are unpredictable, as we usually read
10545     past the buffer containing the data =:-o.  */
10546
10547 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10548    for that subexpression cast to TO_TYPE.  Advance *POS over the
10549    subexpression.  */
10550
10551 static value *
10552 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10553                               enum noside noside, struct type *to_type)
10554 {
10555   int pc = *pos;
10556
10557   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10558       || exp->elts[pc].opcode == OP_VAR_VALUE)
10559     {
10560       (*pos) += 4;
10561
10562       value *val;
10563       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10564         {
10565           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10566             return value_zero (to_type, not_lval);
10567
10568           val = evaluate_var_msym_value (noside,
10569                                          exp->elts[pc + 1].objfile,
10570                                          exp->elts[pc + 2].msymbol);
10571         }
10572       else
10573         val = evaluate_var_value (noside,
10574                                   exp->elts[pc + 1].block,
10575                                   exp->elts[pc + 2].symbol);
10576
10577       if (noside == EVAL_SKIP)
10578         return eval_skip_value (exp);
10579
10580       val = ada_value_cast (to_type, val);
10581
10582       /* Follow the Ada language semantics that do not allow taking
10583          an address of the result of a cast (view conversion in Ada).  */
10584       if (VALUE_LVAL (val) == lval_memory)
10585         {
10586           if (value_lazy (val))
10587             value_fetch_lazy (val);
10588           VALUE_LVAL (val) = not_lval;
10589         }
10590       return val;
10591     }
10592
10593   value *val = evaluate_subexp (to_type, exp, pos, noside);
10594   if (noside == EVAL_SKIP)
10595     return eval_skip_value (exp);
10596   return ada_value_cast (to_type, val);
10597 }
10598
10599 /* Implement the evaluate_exp routine in the exp_descriptor structure
10600    for the Ada language.  */
10601
10602 static struct value *
10603 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10604                      int *pos, enum noside noside)
10605 {
10606   enum exp_opcode op;
10607   int tem;
10608   int pc;
10609   int preeval_pos;
10610   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10611   struct type *type;
10612   int nargs, oplen;
10613   struct value **argvec;
10614
10615   pc = *pos;
10616   *pos += 1;
10617   op = exp->elts[pc].opcode;
10618
10619   switch (op)
10620     {
10621     default:
10622       *pos -= 1;
10623       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10624
10625       if (noside == EVAL_NORMAL)
10626         arg1 = unwrap_value (arg1);
10627
10628       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10629          then we need to perform the conversion manually, because
10630          evaluate_subexp_standard doesn't do it.  This conversion is
10631          necessary in Ada because the different kinds of float/fixed
10632          types in Ada have different representations.
10633
10634          Similarly, we need to perform the conversion from OP_LONG
10635          ourselves.  */
10636       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10637         arg1 = ada_value_cast (expect_type, arg1);
10638
10639       return arg1;
10640
10641     case OP_STRING:
10642       {
10643         struct value *result;
10644
10645         *pos -= 1;
10646         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10647         /* The result type will have code OP_STRING, bashed there from 
10648            OP_ARRAY.  Bash it back.  */
10649         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10650           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10651         return result;
10652       }
10653
10654     case UNOP_CAST:
10655       (*pos) += 2;
10656       type = exp->elts[pc + 1].type;
10657       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10658
10659     case UNOP_QUAL:
10660       (*pos) += 2;
10661       type = exp->elts[pc + 1].type;
10662       return ada_evaluate_subexp (type, exp, pos, noside);
10663
10664     case BINOP_ASSIGN:
10665       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10666       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10667         {
10668           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10669           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10670             return arg1;
10671           return ada_value_assign (arg1, arg1);
10672         }
10673       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10674          except if the lhs of our assignment is a convenience variable.
10675          In the case of assigning to a convenience variable, the lhs
10676          should be exactly the result of the evaluation of the rhs.  */
10677       type = value_type (arg1);
10678       if (VALUE_LVAL (arg1) == lval_internalvar)
10679          type = NULL;
10680       arg2 = evaluate_subexp (type, exp, pos, noside);
10681       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10682         return arg1;
10683       if (ada_is_fixed_point_type (value_type (arg1)))
10684         arg2 = cast_to_fixed (value_type (arg1), arg2);
10685       else if (ada_is_fixed_point_type (value_type (arg2)))
10686         error
10687           (_("Fixed-point values must be assigned to fixed-point variables"));
10688       else
10689         arg2 = coerce_for_assign (value_type (arg1), arg2);
10690       return ada_value_assign (arg1, arg2);
10691
10692     case BINOP_ADD:
10693       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10694       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10695       if (noside == EVAL_SKIP)
10696         goto nosideret;
10697       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10698         return (value_from_longest
10699                  (value_type (arg1),
10700                   value_as_long (arg1) + value_as_long (arg2)));
10701       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10702         return (value_from_longest
10703                  (value_type (arg2),
10704                   value_as_long (arg1) + value_as_long (arg2)));
10705       if ((ada_is_fixed_point_type (value_type (arg1))
10706            || ada_is_fixed_point_type (value_type (arg2)))
10707           && value_type (arg1) != value_type (arg2))
10708         error (_("Operands of fixed-point addition must have the same type"));
10709       /* Do the addition, and cast the result to the type of the first
10710          argument.  We cannot cast the result to a reference type, so if
10711          ARG1 is a reference type, find its underlying type.  */
10712       type = value_type (arg1);
10713       while (TYPE_CODE (type) == TYPE_CODE_REF)
10714         type = TYPE_TARGET_TYPE (type);
10715       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10716       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10717
10718     case BINOP_SUB:
10719       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10720       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10721       if (noside == EVAL_SKIP)
10722         goto nosideret;
10723       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10724         return (value_from_longest
10725                  (value_type (arg1),
10726                   value_as_long (arg1) - value_as_long (arg2)));
10727       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10728         return (value_from_longest
10729                  (value_type (arg2),
10730                   value_as_long (arg1) - value_as_long (arg2)));
10731       if ((ada_is_fixed_point_type (value_type (arg1))
10732            || ada_is_fixed_point_type (value_type (arg2)))
10733           && value_type (arg1) != value_type (arg2))
10734         error (_("Operands of fixed-point subtraction "
10735                  "must have the same type"));
10736       /* Do the substraction, and cast the result to the type of the first
10737          argument.  We cannot cast the result to a reference type, so if
10738          ARG1 is a reference type, find its underlying type.  */
10739       type = value_type (arg1);
10740       while (TYPE_CODE (type) == TYPE_CODE_REF)
10741         type = TYPE_TARGET_TYPE (type);
10742       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10743       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10744
10745     case BINOP_MUL:
10746     case BINOP_DIV:
10747     case BINOP_REM:
10748     case BINOP_MOD:
10749       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10750       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10751       if (noside == EVAL_SKIP)
10752         goto nosideret;
10753       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10754         {
10755           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10756           return value_zero (value_type (arg1), not_lval);
10757         }
10758       else
10759         {
10760           type = builtin_type (exp->gdbarch)->builtin_double;
10761           if (ada_is_fixed_point_type (value_type (arg1)))
10762             arg1 = cast_from_fixed (type, arg1);
10763           if (ada_is_fixed_point_type (value_type (arg2)))
10764             arg2 = cast_from_fixed (type, arg2);
10765           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10766           return ada_value_binop (arg1, arg2, op);
10767         }
10768
10769     case BINOP_EQUAL:
10770     case BINOP_NOTEQUAL:
10771       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10772       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10773       if (noside == EVAL_SKIP)
10774         goto nosideret;
10775       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10776         tem = 0;
10777       else
10778         {
10779           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10780           tem = ada_value_equal (arg1, arg2);
10781         }
10782       if (op == BINOP_NOTEQUAL)
10783         tem = !tem;
10784       type = language_bool_type (exp->language_defn, exp->gdbarch);
10785       return value_from_longest (type, (LONGEST) tem);
10786
10787     case UNOP_NEG:
10788       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10789       if (noside == EVAL_SKIP)
10790         goto nosideret;
10791       else if (ada_is_fixed_point_type (value_type (arg1)))
10792         return value_cast (value_type (arg1), value_neg (arg1));
10793       else
10794         {
10795           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10796           return value_neg (arg1);
10797         }
10798
10799     case BINOP_LOGICAL_AND:
10800     case BINOP_LOGICAL_OR:
10801     case UNOP_LOGICAL_NOT:
10802       {
10803         struct value *val;
10804
10805         *pos -= 1;
10806         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10807         type = language_bool_type (exp->language_defn, exp->gdbarch);
10808         return value_cast (type, val);
10809       }
10810
10811     case BINOP_BITWISE_AND:
10812     case BINOP_BITWISE_IOR:
10813     case BINOP_BITWISE_XOR:
10814       {
10815         struct value *val;
10816
10817         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10818         *pos = pc;
10819         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10820
10821         return value_cast (value_type (arg1), val);
10822       }
10823
10824     case OP_VAR_VALUE:
10825       *pos -= 1;
10826
10827       if (noside == EVAL_SKIP)
10828         {
10829           *pos += 4;
10830           goto nosideret;
10831         }
10832
10833       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10834         /* Only encountered when an unresolved symbol occurs in a
10835            context other than a function call, in which case, it is
10836            invalid.  */
10837         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10838                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10839
10840       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10841         {
10842           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10843           /* Check to see if this is a tagged type.  We also need to handle
10844              the case where the type is a reference to a tagged type, but
10845              we have to be careful to exclude pointers to tagged types.
10846              The latter should be shown as usual (as a pointer), whereas
10847              a reference should mostly be transparent to the user.  */
10848           if (ada_is_tagged_type (type, 0)
10849               || (TYPE_CODE (type) == TYPE_CODE_REF
10850                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10851             {
10852               /* Tagged types are a little special in the fact that the real
10853                  type is dynamic and can only be determined by inspecting the
10854                  object's tag.  This means that we need to get the object's
10855                  value first (EVAL_NORMAL) and then extract the actual object
10856                  type from its tag.
10857
10858                  Note that we cannot skip the final step where we extract
10859                  the object type from its tag, because the EVAL_NORMAL phase
10860                  results in dynamic components being resolved into fixed ones.
10861                  This can cause problems when trying to print the type
10862                  description of tagged types whose parent has a dynamic size:
10863                  We use the type name of the "_parent" component in order
10864                  to print the name of the ancestor type in the type description.
10865                  If that component had a dynamic size, the resolution into
10866                  a fixed type would result in the loss of that type name,
10867                  thus preventing us from printing the name of the ancestor
10868                  type in the type description.  */
10869               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10870
10871               if (TYPE_CODE (type) != TYPE_CODE_REF)
10872                 {
10873                   struct type *actual_type;
10874
10875                   actual_type = type_from_tag (ada_value_tag (arg1));
10876                   if (actual_type == NULL)
10877                     /* If, for some reason, we were unable to determine
10878                        the actual type from the tag, then use the static
10879                        approximation that we just computed as a fallback.
10880                        This can happen if the debugging information is
10881                        incomplete, for instance.  */
10882                     actual_type = type;
10883                   return value_zero (actual_type, not_lval);
10884                 }
10885               else
10886                 {
10887                   /* In the case of a ref, ada_coerce_ref takes care
10888                      of determining the actual type.  But the evaluation
10889                      should return a ref as it should be valid to ask
10890                      for its address; so rebuild a ref after coerce.  */
10891                   arg1 = ada_coerce_ref (arg1);
10892                   return value_ref (arg1, TYPE_CODE_REF);
10893                 }
10894             }
10895
10896           /* Records and unions for which GNAT encodings have been
10897              generated need to be statically fixed as well.
10898              Otherwise, non-static fixing produces a type where
10899              all dynamic properties are removed, which prevents "ptype"
10900              from being able to completely describe the type.
10901              For instance, a case statement in a variant record would be
10902              replaced by the relevant components based on the actual
10903              value of the discriminants.  */
10904           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10905                && dynamic_template_type (type) != NULL)
10906               || (TYPE_CODE (type) == TYPE_CODE_UNION
10907                   && ada_find_parallel_type (type, "___XVU") != NULL))
10908             {
10909               *pos += 4;
10910               return value_zero (to_static_fixed_type (type), not_lval);
10911             }
10912         }
10913
10914       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10915       return ada_to_fixed_value (arg1);
10916
10917     case OP_FUNCALL:
10918       (*pos) += 2;
10919
10920       /* Allocate arg vector, including space for the function to be
10921          called in argvec[0] and a terminating NULL.  */
10922       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10923       argvec = XALLOCAVEC (struct value *, nargs + 2);
10924
10925       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10926           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10927         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10928                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10929       else
10930         {
10931           for (tem = 0; tem <= nargs; tem += 1)
10932             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10933           argvec[tem] = 0;
10934
10935           if (noside == EVAL_SKIP)
10936             goto nosideret;
10937         }
10938
10939       if (ada_is_constrained_packed_array_type
10940           (desc_base_type (value_type (argvec[0]))))
10941         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10942       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10943                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10944         /* This is a packed array that has already been fixed, and
10945            therefore already coerced to a simple array.  Nothing further
10946            to do.  */
10947         ;
10948       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10949         {
10950           /* Make sure we dereference references so that all the code below
10951              feels like it's really handling the referenced value.  Wrapping
10952              types (for alignment) may be there, so make sure we strip them as
10953              well.  */
10954           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10955         }
10956       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10957                && VALUE_LVAL (argvec[0]) == lval_memory)
10958         argvec[0] = value_addr (argvec[0]);
10959
10960       type = ada_check_typedef (value_type (argvec[0]));
10961
10962       /* Ada allows us to implicitly dereference arrays when subscripting
10963          them.  So, if this is an array typedef (encoding use for array
10964          access types encoded as fat pointers), strip it now.  */
10965       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10966         type = ada_typedef_target_type (type);
10967
10968       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10969         {
10970           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10971             {
10972             case TYPE_CODE_FUNC:
10973               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10974               break;
10975             case TYPE_CODE_ARRAY:
10976               break;
10977             case TYPE_CODE_STRUCT:
10978               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10979                 argvec[0] = ada_value_ind (argvec[0]);
10980               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10981               break;
10982             default:
10983               error (_("cannot subscript or call something of type `%s'"),
10984                      ada_type_name (value_type (argvec[0])));
10985               break;
10986             }
10987         }
10988
10989       switch (TYPE_CODE (type))
10990         {
10991         case TYPE_CODE_FUNC:
10992           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10993             {
10994               if (TYPE_TARGET_TYPE (type) == NULL)
10995                 error_call_unknown_return_type (NULL);
10996               return allocate_value (TYPE_TARGET_TYPE (type));
10997             }
10998           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
10999         case TYPE_CODE_INTERNAL_FUNCTION:
11000           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11001             /* We don't know anything about what the internal
11002                function might return, but we have to return
11003                something.  */
11004             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11005                                not_lval);
11006           else
11007             return call_internal_function (exp->gdbarch, exp->language_defn,
11008                                            argvec[0], nargs, argvec + 1);
11009
11010         case TYPE_CODE_STRUCT:
11011           {
11012             int arity;
11013
11014             arity = ada_array_arity (type);
11015             type = ada_array_element_type (type, nargs);
11016             if (type == NULL)
11017               error (_("cannot subscript or call a record"));
11018             if (arity != nargs)
11019               error (_("wrong number of subscripts; expecting %d"), arity);
11020             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11021               return value_zero (ada_aligned_type (type), lval_memory);
11022             return
11023               unwrap_value (ada_value_subscript
11024                             (argvec[0], nargs, argvec + 1));
11025           }
11026         case TYPE_CODE_ARRAY:
11027           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11028             {
11029               type = ada_array_element_type (type, nargs);
11030               if (type == NULL)
11031                 error (_("element type of array unknown"));
11032               else
11033                 return value_zero (ada_aligned_type (type), lval_memory);
11034             }
11035           return
11036             unwrap_value (ada_value_subscript
11037                           (ada_coerce_to_simple_array (argvec[0]),
11038                            nargs, argvec + 1));
11039         case TYPE_CODE_PTR:     /* Pointer to array */
11040           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11041             {
11042               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11043               type = ada_array_element_type (type, nargs);
11044               if (type == NULL)
11045                 error (_("element type of array unknown"));
11046               else
11047                 return value_zero (ada_aligned_type (type), lval_memory);
11048             }
11049           return
11050             unwrap_value (ada_value_ptr_subscript (argvec[0],
11051                                                    nargs, argvec + 1));
11052
11053         default:
11054           error (_("Attempt to index or call something other than an "
11055                    "array or function"));
11056         }
11057
11058     case TERNOP_SLICE:
11059       {
11060         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11061         struct value *low_bound_val =
11062           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11063         struct value *high_bound_val =
11064           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11065         LONGEST low_bound;
11066         LONGEST high_bound;
11067
11068         low_bound_val = coerce_ref (low_bound_val);
11069         high_bound_val = coerce_ref (high_bound_val);
11070         low_bound = value_as_long (low_bound_val);
11071         high_bound = value_as_long (high_bound_val);
11072
11073         if (noside == EVAL_SKIP)
11074           goto nosideret;
11075
11076         /* If this is a reference to an aligner type, then remove all
11077            the aligners.  */
11078         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11079             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11080           TYPE_TARGET_TYPE (value_type (array)) =
11081             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11082
11083         if (ada_is_constrained_packed_array_type (value_type (array)))
11084           error (_("cannot slice a packed array"));
11085
11086         /* If this is a reference to an array or an array lvalue,
11087            convert to a pointer.  */
11088         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11089             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11090                 && VALUE_LVAL (array) == lval_memory))
11091           array = value_addr (array);
11092
11093         if (noside == EVAL_AVOID_SIDE_EFFECTS
11094             && ada_is_array_descriptor_type (ada_check_typedef
11095                                              (value_type (array))))
11096           return empty_array (ada_type_of_array (array, 0), low_bound);
11097
11098         array = ada_coerce_to_simple_array_ptr (array);
11099
11100         /* If we have more than one level of pointer indirection,
11101            dereference the value until we get only one level.  */
11102         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11103                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11104                      == TYPE_CODE_PTR))
11105           array = value_ind (array);
11106
11107         /* Make sure we really do have an array type before going further,
11108            to avoid a SEGV when trying to get the index type or the target
11109            type later down the road if the debug info generated by
11110            the compiler is incorrect or incomplete.  */
11111         if (!ada_is_simple_array_type (value_type (array)))
11112           error (_("cannot take slice of non-array"));
11113
11114         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11115             == TYPE_CODE_PTR)
11116           {
11117             struct type *type0 = ada_check_typedef (value_type (array));
11118
11119             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11120               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11121             else
11122               {
11123                 struct type *arr_type0 =
11124                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11125
11126                 return ada_value_slice_from_ptr (array, arr_type0,
11127                                                  longest_to_int (low_bound),
11128                                                  longest_to_int (high_bound));
11129               }
11130           }
11131         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11132           return array;
11133         else if (high_bound < low_bound)
11134           return empty_array (value_type (array), low_bound);
11135         else
11136           return ada_value_slice (array, longest_to_int (low_bound),
11137                                   longest_to_int (high_bound));
11138       }
11139
11140     case UNOP_IN_RANGE:
11141       (*pos) += 2;
11142       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11143       type = check_typedef (exp->elts[pc + 1].type);
11144
11145       if (noside == EVAL_SKIP)
11146         goto nosideret;
11147
11148       switch (TYPE_CODE (type))
11149         {
11150         default:
11151           lim_warning (_("Membership test incompletely implemented; "
11152                          "always returns true"));
11153           type = language_bool_type (exp->language_defn, exp->gdbarch);
11154           return value_from_longest (type, (LONGEST) 1);
11155
11156         case TYPE_CODE_RANGE:
11157           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11158           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11159           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11160           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11161           type = language_bool_type (exp->language_defn, exp->gdbarch);
11162           return
11163             value_from_longest (type,
11164                                 (value_less (arg1, arg3)
11165                                  || value_equal (arg1, arg3))
11166                                 && (value_less (arg2, arg1)
11167                                     || value_equal (arg2, arg1)));
11168         }
11169
11170     case BINOP_IN_BOUNDS:
11171       (*pos) += 2;
11172       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11173       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11174
11175       if (noside == EVAL_SKIP)
11176         goto nosideret;
11177
11178       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11179         {
11180           type = language_bool_type (exp->language_defn, exp->gdbarch);
11181           return value_zero (type, not_lval);
11182         }
11183
11184       tem = longest_to_int (exp->elts[pc + 1].longconst);
11185
11186       type = ada_index_type (value_type (arg2), tem, "range");
11187       if (!type)
11188         type = value_type (arg1);
11189
11190       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11191       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11192
11193       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11194       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11195       type = language_bool_type (exp->language_defn, exp->gdbarch);
11196       return
11197         value_from_longest (type,
11198                             (value_less (arg1, arg3)
11199                              || value_equal (arg1, arg3))
11200                             && (value_less (arg2, arg1)
11201                                 || value_equal (arg2, arg1)));
11202
11203     case TERNOP_IN_RANGE:
11204       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11205       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11206       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11207
11208       if (noside == EVAL_SKIP)
11209         goto nosideret;
11210
11211       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11212       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11213       type = language_bool_type (exp->language_defn, exp->gdbarch);
11214       return
11215         value_from_longest (type,
11216                             (value_less (arg1, arg3)
11217                              || value_equal (arg1, arg3))
11218                             && (value_less (arg2, arg1)
11219                                 || value_equal (arg2, arg1)));
11220
11221     case OP_ATR_FIRST:
11222     case OP_ATR_LAST:
11223     case OP_ATR_LENGTH:
11224       {
11225         struct type *type_arg;
11226
11227         if (exp->elts[*pos].opcode == OP_TYPE)
11228           {
11229             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11230             arg1 = NULL;
11231             type_arg = check_typedef (exp->elts[pc + 2].type);
11232           }
11233         else
11234           {
11235             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11236             type_arg = NULL;
11237           }
11238
11239         if (exp->elts[*pos].opcode != OP_LONG)
11240           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11241         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11242         *pos += 4;
11243
11244         if (noside == EVAL_SKIP)
11245           goto nosideret;
11246
11247         if (type_arg == NULL)
11248           {
11249             arg1 = ada_coerce_ref (arg1);
11250
11251             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11252               arg1 = ada_coerce_to_simple_array (arg1);
11253
11254             if (op == OP_ATR_LENGTH)
11255               type = builtin_type (exp->gdbarch)->builtin_int;
11256             else
11257               {
11258                 type = ada_index_type (value_type (arg1), tem,
11259                                        ada_attribute_name (op));
11260                 if (type == NULL)
11261                   type = builtin_type (exp->gdbarch)->builtin_int;
11262               }
11263
11264             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11265               return allocate_value (type);
11266
11267             switch (op)
11268               {
11269               default:          /* Should never happen.  */
11270                 error (_("unexpected attribute encountered"));
11271               case OP_ATR_FIRST:
11272                 return value_from_longest
11273                         (type, ada_array_bound (arg1, tem, 0));
11274               case OP_ATR_LAST:
11275                 return value_from_longest
11276                         (type, ada_array_bound (arg1, tem, 1));
11277               case OP_ATR_LENGTH:
11278                 return value_from_longest
11279                         (type, ada_array_length (arg1, tem));
11280               }
11281           }
11282         else if (discrete_type_p (type_arg))
11283           {
11284             struct type *range_type;
11285             const char *name = ada_type_name (type_arg);
11286
11287             range_type = NULL;
11288             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11289               range_type = to_fixed_range_type (type_arg, NULL);
11290             if (range_type == NULL)
11291               range_type = type_arg;
11292             switch (op)
11293               {
11294               default:
11295                 error (_("unexpected attribute encountered"));
11296               case OP_ATR_FIRST:
11297                 return value_from_longest 
11298                   (range_type, ada_discrete_type_low_bound (range_type));
11299               case OP_ATR_LAST:
11300                 return value_from_longest
11301                   (range_type, ada_discrete_type_high_bound (range_type));
11302               case OP_ATR_LENGTH:
11303                 error (_("the 'length attribute applies only to array types"));
11304               }
11305           }
11306         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11307           error (_("unimplemented type attribute"));
11308         else
11309           {
11310             LONGEST low, high;
11311
11312             if (ada_is_constrained_packed_array_type (type_arg))
11313               type_arg = decode_constrained_packed_array_type (type_arg);
11314
11315             if (op == OP_ATR_LENGTH)
11316               type = builtin_type (exp->gdbarch)->builtin_int;
11317             else
11318               {
11319                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11320                 if (type == NULL)
11321                   type = builtin_type (exp->gdbarch)->builtin_int;
11322               }
11323
11324             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11325               return allocate_value (type);
11326
11327             switch (op)
11328               {
11329               default:
11330                 error (_("unexpected attribute encountered"));
11331               case OP_ATR_FIRST:
11332                 low = ada_array_bound_from_type (type_arg, tem, 0);
11333                 return value_from_longest (type, low);
11334               case OP_ATR_LAST:
11335                 high = ada_array_bound_from_type (type_arg, tem, 1);
11336                 return value_from_longest (type, high);
11337               case OP_ATR_LENGTH:
11338                 low = ada_array_bound_from_type (type_arg, tem, 0);
11339                 high = ada_array_bound_from_type (type_arg, tem, 1);
11340                 return value_from_longest (type, high - low + 1);
11341               }
11342           }
11343       }
11344
11345     case OP_ATR_TAG:
11346       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11347       if (noside == EVAL_SKIP)
11348         goto nosideret;
11349
11350       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11351         return value_zero (ada_tag_type (arg1), not_lval);
11352
11353       return ada_value_tag (arg1);
11354
11355     case OP_ATR_MIN:
11356     case OP_ATR_MAX:
11357       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11358       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11359       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11360       if (noside == EVAL_SKIP)
11361         goto nosideret;
11362       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11363         return value_zero (value_type (arg1), not_lval);
11364       else
11365         {
11366           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11367           return value_binop (arg1, arg2,
11368                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11369         }
11370
11371     case OP_ATR_MODULUS:
11372       {
11373         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11374
11375         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11376         if (noside == EVAL_SKIP)
11377           goto nosideret;
11378
11379         if (!ada_is_modular_type (type_arg))
11380           error (_("'modulus must be applied to modular type"));
11381
11382         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11383                                    ada_modulus (type_arg));
11384       }
11385
11386
11387     case OP_ATR_POS:
11388       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11389       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11390       if (noside == EVAL_SKIP)
11391         goto nosideret;
11392       type = builtin_type (exp->gdbarch)->builtin_int;
11393       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11394         return value_zero (type, not_lval);
11395       else
11396         return value_pos_atr (type, arg1);
11397
11398     case OP_ATR_SIZE:
11399       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11400       type = value_type (arg1);
11401
11402       /* If the argument is a reference, then dereference its type, since
11403          the user is really asking for the size of the actual object,
11404          not the size of the pointer.  */
11405       if (TYPE_CODE (type) == TYPE_CODE_REF)
11406         type = TYPE_TARGET_TYPE (type);
11407
11408       if (noside == EVAL_SKIP)
11409         goto nosideret;
11410       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11411         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11412       else
11413         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11414                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11415
11416     case OP_ATR_VAL:
11417       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11418       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11419       type = exp->elts[pc + 2].type;
11420       if (noside == EVAL_SKIP)
11421         goto nosideret;
11422       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11423         return value_zero (type, not_lval);
11424       else
11425         return value_val_atr (type, arg1);
11426
11427     case BINOP_EXP:
11428       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11429       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11430       if (noside == EVAL_SKIP)
11431         goto nosideret;
11432       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11433         return value_zero (value_type (arg1), not_lval);
11434       else
11435         {
11436           /* For integer exponentiation operations,
11437              only promote the first argument.  */
11438           if (is_integral_type (value_type (arg2)))
11439             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11440           else
11441             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11442
11443           return value_binop (arg1, arg2, op);
11444         }
11445
11446     case UNOP_PLUS:
11447       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11448       if (noside == EVAL_SKIP)
11449         goto nosideret;
11450       else
11451         return arg1;
11452
11453     case UNOP_ABS:
11454       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11455       if (noside == EVAL_SKIP)
11456         goto nosideret;
11457       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11458       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11459         return value_neg (arg1);
11460       else
11461         return arg1;
11462
11463     case UNOP_IND:
11464       preeval_pos = *pos;
11465       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11466       if (noside == EVAL_SKIP)
11467         goto nosideret;
11468       type = ada_check_typedef (value_type (arg1));
11469       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11470         {
11471           if (ada_is_array_descriptor_type (type))
11472             /* GDB allows dereferencing GNAT array descriptors.  */
11473             {
11474               struct type *arrType = ada_type_of_array (arg1, 0);
11475
11476               if (arrType == NULL)
11477                 error (_("Attempt to dereference null array pointer."));
11478               return value_at_lazy (arrType, 0);
11479             }
11480           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11481                    || TYPE_CODE (type) == TYPE_CODE_REF
11482                    /* In C you can dereference an array to get the 1st elt.  */
11483                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11484             {
11485             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11486                only be determined by inspecting the object's tag.
11487                This means that we need to evaluate completely the
11488                expression in order to get its type.  */
11489
11490               if ((TYPE_CODE (type) == TYPE_CODE_REF
11491                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11492                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11493                 {
11494                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11495                                           EVAL_NORMAL);
11496                   type = value_type (ada_value_ind (arg1));
11497                 }
11498               else
11499                 {
11500                   type = to_static_fixed_type
11501                     (ada_aligned_type
11502                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11503                 }
11504               ada_ensure_varsize_limit (type);
11505               return value_zero (type, lval_memory);
11506             }
11507           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11508             {
11509               /* GDB allows dereferencing an int.  */
11510               if (expect_type == NULL)
11511                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11512                                    lval_memory);
11513               else
11514                 {
11515                   expect_type = 
11516                     to_static_fixed_type (ada_aligned_type (expect_type));
11517                   return value_zero (expect_type, lval_memory);
11518                 }
11519             }
11520           else
11521             error (_("Attempt to take contents of a non-pointer value."));
11522         }
11523       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11524       type = ada_check_typedef (value_type (arg1));
11525
11526       if (TYPE_CODE (type) == TYPE_CODE_INT)
11527           /* GDB allows dereferencing an int.  If we were given
11528              the expect_type, then use that as the target type.
11529              Otherwise, assume that the target type is an int.  */
11530         {
11531           if (expect_type != NULL)
11532             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11533                                               arg1));
11534           else
11535             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11536                                   (CORE_ADDR) value_as_address (arg1));
11537         }
11538
11539       if (ada_is_array_descriptor_type (type))
11540         /* GDB allows dereferencing GNAT array descriptors.  */
11541         return ada_coerce_to_simple_array (arg1);
11542       else
11543         return ada_value_ind (arg1);
11544
11545     case STRUCTOP_STRUCT:
11546       tem = longest_to_int (exp->elts[pc + 1].longconst);
11547       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11548       preeval_pos = *pos;
11549       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11550       if (noside == EVAL_SKIP)
11551         goto nosideret;
11552       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11553         {
11554           struct type *type1 = value_type (arg1);
11555
11556           if (ada_is_tagged_type (type1, 1))
11557             {
11558               type = ada_lookup_struct_elt_type (type1,
11559                                                  &exp->elts[pc + 2].string,
11560                                                  1, 1);
11561
11562               /* If the field is not found, check if it exists in the
11563                  extension of this object's type. This means that we
11564                  need to evaluate completely the expression.  */
11565
11566               if (type == NULL)
11567                 {
11568                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11569                                           EVAL_NORMAL);
11570                   arg1 = ada_value_struct_elt (arg1,
11571                                                &exp->elts[pc + 2].string,
11572                                                0);
11573                   arg1 = unwrap_value (arg1);
11574                   type = value_type (ada_to_fixed_value (arg1));
11575                 }
11576             }
11577           else
11578             type =
11579               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11580                                           0);
11581
11582           return value_zero (ada_aligned_type (type), lval_memory);
11583         }
11584       else
11585         {
11586           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11587           arg1 = unwrap_value (arg1);
11588           return ada_to_fixed_value (arg1);
11589         }
11590
11591     case OP_TYPE:
11592       /* The value is not supposed to be used.  This is here to make it
11593          easier to accommodate expressions that contain types.  */
11594       (*pos) += 2;
11595       if (noside == EVAL_SKIP)
11596         goto nosideret;
11597       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11598         return allocate_value (exp->elts[pc + 1].type);
11599       else
11600         error (_("Attempt to use a type name as an expression"));
11601
11602     case OP_AGGREGATE:
11603     case OP_CHOICES:
11604     case OP_OTHERS:
11605     case OP_DISCRETE_RANGE:
11606     case OP_POSITIONAL:
11607     case OP_NAME:
11608       if (noside == EVAL_NORMAL)
11609         switch (op) 
11610           {
11611           case OP_NAME:
11612             error (_("Undefined name, ambiguous name, or renaming used in "
11613                      "component association: %s."), &exp->elts[pc+2].string);
11614           case OP_AGGREGATE:
11615             error (_("Aggregates only allowed on the right of an assignment"));
11616           default:
11617             internal_error (__FILE__, __LINE__,
11618                             _("aggregate apparently mangled"));
11619           }
11620
11621       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11622       *pos += oplen - 1;
11623       for (tem = 0; tem < nargs; tem += 1) 
11624         ada_evaluate_subexp (NULL, exp, pos, noside);
11625       goto nosideret;
11626     }
11627
11628 nosideret:
11629   return eval_skip_value (exp);
11630 }
11631 \f
11632
11633                                 /* Fixed point */
11634
11635 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11636    type name that encodes the 'small and 'delta information.
11637    Otherwise, return NULL.  */
11638
11639 static const char *
11640 fixed_type_info (struct type *type)
11641 {
11642   const char *name = ada_type_name (type);
11643   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11644
11645   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11646     {
11647       const char *tail = strstr (name, "___XF_");
11648
11649       if (tail == NULL)
11650         return NULL;
11651       else
11652         return tail + 5;
11653     }
11654   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11655     return fixed_type_info (TYPE_TARGET_TYPE (type));
11656   else
11657     return NULL;
11658 }
11659
11660 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11661
11662 int
11663 ada_is_fixed_point_type (struct type *type)
11664 {
11665   return fixed_type_info (type) != NULL;
11666 }
11667
11668 /* Return non-zero iff TYPE represents a System.Address type.  */
11669
11670 int
11671 ada_is_system_address_type (struct type *type)
11672 {
11673   return (TYPE_NAME (type)
11674           && strcmp (TYPE_NAME (type), "system__address") == 0);
11675 }
11676
11677 /* Assuming that TYPE is the representation of an Ada fixed-point
11678    type, return the target floating-point type to be used to represent
11679    of this type during internal computation.  */
11680
11681 static struct type *
11682 ada_scaling_type (struct type *type)
11683 {
11684   return builtin_type (get_type_arch (type))->builtin_long_double;
11685 }
11686
11687 /* Assuming that TYPE is the representation of an Ada fixed-point
11688    type, return its delta, or NULL if the type is malformed and the
11689    delta cannot be determined.  */
11690
11691 struct value *
11692 ada_delta (struct type *type)
11693 {
11694   const char *encoding = fixed_type_info (type);
11695   struct type *scale_type = ada_scaling_type (type);
11696
11697   long long num, den;
11698
11699   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11700     return nullptr;
11701   else
11702     return value_binop (value_from_longest (scale_type, num),
11703                         value_from_longest (scale_type, den), BINOP_DIV);
11704 }
11705
11706 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11707    factor ('SMALL value) associated with the type.  */
11708
11709 struct value *
11710 ada_scaling_factor (struct type *type)
11711 {
11712   const char *encoding = fixed_type_info (type);
11713   struct type *scale_type = ada_scaling_type (type);
11714
11715   long long num0, den0, num1, den1;
11716   int n;
11717
11718   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11719               &num0, &den0, &num1, &den1);
11720
11721   if (n < 2)
11722     return value_from_longest (scale_type, 1);
11723   else if (n == 4)
11724     return value_binop (value_from_longest (scale_type, num1),
11725                         value_from_longest (scale_type, den1), BINOP_DIV);
11726   else
11727     return value_binop (value_from_longest (scale_type, num0),
11728                         value_from_longest (scale_type, den0), BINOP_DIV);
11729 }
11730
11731 \f
11732
11733                                 /* Range types */
11734
11735 /* Scan STR beginning at position K for a discriminant name, and
11736    return the value of that discriminant field of DVAL in *PX.  If
11737    PNEW_K is not null, put the position of the character beyond the
11738    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11739    not alter *PX and *PNEW_K if unsuccessful.  */
11740
11741 static int
11742 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11743                     int *pnew_k)
11744 {
11745   static char *bound_buffer = NULL;
11746   static size_t bound_buffer_len = 0;
11747   const char *pstart, *pend, *bound;
11748   struct value *bound_val;
11749
11750   if (dval == NULL || str == NULL || str[k] == '\0')
11751     return 0;
11752
11753   pstart = str + k;
11754   pend = strstr (pstart, "__");
11755   if (pend == NULL)
11756     {
11757       bound = pstart;
11758       k += strlen (bound);
11759     }
11760   else
11761     {
11762       int len = pend - pstart;
11763
11764       /* Strip __ and beyond.  */
11765       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11766       strncpy (bound_buffer, pstart, len);
11767       bound_buffer[len] = '\0';
11768
11769       bound = bound_buffer;
11770       k = pend - str;
11771     }
11772
11773   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11774   if (bound_val == NULL)
11775     return 0;
11776
11777   *px = value_as_long (bound_val);
11778   if (pnew_k != NULL)
11779     *pnew_k = k;
11780   return 1;
11781 }
11782
11783 /* Value of variable named NAME in the current environment.  If
11784    no such variable found, then if ERR_MSG is null, returns 0, and
11785    otherwise causes an error with message ERR_MSG.  */
11786
11787 static struct value *
11788 get_var_value (const char *name, const char *err_msg)
11789 {
11790   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11791
11792   struct block_symbol *syms;
11793   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11794                                              get_selected_block (0),
11795                                              VAR_DOMAIN, &syms, 1);
11796   struct cleanup *old_chain = make_cleanup (xfree, syms);
11797
11798   if (nsyms != 1)
11799     {
11800       do_cleanups (old_chain);
11801       if (err_msg == NULL)
11802         return 0;
11803       else
11804         error (("%s"), err_msg);
11805     }
11806
11807   struct value *result = value_of_variable (syms[0].symbol, syms[0].block);
11808   do_cleanups (old_chain);
11809   return result;
11810 }
11811
11812 /* Value of integer variable named NAME in the current environment.
11813    If no such variable is found, returns false.  Otherwise, sets VALUE
11814    to the variable's value and returns true.  */
11815
11816 bool
11817 get_int_var_value (const char *name, LONGEST &value)
11818 {
11819   struct value *var_val = get_var_value (name, 0);
11820
11821   if (var_val == 0)
11822     return false;
11823
11824   value = value_as_long (var_val);
11825   return true;
11826 }
11827
11828
11829 /* Return a range type whose base type is that of the range type named
11830    NAME in the current environment, and whose bounds are calculated
11831    from NAME according to the GNAT range encoding conventions.
11832    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11833    corresponding range type from debug information; fall back to using it
11834    if symbol lookup fails.  If a new type must be created, allocate it
11835    like ORIG_TYPE was.  The bounds information, in general, is encoded
11836    in NAME, the base type given in the named range type.  */
11837
11838 static struct type *
11839 to_fixed_range_type (struct type *raw_type, struct value *dval)
11840 {
11841   const char *name;
11842   struct type *base_type;
11843   const char *subtype_info;
11844
11845   gdb_assert (raw_type != NULL);
11846   gdb_assert (TYPE_NAME (raw_type) != NULL);
11847
11848   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11849     base_type = TYPE_TARGET_TYPE (raw_type);
11850   else
11851     base_type = raw_type;
11852
11853   name = TYPE_NAME (raw_type);
11854   subtype_info = strstr (name, "___XD");
11855   if (subtype_info == NULL)
11856     {
11857       LONGEST L = ada_discrete_type_low_bound (raw_type);
11858       LONGEST U = ada_discrete_type_high_bound (raw_type);
11859
11860       if (L < INT_MIN || U > INT_MAX)
11861         return raw_type;
11862       else
11863         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11864                                          L, U);
11865     }
11866   else
11867     {
11868       static char *name_buf = NULL;
11869       static size_t name_len = 0;
11870       int prefix_len = subtype_info - name;
11871       LONGEST L, U;
11872       struct type *type;
11873       const char *bounds_str;
11874       int n;
11875
11876       GROW_VECT (name_buf, name_len, prefix_len + 5);
11877       strncpy (name_buf, name, prefix_len);
11878       name_buf[prefix_len] = '\0';
11879
11880       subtype_info += 5;
11881       bounds_str = strchr (subtype_info, '_');
11882       n = 1;
11883
11884       if (*subtype_info == 'L')
11885         {
11886           if (!ada_scan_number (bounds_str, n, &L, &n)
11887               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11888             return raw_type;
11889           if (bounds_str[n] == '_')
11890             n += 2;
11891           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11892             n += 1;
11893           subtype_info += 1;
11894         }
11895       else
11896         {
11897           strcpy (name_buf + prefix_len, "___L");
11898           if (!get_int_var_value (name_buf, L))
11899             {
11900               lim_warning (_("Unknown lower bound, using 1."));
11901               L = 1;
11902             }
11903         }
11904
11905       if (*subtype_info == 'U')
11906         {
11907           if (!ada_scan_number (bounds_str, n, &U, &n)
11908               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11909             return raw_type;
11910         }
11911       else
11912         {
11913           strcpy (name_buf + prefix_len, "___U");
11914           if (!get_int_var_value (name_buf, U))
11915             {
11916               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11917               U = L;
11918             }
11919         }
11920
11921       type = create_static_range_type (alloc_type_copy (raw_type),
11922                                        base_type, L, U);
11923       /* create_static_range_type alters the resulting type's length
11924          to match the size of the base_type, which is not what we want.
11925          Set it back to the original range type's length.  */
11926       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11927       TYPE_NAME (type) = name;
11928       return type;
11929     }
11930 }
11931
11932 /* True iff NAME is the name of a range type.  */
11933
11934 int
11935 ada_is_range_type_name (const char *name)
11936 {
11937   return (name != NULL && strstr (name, "___XD"));
11938 }
11939 \f
11940
11941                                 /* Modular types */
11942
11943 /* True iff TYPE is an Ada modular type.  */
11944
11945 int
11946 ada_is_modular_type (struct type *type)
11947 {
11948   struct type *subranged_type = get_base_type (type);
11949
11950   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11951           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11952           && TYPE_UNSIGNED (subranged_type));
11953 }
11954
11955 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11956
11957 ULONGEST
11958 ada_modulus (struct type *type)
11959 {
11960   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11961 }
11962 \f
11963
11964 /* Ada exception catchpoint support:
11965    ---------------------------------
11966
11967    We support 3 kinds of exception catchpoints:
11968      . catchpoints on Ada exceptions
11969      . catchpoints on unhandled Ada exceptions
11970      . catchpoints on failed assertions
11971
11972    Exceptions raised during failed assertions, or unhandled exceptions
11973    could perfectly be caught with the general catchpoint on Ada exceptions.
11974    However, we can easily differentiate these two special cases, and having
11975    the option to distinguish these two cases from the rest can be useful
11976    to zero-in on certain situations.
11977
11978    Exception catchpoints are a specialized form of breakpoint,
11979    since they rely on inserting breakpoints inside known routines
11980    of the GNAT runtime.  The implementation therefore uses a standard
11981    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11982    of breakpoint_ops.
11983
11984    Support in the runtime for exception catchpoints have been changed
11985    a few times already, and these changes affect the implementation
11986    of these catchpoints.  In order to be able to support several
11987    variants of the runtime, we use a sniffer that will determine
11988    the runtime variant used by the program being debugged.  */
11989
11990 /* Ada's standard exceptions.
11991
11992    The Ada 83 standard also defined Numeric_Error.  But there so many
11993    situations where it was unclear from the Ada 83 Reference Manual
11994    (RM) whether Constraint_Error or Numeric_Error should be raised,
11995    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11996    Interpretation saying that anytime the RM says that Numeric_Error
11997    should be raised, the implementation may raise Constraint_Error.
11998    Ada 95 went one step further and pretty much removed Numeric_Error
11999    from the list of standard exceptions (it made it a renaming of
12000    Constraint_Error, to help preserve compatibility when compiling
12001    an Ada83 compiler). As such, we do not include Numeric_Error from
12002    this list of standard exceptions.  */
12003
12004 static const char *standard_exc[] = {
12005   "constraint_error",
12006   "program_error",
12007   "storage_error",
12008   "tasking_error"
12009 };
12010
12011 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
12012
12013 /* A structure that describes how to support exception catchpoints
12014    for a given executable.  */
12015
12016 struct exception_support_info
12017 {
12018    /* The name of the symbol to break on in order to insert
12019       a catchpoint on exceptions.  */
12020    const char *catch_exception_sym;
12021
12022    /* The name of the symbol to break on in order to insert
12023       a catchpoint on unhandled exceptions.  */
12024    const char *catch_exception_unhandled_sym;
12025
12026    /* The name of the symbol to break on in order to insert
12027       a catchpoint on failed assertions.  */
12028    const char *catch_assert_sym;
12029
12030    /* The name of the symbol to break on in order to insert
12031       a catchpoint on exception handling.  */
12032    const char *catch_handlers_sym;
12033
12034    /* Assuming that the inferior just triggered an unhandled exception
12035       catchpoint, this function is responsible for returning the address
12036       in inferior memory where the name of that exception is stored.
12037       Return zero if the address could not be computed.  */
12038    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12039 };
12040
12041 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12042 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12043
12044 /* The following exception support info structure describes how to
12045    implement exception catchpoints with the latest version of the
12046    Ada runtime (as of 2007-03-06).  */
12047
12048 static const struct exception_support_info default_exception_support_info =
12049 {
12050   "__gnat_debug_raise_exception", /* catch_exception_sym */
12051   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12052   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12053   "__gnat_begin_handler", /* catch_handlers_sym */
12054   ada_unhandled_exception_name_addr
12055 };
12056
12057 /* The following exception support info structure describes how to
12058    implement exception catchpoints with a slightly older version
12059    of the Ada runtime.  */
12060
12061 static const struct exception_support_info exception_support_info_fallback =
12062 {
12063   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12064   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12065   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12066   "__gnat_begin_handler", /* catch_handlers_sym */
12067   ada_unhandled_exception_name_addr_from_raise
12068 };
12069
12070 /* Return nonzero if we can detect the exception support routines
12071    described in EINFO.
12072
12073    This function errors out if an abnormal situation is detected
12074    (for instance, if we find the exception support routines, but
12075    that support is found to be incomplete).  */
12076
12077 static int
12078 ada_has_this_exception_support (const struct exception_support_info *einfo)
12079 {
12080   struct symbol *sym;
12081
12082   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12083      that should be compiled with debugging information.  As a result, we
12084      expect to find that symbol in the symtabs.  */
12085
12086   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12087   if (sym == NULL)
12088     {
12089       /* Perhaps we did not find our symbol because the Ada runtime was
12090          compiled without debugging info, or simply stripped of it.
12091          It happens on some GNU/Linux distributions for instance, where
12092          users have to install a separate debug package in order to get
12093          the runtime's debugging info.  In that situation, let the user
12094          know why we cannot insert an Ada exception catchpoint.
12095
12096          Note: Just for the purpose of inserting our Ada exception
12097          catchpoint, we could rely purely on the associated minimal symbol.
12098          But we would be operating in degraded mode anyway, since we are
12099          still lacking the debugging info needed later on to extract
12100          the name of the exception being raised (this name is printed in
12101          the catchpoint message, and is also used when trying to catch
12102          a specific exception).  We do not handle this case for now.  */
12103       struct bound_minimal_symbol msym
12104         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12105
12106       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12107         error (_("Your Ada runtime appears to be missing some debugging "
12108                  "information.\nCannot insert Ada exception catchpoint "
12109                  "in this configuration."));
12110
12111       return 0;
12112     }
12113
12114   /* Make sure that the symbol we found corresponds to a function.  */
12115
12116   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12117     error (_("Symbol \"%s\" is not a function (class = %d)"),
12118            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12119
12120   return 1;
12121 }
12122
12123 /* Inspect the Ada runtime and determine which exception info structure
12124    should be used to provide support for exception catchpoints.
12125
12126    This function will always set the per-inferior exception_info,
12127    or raise an error.  */
12128
12129 static void
12130 ada_exception_support_info_sniffer (void)
12131 {
12132   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12133
12134   /* If the exception info is already known, then no need to recompute it.  */
12135   if (data->exception_info != NULL)
12136     return;
12137
12138   /* Check the latest (default) exception support info.  */
12139   if (ada_has_this_exception_support (&default_exception_support_info))
12140     {
12141       data->exception_info = &default_exception_support_info;
12142       return;
12143     }
12144
12145   /* Try our fallback exception suport info.  */
12146   if (ada_has_this_exception_support (&exception_support_info_fallback))
12147     {
12148       data->exception_info = &exception_support_info_fallback;
12149       return;
12150     }
12151
12152   /* Sometimes, it is normal for us to not be able to find the routine
12153      we are looking for.  This happens when the program is linked with
12154      the shared version of the GNAT runtime, and the program has not been
12155      started yet.  Inform the user of these two possible causes if
12156      applicable.  */
12157
12158   if (ada_update_initial_language (language_unknown) != language_ada)
12159     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12160
12161   /* If the symbol does not exist, then check that the program is
12162      already started, to make sure that shared libraries have been
12163      loaded.  If it is not started, this may mean that the symbol is
12164      in a shared library.  */
12165
12166   if (ptid_get_pid (inferior_ptid) == 0)
12167     error (_("Unable to insert catchpoint. Try to start the program first."));
12168
12169   /* At this point, we know that we are debugging an Ada program and
12170      that the inferior has been started, but we still are not able to
12171      find the run-time symbols.  That can mean that we are in
12172      configurable run time mode, or that a-except as been optimized
12173      out by the linker...  In any case, at this point it is not worth
12174      supporting this feature.  */
12175
12176   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12177 }
12178
12179 /* True iff FRAME is very likely to be that of a function that is
12180    part of the runtime system.  This is all very heuristic, but is
12181    intended to be used as advice as to what frames are uninteresting
12182    to most users.  */
12183
12184 static int
12185 is_known_support_routine (struct frame_info *frame)
12186 {
12187   enum language func_lang;
12188   int i;
12189   const char *fullname;
12190
12191   /* If this code does not have any debugging information (no symtab),
12192      This cannot be any user code.  */
12193
12194   symtab_and_line sal = find_frame_sal (frame);
12195   if (sal.symtab == NULL)
12196     return 1;
12197
12198   /* If there is a symtab, but the associated source file cannot be
12199      located, then assume this is not user code:  Selecting a frame
12200      for which we cannot display the code would not be very helpful
12201      for the user.  This should also take care of case such as VxWorks
12202      where the kernel has some debugging info provided for a few units.  */
12203
12204   fullname = symtab_to_fullname (sal.symtab);
12205   if (access (fullname, R_OK) != 0)
12206     return 1;
12207
12208   /* Check the unit filename againt the Ada runtime file naming.
12209      We also check the name of the objfile against the name of some
12210      known system libraries that sometimes come with debugging info
12211      too.  */
12212
12213   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12214     {
12215       re_comp (known_runtime_file_name_patterns[i]);
12216       if (re_exec (lbasename (sal.symtab->filename)))
12217         return 1;
12218       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12219           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12220         return 1;
12221     }
12222
12223   /* Check whether the function is a GNAT-generated entity.  */
12224
12225   gdb::unique_xmalloc_ptr<char> func_name
12226     = find_frame_funname (frame, &func_lang, NULL);
12227   if (func_name == NULL)
12228     return 1;
12229
12230   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12231     {
12232       re_comp (known_auxiliary_function_name_patterns[i]);
12233       if (re_exec (func_name.get ()))
12234         return 1;
12235     }
12236
12237   return 0;
12238 }
12239
12240 /* Find the first frame that contains debugging information and that is not
12241    part of the Ada run-time, starting from FI and moving upward.  */
12242
12243 void
12244 ada_find_printable_frame (struct frame_info *fi)
12245 {
12246   for (; fi != NULL; fi = get_prev_frame (fi))
12247     {
12248       if (!is_known_support_routine (fi))
12249         {
12250           select_frame (fi);
12251           break;
12252         }
12253     }
12254
12255 }
12256
12257 /* Assuming that the inferior just triggered an unhandled exception
12258    catchpoint, return the address in inferior memory where the name
12259    of the exception is stored.
12260    
12261    Return zero if the address could not be computed.  */
12262
12263 static CORE_ADDR
12264 ada_unhandled_exception_name_addr (void)
12265 {
12266   return parse_and_eval_address ("e.full_name");
12267 }
12268
12269 /* Same as ada_unhandled_exception_name_addr, except that this function
12270    should be used when the inferior uses an older version of the runtime,
12271    where the exception name needs to be extracted from a specific frame
12272    several frames up in the callstack.  */
12273
12274 static CORE_ADDR
12275 ada_unhandled_exception_name_addr_from_raise (void)
12276 {
12277   int frame_level;
12278   struct frame_info *fi;
12279   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12280
12281   /* To determine the name of this exception, we need to select
12282      the frame corresponding to RAISE_SYM_NAME.  This frame is
12283      at least 3 levels up, so we simply skip the first 3 frames
12284      without checking the name of their associated function.  */
12285   fi = get_current_frame ();
12286   for (frame_level = 0; frame_level < 3; frame_level += 1)
12287     if (fi != NULL)
12288       fi = get_prev_frame (fi); 
12289
12290   while (fi != NULL)
12291     {
12292       enum language func_lang;
12293
12294       gdb::unique_xmalloc_ptr<char> func_name
12295         = find_frame_funname (fi, &func_lang, NULL);
12296       if (func_name != NULL)
12297         {
12298           if (strcmp (func_name.get (),
12299                       data->exception_info->catch_exception_sym) == 0)
12300             break; /* We found the frame we were looking for...  */
12301           fi = get_prev_frame (fi);
12302         }
12303     }
12304
12305   if (fi == NULL)
12306     return 0;
12307
12308   select_frame (fi);
12309   return parse_and_eval_address ("id.full_name");
12310 }
12311
12312 /* Assuming the inferior just triggered an Ada exception catchpoint
12313    (of any type), return the address in inferior memory where the name
12314    of the exception is stored, if applicable.
12315
12316    Assumes the selected frame is the current frame.
12317
12318    Return zero if the address could not be computed, or if not relevant.  */
12319
12320 static CORE_ADDR
12321 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12322                            struct breakpoint *b)
12323 {
12324   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12325
12326   switch (ex)
12327     {
12328       case ada_catch_exception:
12329         return (parse_and_eval_address ("e.full_name"));
12330         break;
12331
12332       case ada_catch_exception_unhandled:
12333         return data->exception_info->unhandled_exception_name_addr ();
12334         break;
12335
12336       case ada_catch_handlers:
12337         return 0;  /* The runtimes does not provide access to the exception
12338                       name.  */
12339         break;
12340
12341       case ada_catch_assert:
12342         return 0;  /* Exception name is not relevant in this case.  */
12343         break;
12344
12345       default:
12346         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12347         break;
12348     }
12349
12350   return 0; /* Should never be reached.  */
12351 }
12352
12353 /* Assuming the inferior is stopped at an exception catchpoint,
12354    return the message which was associated to the exception, if
12355    available.  Return NULL if the message could not be retrieved.
12356
12357    The caller must xfree the string after use.
12358
12359    Note: The exception message can be associated to an exception
12360    either through the use of the Raise_Exception function, or
12361    more simply (Ada 2005 and later), via:
12362
12363        raise Exception_Name with "exception message";
12364
12365    */
12366
12367 static char *
12368 ada_exception_message_1 (void)
12369 {
12370   struct value *e_msg_val;
12371   char *e_msg = NULL;
12372   int e_msg_len;
12373   struct cleanup *cleanups;
12374
12375   /* For runtimes that support this feature, the exception message
12376      is passed as an unbounded string argument called "message".  */
12377   e_msg_val = parse_and_eval ("message");
12378   if (e_msg_val == NULL)
12379     return NULL; /* Exception message not supported.  */
12380
12381   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12382   gdb_assert (e_msg_val != NULL);
12383   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12384
12385   /* If the message string is empty, then treat it as if there was
12386      no exception message.  */
12387   if (e_msg_len <= 0)
12388     return NULL;
12389
12390   e_msg = (char *) xmalloc (e_msg_len + 1);
12391   cleanups = make_cleanup (xfree, e_msg);
12392   read_memory_string (value_address (e_msg_val), e_msg, e_msg_len + 1);
12393   e_msg[e_msg_len] = '\0';
12394
12395   discard_cleanups (cleanups);
12396   return e_msg;
12397 }
12398
12399 /* Same as ada_exception_message_1, except that all exceptions are
12400    contained here (returning NULL instead).  */
12401
12402 static char *
12403 ada_exception_message (void)
12404 {
12405   char *e_msg = NULL;  /* Avoid a spurious uninitialized warning.  */
12406
12407   TRY
12408     {
12409       e_msg = ada_exception_message_1 ();
12410     }
12411   CATCH (e, RETURN_MASK_ERROR)
12412     {
12413       e_msg = NULL;
12414     }
12415   END_CATCH
12416
12417   return e_msg;
12418 }
12419
12420 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12421    any error that ada_exception_name_addr_1 might cause to be thrown.
12422    When an error is intercepted, a warning with the error message is printed,
12423    and zero is returned.  */
12424
12425 static CORE_ADDR
12426 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12427                          struct breakpoint *b)
12428 {
12429   CORE_ADDR result = 0;
12430
12431   TRY
12432     {
12433       result = ada_exception_name_addr_1 (ex, b);
12434     }
12435
12436   CATCH (e, RETURN_MASK_ERROR)
12437     {
12438       warning (_("failed to get exception name: %s"), e.message);
12439       return 0;
12440     }
12441   END_CATCH
12442
12443   return result;
12444 }
12445
12446 static char *ada_exception_catchpoint_cond_string
12447   (const char *excep_string,
12448    enum ada_exception_catchpoint_kind ex);
12449
12450 /* Ada catchpoints.
12451
12452    In the case of catchpoints on Ada exceptions, the catchpoint will
12453    stop the target on every exception the program throws.  When a user
12454    specifies the name of a specific exception, we translate this
12455    request into a condition expression (in text form), and then parse
12456    it into an expression stored in each of the catchpoint's locations.
12457    We then use this condition to check whether the exception that was
12458    raised is the one the user is interested in.  If not, then the
12459    target is resumed again.  We store the name of the requested
12460    exception, in order to be able to re-set the condition expression
12461    when symbols change.  */
12462
12463 /* An instance of this type is used to represent an Ada catchpoint
12464    breakpoint location.  */
12465
12466 class ada_catchpoint_location : public bp_location
12467 {
12468 public:
12469   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12470     : bp_location (ops, owner)
12471   {}
12472
12473   /* The condition that checks whether the exception that was raised
12474      is the specific exception the user specified on catchpoint
12475      creation.  */
12476   expression_up excep_cond_expr;
12477 };
12478
12479 /* Implement the DTOR method in the bp_location_ops structure for all
12480    Ada exception catchpoint kinds.  */
12481
12482 static void
12483 ada_catchpoint_location_dtor (struct bp_location *bl)
12484 {
12485   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12486
12487   al->excep_cond_expr.reset ();
12488 }
12489
12490 /* The vtable to be used in Ada catchpoint locations.  */
12491
12492 static const struct bp_location_ops ada_catchpoint_location_ops =
12493 {
12494   ada_catchpoint_location_dtor
12495 };
12496
12497 /* An instance of this type is used to represent an Ada catchpoint.  */
12498
12499 struct ada_catchpoint : public breakpoint
12500 {
12501   ~ada_catchpoint () override;
12502
12503   /* The name of the specific exception the user specified.  */
12504   char *excep_string;
12505 };
12506
12507 /* Parse the exception condition string in the context of each of the
12508    catchpoint's locations, and store them for later evaluation.  */
12509
12510 static void
12511 create_excep_cond_exprs (struct ada_catchpoint *c,
12512                          enum ada_exception_catchpoint_kind ex)
12513 {
12514   struct cleanup *old_chain;
12515   struct bp_location *bl;
12516   char *cond_string;
12517
12518   /* Nothing to do if there's no specific exception to catch.  */
12519   if (c->excep_string == NULL)
12520     return;
12521
12522   /* Same if there are no locations... */
12523   if (c->loc == NULL)
12524     return;
12525
12526   /* Compute the condition expression in text form, from the specific
12527      expection we want to catch.  */
12528   cond_string = ada_exception_catchpoint_cond_string (c->excep_string, ex);
12529   old_chain = make_cleanup (xfree, cond_string);
12530
12531   /* Iterate over all the catchpoint's locations, and parse an
12532      expression for each.  */
12533   for (bl = c->loc; bl != NULL; bl = bl->next)
12534     {
12535       struct ada_catchpoint_location *ada_loc
12536         = (struct ada_catchpoint_location *) bl;
12537       expression_up exp;
12538
12539       if (!bl->shlib_disabled)
12540         {
12541           const char *s;
12542
12543           s = cond_string;
12544           TRY
12545             {
12546               exp = parse_exp_1 (&s, bl->address,
12547                                  block_for_pc (bl->address),
12548                                  0);
12549             }
12550           CATCH (e, RETURN_MASK_ERROR)
12551             {
12552               warning (_("failed to reevaluate internal exception condition "
12553                          "for catchpoint %d: %s"),
12554                        c->number, e.message);
12555             }
12556           END_CATCH
12557         }
12558
12559       ada_loc->excep_cond_expr = std::move (exp);
12560     }
12561
12562   do_cleanups (old_chain);
12563 }
12564
12565 /* ada_catchpoint destructor.  */
12566
12567 ada_catchpoint::~ada_catchpoint ()
12568 {
12569   xfree (this->excep_string);
12570 }
12571
12572 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12573    structure for all exception catchpoint kinds.  */
12574
12575 static struct bp_location *
12576 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12577                              struct breakpoint *self)
12578 {
12579   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12580 }
12581
12582 /* Implement the RE_SET method in the breakpoint_ops structure for all
12583    exception catchpoint kinds.  */
12584
12585 static void
12586 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12587 {
12588   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12589
12590   /* Call the base class's method.  This updates the catchpoint's
12591      locations.  */
12592   bkpt_breakpoint_ops.re_set (b);
12593
12594   /* Reparse the exception conditional expressions.  One for each
12595      location.  */
12596   create_excep_cond_exprs (c, ex);
12597 }
12598
12599 /* Returns true if we should stop for this breakpoint hit.  If the
12600    user specified a specific exception, we only want to cause a stop
12601    if the program thrown that exception.  */
12602
12603 static int
12604 should_stop_exception (const struct bp_location *bl)
12605 {
12606   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12607   const struct ada_catchpoint_location *ada_loc
12608     = (const struct ada_catchpoint_location *) bl;
12609   int stop;
12610
12611   /* With no specific exception, should always stop.  */
12612   if (c->excep_string == NULL)
12613     return 1;
12614
12615   if (ada_loc->excep_cond_expr == NULL)
12616     {
12617       /* We will have a NULL expression if back when we were creating
12618          the expressions, this location's had failed to parse.  */
12619       return 1;
12620     }
12621
12622   stop = 1;
12623   TRY
12624     {
12625       struct value *mark;
12626
12627       mark = value_mark ();
12628       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12629       value_free_to_mark (mark);
12630     }
12631   CATCH (ex, RETURN_MASK_ALL)
12632     {
12633       exception_fprintf (gdb_stderr, ex,
12634                          _("Error in testing exception condition:\n"));
12635     }
12636   END_CATCH
12637
12638   return stop;
12639 }
12640
12641 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12642    for all exception catchpoint kinds.  */
12643
12644 static void
12645 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12646 {
12647   bs->stop = should_stop_exception (bs->bp_location_at);
12648 }
12649
12650 /* Implement the PRINT_IT method in the breakpoint_ops structure
12651    for all exception catchpoint kinds.  */
12652
12653 static enum print_stop_action
12654 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12655 {
12656   struct ui_out *uiout = current_uiout;
12657   struct breakpoint *b = bs->breakpoint_at;
12658   char *exception_message;
12659
12660   annotate_catchpoint (b->number);
12661
12662   if (uiout->is_mi_like_p ())
12663     {
12664       uiout->field_string ("reason",
12665                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12666       uiout->field_string ("disp", bpdisp_text (b->disposition));
12667     }
12668
12669   uiout->text (b->disposition == disp_del
12670                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12671   uiout->field_int ("bkptno", b->number);
12672   uiout->text (", ");
12673
12674   /* ada_exception_name_addr relies on the selected frame being the
12675      current frame.  Need to do this here because this function may be
12676      called more than once when printing a stop, and below, we'll
12677      select the first frame past the Ada run-time (see
12678      ada_find_printable_frame).  */
12679   select_frame (get_current_frame ());
12680
12681   switch (ex)
12682     {
12683       case ada_catch_exception:
12684       case ada_catch_exception_unhandled:
12685       case ada_catch_handlers:
12686         {
12687           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12688           char exception_name[256];
12689
12690           if (addr != 0)
12691             {
12692               read_memory (addr, (gdb_byte *) exception_name,
12693                            sizeof (exception_name) - 1);
12694               exception_name [sizeof (exception_name) - 1] = '\0';
12695             }
12696           else
12697             {
12698               /* For some reason, we were unable to read the exception
12699                  name.  This could happen if the Runtime was compiled
12700                  without debugging info, for instance.  In that case,
12701                  just replace the exception name by the generic string
12702                  "exception" - it will read as "an exception" in the
12703                  notification we are about to print.  */
12704               memcpy (exception_name, "exception", sizeof ("exception"));
12705             }
12706           /* In the case of unhandled exception breakpoints, we print
12707              the exception name as "unhandled EXCEPTION_NAME", to make
12708              it clearer to the user which kind of catchpoint just got
12709              hit.  We used ui_out_text to make sure that this extra
12710              info does not pollute the exception name in the MI case.  */
12711           if (ex == ada_catch_exception_unhandled)
12712             uiout->text ("unhandled ");
12713           uiout->field_string ("exception-name", exception_name);
12714         }
12715         break;
12716       case ada_catch_assert:
12717         /* In this case, the name of the exception is not really
12718            important.  Just print "failed assertion" to make it clearer
12719            that his program just hit an assertion-failure catchpoint.
12720            We used ui_out_text because this info does not belong in
12721            the MI output.  */
12722         uiout->text ("failed assertion");
12723         break;
12724     }
12725
12726   exception_message = ada_exception_message ();
12727   if (exception_message != NULL)
12728     {
12729       struct cleanup *cleanups = make_cleanup (xfree, exception_message);
12730
12731       uiout->text (" (");
12732       uiout->field_string ("exception-message", exception_message);
12733       uiout->text (")");
12734
12735       do_cleanups (cleanups);
12736     }
12737
12738   uiout->text (" at ");
12739   ada_find_printable_frame (get_current_frame ());
12740
12741   return PRINT_SRC_AND_LOC;
12742 }
12743
12744 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12745    for all exception catchpoint kinds.  */
12746
12747 static void
12748 print_one_exception (enum ada_exception_catchpoint_kind ex,
12749                      struct breakpoint *b, struct bp_location **last_loc)
12750
12751   struct ui_out *uiout = current_uiout;
12752   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12753   struct value_print_options opts;
12754
12755   get_user_print_options (&opts);
12756   if (opts.addressprint)
12757     {
12758       annotate_field (4);
12759       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12760     }
12761
12762   annotate_field (5);
12763   *last_loc = b->loc;
12764   switch (ex)
12765     {
12766       case ada_catch_exception:
12767         if (c->excep_string != NULL)
12768           {
12769             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12770
12771             uiout->field_string ("what", msg);
12772             xfree (msg);
12773           }
12774         else
12775           uiout->field_string ("what", "all Ada exceptions");
12776         
12777         break;
12778
12779       case ada_catch_exception_unhandled:
12780         uiout->field_string ("what", "unhandled Ada exceptions");
12781         break;
12782       
12783       case ada_catch_handlers:
12784         if (c->excep_string != NULL)
12785           {
12786             uiout->field_fmt ("what",
12787                               _("`%s' Ada exception handlers"),
12788                               c->excep_string);
12789           }
12790         else
12791           uiout->field_string ("what", "all Ada exceptions handlers");
12792         break;
12793
12794       case ada_catch_assert:
12795         uiout->field_string ("what", "failed Ada assertions");
12796         break;
12797
12798       default:
12799         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12800         break;
12801     }
12802 }
12803
12804 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12805    for all exception catchpoint kinds.  */
12806
12807 static void
12808 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12809                          struct breakpoint *b)
12810 {
12811   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12812   struct ui_out *uiout = current_uiout;
12813
12814   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12815                                                  : _("Catchpoint "));
12816   uiout->field_int ("bkptno", b->number);
12817   uiout->text (": ");
12818
12819   switch (ex)
12820     {
12821       case ada_catch_exception:
12822         if (c->excep_string != NULL)
12823           {
12824             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12825             struct cleanup *old_chain = make_cleanup (xfree, info);
12826
12827             uiout->text (info);
12828             do_cleanups (old_chain);
12829           }
12830         else
12831           uiout->text (_("all Ada exceptions"));
12832         break;
12833
12834       case ada_catch_exception_unhandled:
12835         uiout->text (_("unhandled Ada exceptions"));
12836         break;
12837
12838       case ada_catch_handlers:
12839         if (c->excep_string != NULL)
12840           {
12841             std::string info
12842               = string_printf (_("`%s' Ada exception handlers"),
12843                                c->excep_string);
12844             uiout->text (info.c_str ());
12845           }
12846         else
12847           uiout->text (_("all Ada exceptions handlers"));
12848         break;
12849
12850       case ada_catch_assert:
12851         uiout->text (_("failed Ada assertions"));
12852         break;
12853
12854       default:
12855         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12856         break;
12857     }
12858 }
12859
12860 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12861    for all exception catchpoint kinds.  */
12862
12863 static void
12864 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12865                           struct breakpoint *b, struct ui_file *fp)
12866 {
12867   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12868
12869   switch (ex)
12870     {
12871       case ada_catch_exception:
12872         fprintf_filtered (fp, "catch exception");
12873         if (c->excep_string != NULL)
12874           fprintf_filtered (fp, " %s", c->excep_string);
12875         break;
12876
12877       case ada_catch_exception_unhandled:
12878         fprintf_filtered (fp, "catch exception unhandled");
12879         break;
12880
12881       case ada_catch_handlers:
12882         fprintf_filtered (fp, "catch handlers");
12883         break;
12884
12885       case ada_catch_assert:
12886         fprintf_filtered (fp, "catch assert");
12887         break;
12888
12889       default:
12890         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12891     }
12892   print_recreate_thread (b, fp);
12893 }
12894
12895 /* Virtual table for "catch exception" breakpoints.  */
12896
12897 static struct bp_location *
12898 allocate_location_catch_exception (struct breakpoint *self)
12899 {
12900   return allocate_location_exception (ada_catch_exception, self);
12901 }
12902
12903 static void
12904 re_set_catch_exception (struct breakpoint *b)
12905 {
12906   re_set_exception (ada_catch_exception, b);
12907 }
12908
12909 static void
12910 check_status_catch_exception (bpstat bs)
12911 {
12912   check_status_exception (ada_catch_exception, bs);
12913 }
12914
12915 static enum print_stop_action
12916 print_it_catch_exception (bpstat bs)
12917 {
12918   return print_it_exception (ada_catch_exception, bs);
12919 }
12920
12921 static void
12922 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12923 {
12924   print_one_exception (ada_catch_exception, b, last_loc);
12925 }
12926
12927 static void
12928 print_mention_catch_exception (struct breakpoint *b)
12929 {
12930   print_mention_exception (ada_catch_exception, b);
12931 }
12932
12933 static void
12934 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12935 {
12936   print_recreate_exception (ada_catch_exception, b, fp);
12937 }
12938
12939 static struct breakpoint_ops catch_exception_breakpoint_ops;
12940
12941 /* Virtual table for "catch exception unhandled" breakpoints.  */
12942
12943 static struct bp_location *
12944 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12945 {
12946   return allocate_location_exception (ada_catch_exception_unhandled, self);
12947 }
12948
12949 static void
12950 re_set_catch_exception_unhandled (struct breakpoint *b)
12951 {
12952   re_set_exception (ada_catch_exception_unhandled, b);
12953 }
12954
12955 static void
12956 check_status_catch_exception_unhandled (bpstat bs)
12957 {
12958   check_status_exception (ada_catch_exception_unhandled, bs);
12959 }
12960
12961 static enum print_stop_action
12962 print_it_catch_exception_unhandled (bpstat bs)
12963 {
12964   return print_it_exception (ada_catch_exception_unhandled, bs);
12965 }
12966
12967 static void
12968 print_one_catch_exception_unhandled (struct breakpoint *b,
12969                                      struct bp_location **last_loc)
12970 {
12971   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12972 }
12973
12974 static void
12975 print_mention_catch_exception_unhandled (struct breakpoint *b)
12976 {
12977   print_mention_exception (ada_catch_exception_unhandled, b);
12978 }
12979
12980 static void
12981 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12982                                           struct ui_file *fp)
12983 {
12984   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12985 }
12986
12987 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12988
12989 /* Virtual table for "catch assert" breakpoints.  */
12990
12991 static struct bp_location *
12992 allocate_location_catch_assert (struct breakpoint *self)
12993 {
12994   return allocate_location_exception (ada_catch_assert, self);
12995 }
12996
12997 static void
12998 re_set_catch_assert (struct breakpoint *b)
12999 {
13000   re_set_exception (ada_catch_assert, b);
13001 }
13002
13003 static void
13004 check_status_catch_assert (bpstat bs)
13005 {
13006   check_status_exception (ada_catch_assert, bs);
13007 }
13008
13009 static enum print_stop_action
13010 print_it_catch_assert (bpstat bs)
13011 {
13012   return print_it_exception (ada_catch_assert, bs);
13013 }
13014
13015 static void
13016 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
13017 {
13018   print_one_exception (ada_catch_assert, b, last_loc);
13019 }
13020
13021 static void
13022 print_mention_catch_assert (struct breakpoint *b)
13023 {
13024   print_mention_exception (ada_catch_assert, b);
13025 }
13026
13027 static void
13028 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
13029 {
13030   print_recreate_exception (ada_catch_assert, b, fp);
13031 }
13032
13033 static struct breakpoint_ops catch_assert_breakpoint_ops;
13034
13035 /* Virtual table for "catch handlers" breakpoints.  */
13036
13037 static struct bp_location *
13038 allocate_location_catch_handlers (struct breakpoint *self)
13039 {
13040   return allocate_location_exception (ada_catch_handlers, self);
13041 }
13042
13043 static void
13044 re_set_catch_handlers (struct breakpoint *b)
13045 {
13046   re_set_exception (ada_catch_handlers, b);
13047 }
13048
13049 static void
13050 check_status_catch_handlers (bpstat bs)
13051 {
13052   check_status_exception (ada_catch_handlers, bs);
13053 }
13054
13055 static enum print_stop_action
13056 print_it_catch_handlers (bpstat bs)
13057 {
13058   return print_it_exception (ada_catch_handlers, bs);
13059 }
13060
13061 static void
13062 print_one_catch_handlers (struct breakpoint *b,
13063                           struct bp_location **last_loc)
13064 {
13065   print_one_exception (ada_catch_handlers, b, last_loc);
13066 }
13067
13068 static void
13069 print_mention_catch_handlers (struct breakpoint *b)
13070 {
13071   print_mention_exception (ada_catch_handlers, b);
13072 }
13073
13074 static void
13075 print_recreate_catch_handlers (struct breakpoint *b,
13076                                struct ui_file *fp)
13077 {
13078   print_recreate_exception (ada_catch_handlers, b, fp);
13079 }
13080
13081 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13082
13083 /* Return a newly allocated copy of the first space-separated token
13084    in ARGSP, and then adjust ARGSP to point immediately after that
13085    token.
13086
13087    Return NULL if ARGPS does not contain any more tokens.  */
13088
13089 static char *
13090 ada_get_next_arg (const char **argsp)
13091 {
13092   const char *args = *argsp;
13093   const char *end;
13094   char *result;
13095
13096   args = skip_spaces (args);
13097   if (args[0] == '\0')
13098     return NULL; /* No more arguments.  */
13099   
13100   /* Find the end of the current argument.  */
13101
13102   end = skip_to_space (args);
13103
13104   /* Adjust ARGSP to point to the start of the next argument.  */
13105
13106   *argsp = end;
13107
13108   /* Make a copy of the current argument and return it.  */
13109
13110   result = (char *) xmalloc (end - args + 1);
13111   strncpy (result, args, end - args);
13112   result[end - args] = '\0';
13113   
13114   return result;
13115 }
13116
13117 /* Split the arguments specified in a "catch exception" command.  
13118    Set EX to the appropriate catchpoint type.
13119    Set EXCEP_STRING to the name of the specific exception if
13120    specified by the user.
13121    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13122    "catch handlers" command.  False otherwise.
13123    If a condition is found at the end of the arguments, the condition
13124    expression is stored in COND_STRING (memory must be deallocated
13125    after use).  Otherwise COND_STRING is set to NULL.  */
13126
13127 static void
13128 catch_ada_exception_command_split (const char *args,
13129                                    bool is_catch_handlers_cmd,
13130                                    enum ada_exception_catchpoint_kind *ex,
13131                                    char **excep_string,
13132                                    char **cond_string)
13133 {
13134   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
13135   char *exception_name;
13136   char *cond = NULL;
13137
13138   exception_name = ada_get_next_arg (&args);
13139   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
13140     {
13141       /* This is not an exception name; this is the start of a condition
13142          expression for a catchpoint on all exceptions.  So, "un-get"
13143          this token, and set exception_name to NULL.  */
13144       xfree (exception_name);
13145       exception_name = NULL;
13146       args -= 2;
13147     }
13148   make_cleanup (xfree, exception_name);
13149
13150   /* Check to see if we have a condition.  */
13151
13152   args = skip_spaces (args);
13153   if (startswith (args, "if")
13154       && (isspace (args[2]) || args[2] == '\0'))
13155     {
13156       args += 2;
13157       args = skip_spaces (args);
13158
13159       if (args[0] == '\0')
13160         error (_("Condition missing after `if' keyword"));
13161       cond = xstrdup (args);
13162       make_cleanup (xfree, cond);
13163
13164       args += strlen (args);
13165     }
13166
13167   /* Check that we do not have any more arguments.  Anything else
13168      is unexpected.  */
13169
13170   if (args[0] != '\0')
13171     error (_("Junk at end of expression"));
13172
13173   discard_cleanups (old_chain);
13174
13175   if (is_catch_handlers_cmd)
13176     {
13177       /* Catch handling of exceptions.  */
13178       *ex = ada_catch_handlers;
13179       *excep_string = exception_name;
13180     }
13181   else if (exception_name == NULL)
13182     {
13183       /* Catch all exceptions.  */
13184       *ex = ada_catch_exception;
13185       *excep_string = NULL;
13186     }
13187   else if (strcmp (exception_name, "unhandled") == 0)
13188     {
13189       /* Catch unhandled exceptions.  */
13190       *ex = ada_catch_exception_unhandled;
13191       *excep_string = NULL;
13192     }
13193   else
13194     {
13195       /* Catch a specific exception.  */
13196       *ex = ada_catch_exception;
13197       *excep_string = exception_name;
13198     }
13199   *cond_string = cond;
13200 }
13201
13202 /* Return the name of the symbol on which we should break in order to
13203    implement a catchpoint of the EX kind.  */
13204
13205 static const char *
13206 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13207 {
13208   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13209
13210   gdb_assert (data->exception_info != NULL);
13211
13212   switch (ex)
13213     {
13214       case ada_catch_exception:
13215         return (data->exception_info->catch_exception_sym);
13216         break;
13217       case ada_catch_exception_unhandled:
13218         return (data->exception_info->catch_exception_unhandled_sym);
13219         break;
13220       case ada_catch_assert:
13221         return (data->exception_info->catch_assert_sym);
13222         break;
13223       case ada_catch_handlers:
13224         return (data->exception_info->catch_handlers_sym);
13225         break;
13226       default:
13227         internal_error (__FILE__, __LINE__,
13228                         _("unexpected catchpoint kind (%d)"), ex);
13229     }
13230 }
13231
13232 /* Return the breakpoint ops "virtual table" used for catchpoints
13233    of the EX kind.  */
13234
13235 static const struct breakpoint_ops *
13236 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13237 {
13238   switch (ex)
13239     {
13240       case ada_catch_exception:
13241         return (&catch_exception_breakpoint_ops);
13242         break;
13243       case ada_catch_exception_unhandled:
13244         return (&catch_exception_unhandled_breakpoint_ops);
13245         break;
13246       case ada_catch_assert:
13247         return (&catch_assert_breakpoint_ops);
13248         break;
13249       case ada_catch_handlers:
13250         return (&catch_handlers_breakpoint_ops);
13251         break;
13252       default:
13253         internal_error (__FILE__, __LINE__,
13254                         _("unexpected catchpoint kind (%d)"), ex);
13255     }
13256 }
13257
13258 /* Return the condition that will be used to match the current exception
13259    being raised with the exception that the user wants to catch.  This
13260    assumes that this condition is used when the inferior just triggered
13261    an exception catchpoint.
13262    EX: the type of catchpoints used for catching Ada exceptions.
13263    
13264    The string returned is a newly allocated string that needs to be
13265    deallocated later.  */
13266
13267 static char *
13268 ada_exception_catchpoint_cond_string (const char *excep_string,
13269                                       enum ada_exception_catchpoint_kind ex)
13270 {
13271   int i;
13272   bool is_standard_exc = false;
13273   const char *actual_exc_expr;
13274   char *ref_exc_expr;
13275
13276   if (ex == ada_catch_handlers)
13277     {
13278       /* For exception handlers catchpoints, the condition string does
13279          not use the same parameter as for the other exceptions.  */
13280       actual_exc_expr = ("long_integer (GNAT_GCC_exception_Access"
13281                          "(gcc_exception).all.occurrence.id)");
13282     }
13283   else
13284     actual_exc_expr = "long_integer (e)";
13285
13286   /* The standard exceptions are a special case.  They are defined in
13287      runtime units that have been compiled without debugging info; if
13288      EXCEP_STRING is the not-fully-qualified name of a standard
13289      exception (e.g. "constraint_error") then, during the evaluation
13290      of the condition expression, the symbol lookup on this name would
13291      *not* return this standard exception.  The catchpoint condition
13292      may then be set only on user-defined exceptions which have the
13293      same not-fully-qualified name (e.g. my_package.constraint_error).
13294
13295      To avoid this unexcepted behavior, these standard exceptions are
13296      systematically prefixed by "standard".  This means that "catch
13297      exception constraint_error" is rewritten into "catch exception
13298      standard.constraint_error".
13299
13300      If an exception named contraint_error is defined in another package of
13301      the inferior program, then the only way to specify this exception as a
13302      breakpoint condition is to use its fully-qualified named:
13303      e.g. my_package.constraint_error.  */
13304
13305   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13306     {
13307       if (strcmp (standard_exc [i], excep_string) == 0)
13308         {
13309           is_standard_exc = true;
13310           break;
13311         }
13312     }
13313
13314   if (is_standard_exc)
13315     ref_exc_expr = xstrprintf ("long_integer (&standard.%s)", excep_string);
13316   else
13317     ref_exc_expr = xstrprintf ("long_integer (&%s)", excep_string);
13318
13319   char *result =  xstrprintf ("%s = %s", actual_exc_expr, ref_exc_expr);
13320   xfree (ref_exc_expr);
13321   return result;
13322 }
13323
13324 /* Return the symtab_and_line that should be used to insert an exception
13325    catchpoint of the TYPE kind.
13326
13327    EXCEP_STRING should contain the name of a specific exception that
13328    the catchpoint should catch, or NULL otherwise.
13329
13330    ADDR_STRING returns the name of the function where the real
13331    breakpoint that implements the catchpoints is set, depending on the
13332    type of catchpoint we need to create.  */
13333
13334 static struct symtab_and_line
13335 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
13336                    const char **addr_string, const struct breakpoint_ops **ops)
13337 {
13338   const char *sym_name;
13339   struct symbol *sym;
13340
13341   /* First, find out which exception support info to use.  */
13342   ada_exception_support_info_sniffer ();
13343
13344   /* Then lookup the function on which we will break in order to catch
13345      the Ada exceptions requested by the user.  */
13346   sym_name = ada_exception_sym_name (ex);
13347   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13348
13349   /* We can assume that SYM is not NULL at this stage.  If the symbol
13350      did not exist, ada_exception_support_info_sniffer would have
13351      raised an exception.
13352
13353      Also, ada_exception_support_info_sniffer should have already
13354      verified that SYM is a function symbol.  */
13355   gdb_assert (sym != NULL);
13356   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
13357
13358   /* Set ADDR_STRING.  */
13359   *addr_string = xstrdup (sym_name);
13360
13361   /* Set OPS.  */
13362   *ops = ada_exception_breakpoint_ops (ex);
13363
13364   return find_function_start_sal (sym, 1);
13365 }
13366
13367 /* Create an Ada exception catchpoint.
13368
13369    EX_KIND is the kind of exception catchpoint to be created.
13370
13371    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
13372    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13373    of the exception to which this catchpoint applies.  When not NULL,
13374    the string must be allocated on the heap, and its deallocation
13375    is no longer the responsibility of the caller.
13376
13377    COND_STRING, if not NULL, is the catchpoint condition.  This string
13378    must be allocated on the heap, and its deallocation is no longer
13379    the responsibility of the caller.
13380
13381    TEMPFLAG, if nonzero, means that the underlying breakpoint
13382    should be temporary.
13383
13384    FROM_TTY is the usual argument passed to all commands implementations.  */
13385
13386 void
13387 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13388                                  enum ada_exception_catchpoint_kind ex_kind,
13389                                  char *excep_string,
13390                                  char *cond_string,
13391                                  int tempflag,
13392                                  int disabled,
13393                                  int from_tty)
13394 {
13395   const char *addr_string = NULL;
13396   const struct breakpoint_ops *ops = NULL;
13397   struct symtab_and_line sal
13398     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
13399
13400   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13401   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13402                                  ops, tempflag, disabled, from_tty);
13403   c->excep_string = excep_string;
13404   create_excep_cond_exprs (c.get (), ex_kind);
13405   if (cond_string != NULL)
13406     set_breakpoint_condition (c.get (), cond_string, from_tty);
13407   install_breakpoint (0, std::move (c), 1);
13408 }
13409
13410 /* Implement the "catch exception" command.  */
13411
13412 static void
13413 catch_ada_exception_command (const char *arg_entry, int from_tty,
13414                              struct cmd_list_element *command)
13415 {
13416   const char *arg = arg_entry;
13417   struct gdbarch *gdbarch = get_current_arch ();
13418   int tempflag;
13419   enum ada_exception_catchpoint_kind ex_kind;
13420   char *excep_string = NULL;
13421   char *cond_string = NULL;
13422
13423   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13424
13425   if (!arg)
13426     arg = "";
13427   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13428                                      &cond_string);
13429   create_ada_exception_catchpoint (gdbarch, ex_kind,
13430                                    excep_string, cond_string,
13431                                    tempflag, 1 /* enabled */,
13432                                    from_tty);
13433 }
13434
13435 /* Implement the "catch handlers" command.  */
13436
13437 static void
13438 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13439                             struct cmd_list_element *command)
13440 {
13441   const char *arg = arg_entry;
13442   struct gdbarch *gdbarch = get_current_arch ();
13443   int tempflag;
13444   enum ada_exception_catchpoint_kind ex_kind;
13445   char *excep_string = NULL;
13446   char *cond_string = NULL;
13447
13448   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13449
13450   if (!arg)
13451     arg = "";
13452   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13453                                      &cond_string);
13454   create_ada_exception_catchpoint (gdbarch, ex_kind,
13455                                    excep_string, cond_string,
13456                                    tempflag, 1 /* enabled */,
13457                                    from_tty);
13458 }
13459
13460 /* Split the arguments specified in a "catch assert" command.
13461
13462    ARGS contains the command's arguments (or the empty string if
13463    no arguments were passed).
13464
13465    If ARGS contains a condition, set COND_STRING to that condition
13466    (the memory needs to be deallocated after use).  */
13467
13468 static void
13469 catch_ada_assert_command_split (const char *args, char **cond_string)
13470 {
13471   args = skip_spaces (args);
13472
13473   /* Check whether a condition was provided.  */
13474   if (startswith (args, "if")
13475       && (isspace (args[2]) || args[2] == '\0'))
13476     {
13477       args += 2;
13478       args = skip_spaces (args);
13479       if (args[0] == '\0')
13480         error (_("condition missing after `if' keyword"));
13481       *cond_string = xstrdup (args);
13482     }
13483
13484   /* Otherwise, there should be no other argument at the end of
13485      the command.  */
13486   else if (args[0] != '\0')
13487     error (_("Junk at end of arguments."));
13488 }
13489
13490 /* Implement the "catch assert" command.  */
13491
13492 static void
13493 catch_assert_command (const char *arg_entry, int from_tty,
13494                       struct cmd_list_element *command)
13495 {
13496   const char *arg = arg_entry;
13497   struct gdbarch *gdbarch = get_current_arch ();
13498   int tempflag;
13499   char *cond_string = NULL;
13500
13501   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13502
13503   if (!arg)
13504     arg = "";
13505   catch_ada_assert_command_split (arg, &cond_string);
13506   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13507                                    NULL, cond_string,
13508                                    tempflag, 1 /* enabled */,
13509                                    from_tty);
13510 }
13511
13512 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13513
13514 static int
13515 ada_is_exception_sym (struct symbol *sym)
13516 {
13517   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
13518
13519   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13520           && SYMBOL_CLASS (sym) != LOC_BLOCK
13521           && SYMBOL_CLASS (sym) != LOC_CONST
13522           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13523           && type_name != NULL && strcmp (type_name, "exception") == 0);
13524 }
13525
13526 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13527    Ada exception object.  This matches all exceptions except the ones
13528    defined by the Ada language.  */
13529
13530 static int
13531 ada_is_non_standard_exception_sym (struct symbol *sym)
13532 {
13533   int i;
13534
13535   if (!ada_is_exception_sym (sym))
13536     return 0;
13537
13538   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13539     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13540       return 0;  /* A standard exception.  */
13541
13542   /* Numeric_Error is also a standard exception, so exclude it.
13543      See the STANDARD_EXC description for more details as to why
13544      this exception is not listed in that array.  */
13545   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13546     return 0;
13547
13548   return 1;
13549 }
13550
13551 /* A helper function for std::sort, comparing two struct ada_exc_info
13552    objects.
13553
13554    The comparison is determined first by exception name, and then
13555    by exception address.  */
13556
13557 bool
13558 ada_exc_info::operator< (const ada_exc_info &other) const
13559 {
13560   int result;
13561
13562   result = strcmp (name, other.name);
13563   if (result < 0)
13564     return true;
13565   if (result == 0 && addr < other.addr)
13566     return true;
13567   return false;
13568 }
13569
13570 bool
13571 ada_exc_info::operator== (const ada_exc_info &other) const
13572 {
13573   return addr == other.addr && strcmp (name, other.name) == 0;
13574 }
13575
13576 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13577    routine, but keeping the first SKIP elements untouched.
13578
13579    All duplicates are also removed.  */
13580
13581 static void
13582 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13583                                       int skip)
13584 {
13585   std::sort (exceptions->begin () + skip, exceptions->end ());
13586   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13587                      exceptions->end ());
13588 }
13589
13590 /* Add all exceptions defined by the Ada standard whose name match
13591    a regular expression.
13592
13593    If PREG is not NULL, then this regexp_t object is used to
13594    perform the symbol name matching.  Otherwise, no name-based
13595    filtering is performed.
13596
13597    EXCEPTIONS is a vector of exceptions to which matching exceptions
13598    gets pushed.  */
13599
13600 static void
13601 ada_add_standard_exceptions (compiled_regex *preg,
13602                              std::vector<ada_exc_info> *exceptions)
13603 {
13604   int i;
13605
13606   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13607     {
13608       if (preg == NULL
13609           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13610         {
13611           struct bound_minimal_symbol msymbol
13612             = ada_lookup_simple_minsym (standard_exc[i]);
13613
13614           if (msymbol.minsym != NULL)
13615             {
13616               struct ada_exc_info info
13617                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13618
13619               exceptions->push_back (info);
13620             }
13621         }
13622     }
13623 }
13624
13625 /* Add all Ada exceptions defined locally and accessible from the given
13626    FRAME.
13627
13628    If PREG is not NULL, then this regexp_t object is used to
13629    perform the symbol name matching.  Otherwise, no name-based
13630    filtering is performed.
13631
13632    EXCEPTIONS is a vector of exceptions to which matching exceptions
13633    gets pushed.  */
13634
13635 static void
13636 ada_add_exceptions_from_frame (compiled_regex *preg,
13637                                struct frame_info *frame,
13638                                std::vector<ada_exc_info> *exceptions)
13639 {
13640   const struct block *block = get_frame_block (frame, 0);
13641
13642   while (block != 0)
13643     {
13644       struct block_iterator iter;
13645       struct symbol *sym;
13646
13647       ALL_BLOCK_SYMBOLS (block, iter, sym)
13648         {
13649           switch (SYMBOL_CLASS (sym))
13650             {
13651             case LOC_TYPEDEF:
13652             case LOC_BLOCK:
13653             case LOC_CONST:
13654               break;
13655             default:
13656               if (ada_is_exception_sym (sym))
13657                 {
13658                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13659                                               SYMBOL_VALUE_ADDRESS (sym)};
13660
13661                   exceptions->push_back (info);
13662                 }
13663             }
13664         }
13665       if (BLOCK_FUNCTION (block) != NULL)
13666         break;
13667       block = BLOCK_SUPERBLOCK (block);
13668     }
13669 }
13670
13671 /* Return true if NAME matches PREG or if PREG is NULL.  */
13672
13673 static bool
13674 name_matches_regex (const char *name, compiled_regex *preg)
13675 {
13676   return (preg == NULL
13677           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13678 }
13679
13680 /* Add all exceptions defined globally whose name name match
13681    a regular expression, excluding standard exceptions.
13682
13683    The reason we exclude standard exceptions is that they need
13684    to be handled separately: Standard exceptions are defined inside
13685    a runtime unit which is normally not compiled with debugging info,
13686    and thus usually do not show up in our symbol search.  However,
13687    if the unit was in fact built with debugging info, we need to
13688    exclude them because they would duplicate the entry we found
13689    during the special loop that specifically searches for those
13690    standard exceptions.
13691
13692    If PREG is not NULL, then this regexp_t object is used to
13693    perform the symbol name matching.  Otherwise, no name-based
13694    filtering is performed.
13695
13696    EXCEPTIONS is a vector of exceptions to which matching exceptions
13697    gets pushed.  */
13698
13699 static void
13700 ada_add_global_exceptions (compiled_regex *preg,
13701                            std::vector<ada_exc_info> *exceptions)
13702 {
13703   struct objfile *objfile;
13704   struct compunit_symtab *s;
13705
13706   /* In Ada, the symbol "search name" is a linkage name, whereas the
13707      regular expression used to do the matching refers to the natural
13708      name.  So match against the decoded name.  */
13709   expand_symtabs_matching (NULL,
13710                            lookup_name_info::match_any (),
13711                            [&] (const char *search_name)
13712                            {
13713                              const char *decoded = ada_decode (search_name);
13714                              return name_matches_regex (decoded, preg);
13715                            },
13716                            NULL,
13717                            VARIABLES_DOMAIN);
13718
13719   ALL_COMPUNITS (objfile, s)
13720     {
13721       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13722       int i;
13723
13724       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13725         {
13726           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13727           struct block_iterator iter;
13728           struct symbol *sym;
13729
13730           ALL_BLOCK_SYMBOLS (b, iter, sym)
13731             if (ada_is_non_standard_exception_sym (sym)
13732                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13733               {
13734                 struct ada_exc_info info
13735                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13736
13737                 exceptions->push_back (info);
13738               }
13739         }
13740     }
13741 }
13742
13743 /* Implements ada_exceptions_list with the regular expression passed
13744    as a regex_t, rather than a string.
13745
13746    If not NULL, PREG is used to filter out exceptions whose names
13747    do not match.  Otherwise, all exceptions are listed.  */
13748
13749 static std::vector<ada_exc_info>
13750 ada_exceptions_list_1 (compiled_regex *preg)
13751 {
13752   std::vector<ada_exc_info> result;
13753   int prev_len;
13754
13755   /* First, list the known standard exceptions.  These exceptions
13756      need to be handled separately, as they are usually defined in
13757      runtime units that have been compiled without debugging info.  */
13758
13759   ada_add_standard_exceptions (preg, &result);
13760
13761   /* Next, find all exceptions whose scope is local and accessible
13762      from the currently selected frame.  */
13763
13764   if (has_stack_frames ())
13765     {
13766       prev_len = result.size ();
13767       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13768                                      &result);
13769       if (result.size () > prev_len)
13770         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13771     }
13772
13773   /* Add all exceptions whose scope is global.  */
13774
13775   prev_len = result.size ();
13776   ada_add_global_exceptions (preg, &result);
13777   if (result.size () > prev_len)
13778     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13779
13780   return result;
13781 }
13782
13783 /* Return a vector of ada_exc_info.
13784
13785    If REGEXP is NULL, all exceptions are included in the result.
13786    Otherwise, it should contain a valid regular expression,
13787    and only the exceptions whose names match that regular expression
13788    are included in the result.
13789
13790    The exceptions are sorted in the following order:
13791      - Standard exceptions (defined by the Ada language), in
13792        alphabetical order;
13793      - Exceptions only visible from the current frame, in
13794        alphabetical order;
13795      - Exceptions whose scope is global, in alphabetical order.  */
13796
13797 std::vector<ada_exc_info>
13798 ada_exceptions_list (const char *regexp)
13799 {
13800   if (regexp == NULL)
13801     return ada_exceptions_list_1 (NULL);
13802
13803   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13804   return ada_exceptions_list_1 (&reg);
13805 }
13806
13807 /* Implement the "info exceptions" command.  */
13808
13809 static void
13810 info_exceptions_command (const char *regexp, int from_tty)
13811 {
13812   struct gdbarch *gdbarch = get_current_arch ();
13813
13814   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13815
13816   if (regexp != NULL)
13817     printf_filtered
13818       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13819   else
13820     printf_filtered (_("All defined Ada exceptions:\n"));
13821
13822   for (const ada_exc_info &info : exceptions)
13823     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13824 }
13825
13826                                 /* Operators */
13827 /* Information about operators given special treatment in functions
13828    below.  */
13829 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13830
13831 #define ADA_OPERATORS \
13832     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13833     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13834     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13835     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13836     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13837     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13838     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13839     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13840     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13841     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13842     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13843     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13844     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13845     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13846     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13847     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13848     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13849     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13850     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13851
13852 static void
13853 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13854                      int *argsp)
13855 {
13856   switch (exp->elts[pc - 1].opcode)
13857     {
13858     default:
13859       operator_length_standard (exp, pc, oplenp, argsp);
13860       break;
13861
13862 #define OP_DEFN(op, len, args, binop) \
13863     case op: *oplenp = len; *argsp = args; break;
13864       ADA_OPERATORS;
13865 #undef OP_DEFN
13866
13867     case OP_AGGREGATE:
13868       *oplenp = 3;
13869       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13870       break;
13871
13872     case OP_CHOICES:
13873       *oplenp = 3;
13874       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13875       break;
13876     }
13877 }
13878
13879 /* Implementation of the exp_descriptor method operator_check.  */
13880
13881 static int
13882 ada_operator_check (struct expression *exp, int pos,
13883                     int (*objfile_func) (struct objfile *objfile, void *data),
13884                     void *data)
13885 {
13886   const union exp_element *const elts = exp->elts;
13887   struct type *type = NULL;
13888
13889   switch (elts[pos].opcode)
13890     {
13891       case UNOP_IN_RANGE:
13892       case UNOP_QUAL:
13893         type = elts[pos + 1].type;
13894         break;
13895
13896       default:
13897         return operator_check_standard (exp, pos, objfile_func, data);
13898     }
13899
13900   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13901
13902   if (type && TYPE_OBJFILE (type)
13903       && (*objfile_func) (TYPE_OBJFILE (type), data))
13904     return 1;
13905
13906   return 0;
13907 }
13908
13909 static const char *
13910 ada_op_name (enum exp_opcode opcode)
13911 {
13912   switch (opcode)
13913     {
13914     default:
13915       return op_name_standard (opcode);
13916
13917 #define OP_DEFN(op, len, args, binop) case op: return #op;
13918       ADA_OPERATORS;
13919 #undef OP_DEFN
13920
13921     case OP_AGGREGATE:
13922       return "OP_AGGREGATE";
13923     case OP_CHOICES:
13924       return "OP_CHOICES";
13925     case OP_NAME:
13926       return "OP_NAME";
13927     }
13928 }
13929
13930 /* As for operator_length, but assumes PC is pointing at the first
13931    element of the operator, and gives meaningful results only for the 
13932    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13933
13934 static void
13935 ada_forward_operator_length (struct expression *exp, int pc,
13936                              int *oplenp, int *argsp)
13937 {
13938   switch (exp->elts[pc].opcode)
13939     {
13940     default:
13941       *oplenp = *argsp = 0;
13942       break;
13943
13944 #define OP_DEFN(op, len, args, binop) \
13945     case op: *oplenp = len; *argsp = args; break;
13946       ADA_OPERATORS;
13947 #undef OP_DEFN
13948
13949     case OP_AGGREGATE:
13950       *oplenp = 3;
13951       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13952       break;
13953
13954     case OP_CHOICES:
13955       *oplenp = 3;
13956       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13957       break;
13958
13959     case OP_STRING:
13960     case OP_NAME:
13961       {
13962         int len = longest_to_int (exp->elts[pc + 1].longconst);
13963
13964         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13965         *argsp = 0;
13966         break;
13967       }
13968     }
13969 }
13970
13971 static int
13972 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13973 {
13974   enum exp_opcode op = exp->elts[elt].opcode;
13975   int oplen, nargs;
13976   int pc = elt;
13977   int i;
13978
13979   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13980
13981   switch (op)
13982     {
13983       /* Ada attributes ('Foo).  */
13984     case OP_ATR_FIRST:
13985     case OP_ATR_LAST:
13986     case OP_ATR_LENGTH:
13987     case OP_ATR_IMAGE:
13988     case OP_ATR_MAX:
13989     case OP_ATR_MIN:
13990     case OP_ATR_MODULUS:
13991     case OP_ATR_POS:
13992     case OP_ATR_SIZE:
13993     case OP_ATR_TAG:
13994     case OP_ATR_VAL:
13995       break;
13996
13997     case UNOP_IN_RANGE:
13998     case UNOP_QUAL:
13999       /* XXX: gdb_sprint_host_address, type_sprint */
14000       fprintf_filtered (stream, _("Type @"));
14001       gdb_print_host_address (exp->elts[pc + 1].type, stream);
14002       fprintf_filtered (stream, " (");
14003       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
14004       fprintf_filtered (stream, ")");
14005       break;
14006     case BINOP_IN_BOUNDS:
14007       fprintf_filtered (stream, " (%d)",
14008                         longest_to_int (exp->elts[pc + 2].longconst));
14009       break;
14010     case TERNOP_IN_RANGE:
14011       break;
14012
14013     case OP_AGGREGATE:
14014     case OP_OTHERS:
14015     case OP_DISCRETE_RANGE:
14016     case OP_POSITIONAL:
14017     case OP_CHOICES:
14018       break;
14019
14020     case OP_NAME:
14021     case OP_STRING:
14022       {
14023         char *name = &exp->elts[elt + 2].string;
14024         int len = longest_to_int (exp->elts[elt + 1].longconst);
14025
14026         fprintf_filtered (stream, "Text: `%.*s'", len, name);
14027         break;
14028       }
14029
14030     default:
14031       return dump_subexp_body_standard (exp, stream, elt);
14032     }
14033
14034   elt += oplen;
14035   for (i = 0; i < nargs; i += 1)
14036     elt = dump_subexp (exp, stream, elt);
14037
14038   return elt;
14039 }
14040
14041 /* The Ada extension of print_subexp (q.v.).  */
14042
14043 static void
14044 ada_print_subexp (struct expression *exp, int *pos,
14045                   struct ui_file *stream, enum precedence prec)
14046 {
14047   int oplen, nargs, i;
14048   int pc = *pos;
14049   enum exp_opcode op = exp->elts[pc].opcode;
14050
14051   ada_forward_operator_length (exp, pc, &oplen, &nargs);
14052
14053   *pos += oplen;
14054   switch (op)
14055     {
14056     default:
14057       *pos -= oplen;
14058       print_subexp_standard (exp, pos, stream, prec);
14059       return;
14060
14061     case OP_VAR_VALUE:
14062       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
14063       return;
14064
14065     case BINOP_IN_BOUNDS:
14066       /* XXX: sprint_subexp */
14067       print_subexp (exp, pos, stream, PREC_SUFFIX);
14068       fputs_filtered (" in ", stream);
14069       print_subexp (exp, pos, stream, PREC_SUFFIX);
14070       fputs_filtered ("'range", stream);
14071       if (exp->elts[pc + 1].longconst > 1)
14072         fprintf_filtered (stream, "(%ld)",
14073                           (long) exp->elts[pc + 1].longconst);
14074       return;
14075
14076     case TERNOP_IN_RANGE:
14077       if (prec >= PREC_EQUAL)
14078         fputs_filtered ("(", stream);
14079       /* XXX: sprint_subexp */
14080       print_subexp (exp, pos, stream, PREC_SUFFIX);
14081       fputs_filtered (" in ", stream);
14082       print_subexp (exp, pos, stream, PREC_EQUAL);
14083       fputs_filtered (" .. ", stream);
14084       print_subexp (exp, pos, stream, PREC_EQUAL);
14085       if (prec >= PREC_EQUAL)
14086         fputs_filtered (")", stream);
14087       return;
14088
14089     case OP_ATR_FIRST:
14090     case OP_ATR_LAST:
14091     case OP_ATR_LENGTH:
14092     case OP_ATR_IMAGE:
14093     case OP_ATR_MAX:
14094     case OP_ATR_MIN:
14095     case OP_ATR_MODULUS:
14096     case OP_ATR_POS:
14097     case OP_ATR_SIZE:
14098     case OP_ATR_TAG:
14099     case OP_ATR_VAL:
14100       if (exp->elts[*pos].opcode == OP_TYPE)
14101         {
14102           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14103             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14104                            &type_print_raw_options);
14105           *pos += 3;
14106         }
14107       else
14108         print_subexp (exp, pos, stream, PREC_SUFFIX);
14109       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14110       if (nargs > 1)
14111         {
14112           int tem;
14113
14114           for (tem = 1; tem < nargs; tem += 1)
14115             {
14116               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14117               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14118             }
14119           fputs_filtered (")", stream);
14120         }
14121       return;
14122
14123     case UNOP_QUAL:
14124       type_print (exp->elts[pc + 1].type, "", stream, 0);
14125       fputs_filtered ("'(", stream);
14126       print_subexp (exp, pos, stream, PREC_PREFIX);
14127       fputs_filtered (")", stream);
14128       return;
14129
14130     case UNOP_IN_RANGE:
14131       /* XXX: sprint_subexp */
14132       print_subexp (exp, pos, stream, PREC_SUFFIX);
14133       fputs_filtered (" in ", stream);
14134       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14135                      &type_print_raw_options);
14136       return;
14137
14138     case OP_DISCRETE_RANGE:
14139       print_subexp (exp, pos, stream, PREC_SUFFIX);
14140       fputs_filtered ("..", stream);
14141       print_subexp (exp, pos, stream, PREC_SUFFIX);
14142       return;
14143
14144     case OP_OTHERS:
14145       fputs_filtered ("others => ", stream);
14146       print_subexp (exp, pos, stream, PREC_SUFFIX);
14147       return;
14148
14149     case OP_CHOICES:
14150       for (i = 0; i < nargs-1; i += 1)
14151         {
14152           if (i > 0)
14153             fputs_filtered ("|", stream);
14154           print_subexp (exp, pos, stream, PREC_SUFFIX);
14155         }
14156       fputs_filtered (" => ", stream);
14157       print_subexp (exp, pos, stream, PREC_SUFFIX);
14158       return;
14159       
14160     case OP_POSITIONAL:
14161       print_subexp (exp, pos, stream, PREC_SUFFIX);
14162       return;
14163
14164     case OP_AGGREGATE:
14165       fputs_filtered ("(", stream);
14166       for (i = 0; i < nargs; i += 1)
14167         {
14168           if (i > 0)
14169             fputs_filtered (", ", stream);
14170           print_subexp (exp, pos, stream, PREC_SUFFIX);
14171         }
14172       fputs_filtered (")", stream);
14173       return;
14174     }
14175 }
14176
14177 /* Table mapping opcodes into strings for printing operators
14178    and precedences of the operators.  */
14179
14180 static const struct op_print ada_op_print_tab[] = {
14181   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14182   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14183   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14184   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14185   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14186   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14187   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14188   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14189   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14190   {">=", BINOP_GEQ, PREC_ORDER, 0},
14191   {">", BINOP_GTR, PREC_ORDER, 0},
14192   {"<", BINOP_LESS, PREC_ORDER, 0},
14193   {">>", BINOP_RSH, PREC_SHIFT, 0},
14194   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14195   {"+", BINOP_ADD, PREC_ADD, 0},
14196   {"-", BINOP_SUB, PREC_ADD, 0},
14197   {"&", BINOP_CONCAT, PREC_ADD, 0},
14198   {"*", BINOP_MUL, PREC_MUL, 0},
14199   {"/", BINOP_DIV, PREC_MUL, 0},
14200   {"rem", BINOP_REM, PREC_MUL, 0},
14201   {"mod", BINOP_MOD, PREC_MUL, 0},
14202   {"**", BINOP_EXP, PREC_REPEAT, 0},
14203   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14204   {"-", UNOP_NEG, PREC_PREFIX, 0},
14205   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14206   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14207   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14208   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14209   {".all", UNOP_IND, PREC_SUFFIX, 1},
14210   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14211   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14212   {NULL, OP_NULL, PREC_SUFFIX, 0}
14213 };
14214 \f
14215 enum ada_primitive_types {
14216   ada_primitive_type_int,
14217   ada_primitive_type_long,
14218   ada_primitive_type_short,
14219   ada_primitive_type_char,
14220   ada_primitive_type_float,
14221   ada_primitive_type_double,
14222   ada_primitive_type_void,
14223   ada_primitive_type_long_long,
14224   ada_primitive_type_long_double,
14225   ada_primitive_type_natural,
14226   ada_primitive_type_positive,
14227   ada_primitive_type_system_address,
14228   ada_primitive_type_storage_offset,
14229   nr_ada_primitive_types
14230 };
14231
14232 static void
14233 ada_language_arch_info (struct gdbarch *gdbarch,
14234                         struct language_arch_info *lai)
14235 {
14236   const struct builtin_type *builtin = builtin_type (gdbarch);
14237
14238   lai->primitive_type_vector
14239     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14240                               struct type *);
14241
14242   lai->primitive_type_vector [ada_primitive_type_int]
14243     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14244                          0, "integer");
14245   lai->primitive_type_vector [ada_primitive_type_long]
14246     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14247                          0, "long_integer");
14248   lai->primitive_type_vector [ada_primitive_type_short]
14249     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14250                          0, "short_integer");
14251   lai->string_char_type
14252     = lai->primitive_type_vector [ada_primitive_type_char]
14253     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14254   lai->primitive_type_vector [ada_primitive_type_float]
14255     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14256                        "float", gdbarch_float_format (gdbarch));
14257   lai->primitive_type_vector [ada_primitive_type_double]
14258     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14259                        "long_float", gdbarch_double_format (gdbarch));
14260   lai->primitive_type_vector [ada_primitive_type_long_long]
14261     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14262                          0, "long_long_integer");
14263   lai->primitive_type_vector [ada_primitive_type_long_double]
14264     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14265                        "long_long_float", gdbarch_long_double_format (gdbarch));
14266   lai->primitive_type_vector [ada_primitive_type_natural]
14267     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14268                          0, "natural");
14269   lai->primitive_type_vector [ada_primitive_type_positive]
14270     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14271                          0, "positive");
14272   lai->primitive_type_vector [ada_primitive_type_void]
14273     = builtin->builtin_void;
14274
14275   lai->primitive_type_vector [ada_primitive_type_system_address]
14276     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14277                                       "void"));
14278   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14279     = "system__address";
14280
14281   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14282      type.  This is a signed integral type whose size is the same as
14283      the size of addresses.  */
14284   {
14285     unsigned int addr_length = TYPE_LENGTH
14286       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14287
14288     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14289       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14290                            "storage_offset");
14291   }
14292
14293   lai->bool_type_symbol = NULL;
14294   lai->bool_type_default = builtin->builtin_bool;
14295 }
14296 \f
14297                                 /* Language vector */
14298
14299 /* Not really used, but needed in the ada_language_defn.  */
14300
14301 static void
14302 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14303 {
14304   ada_emit_char (c, type, stream, quoter, 1);
14305 }
14306
14307 static int
14308 parse (struct parser_state *ps)
14309 {
14310   warnings_issued = 0;
14311   return ada_parse (ps);
14312 }
14313
14314 static const struct exp_descriptor ada_exp_descriptor = {
14315   ada_print_subexp,
14316   ada_operator_length,
14317   ada_operator_check,
14318   ada_op_name,
14319   ada_dump_subexp_body,
14320   ada_evaluate_subexp
14321 };
14322
14323 /* symbol_name_matcher_ftype adapter for wild_match.  */
14324
14325 static bool
14326 do_wild_match (const char *symbol_search_name,
14327                const lookup_name_info &lookup_name,
14328                completion_match_result *comp_match_res)
14329 {
14330   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14331 }
14332
14333 /* symbol_name_matcher_ftype adapter for full_match.  */
14334
14335 static bool
14336 do_full_match (const char *symbol_search_name,
14337                const lookup_name_info &lookup_name,
14338                completion_match_result *comp_match_res)
14339 {
14340   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14341 }
14342
14343 /* Build the Ada lookup name for LOOKUP_NAME.  */
14344
14345 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14346 {
14347   const std::string &user_name = lookup_name.name ();
14348
14349   if (user_name[0] == '<')
14350     {
14351       if (user_name.back () == '>')
14352         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14353       else
14354         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14355       m_encoded_p = true;
14356       m_verbatim_p = true;
14357       m_wild_match_p = false;
14358       m_standard_p = false;
14359     }
14360   else
14361     {
14362       m_verbatim_p = false;
14363
14364       m_encoded_p = user_name.find ("__") != std::string::npos;
14365
14366       if (!m_encoded_p)
14367         {
14368           const char *folded = ada_fold_name (user_name.c_str ());
14369           const char *encoded = ada_encode_1 (folded, false);
14370           if (encoded != NULL)
14371             m_encoded_name = encoded;
14372           else
14373             m_encoded_name = user_name;
14374         }
14375       else
14376         m_encoded_name = user_name;
14377
14378       /* Handle the 'package Standard' special case.  See description
14379          of m_standard_p.  */
14380       if (startswith (m_encoded_name.c_str (), "standard__"))
14381         {
14382           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14383           m_standard_p = true;
14384         }
14385       else
14386         m_standard_p = false;
14387
14388       /* If the name contains a ".", then the user is entering a fully
14389          qualified entity name, and the match must not be done in wild
14390          mode.  Similarly, if the user wants to complete what looks
14391          like an encoded name, the match must not be done in wild
14392          mode.  Also, in the standard__ special case always do
14393          non-wild matching.  */
14394       m_wild_match_p
14395         = (lookup_name.match_type () != symbol_name_match_type::FULL
14396            && !m_encoded_p
14397            && !m_standard_p
14398            && user_name.find ('.') == std::string::npos);
14399     }
14400 }
14401
14402 /* symbol_name_matcher_ftype method for Ada.  This only handles
14403    completion mode.  */
14404
14405 static bool
14406 ada_symbol_name_matches (const char *symbol_search_name,
14407                          const lookup_name_info &lookup_name,
14408                          completion_match_result *comp_match_res)
14409 {
14410   return lookup_name.ada ().matches (symbol_search_name,
14411                                      lookup_name.match_type (),
14412                                      comp_match_res);
14413 }
14414
14415 /* A name matcher that matches the symbol name exactly, with
14416    strcmp.  */
14417
14418 static bool
14419 literal_symbol_name_matcher (const char *symbol_search_name,
14420                              const lookup_name_info &lookup_name,
14421                              completion_match_result *comp_match_res)
14422 {
14423   const std::string &name = lookup_name.name ();
14424
14425   int cmp = (lookup_name.completion_mode ()
14426              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14427              : strcmp (symbol_search_name, name.c_str ()));
14428   if (cmp == 0)
14429     {
14430       if (comp_match_res != NULL)
14431         comp_match_res->set_match (symbol_search_name);
14432       return true;
14433     }
14434   else
14435     return false;
14436 }
14437
14438 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14439    Ada.  */
14440
14441 static symbol_name_matcher_ftype *
14442 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14443 {
14444   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14445     return literal_symbol_name_matcher;
14446
14447   if (lookup_name.completion_mode ())
14448     return ada_symbol_name_matches;
14449   else
14450     {
14451       if (lookup_name.ada ().wild_match_p ())
14452         return do_wild_match;
14453       else
14454         return do_full_match;
14455     }
14456 }
14457
14458 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14459
14460 static struct value *
14461 ada_read_var_value (struct symbol *var, const struct block *var_block,
14462                     struct frame_info *frame)
14463 {
14464   const struct block *frame_block = NULL;
14465   struct symbol *renaming_sym = NULL;
14466
14467   /* The only case where default_read_var_value is not sufficient
14468      is when VAR is a renaming...  */
14469   if (frame)
14470     frame_block = get_frame_block (frame, NULL);
14471   if (frame_block)
14472     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14473   if (renaming_sym != NULL)
14474     return ada_read_renaming_var_value (renaming_sym, frame_block);
14475
14476   /* This is a typical case where we expect the default_read_var_value
14477      function to work.  */
14478   return default_read_var_value (var, var_block, frame);
14479 }
14480
14481 static const char *ada_extensions[] =
14482 {
14483   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14484 };
14485
14486 extern const struct language_defn ada_language_defn = {
14487   "ada",                        /* Language name */
14488   "Ada",
14489   language_ada,
14490   range_check_off,
14491   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14492                                    that's not quite what this means.  */
14493   array_row_major,
14494   macro_expansion_no,
14495   ada_extensions,
14496   &ada_exp_descriptor,
14497   parse,
14498   ada_yyerror,
14499   resolve,
14500   ada_printchar,                /* Print a character constant */
14501   ada_printstr,                 /* Function to print string constant */
14502   emit_char,                    /* Function to print single char (not used) */
14503   ada_print_type,               /* Print a type using appropriate syntax */
14504   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14505   ada_val_print,                /* Print a value using appropriate syntax */
14506   ada_value_print,              /* Print a top-level value */
14507   ada_read_var_value,           /* la_read_var_value */
14508   NULL,                         /* Language specific skip_trampoline */
14509   NULL,                         /* name_of_this */
14510   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14511   basic_lookup_transparent_type,        /* lookup_transparent_type */
14512   ada_la_decode,                /* Language specific symbol demangler */
14513   ada_sniff_from_mangled_name,
14514   NULL,                         /* Language specific
14515                                    class_name_from_physname */
14516   ada_op_print_tab,             /* expression operators for printing */
14517   0,                            /* c-style arrays */
14518   1,                            /* String lower bound */
14519   ada_get_gdb_completer_word_break_characters,
14520   ada_collect_symbol_completion_matches,
14521   ada_language_arch_info,
14522   ada_print_array_index,
14523   default_pass_by_reference,
14524   c_get_string,
14525   c_watch_location_expression,
14526   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14527   ada_iterate_over_symbols,
14528   default_search_name_hash,
14529   &ada_varobj_ops,
14530   NULL,
14531   NULL,
14532   LANG_MAGIC
14533 };
14534
14535 /* Command-list for the "set/show ada" prefix command.  */
14536 static struct cmd_list_element *set_ada_list;
14537 static struct cmd_list_element *show_ada_list;
14538
14539 /* Implement the "set ada" prefix command.  */
14540
14541 static void
14542 set_ada_command (const char *arg, int from_tty)
14543 {
14544   printf_unfiltered (_(\
14545 "\"set ada\" must be followed by the name of a setting.\n"));
14546   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14547 }
14548
14549 /* Implement the "show ada" prefix command.  */
14550
14551 static void
14552 show_ada_command (const char *args, int from_tty)
14553 {
14554   cmd_show_list (show_ada_list, from_tty, "");
14555 }
14556
14557 static void
14558 initialize_ada_catchpoint_ops (void)
14559 {
14560   struct breakpoint_ops *ops;
14561
14562   initialize_breakpoint_ops ();
14563
14564   ops = &catch_exception_breakpoint_ops;
14565   *ops = bkpt_breakpoint_ops;
14566   ops->allocate_location = allocate_location_catch_exception;
14567   ops->re_set = re_set_catch_exception;
14568   ops->check_status = check_status_catch_exception;
14569   ops->print_it = print_it_catch_exception;
14570   ops->print_one = print_one_catch_exception;
14571   ops->print_mention = print_mention_catch_exception;
14572   ops->print_recreate = print_recreate_catch_exception;
14573
14574   ops = &catch_exception_unhandled_breakpoint_ops;
14575   *ops = bkpt_breakpoint_ops;
14576   ops->allocate_location = allocate_location_catch_exception_unhandled;
14577   ops->re_set = re_set_catch_exception_unhandled;
14578   ops->check_status = check_status_catch_exception_unhandled;
14579   ops->print_it = print_it_catch_exception_unhandled;
14580   ops->print_one = print_one_catch_exception_unhandled;
14581   ops->print_mention = print_mention_catch_exception_unhandled;
14582   ops->print_recreate = print_recreate_catch_exception_unhandled;
14583
14584   ops = &catch_assert_breakpoint_ops;
14585   *ops = bkpt_breakpoint_ops;
14586   ops->allocate_location = allocate_location_catch_assert;
14587   ops->re_set = re_set_catch_assert;
14588   ops->check_status = check_status_catch_assert;
14589   ops->print_it = print_it_catch_assert;
14590   ops->print_one = print_one_catch_assert;
14591   ops->print_mention = print_mention_catch_assert;
14592   ops->print_recreate = print_recreate_catch_assert;
14593
14594   ops = &catch_handlers_breakpoint_ops;
14595   *ops = bkpt_breakpoint_ops;
14596   ops->allocate_location = allocate_location_catch_handlers;
14597   ops->re_set = re_set_catch_handlers;
14598   ops->check_status = check_status_catch_handlers;
14599   ops->print_it = print_it_catch_handlers;
14600   ops->print_one = print_one_catch_handlers;
14601   ops->print_mention = print_mention_catch_handlers;
14602   ops->print_recreate = print_recreate_catch_handlers;
14603 }
14604
14605 /* This module's 'new_objfile' observer.  */
14606
14607 static void
14608 ada_new_objfile_observer (struct objfile *objfile)
14609 {
14610   ada_clear_symbol_cache ();
14611 }
14612
14613 /* This module's 'free_objfile' observer.  */
14614
14615 static void
14616 ada_free_objfile_observer (struct objfile *objfile)
14617 {
14618   ada_clear_symbol_cache ();
14619 }
14620
14621 void
14622 _initialize_ada_language (void)
14623 {
14624   initialize_ada_catchpoint_ops ();
14625
14626   add_prefix_cmd ("ada", no_class, set_ada_command,
14627                   _("Prefix command for changing Ada-specfic settings"),
14628                   &set_ada_list, "set ada ", 0, &setlist);
14629
14630   add_prefix_cmd ("ada", no_class, show_ada_command,
14631                   _("Generic command for showing Ada-specific settings."),
14632                   &show_ada_list, "show ada ", 0, &showlist);
14633
14634   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14635                            &trust_pad_over_xvs, _("\
14636 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14637 Show whether an optimization trusting PAD types over XVS types is activated"),
14638                            _("\
14639 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14640 should normally trust the contents of PAD types, but certain older versions\n\
14641 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14642 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14643 work around this bug.  It is always safe to turn this option \"off\", but\n\
14644 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14645 this option to \"off\" unless necessary."),
14646                             NULL, NULL, &set_ada_list, &show_ada_list);
14647
14648   add_setshow_boolean_cmd ("print-signatures", class_vars,
14649                            &print_signatures, _("\
14650 Enable or disable the output of formal and return types for functions in the \
14651 overloads selection menu"), _("\
14652 Show whether the output of formal and return types for functions in the \
14653 overloads selection menu is activated"),
14654                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14655
14656   add_catch_command ("exception", _("\
14657 Catch Ada exceptions, when raised.\n\
14658 With an argument, catch only exceptions with the given name."),
14659                      catch_ada_exception_command,
14660                      NULL,
14661                      CATCH_PERMANENT,
14662                      CATCH_TEMPORARY);
14663
14664   add_catch_command ("handlers", _("\
14665 Catch Ada exceptions, when handled.\n\
14666 With an argument, catch only exceptions with the given name."),
14667                      catch_ada_handlers_command,
14668                      NULL,
14669                      CATCH_PERMANENT,
14670                      CATCH_TEMPORARY);
14671   add_catch_command ("assert", _("\
14672 Catch failed Ada assertions, when raised.\n\
14673 With an argument, catch only exceptions with the given name."),
14674                      catch_assert_command,
14675                      NULL,
14676                      CATCH_PERMANENT,
14677                      CATCH_TEMPORARY);
14678
14679   varsize_limit = 65536;
14680
14681   add_info ("exceptions", info_exceptions_command,
14682             _("\
14683 List all Ada exception names.\n\
14684 If a regular expression is passed as an argument, only those matching\n\
14685 the regular expression are listed."));
14686
14687   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14688                   _("Set Ada maintenance-related variables."),
14689                   &maint_set_ada_cmdlist, "maintenance set ada ",
14690                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14691
14692   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14693                   _("Show Ada maintenance-related variables"),
14694                   &maint_show_ada_cmdlist, "maintenance show ada ",
14695                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14696
14697   add_setshow_boolean_cmd
14698     ("ignore-descriptive-types", class_maintenance,
14699      &ada_ignore_descriptive_types_p,
14700      _("Set whether descriptive types generated by GNAT should be ignored."),
14701      _("Show whether descriptive types generated by GNAT should be ignored."),
14702      _("\
14703 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14704 DWARF attribute."),
14705      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14706
14707   decoded_names_store = htab_create_alloc
14708     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
14709      NULL, xcalloc, xfree);
14710
14711   /* The ada-lang observers.  */
14712   observer_attach_new_objfile (ada_new_objfile_observer);
14713   observer_attach_free_objfile (ada_free_objfile_observer);
14714   observer_attach_inferior_exit (ada_inferior_exit);
14715
14716   /* Setup various context-specific data.  */
14717   ada_inferior_data
14718     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14719   ada_pspace_data_handle
14720     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14721 }