OBVIOUS Fix a typo in ada-lang.c add_prefix_cmd for "set ada"
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "vec.h"
53 #include "stack.h"
54 #include "gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66
67 /* Define whether or not the C operator '/' truncates towards zero for
68    differently signed operands (truncation direction is undefined in C).
69    Copied from valarith.c.  */
70
71 #ifndef TRUNCATION_TOWARDS_ZERO
72 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
73 #endif
74
75 static struct type *desc_base_type (struct type *);
76
77 static struct type *desc_bounds_type (struct type *);
78
79 static struct value *desc_bounds (struct value *);
80
81 static int fat_pntr_bounds_bitpos (struct type *);
82
83 static int fat_pntr_bounds_bitsize (struct type *);
84
85 static struct type *desc_data_target_type (struct type *);
86
87 static struct value *desc_data (struct value *);
88
89 static int fat_pntr_data_bitpos (struct type *);
90
91 static int fat_pntr_data_bitsize (struct type *);
92
93 static struct value *desc_one_bound (struct value *, int, int);
94
95 static int desc_bound_bitpos (struct type *, int, int);
96
97 static int desc_bound_bitsize (struct type *, int, int);
98
99 static struct type *desc_index_type (struct type *, int);
100
101 static int desc_arity (struct type *);
102
103 static int ada_type_match (struct type *, struct type *, int);
104
105 static int ada_args_match (struct symbol *, struct value **, int);
106
107 static struct value *make_array_descriptor (struct type *, struct value *);
108
109 static void ada_add_block_symbols (struct obstack *,
110                                    const struct block *,
111                                    const lookup_name_info &lookup_name,
112                                    domain_enum, struct objfile *);
113
114 static void ada_add_all_symbols (struct obstack *, const struct block *,
115                                  const lookup_name_info &lookup_name,
116                                  domain_enum, int, int *);
117
118 static int is_nonfunction (struct block_symbol *, int);
119
120 static void add_defn_to_vec (struct obstack *, struct symbol *,
121                              const struct block *);
122
123 static int num_defns_collected (struct obstack *);
124
125 static struct block_symbol *defns_collected (struct obstack *, int);
126
127 static struct value *resolve_subexp (expression_up *, int *, int,
128                                      struct type *);
129
130 static void replace_operator_with_call (expression_up *, int, int, int,
131                                         struct symbol *, const struct block *);
132
133 static int possible_user_operator_p (enum exp_opcode, struct value **);
134
135 static const char *ada_op_name (enum exp_opcode);
136
137 static const char *ada_decoded_op_name (enum exp_opcode);
138
139 static int numeric_type_p (struct type *);
140
141 static int integer_type_p (struct type *);
142
143 static int scalar_type_p (struct type *);
144
145 static int discrete_type_p (struct type *);
146
147 static enum ada_renaming_category parse_old_style_renaming (struct type *,
148                                                             const char **,
149                                                             int *,
150                                                             const char **);
151
152 static struct symbol *find_old_style_renaming_symbol (const char *,
153                                                       const struct block *);
154
155 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
156                                                 int, int);
157
158 static struct value *evaluate_subexp_type (struct expression *, int *);
159
160 static struct type *ada_find_parallel_type_with_name (struct type *,
161                                                       const char *);
162
163 static int is_dynamic_field (struct type *, int);
164
165 static struct type *to_fixed_variant_branch_type (struct type *,
166                                                   const gdb_byte *,
167                                                   CORE_ADDR, struct value *);
168
169 static struct type *to_fixed_array_type (struct type *, struct value *, int);
170
171 static struct type *to_fixed_range_type (struct type *, struct value *);
172
173 static struct type *to_static_fixed_type (struct type *);
174 static struct type *static_unwrap_type (struct type *type);
175
176 static struct value *unwrap_value (struct value *);
177
178 static struct type *constrained_packed_array_type (struct type *, long *);
179
180 static struct type *decode_constrained_packed_array_type (struct type *);
181
182 static long decode_packed_array_bitsize (struct type *);
183
184 static struct value *decode_constrained_packed_array (struct value *);
185
186 static int ada_is_packed_array_type  (struct type *);
187
188 static int ada_is_unconstrained_packed_array_type (struct type *);
189
190 static struct value *value_subscript_packed (struct value *, int,
191                                              struct value **);
192
193 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196                                                 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217                                        domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220                                               struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223                                                 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226                               struct type **, int *, int *, int *, int *);
227
228 static int ada_resolve_function (struct block_symbol *, int,
229                                  struct value **, int, const char *,
230                                  struct type *);
231
232 static int ada_is_direct_array_type (struct type *);
233
234 static void ada_language_arch_info (struct gdbarch *,
235                                     struct language_arch_info *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238                                              struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *, 
241                                        struct expression *,
242                                        int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *, 
245                                            struct expression *,
246                                            int *, LONGEST *, int *,
247                                            int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250                                          struct expression *,
251                                          int *, LONGEST *, int *, int,
252                                          LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256                                      struct expression *,
257                                      int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264                                           int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267                                          int *);
268
269 static struct type *ada_find_any_type (const char *name);
270
271 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
272   (const lookup_name_info &lookup_name);
273
274 \f
275
276 /* The result of a symbol lookup to be stored in our symbol cache.  */
277
278 struct cache_entry
279 {
280   /* The name used to perform the lookup.  */
281   const char *name;
282   /* The namespace used during the lookup.  */
283   domain_enum domain;
284   /* The symbol returned by the lookup, or NULL if no matching symbol
285      was found.  */
286   struct symbol *sym;
287   /* The block where the symbol was found, or NULL if no matching
288      symbol was found.  */
289   const struct block *block;
290   /* A pointer to the next entry with the same hash.  */
291   struct cache_entry *next;
292 };
293
294 /* The Ada symbol cache, used to store the result of Ada-mode symbol
295    lookups in the course of executing the user's commands.
296
297    The cache is implemented using a simple, fixed-sized hash.
298    The size is fixed on the grounds that there are not likely to be
299    all that many symbols looked up during any given session, regardless
300    of the size of the symbol table.  If we decide to go to a resizable
301    table, let's just use the stuff from libiberty instead.  */
302
303 #define HASH_SIZE 1009
304
305 struct ada_symbol_cache
306 {
307   /* An obstack used to store the entries in our cache.  */
308   struct obstack cache_space;
309
310   /* The root of the hash table used to implement our symbol cache.  */
311   struct cache_entry *root[HASH_SIZE];
312 };
313
314 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
315
316 /* Maximum-sized dynamic type.  */
317 static unsigned int varsize_limit;
318
319 static const char ada_completer_word_break_characters[] =
320 #ifdef VMS
321   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram.  */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328   = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation.  */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334    expression evaluation.  */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Maintenance-related settings for this module.  */
346
347 static struct cmd_list_element *maint_set_ada_cmdlist;
348 static struct cmd_list_element *maint_show_ada_cmdlist;
349
350 /* Implement the "maintenance set ada" (prefix) command.  */
351
352 static void
353 maint_set_ada_cmd (const char *args, int from_tty)
354 {
355   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
356              gdb_stdout);
357 }
358
359 /* Implement the "maintenance show ada" (prefix) command.  */
360
361 static void
362 maint_show_ada_cmd (const char *args, int from_tty)
363 {
364   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
365 }
366
367 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
368
369 static int ada_ignore_descriptive_types_p = 0;
370
371                         /* Inferior-specific data.  */
372
373 /* Per-inferior data for this module.  */
374
375 struct ada_inferior_data
376 {
377   /* The ada__tags__type_specific_data type, which is used when decoding
378      tagged types.  With older versions of GNAT, this type was directly
379      accessible through a component ("tsd") in the object tag.  But this
380      is no longer the case, so we cache it for each inferior.  */
381   struct type *tsd_type;
382
383   /* The exception_support_info data.  This data is used to determine
384      how to implement support for Ada exception catchpoints in a given
385      inferior.  */
386   const struct exception_support_info *exception_info;
387 };
388
389 /* Our key to this module's inferior data.  */
390 static const struct inferior_data *ada_inferior_data;
391
392 /* A cleanup routine for our inferior data.  */
393 static void
394 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
395 {
396   struct ada_inferior_data *data;
397
398   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
399   if (data != NULL)
400     xfree (data);
401 }
402
403 /* Return our inferior data for the given inferior (INF).
404
405    This function always returns a valid pointer to an allocated
406    ada_inferior_data structure.  If INF's inferior data has not
407    been previously set, this functions creates a new one with all
408    fields set to zero, sets INF's inferior to it, and then returns
409    a pointer to that newly allocated ada_inferior_data.  */
410
411 static struct ada_inferior_data *
412 get_ada_inferior_data (struct inferior *inf)
413 {
414   struct ada_inferior_data *data;
415
416   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
417   if (data == NULL)
418     {
419       data = XCNEW (struct ada_inferior_data);
420       set_inferior_data (inf, ada_inferior_data, data);
421     }
422
423   return data;
424 }
425
426 /* Perform all necessary cleanups regarding our module's inferior data
427    that is required after the inferior INF just exited.  */
428
429 static void
430 ada_inferior_exit (struct inferior *inf)
431 {
432   ada_inferior_data_cleanup (inf, NULL);
433   set_inferior_data (inf, ada_inferior_data, NULL);
434 }
435
436
437                         /* program-space-specific data.  */
438
439 /* This module's per-program-space data.  */
440 struct ada_pspace_data
441 {
442   /* The Ada symbol cache.  */
443   struct ada_symbol_cache *sym_cache;
444 };
445
446 /* Key to our per-program-space data.  */
447 static const struct program_space_data *ada_pspace_data_handle;
448
449 /* Return this module's data for the given program space (PSPACE).
450    If not is found, add a zero'ed one now.
451
452    This function always returns a valid object.  */
453
454 static struct ada_pspace_data *
455 get_ada_pspace_data (struct program_space *pspace)
456 {
457   struct ada_pspace_data *data;
458
459   data = ((struct ada_pspace_data *)
460           program_space_data (pspace, ada_pspace_data_handle));
461   if (data == NULL)
462     {
463       data = XCNEW (struct ada_pspace_data);
464       set_program_space_data (pspace, ada_pspace_data_handle, data);
465     }
466
467   return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data.  */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
476
477   if (pspace_data->sym_cache != NULL)
478     ada_free_symbol_cache (pspace_data->sym_cache);
479   xfree (pspace_data);
480 }
481
482                         /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485    all typedef layers have been peeled.  Otherwise, return TYPE.
486
487    Normally, we really expect a typedef type to only have 1 typedef layer.
488    In other words, we really expect the target type of a typedef type to be
489    a non-typedef type.  This is particularly true for Ada units, because
490    the language does not have a typedef vs not-typedef distinction.
491    In that respect, the Ada compiler has been trying to eliminate as many
492    typedef definitions in the debugging information, since they generally
493    do not bring any extra information (we still use typedef under certain
494    circumstances related mostly to the GNAT encoding).
495
496    Unfortunately, we have seen situations where the debugging information
497    generated by the compiler leads to such multiple typedef layers.  For
498    instance, consider the following example with stabs:
499
500      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503    This is an error in the debugging information which causes type
504    pck__float_array___XUP to be defined twice, and the second time,
505    it is defined as a typedef of a typedef.
506
507    This is on the fringe of legality as far as debugging information is
508    concerned, and certainly unexpected.  But it is easy to handle these
509    situations correctly, so we can afford to be lenient in this case.  */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515     type = TYPE_TARGET_TYPE (type);
516   return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520    decoded form (ie using the Ada dotted notation), returns
521    its unqualified name.  */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526   const char *result;
527   
528   /* If the decoded name starts with '<', it means that the encoded
529      name does not follow standard naming conventions, and thus that
530      it is not your typical Ada symbol name.  Trying to unqualify it
531      is therefore pointless and possibly erroneous.  */
532   if (decoded_name[0] == '<')
533     return decoded_name;
534
535   result = strrchr (decoded_name, '.');
536   if (result != NULL)
537     result++;                   /* Skip the dot...  */
538   else
539     result = decoded_name;
540
541   return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'.  */
545
546 static std::string
547 add_angle_brackets (const char *str)
548 {
549   return string_printf ("<%s>", str);
550 }
551
552 static const char *
553 ada_get_gdb_completer_word_break_characters (void)
554 {
555   return ada_completer_word_break_characters;
556 }
557
558 /* Print an array element index using the Ada syntax.  */
559
560 static void
561 ada_print_array_index (struct value *index_value, struct ui_file *stream,
562                        const struct value_print_options *options)
563 {
564   LA_VALUE_PRINT (index_value, stream, options);
565   fprintf_filtered (stream, " => ");
566 }
567
568 /* la_watch_location_expression for Ada.  */
569
570 gdb::unique_xmalloc_ptr<char>
571 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
572 {
573   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
574   std::string name = type_to_string (type);
575   return gdb::unique_xmalloc_ptr<char>
576     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
577 }
578
579 /* Assuming VECT points to an array of *SIZE objects of size
580    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
581    updating *SIZE as necessary and returning the (new) array.  */
582
583 void *
584 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
585 {
586   if (*size < min_size)
587     {
588       *size *= 2;
589       if (*size < min_size)
590         *size = min_size;
591       vect = xrealloc (vect, *size * element_size);
592     }
593   return vect;
594 }
595
596 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
597    suffix of FIELD_NAME beginning "___".  */
598
599 static int
600 field_name_match (const char *field_name, const char *target)
601 {
602   int len = strlen (target);
603
604   return
605     (strncmp (field_name, target, len) == 0
606      && (field_name[len] == '\0'
607          || (startswith (field_name + len, "___")
608              && strcmp (field_name + strlen (field_name) - 6,
609                         "___XVN") != 0)));
610 }
611
612
613 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
614    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
615    and return its index.  This function also handles fields whose name
616    have ___ suffixes because the compiler sometimes alters their name
617    by adding such a suffix to represent fields with certain constraints.
618    If the field could not be found, return a negative number if
619    MAYBE_MISSING is set.  Otherwise raise an error.  */
620
621 int
622 ada_get_field_index (const struct type *type, const char *field_name,
623                      int maybe_missing)
624 {
625   int fieldno;
626   struct type *struct_type = check_typedef ((struct type *) type);
627
628   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
629     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
630       return fieldno;
631
632   if (!maybe_missing)
633     error (_("Unable to find field %s in struct %s.  Aborting"),
634            field_name, TYPE_NAME (struct_type));
635
636   return -1;
637 }
638
639 /* The length of the prefix of NAME prior to any "___" suffix.  */
640
641 int
642 ada_name_prefix_len (const char *name)
643 {
644   if (name == NULL)
645     return 0;
646   else
647     {
648       const char *p = strstr (name, "___");
649
650       if (p == NULL)
651         return strlen (name);
652       else
653         return p - name;
654     }
655 }
656
657 /* Return non-zero if SUFFIX is a suffix of STR.
658    Return zero if STR is null.  */
659
660 static int
661 is_suffix (const char *str, const char *suffix)
662 {
663   int len1, len2;
664
665   if (str == NULL)
666     return 0;
667   len1 = strlen (str);
668   len2 = strlen (suffix);
669   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
670 }
671
672 /* The contents of value VAL, treated as a value of type TYPE.  The
673    result is an lval in memory if VAL is.  */
674
675 static struct value *
676 coerce_unspec_val_to_type (struct value *val, struct type *type)
677 {
678   type = ada_check_typedef (type);
679   if (value_type (val) == type)
680     return val;
681   else
682     {
683       struct value *result;
684
685       /* Make sure that the object size is not unreasonable before
686          trying to allocate some memory for it.  */
687       ada_ensure_varsize_limit (type);
688
689       if (value_lazy (val)
690           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
691         result = allocate_value_lazy (type);
692       else
693         {
694           result = allocate_value (type);
695           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
696         }
697       set_value_component_location (result, val);
698       set_value_bitsize (result, value_bitsize (val));
699       set_value_bitpos (result, value_bitpos (val));
700       set_value_address (result, value_address (val));
701       return result;
702     }
703 }
704
705 static const gdb_byte *
706 cond_offset_host (const gdb_byte *valaddr, long offset)
707 {
708   if (valaddr == NULL)
709     return NULL;
710   else
711     return valaddr + offset;
712 }
713
714 static CORE_ADDR
715 cond_offset_target (CORE_ADDR address, long offset)
716 {
717   if (address == 0)
718     return 0;
719   else
720     return address + offset;
721 }
722
723 /* Issue a warning (as for the definition of warning in utils.c, but
724    with exactly one argument rather than ...), unless the limit on the
725    number of warnings has passed during the evaluation of the current
726    expression.  */
727
728 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
729    provided by "complaint".  */
730 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
731
732 static void
733 lim_warning (const char *format, ...)
734 {
735   va_list args;
736
737   va_start (args, format);
738   warnings_issued += 1;
739   if (warnings_issued <= warning_limit)
740     vwarning (format, args);
741
742   va_end (args);
743 }
744
745 /* Issue an error if the size of an object of type T is unreasonable,
746    i.e. if it would be a bad idea to allocate a value of this type in
747    GDB.  */
748
749 void
750 ada_ensure_varsize_limit (const struct type *type)
751 {
752   if (TYPE_LENGTH (type) > varsize_limit)
753     error (_("object size is larger than varsize-limit"));
754 }
755
756 /* Maximum value of a SIZE-byte signed integer type.  */
757 static LONGEST
758 max_of_size (int size)
759 {
760   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
761
762   return top_bit | (top_bit - 1);
763 }
764
765 /* Minimum value of a SIZE-byte signed integer type.  */
766 static LONGEST
767 min_of_size (int size)
768 {
769   return -max_of_size (size) - 1;
770 }
771
772 /* Maximum value of a SIZE-byte unsigned integer type.  */
773 static ULONGEST
774 umax_of_size (int size)
775 {
776   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
777
778   return top_bit | (top_bit - 1);
779 }
780
781 /* Maximum value of integral type T, as a signed quantity.  */
782 static LONGEST
783 max_of_type (struct type *t)
784 {
785   if (TYPE_UNSIGNED (t))
786     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
787   else
788     return max_of_size (TYPE_LENGTH (t));
789 }
790
791 /* Minimum value of integral type T, as a signed quantity.  */
792 static LONGEST
793 min_of_type (struct type *t)
794 {
795   if (TYPE_UNSIGNED (t)) 
796     return 0;
797   else
798     return min_of_size (TYPE_LENGTH (t));
799 }
800
801 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
802 LONGEST
803 ada_discrete_type_high_bound (struct type *type)
804 {
805   type = resolve_dynamic_type (type, NULL, 0);
806   switch (TYPE_CODE (type))
807     {
808     case TYPE_CODE_RANGE:
809       return TYPE_HIGH_BOUND (type);
810     case TYPE_CODE_ENUM:
811       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
812     case TYPE_CODE_BOOL:
813       return 1;
814     case TYPE_CODE_CHAR:
815     case TYPE_CODE_INT:
816       return max_of_type (type);
817     default:
818       error (_("Unexpected type in ada_discrete_type_high_bound."));
819     }
820 }
821
822 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
823 LONGEST
824 ada_discrete_type_low_bound (struct type *type)
825 {
826   type = resolve_dynamic_type (type, NULL, 0);
827   switch (TYPE_CODE (type))
828     {
829     case TYPE_CODE_RANGE:
830       return TYPE_LOW_BOUND (type);
831     case TYPE_CODE_ENUM:
832       return TYPE_FIELD_ENUMVAL (type, 0);
833     case TYPE_CODE_BOOL:
834       return 0;
835     case TYPE_CODE_CHAR:
836     case TYPE_CODE_INT:
837       return min_of_type (type);
838     default:
839       error (_("Unexpected type in ada_discrete_type_low_bound."));
840     }
841 }
842
843 /* The identity on non-range types.  For range types, the underlying
844    non-range scalar type.  */
845
846 static struct type *
847 get_base_type (struct type *type)
848 {
849   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
850     {
851       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
852         return type;
853       type = TYPE_TARGET_TYPE (type);
854     }
855   return type;
856 }
857
858 /* Return a decoded version of the given VALUE.  This means returning
859    a value whose type is obtained by applying all the GNAT-specific
860    encondings, making the resulting type a static but standard description
861    of the initial type.  */
862
863 struct value *
864 ada_get_decoded_value (struct value *value)
865 {
866   struct type *type = ada_check_typedef (value_type (value));
867
868   if (ada_is_array_descriptor_type (type)
869       || (ada_is_constrained_packed_array_type (type)
870           && TYPE_CODE (type) != TYPE_CODE_PTR))
871     {
872       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
873         value = ada_coerce_to_simple_array_ptr (value);
874       else
875         value = ada_coerce_to_simple_array (value);
876     }
877   else
878     value = ada_to_fixed_value (value);
879
880   return value;
881 }
882
883 /* Same as ada_get_decoded_value, but with the given TYPE.
884    Because there is no associated actual value for this type,
885    the resulting type might be a best-effort approximation in
886    the case of dynamic types.  */
887
888 struct type *
889 ada_get_decoded_type (struct type *type)
890 {
891   type = to_static_fixed_type (type);
892   if (ada_is_constrained_packed_array_type (type))
893     type = ada_coerce_to_simple_array_type (type);
894   return type;
895 }
896
897 \f
898
899                                 /* Language Selection */
900
901 /* If the main program is in Ada, return language_ada, otherwise return LANG
902    (the main program is in Ada iif the adainit symbol is found).  */
903
904 enum language
905 ada_update_initial_language (enum language lang)
906 {
907   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
908                              (struct objfile *) NULL).minsym != NULL)
909     return language_ada;
910
911   return lang;
912 }
913
914 /* If the main procedure is written in Ada, then return its name.
915    The result is good until the next call.  Return NULL if the main
916    procedure doesn't appear to be in Ada.  */
917
918 char *
919 ada_main_name (void)
920 {
921   struct bound_minimal_symbol msym;
922   static gdb::unique_xmalloc_ptr<char> main_program_name;
923
924   /* For Ada, the name of the main procedure is stored in a specific
925      string constant, generated by the binder.  Look for that symbol,
926      extract its address, and then read that string.  If we didn't find
927      that string, then most probably the main procedure is not written
928      in Ada.  */
929   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
930
931   if (msym.minsym != NULL)
932     {
933       CORE_ADDR main_program_name_addr;
934       int err_code;
935
936       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
937       if (main_program_name_addr == 0)
938         error (_("Invalid address for Ada main program name."));
939
940       target_read_string (main_program_name_addr, &main_program_name,
941                           1024, &err_code);
942
943       if (err_code != 0)
944         return NULL;
945       return main_program_name.get ();
946     }
947
948   /* The main procedure doesn't seem to be in Ada.  */
949   return NULL;
950 }
951 \f
952                                 /* Symbols */
953
954 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
955    of NULLs.  */
956
957 const struct ada_opname_map ada_opname_table[] = {
958   {"Oadd", "\"+\"", BINOP_ADD},
959   {"Osubtract", "\"-\"", BINOP_SUB},
960   {"Omultiply", "\"*\"", BINOP_MUL},
961   {"Odivide", "\"/\"", BINOP_DIV},
962   {"Omod", "\"mod\"", BINOP_MOD},
963   {"Orem", "\"rem\"", BINOP_REM},
964   {"Oexpon", "\"**\"", BINOP_EXP},
965   {"Olt", "\"<\"", BINOP_LESS},
966   {"Ole", "\"<=\"", BINOP_LEQ},
967   {"Ogt", "\">\"", BINOP_GTR},
968   {"Oge", "\">=\"", BINOP_GEQ},
969   {"Oeq", "\"=\"", BINOP_EQUAL},
970   {"One", "\"/=\"", BINOP_NOTEQUAL},
971   {"Oand", "\"and\"", BINOP_BITWISE_AND},
972   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
973   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
974   {"Oconcat", "\"&\"", BINOP_CONCAT},
975   {"Oabs", "\"abs\"", UNOP_ABS},
976   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
977   {"Oadd", "\"+\"", UNOP_PLUS},
978   {"Osubtract", "\"-\"", UNOP_NEG},
979   {NULL, NULL}
980 };
981
982 /* The "encoded" form of DECODED, according to GNAT conventions.  The
983    result is valid until the next call to ada_encode.  If
984    THROW_ERRORS, throw an error if invalid operator name is found.
985    Otherwise, return NULL in that case.  */
986
987 static char *
988 ada_encode_1 (const char *decoded, bool throw_errors)
989 {
990   static char *encoding_buffer = NULL;
991   static size_t encoding_buffer_size = 0;
992   const char *p;
993   int k;
994
995   if (decoded == NULL)
996     return NULL;
997
998   GROW_VECT (encoding_buffer, encoding_buffer_size,
999              2 * strlen (decoded) + 10);
1000
1001   k = 0;
1002   for (p = decoded; *p != '\0'; p += 1)
1003     {
1004       if (*p == '.')
1005         {
1006           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1007           k += 2;
1008         }
1009       else if (*p == '"')
1010         {
1011           const struct ada_opname_map *mapping;
1012
1013           for (mapping = ada_opname_table;
1014                mapping->encoded != NULL
1015                && !startswith (p, mapping->decoded); mapping += 1)
1016             ;
1017           if (mapping->encoded == NULL)
1018             {
1019               if (throw_errors)
1020                 error (_("invalid Ada operator name: %s"), p);
1021               else
1022                 return NULL;
1023             }
1024           strcpy (encoding_buffer + k, mapping->encoded);
1025           k += strlen (mapping->encoded);
1026           break;
1027         }
1028       else
1029         {
1030           encoding_buffer[k] = *p;
1031           k += 1;
1032         }
1033     }
1034
1035   encoding_buffer[k] = '\0';
1036   return encoding_buffer;
1037 }
1038
1039 /* The "encoded" form of DECODED, according to GNAT conventions.
1040    The result is valid until the next call to ada_encode.  */
1041
1042 char *
1043 ada_encode (const char *decoded)
1044 {
1045   return ada_encode_1 (decoded, true);
1046 }
1047
1048 /* Return NAME folded to lower case, or, if surrounded by single
1049    quotes, unfolded, but with the quotes stripped away.  Result good
1050    to next call.  */
1051
1052 char *
1053 ada_fold_name (const char *name)
1054 {
1055   static char *fold_buffer = NULL;
1056   static size_t fold_buffer_size = 0;
1057
1058   int len = strlen (name);
1059   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1060
1061   if (name[0] == '\'')
1062     {
1063       strncpy (fold_buffer, name + 1, len - 2);
1064       fold_buffer[len - 2] = '\000';
1065     }
1066   else
1067     {
1068       int i;
1069
1070       for (i = 0; i <= len; i += 1)
1071         fold_buffer[i] = tolower (name[i]);
1072     }
1073
1074   return fold_buffer;
1075 }
1076
1077 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1078
1079 static int
1080 is_lower_alphanum (const char c)
1081 {
1082   return (isdigit (c) || (isalpha (c) && islower (c)));
1083 }
1084
1085 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1086    This function saves in LEN the length of that same symbol name but
1087    without either of these suffixes:
1088      . .{DIGIT}+
1089      . ${DIGIT}+
1090      . ___{DIGIT}+
1091      . __{DIGIT}+.
1092
1093    These are suffixes introduced by the compiler for entities such as
1094    nested subprogram for instance, in order to avoid name clashes.
1095    They do not serve any purpose for the debugger.  */
1096
1097 static void
1098 ada_remove_trailing_digits (const char *encoded, int *len)
1099 {
1100   if (*len > 1 && isdigit (encoded[*len - 1]))
1101     {
1102       int i = *len - 2;
1103
1104       while (i > 0 && isdigit (encoded[i]))
1105         i--;
1106       if (i >= 0 && encoded[i] == '.')
1107         *len = i;
1108       else if (i >= 0 && encoded[i] == '$')
1109         *len = i;
1110       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1111         *len = i - 2;
1112       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1113         *len = i - 1;
1114     }
1115 }
1116
1117 /* Remove the suffix introduced by the compiler for protected object
1118    subprograms.  */
1119
1120 static void
1121 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1122 {
1123   /* Remove trailing N.  */
1124
1125   /* Protected entry subprograms are broken into two
1126      separate subprograms: The first one is unprotected, and has
1127      a 'N' suffix; the second is the protected version, and has
1128      the 'P' suffix.  The second calls the first one after handling
1129      the protection.  Since the P subprograms are internally generated,
1130      we leave these names undecoded, giving the user a clue that this
1131      entity is internal.  */
1132
1133   if (*len > 1
1134       && encoded[*len - 1] == 'N'
1135       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1136     *len = *len - 1;
1137 }
1138
1139 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1140
1141 static void
1142 ada_remove_Xbn_suffix (const char *encoded, int *len)
1143 {
1144   int i = *len - 1;
1145
1146   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1147     i--;
1148
1149   if (encoded[i] != 'X')
1150     return;
1151
1152   if (i == 0)
1153     return;
1154
1155   if (isalnum (encoded[i-1]))
1156     *len = i;
1157 }
1158
1159 /* If ENCODED follows the GNAT entity encoding conventions, then return
1160    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1161    replaced by ENCODED.
1162
1163    The resulting string is valid until the next call of ada_decode.
1164    If the string is unchanged by decoding, the original string pointer
1165    is returned.  */
1166
1167 const char *
1168 ada_decode (const char *encoded)
1169 {
1170   int i, j;
1171   int len0;
1172   const char *p;
1173   char *decoded;
1174   int at_start_name;
1175   static char *decoding_buffer = NULL;
1176   static size_t decoding_buffer_size = 0;
1177
1178   /* With function descriptors on PPC64, the value of a symbol named
1179      ".FN", if it exists, is the entry point of the function "FN".  */
1180   if (encoded[0] == '.')
1181     encoded += 1;
1182
1183   /* The name of the Ada main procedure starts with "_ada_".
1184      This prefix is not part of the decoded name, so skip this part
1185      if we see this prefix.  */
1186   if (startswith (encoded, "_ada_"))
1187     encoded += 5;
1188
1189   /* If the name starts with '_', then it is not a properly encoded
1190      name, so do not attempt to decode it.  Similarly, if the name
1191      starts with '<', the name should not be decoded.  */
1192   if (encoded[0] == '_' || encoded[0] == '<')
1193     goto Suppress;
1194
1195   len0 = strlen (encoded);
1196
1197   ada_remove_trailing_digits (encoded, &len0);
1198   ada_remove_po_subprogram_suffix (encoded, &len0);
1199
1200   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1201      the suffix is located before the current "end" of ENCODED.  We want
1202      to avoid re-matching parts of ENCODED that have previously been
1203      marked as discarded (by decrementing LEN0).  */
1204   p = strstr (encoded, "___");
1205   if (p != NULL && p - encoded < len0 - 3)
1206     {
1207       if (p[3] == 'X')
1208         len0 = p - encoded;
1209       else
1210         goto Suppress;
1211     }
1212
1213   /* Remove any trailing TKB suffix.  It tells us that this symbol
1214      is for the body of a task, but that information does not actually
1215      appear in the decoded name.  */
1216
1217   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1218     len0 -= 3;
1219
1220   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1221      from the TKB suffix because it is used for non-anonymous task
1222      bodies.  */
1223
1224   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1225     len0 -= 2;
1226
1227   /* Remove trailing "B" suffixes.  */
1228   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1229
1230   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1231     len0 -= 1;
1232
1233   /* Make decoded big enough for possible expansion by operator name.  */
1234
1235   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1236   decoded = decoding_buffer;
1237
1238   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1239
1240   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1241     {
1242       i = len0 - 2;
1243       while ((i >= 0 && isdigit (encoded[i]))
1244              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1245         i -= 1;
1246       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1247         len0 = i - 1;
1248       else if (encoded[i] == '$')
1249         len0 = i;
1250     }
1251
1252   /* The first few characters that are not alphabetic are not part
1253      of any encoding we use, so we can copy them over verbatim.  */
1254
1255   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1256     decoded[j] = encoded[i];
1257
1258   at_start_name = 1;
1259   while (i < len0)
1260     {
1261       /* Is this a symbol function?  */
1262       if (at_start_name && encoded[i] == 'O')
1263         {
1264           int k;
1265
1266           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1267             {
1268               int op_len = strlen (ada_opname_table[k].encoded);
1269               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1270                             op_len - 1) == 0)
1271                   && !isalnum (encoded[i + op_len]))
1272                 {
1273                   strcpy (decoded + j, ada_opname_table[k].decoded);
1274                   at_start_name = 0;
1275                   i += op_len;
1276                   j += strlen (ada_opname_table[k].decoded);
1277                   break;
1278                 }
1279             }
1280           if (ada_opname_table[k].encoded != NULL)
1281             continue;
1282         }
1283       at_start_name = 0;
1284
1285       /* Replace "TK__" with "__", which will eventually be translated
1286          into "." (just below).  */
1287
1288       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1289         i += 2;
1290
1291       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1292          be translated into "." (just below).  These are internal names
1293          generated for anonymous blocks inside which our symbol is nested.  */
1294
1295       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1296           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1297           && isdigit (encoded [i+4]))
1298         {
1299           int k = i + 5;
1300           
1301           while (k < len0 && isdigit (encoded[k]))
1302             k++;  /* Skip any extra digit.  */
1303
1304           /* Double-check that the "__B_{DIGITS}+" sequence we found
1305              is indeed followed by "__".  */
1306           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1307             i = k;
1308         }
1309
1310       /* Remove _E{DIGITS}+[sb] */
1311
1312       /* Just as for protected object subprograms, there are 2 categories
1313          of subprograms created by the compiler for each entry.  The first
1314          one implements the actual entry code, and has a suffix following
1315          the convention above; the second one implements the barrier and
1316          uses the same convention as above, except that the 'E' is replaced
1317          by a 'B'.
1318
1319          Just as above, we do not decode the name of barrier functions
1320          to give the user a clue that the code he is debugging has been
1321          internally generated.  */
1322
1323       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1324           && isdigit (encoded[i+2]))
1325         {
1326           int k = i + 3;
1327
1328           while (k < len0 && isdigit (encoded[k]))
1329             k++;
1330
1331           if (k < len0
1332               && (encoded[k] == 'b' || encoded[k] == 's'))
1333             {
1334               k++;
1335               /* Just as an extra precaution, make sure that if this
1336                  suffix is followed by anything else, it is a '_'.
1337                  Otherwise, we matched this sequence by accident.  */
1338               if (k == len0
1339                   || (k < len0 && encoded[k] == '_'))
1340                 i = k;
1341             }
1342         }
1343
1344       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1345          the GNAT front-end in protected object subprograms.  */
1346
1347       if (i < len0 + 3
1348           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1349         {
1350           /* Backtrack a bit up until we reach either the begining of
1351              the encoded name, or "__".  Make sure that we only find
1352              digits or lowercase characters.  */
1353           const char *ptr = encoded + i - 1;
1354
1355           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1356             ptr--;
1357           if (ptr < encoded
1358               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1359             i++;
1360         }
1361
1362       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1363         {
1364           /* This is a X[bn]* sequence not separated from the previous
1365              part of the name with a non-alpha-numeric character (in other
1366              words, immediately following an alpha-numeric character), then
1367              verify that it is placed at the end of the encoded name.  If
1368              not, then the encoding is not valid and we should abort the
1369              decoding.  Otherwise, just skip it, it is used in body-nested
1370              package names.  */
1371           do
1372             i += 1;
1373           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1374           if (i < len0)
1375             goto Suppress;
1376         }
1377       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1378         {
1379          /* Replace '__' by '.'.  */
1380           decoded[j] = '.';
1381           at_start_name = 1;
1382           i += 2;
1383           j += 1;
1384         }
1385       else
1386         {
1387           /* It's a character part of the decoded name, so just copy it
1388              over.  */
1389           decoded[j] = encoded[i];
1390           i += 1;
1391           j += 1;
1392         }
1393     }
1394   decoded[j] = '\000';
1395
1396   /* Decoded names should never contain any uppercase character.
1397      Double-check this, and abort the decoding if we find one.  */
1398
1399   for (i = 0; decoded[i] != '\0'; i += 1)
1400     if (isupper (decoded[i]) || decoded[i] == ' ')
1401       goto Suppress;
1402
1403   if (strcmp (decoded, encoded) == 0)
1404     return encoded;
1405   else
1406     return decoded;
1407
1408 Suppress:
1409   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1410   decoded = decoding_buffer;
1411   if (encoded[0] == '<')
1412     strcpy (decoded, encoded);
1413   else
1414     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1415   return decoded;
1416
1417 }
1418
1419 /* Table for keeping permanent unique copies of decoded names.  Once
1420    allocated, names in this table are never released.  While this is a
1421    storage leak, it should not be significant unless there are massive
1422    changes in the set of decoded names in successive versions of a 
1423    symbol table loaded during a single session.  */
1424 static struct htab *decoded_names_store;
1425
1426 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1427    in the language-specific part of GSYMBOL, if it has not been
1428    previously computed.  Tries to save the decoded name in the same
1429    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1430    in any case, the decoded symbol has a lifetime at least that of
1431    GSYMBOL).
1432    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1433    const, but nevertheless modified to a semantically equivalent form
1434    when a decoded name is cached in it.  */
1435
1436 const char *
1437 ada_decode_symbol (const struct general_symbol_info *arg)
1438 {
1439   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1440   const char **resultp =
1441     &gsymbol->language_specific.demangled_name;
1442
1443   if (!gsymbol->ada_mangled)
1444     {
1445       const char *decoded = ada_decode (gsymbol->name);
1446       struct obstack *obstack = gsymbol->language_specific.obstack;
1447
1448       gsymbol->ada_mangled = 1;
1449
1450       if (obstack != NULL)
1451         *resultp
1452           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1453       else
1454         {
1455           /* Sometimes, we can't find a corresponding objfile, in
1456              which case, we put the result on the heap.  Since we only
1457              decode when needed, we hope this usually does not cause a
1458              significant memory leak (FIXME).  */
1459
1460           char **slot = (char **) htab_find_slot (decoded_names_store,
1461                                                   decoded, INSERT);
1462
1463           if (*slot == NULL)
1464             *slot = xstrdup (decoded);
1465           *resultp = *slot;
1466         }
1467     }
1468
1469   return *resultp;
1470 }
1471
1472 static char *
1473 ada_la_decode (const char *encoded, int options)
1474 {
1475   return xstrdup (ada_decode (encoded));
1476 }
1477
1478 /* Implement la_sniff_from_mangled_name for Ada.  */
1479
1480 static int
1481 ada_sniff_from_mangled_name (const char *mangled, char **out)
1482 {
1483   const char *demangled = ada_decode (mangled);
1484
1485   *out = NULL;
1486
1487   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1488     {
1489       /* Set the gsymbol language to Ada, but still return 0.
1490          Two reasons for that:
1491
1492          1. For Ada, we prefer computing the symbol's decoded name
1493          on the fly rather than pre-compute it, in order to save
1494          memory (Ada projects are typically very large).
1495
1496          2. There are some areas in the definition of the GNAT
1497          encoding where, with a bit of bad luck, we might be able
1498          to decode a non-Ada symbol, generating an incorrect
1499          demangled name (Eg: names ending with "TB" for instance
1500          are identified as task bodies and so stripped from
1501          the decoded name returned).
1502
1503          Returning 1, here, but not setting *DEMANGLED, helps us get a
1504          little bit of the best of both worlds.  Because we're last,
1505          we should not affect any of the other languages that were
1506          able to demangle the symbol before us; we get to correctly
1507          tag Ada symbols as such; and even if we incorrectly tagged a
1508          non-Ada symbol, which should be rare, any routing through the
1509          Ada language should be transparent (Ada tries to behave much
1510          like C/C++ with non-Ada symbols).  */
1511       return 1;
1512     }
1513
1514   return 0;
1515 }
1516
1517 \f
1518
1519                                 /* Arrays */
1520
1521 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1522    generated by the GNAT compiler to describe the index type used
1523    for each dimension of an array, check whether it follows the latest
1524    known encoding.  If not, fix it up to conform to the latest encoding.
1525    Otherwise, do nothing.  This function also does nothing if
1526    INDEX_DESC_TYPE is NULL.
1527
1528    The GNAT encoding used to describle the array index type evolved a bit.
1529    Initially, the information would be provided through the name of each
1530    field of the structure type only, while the type of these fields was
1531    described as unspecified and irrelevant.  The debugger was then expected
1532    to perform a global type lookup using the name of that field in order
1533    to get access to the full index type description.  Because these global
1534    lookups can be very expensive, the encoding was later enhanced to make
1535    the global lookup unnecessary by defining the field type as being
1536    the full index type description.
1537
1538    The purpose of this routine is to allow us to support older versions
1539    of the compiler by detecting the use of the older encoding, and by
1540    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1541    we essentially replace each field's meaningless type by the associated
1542    index subtype).  */
1543
1544 void
1545 ada_fixup_array_indexes_type (struct type *index_desc_type)
1546 {
1547   int i;
1548
1549   if (index_desc_type == NULL)
1550     return;
1551   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1552
1553   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1554      to check one field only, no need to check them all).  If not, return
1555      now.
1556
1557      If our INDEX_DESC_TYPE was generated using the older encoding,
1558      the field type should be a meaningless integer type whose name
1559      is not equal to the field name.  */
1560   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1561       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1562                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1563     return;
1564
1565   /* Fixup each field of INDEX_DESC_TYPE.  */
1566   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1567    {
1568      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1569      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1570
1571      if (raw_type)
1572        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1573    }
1574 }
1575
1576 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1577
1578 static const char *bound_name[] = {
1579   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1580   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1581 };
1582
1583 /* Maximum number of array dimensions we are prepared to handle.  */
1584
1585 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1586
1587
1588 /* The desc_* routines return primitive portions of array descriptors
1589    (fat pointers).  */
1590
1591 /* The descriptor or array type, if any, indicated by TYPE; removes
1592    level of indirection, if needed.  */
1593
1594 static struct type *
1595 desc_base_type (struct type *type)
1596 {
1597   if (type == NULL)
1598     return NULL;
1599   type = ada_check_typedef (type);
1600   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1601     type = ada_typedef_target_type (type);
1602
1603   if (type != NULL
1604       && (TYPE_CODE (type) == TYPE_CODE_PTR
1605           || TYPE_CODE (type) == TYPE_CODE_REF))
1606     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1607   else
1608     return type;
1609 }
1610
1611 /* True iff TYPE indicates a "thin" array pointer type.  */
1612
1613 static int
1614 is_thin_pntr (struct type *type)
1615 {
1616   return
1617     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1618     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1619 }
1620
1621 /* The descriptor type for thin pointer type TYPE.  */
1622
1623 static struct type *
1624 thin_descriptor_type (struct type *type)
1625 {
1626   struct type *base_type = desc_base_type (type);
1627
1628   if (base_type == NULL)
1629     return NULL;
1630   if (is_suffix (ada_type_name (base_type), "___XVE"))
1631     return base_type;
1632   else
1633     {
1634       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1635
1636       if (alt_type == NULL)
1637         return base_type;
1638       else
1639         return alt_type;
1640     }
1641 }
1642
1643 /* A pointer to the array data for thin-pointer value VAL.  */
1644
1645 static struct value *
1646 thin_data_pntr (struct value *val)
1647 {
1648   struct type *type = ada_check_typedef (value_type (val));
1649   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1650
1651   data_type = lookup_pointer_type (data_type);
1652
1653   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1654     return value_cast (data_type, value_copy (val));
1655   else
1656     return value_from_longest (data_type, value_address (val));
1657 }
1658
1659 /* True iff TYPE indicates a "thick" array pointer type.  */
1660
1661 static int
1662 is_thick_pntr (struct type *type)
1663 {
1664   type = desc_base_type (type);
1665   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1666           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1667 }
1668
1669 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1670    pointer to one, the type of its bounds data; otherwise, NULL.  */
1671
1672 static struct type *
1673 desc_bounds_type (struct type *type)
1674 {
1675   struct type *r;
1676
1677   type = desc_base_type (type);
1678
1679   if (type == NULL)
1680     return NULL;
1681   else if (is_thin_pntr (type))
1682     {
1683       type = thin_descriptor_type (type);
1684       if (type == NULL)
1685         return NULL;
1686       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1687       if (r != NULL)
1688         return ada_check_typedef (r);
1689     }
1690   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1691     {
1692       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1693       if (r != NULL)
1694         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1695     }
1696   return NULL;
1697 }
1698
1699 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1700    one, a pointer to its bounds data.   Otherwise NULL.  */
1701
1702 static struct value *
1703 desc_bounds (struct value *arr)
1704 {
1705   struct type *type = ada_check_typedef (value_type (arr));
1706
1707   if (is_thin_pntr (type))
1708     {
1709       struct type *bounds_type =
1710         desc_bounds_type (thin_descriptor_type (type));
1711       LONGEST addr;
1712
1713       if (bounds_type == NULL)
1714         error (_("Bad GNAT array descriptor"));
1715
1716       /* NOTE: The following calculation is not really kosher, but
1717          since desc_type is an XVE-encoded type (and shouldn't be),
1718          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1719       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1720         addr = value_as_long (arr);
1721       else
1722         addr = value_address (arr);
1723
1724       return
1725         value_from_longest (lookup_pointer_type (bounds_type),
1726                             addr - TYPE_LENGTH (bounds_type));
1727     }
1728
1729   else if (is_thick_pntr (type))
1730     {
1731       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1732                                                _("Bad GNAT array descriptor"));
1733       struct type *p_bounds_type = value_type (p_bounds);
1734
1735       if (p_bounds_type
1736           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1737         {
1738           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1739
1740           if (TYPE_STUB (target_type))
1741             p_bounds = value_cast (lookup_pointer_type
1742                                    (ada_check_typedef (target_type)),
1743                                    p_bounds);
1744         }
1745       else
1746         error (_("Bad GNAT array descriptor"));
1747
1748       return p_bounds;
1749     }
1750   else
1751     return NULL;
1752 }
1753
1754 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1755    position of the field containing the address of the bounds data.  */
1756
1757 static int
1758 fat_pntr_bounds_bitpos (struct type *type)
1759 {
1760   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1761 }
1762
1763 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1764    size of the field containing the address of the bounds data.  */
1765
1766 static int
1767 fat_pntr_bounds_bitsize (struct type *type)
1768 {
1769   type = desc_base_type (type);
1770
1771   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1772     return TYPE_FIELD_BITSIZE (type, 1);
1773   else
1774     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1775 }
1776
1777 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1778    pointer to one, the type of its array data (a array-with-no-bounds type);
1779    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1780    data.  */
1781
1782 static struct type *
1783 desc_data_target_type (struct type *type)
1784 {
1785   type = desc_base_type (type);
1786
1787   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1788   if (is_thin_pntr (type))
1789     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1790   else if (is_thick_pntr (type))
1791     {
1792       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1793
1794       if (data_type
1795           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1796         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1797     }
1798
1799   return NULL;
1800 }
1801
1802 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1803    its array data.  */
1804
1805 static struct value *
1806 desc_data (struct value *arr)
1807 {
1808   struct type *type = value_type (arr);
1809
1810   if (is_thin_pntr (type))
1811     return thin_data_pntr (arr);
1812   else if (is_thick_pntr (type))
1813     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1814                              _("Bad GNAT array descriptor"));
1815   else
1816     return NULL;
1817 }
1818
1819
1820 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1821    position of the field containing the address of the data.  */
1822
1823 static int
1824 fat_pntr_data_bitpos (struct type *type)
1825 {
1826   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1827 }
1828
1829 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1830    size of the field containing the address of the data.  */
1831
1832 static int
1833 fat_pntr_data_bitsize (struct type *type)
1834 {
1835   type = desc_base_type (type);
1836
1837   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1838     return TYPE_FIELD_BITSIZE (type, 0);
1839   else
1840     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1841 }
1842
1843 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1844    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1845    bound, if WHICH is 1.  The first bound is I=1.  */
1846
1847 static struct value *
1848 desc_one_bound (struct value *bounds, int i, int which)
1849 {
1850   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1851                            _("Bad GNAT array descriptor bounds"));
1852 }
1853
1854 /* If BOUNDS is an array-bounds structure type, return the bit position
1855    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1856    bound, if WHICH is 1.  The first bound is I=1.  */
1857
1858 static int
1859 desc_bound_bitpos (struct type *type, int i, int which)
1860 {
1861   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1862 }
1863
1864 /* If BOUNDS is an array-bounds structure type, return the bit field size
1865    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1866    bound, if WHICH is 1.  The first bound is I=1.  */
1867
1868 static int
1869 desc_bound_bitsize (struct type *type, int i, int which)
1870 {
1871   type = desc_base_type (type);
1872
1873   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1874     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1875   else
1876     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1877 }
1878
1879 /* If TYPE is the type of an array-bounds structure, the type of its
1880    Ith bound (numbering from 1).  Otherwise, NULL.  */
1881
1882 static struct type *
1883 desc_index_type (struct type *type, int i)
1884 {
1885   type = desc_base_type (type);
1886
1887   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1888     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1889   else
1890     return NULL;
1891 }
1892
1893 /* The number of index positions in the array-bounds type TYPE.
1894    Return 0 if TYPE is NULL.  */
1895
1896 static int
1897 desc_arity (struct type *type)
1898 {
1899   type = desc_base_type (type);
1900
1901   if (type != NULL)
1902     return TYPE_NFIELDS (type) / 2;
1903   return 0;
1904 }
1905
1906 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1907    an array descriptor type (representing an unconstrained array
1908    type).  */
1909
1910 static int
1911 ada_is_direct_array_type (struct type *type)
1912 {
1913   if (type == NULL)
1914     return 0;
1915   type = ada_check_typedef (type);
1916   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1917           || ada_is_array_descriptor_type (type));
1918 }
1919
1920 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1921  * to one.  */
1922
1923 static int
1924 ada_is_array_type (struct type *type)
1925 {
1926   while (type != NULL 
1927          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1928              || TYPE_CODE (type) == TYPE_CODE_REF))
1929     type = TYPE_TARGET_TYPE (type);
1930   return ada_is_direct_array_type (type);
1931 }
1932
1933 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1934
1935 int
1936 ada_is_simple_array_type (struct type *type)
1937 {
1938   if (type == NULL)
1939     return 0;
1940   type = ada_check_typedef (type);
1941   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1942           || (TYPE_CODE (type) == TYPE_CODE_PTR
1943               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1944                  == TYPE_CODE_ARRAY));
1945 }
1946
1947 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1948
1949 int
1950 ada_is_array_descriptor_type (struct type *type)
1951 {
1952   struct type *data_type = desc_data_target_type (type);
1953
1954   if (type == NULL)
1955     return 0;
1956   type = ada_check_typedef (type);
1957   return (data_type != NULL
1958           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1959           && desc_arity (desc_bounds_type (type)) > 0);
1960 }
1961
1962 /* Non-zero iff type is a partially mal-formed GNAT array
1963    descriptor.  FIXME: This is to compensate for some problems with
1964    debugging output from GNAT.  Re-examine periodically to see if it
1965    is still needed.  */
1966
1967 int
1968 ada_is_bogus_array_descriptor (struct type *type)
1969 {
1970   return
1971     type != NULL
1972     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1973     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1974         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1975     && !ada_is_array_descriptor_type (type);
1976 }
1977
1978
1979 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1980    (fat pointer) returns the type of the array data described---specifically,
1981    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1982    in from the descriptor; otherwise, they are left unspecified.  If
1983    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1984    returns NULL.  The result is simply the type of ARR if ARR is not
1985    a descriptor.  */
1986 struct type *
1987 ada_type_of_array (struct value *arr, int bounds)
1988 {
1989   if (ada_is_constrained_packed_array_type (value_type (arr)))
1990     return decode_constrained_packed_array_type (value_type (arr));
1991
1992   if (!ada_is_array_descriptor_type (value_type (arr)))
1993     return value_type (arr);
1994
1995   if (!bounds)
1996     {
1997       struct type *array_type =
1998         ada_check_typedef (desc_data_target_type (value_type (arr)));
1999
2000       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2001         TYPE_FIELD_BITSIZE (array_type, 0) =
2002           decode_packed_array_bitsize (value_type (arr));
2003       
2004       return array_type;
2005     }
2006   else
2007     {
2008       struct type *elt_type;
2009       int arity;
2010       struct value *descriptor;
2011
2012       elt_type = ada_array_element_type (value_type (arr), -1);
2013       arity = ada_array_arity (value_type (arr));
2014
2015       if (elt_type == NULL || arity == 0)
2016         return ada_check_typedef (value_type (arr));
2017
2018       descriptor = desc_bounds (arr);
2019       if (value_as_long (descriptor) == 0)
2020         return NULL;
2021       while (arity > 0)
2022         {
2023           struct type *range_type = alloc_type_copy (value_type (arr));
2024           struct type *array_type = alloc_type_copy (value_type (arr));
2025           struct value *low = desc_one_bound (descriptor, arity, 0);
2026           struct value *high = desc_one_bound (descriptor, arity, 1);
2027
2028           arity -= 1;
2029           create_static_range_type (range_type, value_type (low),
2030                                     longest_to_int (value_as_long (low)),
2031                                     longest_to_int (value_as_long (high)));
2032           elt_type = create_array_type (array_type, elt_type, range_type);
2033
2034           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2035             {
2036               /* We need to store the element packed bitsize, as well as
2037                  recompute the array size, because it was previously
2038                  computed based on the unpacked element size.  */
2039               LONGEST lo = value_as_long (low);
2040               LONGEST hi = value_as_long (high);
2041
2042               TYPE_FIELD_BITSIZE (elt_type, 0) =
2043                 decode_packed_array_bitsize (value_type (arr));
2044               /* If the array has no element, then the size is already
2045                  zero, and does not need to be recomputed.  */
2046               if (lo < hi)
2047                 {
2048                   int array_bitsize =
2049                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2050
2051                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2052                 }
2053             }
2054         }
2055
2056       return lookup_pointer_type (elt_type);
2057     }
2058 }
2059
2060 /* If ARR does not represent an array, returns ARR unchanged.
2061    Otherwise, returns either a standard GDB array with bounds set
2062    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2063    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2064
2065 struct value *
2066 ada_coerce_to_simple_array_ptr (struct value *arr)
2067 {
2068   if (ada_is_array_descriptor_type (value_type (arr)))
2069     {
2070       struct type *arrType = ada_type_of_array (arr, 1);
2071
2072       if (arrType == NULL)
2073         return NULL;
2074       return value_cast (arrType, value_copy (desc_data (arr)));
2075     }
2076   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2077     return decode_constrained_packed_array (arr);
2078   else
2079     return arr;
2080 }
2081
2082 /* If ARR does not represent an array, returns ARR unchanged.
2083    Otherwise, returns a standard GDB array describing ARR (which may
2084    be ARR itself if it already is in the proper form).  */
2085
2086 struct value *
2087 ada_coerce_to_simple_array (struct value *arr)
2088 {
2089   if (ada_is_array_descriptor_type (value_type (arr)))
2090     {
2091       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2092
2093       if (arrVal == NULL)
2094         error (_("Bounds unavailable for null array pointer."));
2095       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2096       return value_ind (arrVal);
2097     }
2098   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2099     return decode_constrained_packed_array (arr);
2100   else
2101     return arr;
2102 }
2103
2104 /* If TYPE represents a GNAT array type, return it translated to an
2105    ordinary GDB array type (possibly with BITSIZE fields indicating
2106    packing).  For other types, is the identity.  */
2107
2108 struct type *
2109 ada_coerce_to_simple_array_type (struct type *type)
2110 {
2111   if (ada_is_constrained_packed_array_type (type))
2112     return decode_constrained_packed_array_type (type);
2113
2114   if (ada_is_array_descriptor_type (type))
2115     return ada_check_typedef (desc_data_target_type (type));
2116
2117   return type;
2118 }
2119
2120 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2121
2122 static int
2123 ada_is_packed_array_type  (struct type *type)
2124 {
2125   if (type == NULL)
2126     return 0;
2127   type = desc_base_type (type);
2128   type = ada_check_typedef (type);
2129   return
2130     ada_type_name (type) != NULL
2131     && strstr (ada_type_name (type), "___XP") != NULL;
2132 }
2133
2134 /* Non-zero iff TYPE represents a standard GNAT constrained
2135    packed-array type.  */
2136
2137 int
2138 ada_is_constrained_packed_array_type (struct type *type)
2139 {
2140   return ada_is_packed_array_type (type)
2141     && !ada_is_array_descriptor_type (type);
2142 }
2143
2144 /* Non-zero iff TYPE represents an array descriptor for a
2145    unconstrained packed-array type.  */
2146
2147 static int
2148 ada_is_unconstrained_packed_array_type (struct type *type)
2149 {
2150   return ada_is_packed_array_type (type)
2151     && ada_is_array_descriptor_type (type);
2152 }
2153
2154 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2155    return the size of its elements in bits.  */
2156
2157 static long
2158 decode_packed_array_bitsize (struct type *type)
2159 {
2160   const char *raw_name;
2161   const char *tail;
2162   long bits;
2163
2164   /* Access to arrays implemented as fat pointers are encoded as a typedef
2165      of the fat pointer type.  We need the name of the fat pointer type
2166      to do the decoding, so strip the typedef layer.  */
2167   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2168     type = ada_typedef_target_type (type);
2169
2170   raw_name = ada_type_name (ada_check_typedef (type));
2171   if (!raw_name)
2172     raw_name = ada_type_name (desc_base_type (type));
2173
2174   if (!raw_name)
2175     return 0;
2176
2177   tail = strstr (raw_name, "___XP");
2178   gdb_assert (tail != NULL);
2179
2180   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2181     {
2182       lim_warning
2183         (_("could not understand bit size information on packed array"));
2184       return 0;
2185     }
2186
2187   return bits;
2188 }
2189
2190 /* Given that TYPE is a standard GDB array type with all bounds filled
2191    in, and that the element size of its ultimate scalar constituents
2192    (that is, either its elements, or, if it is an array of arrays, its
2193    elements' elements, etc.) is *ELT_BITS, return an identical type,
2194    but with the bit sizes of its elements (and those of any
2195    constituent arrays) recorded in the BITSIZE components of its
2196    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2197    in bits.
2198
2199    Note that, for arrays whose index type has an XA encoding where
2200    a bound references a record discriminant, getting that discriminant,
2201    and therefore the actual value of that bound, is not possible
2202    because none of the given parameters gives us access to the record.
2203    This function assumes that it is OK in the context where it is being
2204    used to return an array whose bounds are still dynamic and where
2205    the length is arbitrary.  */
2206
2207 static struct type *
2208 constrained_packed_array_type (struct type *type, long *elt_bits)
2209 {
2210   struct type *new_elt_type;
2211   struct type *new_type;
2212   struct type *index_type_desc;
2213   struct type *index_type;
2214   LONGEST low_bound, high_bound;
2215
2216   type = ada_check_typedef (type);
2217   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2218     return type;
2219
2220   index_type_desc = ada_find_parallel_type (type, "___XA");
2221   if (index_type_desc)
2222     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2223                                       NULL);
2224   else
2225     index_type = TYPE_INDEX_TYPE (type);
2226
2227   new_type = alloc_type_copy (type);
2228   new_elt_type =
2229     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2230                                    elt_bits);
2231   create_array_type (new_type, new_elt_type, index_type);
2232   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2233   TYPE_NAME (new_type) = ada_type_name (type);
2234
2235   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2236        && is_dynamic_type (check_typedef (index_type)))
2237       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2238     low_bound = high_bound = 0;
2239   if (high_bound < low_bound)
2240     *elt_bits = TYPE_LENGTH (new_type) = 0;
2241   else
2242     {
2243       *elt_bits *= (high_bound - low_bound + 1);
2244       TYPE_LENGTH (new_type) =
2245         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2246     }
2247
2248   TYPE_FIXED_INSTANCE (new_type) = 1;
2249   return new_type;
2250 }
2251
2252 /* The array type encoded by TYPE, where
2253    ada_is_constrained_packed_array_type (TYPE).  */
2254
2255 static struct type *
2256 decode_constrained_packed_array_type (struct type *type)
2257 {
2258   const char *raw_name = ada_type_name (ada_check_typedef (type));
2259   char *name;
2260   const char *tail;
2261   struct type *shadow_type;
2262   long bits;
2263
2264   if (!raw_name)
2265     raw_name = ada_type_name (desc_base_type (type));
2266
2267   if (!raw_name)
2268     return NULL;
2269
2270   name = (char *) alloca (strlen (raw_name) + 1);
2271   tail = strstr (raw_name, "___XP");
2272   type = desc_base_type (type);
2273
2274   memcpy (name, raw_name, tail - raw_name);
2275   name[tail - raw_name] = '\000';
2276
2277   shadow_type = ada_find_parallel_type_with_name (type, name);
2278
2279   if (shadow_type == NULL)
2280     {
2281       lim_warning (_("could not find bounds information on packed array"));
2282       return NULL;
2283     }
2284   shadow_type = check_typedef (shadow_type);
2285
2286   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2287     {
2288       lim_warning (_("could not understand bounds "
2289                      "information on packed array"));
2290       return NULL;
2291     }
2292
2293   bits = decode_packed_array_bitsize (type);
2294   return constrained_packed_array_type (shadow_type, &bits);
2295 }
2296
2297 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2298    array, returns a simple array that denotes that array.  Its type is a
2299    standard GDB array type except that the BITSIZEs of the array
2300    target types are set to the number of bits in each element, and the
2301    type length is set appropriately.  */
2302
2303 static struct value *
2304 decode_constrained_packed_array (struct value *arr)
2305 {
2306   struct type *type;
2307
2308   /* If our value is a pointer, then dereference it. Likewise if
2309      the value is a reference.  Make sure that this operation does not
2310      cause the target type to be fixed, as this would indirectly cause
2311      this array to be decoded.  The rest of the routine assumes that
2312      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2313      and "value_ind" routines to perform the dereferencing, as opposed
2314      to using "ada_coerce_ref" or "ada_value_ind".  */
2315   arr = coerce_ref (arr);
2316   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2317     arr = value_ind (arr);
2318
2319   type = decode_constrained_packed_array_type (value_type (arr));
2320   if (type == NULL)
2321     {
2322       error (_("can't unpack array"));
2323       return NULL;
2324     }
2325
2326   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2327       && ada_is_modular_type (value_type (arr)))
2328     {
2329        /* This is a (right-justified) modular type representing a packed
2330          array with no wrapper.  In order to interpret the value through
2331          the (left-justified) packed array type we just built, we must
2332          first left-justify it.  */
2333       int bit_size, bit_pos;
2334       ULONGEST mod;
2335
2336       mod = ada_modulus (value_type (arr)) - 1;
2337       bit_size = 0;
2338       while (mod > 0)
2339         {
2340           bit_size += 1;
2341           mod >>= 1;
2342         }
2343       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2344       arr = ada_value_primitive_packed_val (arr, NULL,
2345                                             bit_pos / HOST_CHAR_BIT,
2346                                             bit_pos % HOST_CHAR_BIT,
2347                                             bit_size,
2348                                             type);
2349     }
2350
2351   return coerce_unspec_val_to_type (arr, type);
2352 }
2353
2354
2355 /* The value of the element of packed array ARR at the ARITY indices
2356    given in IND.   ARR must be a simple array.  */
2357
2358 static struct value *
2359 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2360 {
2361   int i;
2362   int bits, elt_off, bit_off;
2363   long elt_total_bit_offset;
2364   struct type *elt_type;
2365   struct value *v;
2366
2367   bits = 0;
2368   elt_total_bit_offset = 0;
2369   elt_type = ada_check_typedef (value_type (arr));
2370   for (i = 0; i < arity; i += 1)
2371     {
2372       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2373           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2374         error
2375           (_("attempt to do packed indexing of "
2376              "something other than a packed array"));
2377       else
2378         {
2379           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2380           LONGEST lowerbound, upperbound;
2381           LONGEST idx;
2382
2383           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2384             {
2385               lim_warning (_("don't know bounds of array"));
2386               lowerbound = upperbound = 0;
2387             }
2388
2389           idx = pos_atr (ind[i]);
2390           if (idx < lowerbound || idx > upperbound)
2391             lim_warning (_("packed array index %ld out of bounds"),
2392                          (long) idx);
2393           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2394           elt_total_bit_offset += (idx - lowerbound) * bits;
2395           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2396         }
2397     }
2398   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2399   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2400
2401   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2402                                       bits, elt_type);
2403   return v;
2404 }
2405
2406 /* Non-zero iff TYPE includes negative integer values.  */
2407
2408 static int
2409 has_negatives (struct type *type)
2410 {
2411   switch (TYPE_CODE (type))
2412     {
2413     default:
2414       return 0;
2415     case TYPE_CODE_INT:
2416       return !TYPE_UNSIGNED (type);
2417     case TYPE_CODE_RANGE:
2418       return TYPE_LOW_BOUND (type) < 0;
2419     }
2420 }
2421
2422 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2423    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2424    the unpacked buffer.
2425
2426    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2427    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2428
2429    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2430    zero otherwise.
2431
2432    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2433
2434    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2435
2436 static void
2437 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2438                           gdb_byte *unpacked, int unpacked_len,
2439                           int is_big_endian, int is_signed_type,
2440                           int is_scalar)
2441 {
2442   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2443   int src_idx;                  /* Index into the source area */
2444   int src_bytes_left;           /* Number of source bytes left to process.  */
2445   int srcBitsLeft;              /* Number of source bits left to move */
2446   int unusedLS;                 /* Number of bits in next significant
2447                                    byte of source that are unused */
2448
2449   int unpacked_idx;             /* Index into the unpacked buffer */
2450   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2451
2452   unsigned long accum;          /* Staging area for bits being transferred */
2453   int accumSize;                /* Number of meaningful bits in accum */
2454   unsigned char sign;
2455
2456   /* Transmit bytes from least to most significant; delta is the direction
2457      the indices move.  */
2458   int delta = is_big_endian ? -1 : 1;
2459
2460   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2461      bits from SRC.  .*/
2462   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2463     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2464            bit_size, unpacked_len);
2465
2466   srcBitsLeft = bit_size;
2467   src_bytes_left = src_len;
2468   unpacked_bytes_left = unpacked_len;
2469   sign = 0;
2470
2471   if (is_big_endian)
2472     {
2473       src_idx = src_len - 1;
2474       if (is_signed_type
2475           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2476         sign = ~0;
2477
2478       unusedLS =
2479         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2480         % HOST_CHAR_BIT;
2481
2482       if (is_scalar)
2483         {
2484           accumSize = 0;
2485           unpacked_idx = unpacked_len - 1;
2486         }
2487       else
2488         {
2489           /* Non-scalar values must be aligned at a byte boundary...  */
2490           accumSize =
2491             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2492           /* ... And are placed at the beginning (most-significant) bytes
2493              of the target.  */
2494           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2495           unpacked_bytes_left = unpacked_idx + 1;
2496         }
2497     }
2498   else
2499     {
2500       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2501
2502       src_idx = unpacked_idx = 0;
2503       unusedLS = bit_offset;
2504       accumSize = 0;
2505
2506       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2507         sign = ~0;
2508     }
2509
2510   accum = 0;
2511   while (src_bytes_left > 0)
2512     {
2513       /* Mask for removing bits of the next source byte that are not
2514          part of the value.  */
2515       unsigned int unusedMSMask =
2516         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2517         1;
2518       /* Sign-extend bits for this byte.  */
2519       unsigned int signMask = sign & ~unusedMSMask;
2520
2521       accum |=
2522         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2523       accumSize += HOST_CHAR_BIT - unusedLS;
2524       if (accumSize >= HOST_CHAR_BIT)
2525         {
2526           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2527           accumSize -= HOST_CHAR_BIT;
2528           accum >>= HOST_CHAR_BIT;
2529           unpacked_bytes_left -= 1;
2530           unpacked_idx += delta;
2531         }
2532       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2533       unusedLS = 0;
2534       src_bytes_left -= 1;
2535       src_idx += delta;
2536     }
2537   while (unpacked_bytes_left > 0)
2538     {
2539       accum |= sign << accumSize;
2540       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2541       accumSize -= HOST_CHAR_BIT;
2542       if (accumSize < 0)
2543         accumSize = 0;
2544       accum >>= HOST_CHAR_BIT;
2545       unpacked_bytes_left -= 1;
2546       unpacked_idx += delta;
2547     }
2548 }
2549
2550 /* Create a new value of type TYPE from the contents of OBJ starting
2551    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2552    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2553    assigning through the result will set the field fetched from.
2554    VALADDR is ignored unless OBJ is NULL, in which case,
2555    VALADDR+OFFSET must address the start of storage containing the 
2556    packed value.  The value returned  in this case is never an lval.
2557    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2558
2559 struct value *
2560 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2561                                 long offset, int bit_offset, int bit_size,
2562                                 struct type *type)
2563 {
2564   struct value *v;
2565   const gdb_byte *src;                /* First byte containing data to unpack */
2566   gdb_byte *unpacked;
2567   const int is_scalar = is_scalar_type (type);
2568   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2569   gdb::byte_vector staging;
2570
2571   type = ada_check_typedef (type);
2572
2573   if (obj == NULL)
2574     src = valaddr + offset;
2575   else
2576     src = value_contents (obj) + offset;
2577
2578   if (is_dynamic_type (type))
2579     {
2580       /* The length of TYPE might by dynamic, so we need to resolve
2581          TYPE in order to know its actual size, which we then use
2582          to create the contents buffer of the value we return.
2583          The difficulty is that the data containing our object is
2584          packed, and therefore maybe not at a byte boundary.  So, what
2585          we do, is unpack the data into a byte-aligned buffer, and then
2586          use that buffer as our object's value for resolving the type.  */
2587       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2588       staging.resize (staging_len);
2589
2590       ada_unpack_from_contents (src, bit_offset, bit_size,
2591                                 staging.data (), staging.size (),
2592                                 is_big_endian, has_negatives (type),
2593                                 is_scalar);
2594       type = resolve_dynamic_type (type, staging.data (), 0);
2595       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2596         {
2597           /* This happens when the length of the object is dynamic,
2598              and is actually smaller than the space reserved for it.
2599              For instance, in an array of variant records, the bit_size
2600              we're given is the array stride, which is constant and
2601              normally equal to the maximum size of its element.
2602              But, in reality, each element only actually spans a portion
2603              of that stride.  */
2604           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2605         }
2606     }
2607
2608   if (obj == NULL)
2609     {
2610       v = allocate_value (type);
2611       src = valaddr + offset;
2612     }
2613   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2614     {
2615       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2616       gdb_byte *buf;
2617
2618       v = value_at (type, value_address (obj) + offset);
2619       buf = (gdb_byte *) alloca (src_len);
2620       read_memory (value_address (v), buf, src_len);
2621       src = buf;
2622     }
2623   else
2624     {
2625       v = allocate_value (type);
2626       src = value_contents (obj) + offset;
2627     }
2628
2629   if (obj != NULL)
2630     {
2631       long new_offset = offset;
2632
2633       set_value_component_location (v, obj);
2634       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2635       set_value_bitsize (v, bit_size);
2636       if (value_bitpos (v) >= HOST_CHAR_BIT)
2637         {
2638           ++new_offset;
2639           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2640         }
2641       set_value_offset (v, new_offset);
2642
2643       /* Also set the parent value.  This is needed when trying to
2644          assign a new value (in inferior memory).  */
2645       set_value_parent (v, obj);
2646     }
2647   else
2648     set_value_bitsize (v, bit_size);
2649   unpacked = value_contents_writeable (v);
2650
2651   if (bit_size == 0)
2652     {
2653       memset (unpacked, 0, TYPE_LENGTH (type));
2654       return v;
2655     }
2656
2657   if (staging.size () == TYPE_LENGTH (type))
2658     {
2659       /* Small short-cut: If we've unpacked the data into a buffer
2660          of the same size as TYPE's length, then we can reuse that,
2661          instead of doing the unpacking again.  */
2662       memcpy (unpacked, staging.data (), staging.size ());
2663     }
2664   else
2665     ada_unpack_from_contents (src, bit_offset, bit_size,
2666                               unpacked, TYPE_LENGTH (type),
2667                               is_big_endian, has_negatives (type), is_scalar);
2668
2669   return v;
2670 }
2671
2672 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2673    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2674    not overlap.  */
2675 static void
2676 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2677            int src_offset, int n, int bits_big_endian_p)
2678 {
2679   unsigned int accum, mask;
2680   int accum_bits, chunk_size;
2681
2682   target += targ_offset / HOST_CHAR_BIT;
2683   targ_offset %= HOST_CHAR_BIT;
2684   source += src_offset / HOST_CHAR_BIT;
2685   src_offset %= HOST_CHAR_BIT;
2686   if (bits_big_endian_p)
2687     {
2688       accum = (unsigned char) *source;
2689       source += 1;
2690       accum_bits = HOST_CHAR_BIT - src_offset;
2691
2692       while (n > 0)
2693         {
2694           int unused_right;
2695
2696           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2697           accum_bits += HOST_CHAR_BIT;
2698           source += 1;
2699           chunk_size = HOST_CHAR_BIT - targ_offset;
2700           if (chunk_size > n)
2701             chunk_size = n;
2702           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2703           mask = ((1 << chunk_size) - 1) << unused_right;
2704           *target =
2705             (*target & ~mask)
2706             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2707           n -= chunk_size;
2708           accum_bits -= chunk_size;
2709           target += 1;
2710           targ_offset = 0;
2711         }
2712     }
2713   else
2714     {
2715       accum = (unsigned char) *source >> src_offset;
2716       source += 1;
2717       accum_bits = HOST_CHAR_BIT - src_offset;
2718
2719       while (n > 0)
2720         {
2721           accum = accum + ((unsigned char) *source << accum_bits);
2722           accum_bits += HOST_CHAR_BIT;
2723           source += 1;
2724           chunk_size = HOST_CHAR_BIT - targ_offset;
2725           if (chunk_size > n)
2726             chunk_size = n;
2727           mask = ((1 << chunk_size) - 1) << targ_offset;
2728           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2729           n -= chunk_size;
2730           accum_bits -= chunk_size;
2731           accum >>= chunk_size;
2732           target += 1;
2733           targ_offset = 0;
2734         }
2735     }
2736 }
2737
2738 /* Store the contents of FROMVAL into the location of TOVAL.
2739    Return a new value with the location of TOVAL and contents of
2740    FROMVAL.   Handles assignment into packed fields that have
2741    floating-point or non-scalar types.  */
2742
2743 static struct value *
2744 ada_value_assign (struct value *toval, struct value *fromval)
2745 {
2746   struct type *type = value_type (toval);
2747   int bits = value_bitsize (toval);
2748
2749   toval = ada_coerce_ref (toval);
2750   fromval = ada_coerce_ref (fromval);
2751
2752   if (ada_is_direct_array_type (value_type (toval)))
2753     toval = ada_coerce_to_simple_array (toval);
2754   if (ada_is_direct_array_type (value_type (fromval)))
2755     fromval = ada_coerce_to_simple_array (fromval);
2756
2757   if (!deprecated_value_modifiable (toval))
2758     error (_("Left operand of assignment is not a modifiable lvalue."));
2759
2760   if (VALUE_LVAL (toval) == lval_memory
2761       && bits > 0
2762       && (TYPE_CODE (type) == TYPE_CODE_FLT
2763           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2764     {
2765       int len = (value_bitpos (toval)
2766                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2767       int from_size;
2768       gdb_byte *buffer = (gdb_byte *) alloca (len);
2769       struct value *val;
2770       CORE_ADDR to_addr = value_address (toval);
2771
2772       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2773         fromval = value_cast (type, fromval);
2774
2775       read_memory (to_addr, buffer, len);
2776       from_size = value_bitsize (fromval);
2777       if (from_size == 0)
2778         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2779       if (gdbarch_bits_big_endian (get_type_arch (type)))
2780         move_bits (buffer, value_bitpos (toval),
2781                    value_contents (fromval), from_size - bits, bits, 1);
2782       else
2783         move_bits (buffer, value_bitpos (toval),
2784                    value_contents (fromval), 0, bits, 0);
2785       write_memory_with_notification (to_addr, buffer, len);
2786
2787       val = value_copy (toval);
2788       memcpy (value_contents_raw (val), value_contents (fromval),
2789               TYPE_LENGTH (type));
2790       deprecated_set_value_type (val, type);
2791
2792       return val;
2793     }
2794
2795   return value_assign (toval, fromval);
2796 }
2797
2798
2799 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2800    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2801    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2802    COMPONENT, and not the inferior's memory.  The current contents
2803    of COMPONENT are ignored.
2804
2805    Although not part of the initial design, this function also works
2806    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2807    had a null address, and COMPONENT had an address which is equal to
2808    its offset inside CONTAINER.  */
2809
2810 static void
2811 value_assign_to_component (struct value *container, struct value *component,
2812                            struct value *val)
2813 {
2814   LONGEST offset_in_container =
2815     (LONGEST)  (value_address (component) - value_address (container));
2816   int bit_offset_in_container =
2817     value_bitpos (component) - value_bitpos (container);
2818   int bits;
2819
2820   val = value_cast (value_type (component), val);
2821
2822   if (value_bitsize (component) == 0)
2823     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2824   else
2825     bits = value_bitsize (component);
2826
2827   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2828     {
2829       int src_offset;
2830
2831       if (is_scalar_type (check_typedef (value_type (component))))
2832         src_offset
2833           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2834       else
2835         src_offset = 0;
2836       move_bits (value_contents_writeable (container) + offset_in_container,
2837                  value_bitpos (container) + bit_offset_in_container,
2838                  value_contents (val), src_offset, bits, 1);
2839     }
2840   else
2841     move_bits (value_contents_writeable (container) + offset_in_container,
2842                value_bitpos (container) + bit_offset_in_container,
2843                value_contents (val), 0, bits, 0);
2844 }
2845
2846 /* Determine if TYPE is an access to an unconstrained array.  */
2847
2848 bool
2849 ada_is_access_to_unconstrained_array (struct type *type)
2850 {
2851   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2852           && is_thick_pntr (ada_typedef_target_type (type)));
2853 }
2854
2855 /* The value of the element of array ARR at the ARITY indices given in IND.
2856    ARR may be either a simple array, GNAT array descriptor, or pointer
2857    thereto.  */
2858
2859 struct value *
2860 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2861 {
2862   int k;
2863   struct value *elt;
2864   struct type *elt_type;
2865
2866   elt = ada_coerce_to_simple_array (arr);
2867
2868   elt_type = ada_check_typedef (value_type (elt));
2869   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2870       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2871     return value_subscript_packed (elt, arity, ind);
2872
2873   for (k = 0; k < arity; k += 1)
2874     {
2875       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2876
2877       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2878         error (_("too many subscripts (%d expected)"), k);
2879
2880       elt = value_subscript (elt, pos_atr (ind[k]));
2881
2882       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2883           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2884         {
2885           /* The element is a typedef to an unconstrained array,
2886              except that the value_subscript call stripped the
2887              typedef layer.  The typedef layer is GNAT's way to
2888              specify that the element is, at the source level, an
2889              access to the unconstrained array, rather than the
2890              unconstrained array.  So, we need to restore that
2891              typedef layer, which we can do by forcing the element's
2892              type back to its original type. Otherwise, the returned
2893              value is going to be printed as the array, rather
2894              than as an access.  Another symptom of the same issue
2895              would be that an expression trying to dereference the
2896              element would also be improperly rejected.  */
2897           deprecated_set_value_type (elt, saved_elt_type);
2898         }
2899
2900       elt_type = ada_check_typedef (value_type (elt));
2901     }
2902
2903   return elt;
2904 }
2905
2906 /* Assuming ARR is a pointer to a GDB array, the value of the element
2907    of *ARR at the ARITY indices given in IND.
2908    Does not read the entire array into memory.
2909
2910    Note: Unlike what one would expect, this function is used instead of
2911    ada_value_subscript for basically all non-packed array types.  The reason
2912    for this is that a side effect of doing our own pointer arithmetics instead
2913    of relying on value_subscript is that there is no implicit typedef peeling.
2914    This is important for arrays of array accesses, where it allows us to
2915    preserve the fact that the array's element is an array access, where the
2916    access part os encoded in a typedef layer.  */
2917
2918 static struct value *
2919 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2920 {
2921   int k;
2922   struct value *array_ind = ada_value_ind (arr);
2923   struct type *type
2924     = check_typedef (value_enclosing_type (array_ind));
2925
2926   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2927       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2928     return value_subscript_packed (array_ind, arity, ind);
2929
2930   for (k = 0; k < arity; k += 1)
2931     {
2932       LONGEST lwb, upb;
2933       struct value *lwb_value;
2934
2935       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2936         error (_("too many subscripts (%d expected)"), k);
2937       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2938                         value_copy (arr));
2939       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2940       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2941       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2942       type = TYPE_TARGET_TYPE (type);
2943     }
2944
2945   return value_ind (arr);
2946 }
2947
2948 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2949    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2950    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2951    this array is LOW, as per Ada rules.  */
2952 static struct value *
2953 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2954                           int low, int high)
2955 {
2956   struct type *type0 = ada_check_typedef (type);
2957   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2958   struct type *index_type
2959     = create_static_range_type (NULL, base_index_type, low, high);
2960   struct type *slice_type = create_array_type_with_stride
2961                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2962                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2963                                TYPE_FIELD_BITSIZE (type0, 0));
2964   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2965   LONGEST base_low_pos, low_pos;
2966   CORE_ADDR base;
2967
2968   if (!discrete_position (base_index_type, low, &low_pos)
2969       || !discrete_position (base_index_type, base_low, &base_low_pos))
2970     {
2971       warning (_("unable to get positions in slice, use bounds instead"));
2972       low_pos = low;
2973       base_low_pos = base_low;
2974     }
2975
2976   base = value_as_address (array_ptr)
2977     + ((low_pos - base_low_pos)
2978        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2979   return value_at_lazy (slice_type, base);
2980 }
2981
2982
2983 static struct value *
2984 ada_value_slice (struct value *array, int low, int high)
2985 {
2986   struct type *type = ada_check_typedef (value_type (array));
2987   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2988   struct type *index_type
2989     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2990   struct type *slice_type = create_array_type_with_stride
2991                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2992                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2993                                TYPE_FIELD_BITSIZE (type, 0));
2994   LONGEST low_pos, high_pos;
2995
2996   if (!discrete_position (base_index_type, low, &low_pos)
2997       || !discrete_position (base_index_type, high, &high_pos))
2998     {
2999       warning (_("unable to get positions in slice, use bounds instead"));
3000       low_pos = low;
3001       high_pos = high;
3002     }
3003
3004   return value_cast (slice_type,
3005                      value_slice (array, low, high_pos - low_pos + 1));
3006 }
3007
3008 /* If type is a record type in the form of a standard GNAT array
3009    descriptor, returns the number of dimensions for type.  If arr is a
3010    simple array, returns the number of "array of"s that prefix its
3011    type designation.  Otherwise, returns 0.  */
3012
3013 int
3014 ada_array_arity (struct type *type)
3015 {
3016   int arity;
3017
3018   if (type == NULL)
3019     return 0;
3020
3021   type = desc_base_type (type);
3022
3023   arity = 0;
3024   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3025     return desc_arity (desc_bounds_type (type));
3026   else
3027     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3028       {
3029         arity += 1;
3030         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
3031       }
3032
3033   return arity;
3034 }
3035
3036 /* If TYPE is a record type in the form of a standard GNAT array
3037    descriptor or a simple array type, returns the element type for
3038    TYPE after indexing by NINDICES indices, or by all indices if
3039    NINDICES is -1.  Otherwise, returns NULL.  */
3040
3041 struct type *
3042 ada_array_element_type (struct type *type, int nindices)
3043 {
3044   type = desc_base_type (type);
3045
3046   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3047     {
3048       int k;
3049       struct type *p_array_type;
3050
3051       p_array_type = desc_data_target_type (type);
3052
3053       k = ada_array_arity (type);
3054       if (k == 0)
3055         return NULL;
3056
3057       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3058       if (nindices >= 0 && k > nindices)
3059         k = nindices;
3060       while (k > 0 && p_array_type != NULL)
3061         {
3062           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3063           k -= 1;
3064         }
3065       return p_array_type;
3066     }
3067   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3068     {
3069       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3070         {
3071           type = TYPE_TARGET_TYPE (type);
3072           nindices -= 1;
3073         }
3074       return type;
3075     }
3076
3077   return NULL;
3078 }
3079
3080 /* The type of nth index in arrays of given type (n numbering from 1).
3081    Does not examine memory.  Throws an error if N is invalid or TYPE
3082    is not an array type.  NAME is the name of the Ada attribute being
3083    evaluated ('range, 'first, 'last, or 'length); it is used in building
3084    the error message.  */
3085
3086 static struct type *
3087 ada_index_type (struct type *type, int n, const char *name)
3088 {
3089   struct type *result_type;
3090
3091   type = desc_base_type (type);
3092
3093   if (n < 0 || n > ada_array_arity (type))
3094     error (_("invalid dimension number to '%s"), name);
3095
3096   if (ada_is_simple_array_type (type))
3097     {
3098       int i;
3099
3100       for (i = 1; i < n; i += 1)
3101         type = TYPE_TARGET_TYPE (type);
3102       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3103       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3104          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3105          perhaps stabsread.c would make more sense.  */
3106       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3107         result_type = NULL;
3108     }
3109   else
3110     {
3111       result_type = desc_index_type (desc_bounds_type (type), n);
3112       if (result_type == NULL)
3113         error (_("attempt to take bound of something that is not an array"));
3114     }
3115
3116   return result_type;
3117 }
3118
3119 /* Given that arr is an array type, returns the lower bound of the
3120    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3121    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3122    array-descriptor type.  It works for other arrays with bounds supplied
3123    by run-time quantities other than discriminants.  */
3124
3125 static LONGEST
3126 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3127 {
3128   struct type *type, *index_type_desc, *index_type;
3129   int i;
3130
3131   gdb_assert (which == 0 || which == 1);
3132
3133   if (ada_is_constrained_packed_array_type (arr_type))
3134     arr_type = decode_constrained_packed_array_type (arr_type);
3135
3136   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3137     return (LONGEST) - which;
3138
3139   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3140     type = TYPE_TARGET_TYPE (arr_type);
3141   else
3142     type = arr_type;
3143
3144   if (TYPE_FIXED_INSTANCE (type))
3145     {
3146       /* The array has already been fixed, so we do not need to
3147          check the parallel ___XA type again.  That encoding has
3148          already been applied, so ignore it now.  */
3149       index_type_desc = NULL;
3150     }
3151   else
3152     {
3153       index_type_desc = ada_find_parallel_type (type, "___XA");
3154       ada_fixup_array_indexes_type (index_type_desc);
3155     }
3156
3157   if (index_type_desc != NULL)
3158     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3159                                       NULL);
3160   else
3161     {
3162       struct type *elt_type = check_typedef (type);
3163
3164       for (i = 1; i < n; i++)
3165         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3166
3167       index_type = TYPE_INDEX_TYPE (elt_type);
3168     }
3169
3170   return
3171     (LONGEST) (which == 0
3172                ? ada_discrete_type_low_bound (index_type)
3173                : ada_discrete_type_high_bound (index_type));
3174 }
3175
3176 /* Given that arr is an array value, returns the lower bound of the
3177    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3178    WHICH is 1.  This routine will also work for arrays with bounds
3179    supplied by run-time quantities other than discriminants.  */
3180
3181 static LONGEST
3182 ada_array_bound (struct value *arr, int n, int which)
3183 {
3184   struct type *arr_type;
3185
3186   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3187     arr = value_ind (arr);
3188   arr_type = value_enclosing_type (arr);
3189
3190   if (ada_is_constrained_packed_array_type (arr_type))
3191     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3192   else if (ada_is_simple_array_type (arr_type))
3193     return ada_array_bound_from_type (arr_type, n, which);
3194   else
3195     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3196 }
3197
3198 /* Given that arr is an array value, returns the length of the
3199    nth index.  This routine will also work for arrays with bounds
3200    supplied by run-time quantities other than discriminants.
3201    Does not work for arrays indexed by enumeration types with representation
3202    clauses at the moment.  */
3203
3204 static LONGEST
3205 ada_array_length (struct value *arr, int n)
3206 {
3207   struct type *arr_type, *index_type;
3208   int low, high;
3209
3210   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3211     arr = value_ind (arr);
3212   arr_type = value_enclosing_type (arr);
3213
3214   if (ada_is_constrained_packed_array_type (arr_type))
3215     return ada_array_length (decode_constrained_packed_array (arr), n);
3216
3217   if (ada_is_simple_array_type (arr_type))
3218     {
3219       low = ada_array_bound_from_type (arr_type, n, 0);
3220       high = ada_array_bound_from_type (arr_type, n, 1);
3221     }
3222   else
3223     {
3224       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3225       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3226     }
3227
3228   arr_type = check_typedef (arr_type);
3229   index_type = ada_index_type (arr_type, n, "length");
3230   if (index_type != NULL)
3231     {
3232       struct type *base_type;
3233       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3234         base_type = TYPE_TARGET_TYPE (index_type);
3235       else
3236         base_type = index_type;
3237
3238       low = pos_atr (value_from_longest (base_type, low));
3239       high = pos_atr (value_from_longest (base_type, high));
3240     }
3241   return high - low + 1;
3242 }
3243
3244 /* An empty array whose type is that of ARR_TYPE (an array type),
3245    with bounds LOW to LOW-1.  */
3246
3247 static struct value *
3248 empty_array (struct type *arr_type, int low)
3249 {
3250   struct type *arr_type0 = ada_check_typedef (arr_type);
3251   struct type *index_type
3252     = create_static_range_type
3253         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3254   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3255
3256   return allocate_value (create_array_type (NULL, elt_type, index_type));
3257 }
3258 \f
3259
3260                                 /* Name resolution */
3261
3262 /* The "decoded" name for the user-definable Ada operator corresponding
3263    to OP.  */
3264
3265 static const char *
3266 ada_decoded_op_name (enum exp_opcode op)
3267 {
3268   int i;
3269
3270   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3271     {
3272       if (ada_opname_table[i].op == op)
3273         return ada_opname_table[i].decoded;
3274     }
3275   error (_("Could not find operator name for opcode"));
3276 }
3277
3278
3279 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3280    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3281    undefined namespace) and converts operators that are
3282    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3283    non-null, it provides a preferred result type [at the moment, only
3284    type void has any effect---causing procedures to be preferred over
3285    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3286    return type is preferred.  May change (expand) *EXP.  */
3287
3288 static void
3289 resolve (expression_up *expp, int void_context_p)
3290 {
3291   struct type *context_type = NULL;
3292   int pc = 0;
3293
3294   if (void_context_p)
3295     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3296
3297   resolve_subexp (expp, &pc, 1, context_type);
3298 }
3299
3300 /* Resolve the operator of the subexpression beginning at
3301    position *POS of *EXPP.  "Resolving" consists of replacing
3302    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3303    with their resolutions, replacing built-in operators with
3304    function calls to user-defined operators, where appropriate, and,
3305    when DEPROCEDURE_P is non-zero, converting function-valued variables
3306    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3307    are as in ada_resolve, above.  */
3308
3309 static struct value *
3310 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3311                 struct type *context_type)
3312 {
3313   int pc = *pos;
3314   int i;
3315   struct expression *exp;       /* Convenience: == *expp.  */
3316   enum exp_opcode op = (*expp)->elts[pc].opcode;
3317   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3318   int nargs;                    /* Number of operands.  */
3319   int oplen;
3320
3321   argvec = NULL;
3322   nargs = 0;
3323   exp = expp->get ();
3324
3325   /* Pass one: resolve operands, saving their types and updating *pos,
3326      if needed.  */
3327   switch (op)
3328     {
3329     case OP_FUNCALL:
3330       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3331           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3332         *pos += 7;
3333       else
3334         {
3335           *pos += 3;
3336           resolve_subexp (expp, pos, 0, NULL);
3337         }
3338       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3339       break;
3340
3341     case UNOP_ADDR:
3342       *pos += 1;
3343       resolve_subexp (expp, pos, 0, NULL);
3344       break;
3345
3346     case UNOP_QUAL:
3347       *pos += 3;
3348       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3349       break;
3350
3351     case OP_ATR_MODULUS:
3352     case OP_ATR_SIZE:
3353     case OP_ATR_TAG:
3354     case OP_ATR_FIRST:
3355     case OP_ATR_LAST:
3356     case OP_ATR_LENGTH:
3357     case OP_ATR_POS:
3358     case OP_ATR_VAL:
3359     case OP_ATR_MIN:
3360     case OP_ATR_MAX:
3361     case TERNOP_IN_RANGE:
3362     case BINOP_IN_BOUNDS:
3363     case UNOP_IN_RANGE:
3364     case OP_AGGREGATE:
3365     case OP_OTHERS:
3366     case OP_CHOICES:
3367     case OP_POSITIONAL:
3368     case OP_DISCRETE_RANGE:
3369     case OP_NAME:
3370       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3371       *pos += oplen;
3372       break;
3373
3374     case BINOP_ASSIGN:
3375       {
3376         struct value *arg1;
3377
3378         *pos += 1;
3379         arg1 = resolve_subexp (expp, pos, 0, NULL);
3380         if (arg1 == NULL)
3381           resolve_subexp (expp, pos, 1, NULL);
3382         else
3383           resolve_subexp (expp, pos, 1, value_type (arg1));
3384         break;
3385       }
3386
3387     case UNOP_CAST:
3388       *pos += 3;
3389       nargs = 1;
3390       break;
3391
3392     case BINOP_ADD:
3393     case BINOP_SUB:
3394     case BINOP_MUL:
3395     case BINOP_DIV:
3396     case BINOP_REM:
3397     case BINOP_MOD:
3398     case BINOP_EXP:
3399     case BINOP_CONCAT:
3400     case BINOP_LOGICAL_AND:
3401     case BINOP_LOGICAL_OR:
3402     case BINOP_BITWISE_AND:
3403     case BINOP_BITWISE_IOR:
3404     case BINOP_BITWISE_XOR:
3405
3406     case BINOP_EQUAL:
3407     case BINOP_NOTEQUAL:
3408     case BINOP_LESS:
3409     case BINOP_GTR:
3410     case BINOP_LEQ:
3411     case BINOP_GEQ:
3412
3413     case BINOP_REPEAT:
3414     case BINOP_SUBSCRIPT:
3415     case BINOP_COMMA:
3416       *pos += 1;
3417       nargs = 2;
3418       break;
3419
3420     case UNOP_NEG:
3421     case UNOP_PLUS:
3422     case UNOP_LOGICAL_NOT:
3423     case UNOP_ABS:
3424     case UNOP_IND:
3425       *pos += 1;
3426       nargs = 1;
3427       break;
3428
3429     case OP_LONG:
3430     case OP_FLOAT:
3431     case OP_VAR_VALUE:
3432     case OP_VAR_MSYM_VALUE:
3433       *pos += 4;
3434       break;
3435
3436     case OP_TYPE:
3437     case OP_BOOL:
3438     case OP_LAST:
3439     case OP_INTERNALVAR:
3440       *pos += 3;
3441       break;
3442
3443     case UNOP_MEMVAL:
3444       *pos += 3;
3445       nargs = 1;
3446       break;
3447
3448     case OP_REGISTER:
3449       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3450       break;
3451
3452     case STRUCTOP_STRUCT:
3453       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3454       nargs = 1;
3455       break;
3456
3457     case TERNOP_SLICE:
3458       *pos += 1;
3459       nargs = 3;
3460       break;
3461
3462     case OP_STRING:
3463       break;
3464
3465     default:
3466       error (_("Unexpected operator during name resolution"));
3467     }
3468
3469   argvec = XALLOCAVEC (struct value *, nargs + 1);
3470   for (i = 0; i < nargs; i += 1)
3471     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3472   argvec[i] = NULL;
3473   exp = expp->get ();
3474
3475   /* Pass two: perform any resolution on principal operator.  */
3476   switch (op)
3477     {
3478     default:
3479       break;
3480
3481     case OP_VAR_VALUE:
3482       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3483         {
3484           std::vector<struct block_symbol> candidates;
3485           int n_candidates;
3486
3487           n_candidates =
3488             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3489                                     (exp->elts[pc + 2].symbol),
3490                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3491                                     &candidates);
3492
3493           if (n_candidates > 1)
3494             {
3495               /* Types tend to get re-introduced locally, so if there
3496                  are any local symbols that are not types, first filter
3497                  out all types.  */
3498               int j;
3499               for (j = 0; j < n_candidates; j += 1)
3500                 switch (SYMBOL_CLASS (candidates[j].symbol))
3501                   {
3502                   case LOC_REGISTER:
3503                   case LOC_ARG:
3504                   case LOC_REF_ARG:
3505                   case LOC_REGPARM_ADDR:
3506                   case LOC_LOCAL:
3507                   case LOC_COMPUTED:
3508                     goto FoundNonType;
3509                   default:
3510                     break;
3511                   }
3512             FoundNonType:
3513               if (j < n_candidates)
3514                 {
3515                   j = 0;
3516                   while (j < n_candidates)
3517                     {
3518                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3519                         {
3520                           candidates[j] = candidates[n_candidates - 1];
3521                           n_candidates -= 1;
3522                         }
3523                       else
3524                         j += 1;
3525                     }
3526                 }
3527             }
3528
3529           if (n_candidates == 0)
3530             error (_("No definition found for %s"),
3531                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3532           else if (n_candidates == 1)
3533             i = 0;
3534           else if (deprocedure_p
3535                    && !is_nonfunction (candidates.data (), n_candidates))
3536             {
3537               i = ada_resolve_function
3538                 (candidates.data (), n_candidates, NULL, 0,
3539                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3540                  context_type);
3541               if (i < 0)
3542                 error (_("Could not find a match for %s"),
3543                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3544             }
3545           else
3546             {
3547               printf_filtered (_("Multiple matches for %s\n"),
3548                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3549               user_select_syms (candidates.data (), n_candidates, 1);
3550               i = 0;
3551             }
3552
3553           exp->elts[pc + 1].block = candidates[i].block;
3554           exp->elts[pc + 2].symbol = candidates[i].symbol;
3555           innermost_block.update (candidates[i]);
3556         }
3557
3558       if (deprocedure_p
3559           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3560               == TYPE_CODE_FUNC))
3561         {
3562           replace_operator_with_call (expp, pc, 0, 4,
3563                                       exp->elts[pc + 2].symbol,
3564                                       exp->elts[pc + 1].block);
3565           exp = expp->get ();
3566         }
3567       break;
3568
3569     case OP_FUNCALL:
3570       {
3571         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3572             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3573           {
3574             std::vector<struct block_symbol> candidates;
3575             int n_candidates;
3576
3577             n_candidates =
3578               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3579                                       (exp->elts[pc + 5].symbol),
3580                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3581                                       &candidates);
3582
3583             if (n_candidates == 1)
3584               i = 0;
3585             else
3586               {
3587                 i = ada_resolve_function
3588                   (candidates.data (), n_candidates,
3589                    argvec, nargs,
3590                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3591                    context_type);
3592                 if (i < 0)
3593                   error (_("Could not find a match for %s"),
3594                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3595               }
3596
3597             exp->elts[pc + 4].block = candidates[i].block;
3598             exp->elts[pc + 5].symbol = candidates[i].symbol;
3599             innermost_block.update (candidates[i]);
3600           }
3601       }
3602       break;
3603     case BINOP_ADD:
3604     case BINOP_SUB:
3605     case BINOP_MUL:
3606     case BINOP_DIV:
3607     case BINOP_REM:
3608     case BINOP_MOD:
3609     case BINOP_CONCAT:
3610     case BINOP_BITWISE_AND:
3611     case BINOP_BITWISE_IOR:
3612     case BINOP_BITWISE_XOR:
3613     case BINOP_EQUAL:
3614     case BINOP_NOTEQUAL:
3615     case BINOP_LESS:
3616     case BINOP_GTR:
3617     case BINOP_LEQ:
3618     case BINOP_GEQ:
3619     case BINOP_EXP:
3620     case UNOP_NEG:
3621     case UNOP_PLUS:
3622     case UNOP_LOGICAL_NOT:
3623     case UNOP_ABS:
3624       if (possible_user_operator_p (op, argvec))
3625         {
3626           std::vector<struct block_symbol> candidates;
3627           int n_candidates;
3628
3629           n_candidates =
3630             ada_lookup_symbol_list (ada_decoded_op_name (op),
3631                                     (struct block *) NULL, VAR_DOMAIN,
3632                                     &candidates);
3633
3634           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3635                                     nargs, ada_decoded_op_name (op), NULL);
3636           if (i < 0)
3637             break;
3638
3639           replace_operator_with_call (expp, pc, nargs, 1,
3640                                       candidates[i].symbol,
3641                                       candidates[i].block);
3642           exp = expp->get ();
3643         }
3644       break;
3645
3646     case OP_TYPE:
3647     case OP_REGISTER:
3648       return NULL;
3649     }
3650
3651   *pos = pc;
3652   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3653     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3654                                     exp->elts[pc + 1].objfile,
3655                                     exp->elts[pc + 2].msymbol);
3656   else
3657     return evaluate_subexp_type (exp, pos);
3658 }
3659
3660 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3661    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3662    a non-pointer.  */
3663 /* The term "match" here is rather loose.  The match is heuristic and
3664    liberal.  */
3665
3666 static int
3667 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3668 {
3669   ftype = ada_check_typedef (ftype);
3670   atype = ada_check_typedef (atype);
3671
3672   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3673     ftype = TYPE_TARGET_TYPE (ftype);
3674   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3675     atype = TYPE_TARGET_TYPE (atype);
3676
3677   switch (TYPE_CODE (ftype))
3678     {
3679     default:
3680       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3681     case TYPE_CODE_PTR:
3682       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3683         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3684                                TYPE_TARGET_TYPE (atype), 0);
3685       else
3686         return (may_deref
3687                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3688     case TYPE_CODE_INT:
3689     case TYPE_CODE_ENUM:
3690     case TYPE_CODE_RANGE:
3691       switch (TYPE_CODE (atype))
3692         {
3693         case TYPE_CODE_INT:
3694         case TYPE_CODE_ENUM:
3695         case TYPE_CODE_RANGE:
3696           return 1;
3697         default:
3698           return 0;
3699         }
3700
3701     case TYPE_CODE_ARRAY:
3702       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3703               || ada_is_array_descriptor_type (atype));
3704
3705     case TYPE_CODE_STRUCT:
3706       if (ada_is_array_descriptor_type (ftype))
3707         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3708                 || ada_is_array_descriptor_type (atype));
3709       else
3710         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3711                 && !ada_is_array_descriptor_type (atype));
3712
3713     case TYPE_CODE_UNION:
3714     case TYPE_CODE_FLT:
3715       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3716     }
3717 }
3718
3719 /* Return non-zero if the formals of FUNC "sufficiently match" the
3720    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3721    may also be an enumeral, in which case it is treated as a 0-
3722    argument function.  */
3723
3724 static int
3725 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3726 {
3727   int i;
3728   struct type *func_type = SYMBOL_TYPE (func);
3729
3730   if (SYMBOL_CLASS (func) == LOC_CONST
3731       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3732     return (n_actuals == 0);
3733   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3734     return 0;
3735
3736   if (TYPE_NFIELDS (func_type) != n_actuals)
3737     return 0;
3738
3739   for (i = 0; i < n_actuals; i += 1)
3740     {
3741       if (actuals[i] == NULL)
3742         return 0;
3743       else
3744         {
3745           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3746                                                                    i));
3747           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3748
3749           if (!ada_type_match (ftype, atype, 1))
3750             return 0;
3751         }
3752     }
3753   return 1;
3754 }
3755
3756 /* False iff function type FUNC_TYPE definitely does not produce a value
3757    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3758    FUNC_TYPE is not a valid function type with a non-null return type
3759    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3760
3761 static int
3762 return_match (struct type *func_type, struct type *context_type)
3763 {
3764   struct type *return_type;
3765
3766   if (func_type == NULL)
3767     return 1;
3768
3769   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3770     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3771   else
3772     return_type = get_base_type (func_type);
3773   if (return_type == NULL)
3774     return 1;
3775
3776   context_type = get_base_type (context_type);
3777
3778   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3779     return context_type == NULL || return_type == context_type;
3780   else if (context_type == NULL)
3781     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3782   else
3783     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3784 }
3785
3786
3787 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3788    function (if any) that matches the types of the NARGS arguments in
3789    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3790    that returns that type, then eliminate matches that don't.  If
3791    CONTEXT_TYPE is void and there is at least one match that does not
3792    return void, eliminate all matches that do.
3793
3794    Asks the user if there is more than one match remaining.  Returns -1
3795    if there is no such symbol or none is selected.  NAME is used
3796    solely for messages.  May re-arrange and modify SYMS in
3797    the process; the index returned is for the modified vector.  */
3798
3799 static int
3800 ada_resolve_function (struct block_symbol syms[],
3801                       int nsyms, struct value **args, int nargs,
3802                       const char *name, struct type *context_type)
3803 {
3804   int fallback;
3805   int k;
3806   int m;                        /* Number of hits */
3807
3808   m = 0;
3809   /* In the first pass of the loop, we only accept functions matching
3810      context_type.  If none are found, we add a second pass of the loop
3811      where every function is accepted.  */
3812   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3813     {
3814       for (k = 0; k < nsyms; k += 1)
3815         {
3816           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3817
3818           if (ada_args_match (syms[k].symbol, args, nargs)
3819               && (fallback || return_match (type, context_type)))
3820             {
3821               syms[m] = syms[k];
3822               m += 1;
3823             }
3824         }
3825     }
3826
3827   /* If we got multiple matches, ask the user which one to use.  Don't do this
3828      interactive thing during completion, though, as the purpose of the
3829      completion is providing a list of all possible matches.  Prompting the
3830      user to filter it down would be completely unexpected in this case.  */
3831   if (m == 0)
3832     return -1;
3833   else if (m > 1 && !parse_completion)
3834     {
3835       printf_filtered (_("Multiple matches for %s\n"), name);
3836       user_select_syms (syms, m, 1);
3837       return 0;
3838     }
3839   return 0;
3840 }
3841
3842 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3843    in a listing of choices during disambiguation (see sort_choices, below).
3844    The idea is that overloadings of a subprogram name from the
3845    same package should sort in their source order.  We settle for ordering
3846    such symbols by their trailing number (__N  or $N).  */
3847
3848 static int
3849 encoded_ordered_before (const char *N0, const char *N1)
3850 {
3851   if (N1 == NULL)
3852     return 0;
3853   else if (N0 == NULL)
3854     return 1;
3855   else
3856     {
3857       int k0, k1;
3858
3859       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3860         ;
3861       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3862         ;
3863       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3864           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3865         {
3866           int n0, n1;
3867
3868           n0 = k0;
3869           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3870             n0 -= 1;
3871           n1 = k1;
3872           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3873             n1 -= 1;
3874           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3875             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3876         }
3877       return (strcmp (N0, N1) < 0);
3878     }
3879 }
3880
3881 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3882    encoded names.  */
3883
3884 static void
3885 sort_choices (struct block_symbol syms[], int nsyms)
3886 {
3887   int i;
3888
3889   for (i = 1; i < nsyms; i += 1)
3890     {
3891       struct block_symbol sym = syms[i];
3892       int j;
3893
3894       for (j = i - 1; j >= 0; j -= 1)
3895         {
3896           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3897                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3898             break;
3899           syms[j + 1] = syms[j];
3900         }
3901       syms[j + 1] = sym;
3902     }
3903 }
3904
3905 /* Whether GDB should display formals and return types for functions in the
3906    overloads selection menu.  */
3907 static int print_signatures = 1;
3908
3909 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3910    all but functions, the signature is just the name of the symbol.  For
3911    functions, this is the name of the function, the list of types for formals
3912    and the return type (if any).  */
3913
3914 static void
3915 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3916                             const struct type_print_options *flags)
3917 {
3918   struct type *type = SYMBOL_TYPE (sym);
3919
3920   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3921   if (!print_signatures
3922       || type == NULL
3923       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3924     return;
3925
3926   if (TYPE_NFIELDS (type) > 0)
3927     {
3928       int i;
3929
3930       fprintf_filtered (stream, " (");
3931       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3932         {
3933           if (i > 0)
3934             fprintf_filtered (stream, "; ");
3935           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3936                           flags);
3937         }
3938       fprintf_filtered (stream, ")");
3939     }
3940   if (TYPE_TARGET_TYPE (type) != NULL
3941       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3942     {
3943       fprintf_filtered (stream, " return ");
3944       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3945     }
3946 }
3947
3948 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3949    by asking the user (if necessary), returning the number selected, 
3950    and setting the first elements of SYMS items.  Error if no symbols
3951    selected.  */
3952
3953 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3954    to be re-integrated one of these days.  */
3955
3956 int
3957 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3958 {
3959   int i;
3960   int *chosen = XALLOCAVEC (int , nsyms);
3961   int n_chosen;
3962   int first_choice = (max_results == 1) ? 1 : 2;
3963   const char *select_mode = multiple_symbols_select_mode ();
3964
3965   if (max_results < 1)
3966     error (_("Request to select 0 symbols!"));
3967   if (nsyms <= 1)
3968     return nsyms;
3969
3970   if (select_mode == multiple_symbols_cancel)
3971     error (_("\
3972 canceled because the command is ambiguous\n\
3973 See set/show multiple-symbol."));
3974   
3975   /* If select_mode is "all", then return all possible symbols.
3976      Only do that if more than one symbol can be selected, of course.
3977      Otherwise, display the menu as usual.  */
3978   if (select_mode == multiple_symbols_all && max_results > 1)
3979     return nsyms;
3980
3981   printf_unfiltered (_("[0] cancel\n"));
3982   if (max_results > 1)
3983     printf_unfiltered (_("[1] all\n"));
3984
3985   sort_choices (syms, nsyms);
3986
3987   for (i = 0; i < nsyms; i += 1)
3988     {
3989       if (syms[i].symbol == NULL)
3990         continue;
3991
3992       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3993         {
3994           struct symtab_and_line sal =
3995             find_function_start_sal (syms[i].symbol, 1);
3996
3997           printf_unfiltered ("[%d] ", i + first_choice);
3998           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3999                                       &type_print_raw_options);
4000           if (sal.symtab == NULL)
4001             printf_unfiltered (_(" at <no source file available>:%d\n"),
4002                                sal.line);
4003           else
4004             printf_unfiltered (_(" at %s:%d\n"),
4005                                symtab_to_filename_for_display (sal.symtab),
4006                                sal.line);
4007           continue;
4008         }
4009       else
4010         {
4011           int is_enumeral =
4012             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
4013              && SYMBOL_TYPE (syms[i].symbol) != NULL
4014              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
4015           struct symtab *symtab = NULL;
4016
4017           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
4018             symtab = symbol_symtab (syms[i].symbol);
4019
4020           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
4021             {
4022               printf_unfiltered ("[%d] ", i + first_choice);
4023               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4024                                           &type_print_raw_options);
4025               printf_unfiltered (_(" at %s:%d\n"),
4026                                  symtab_to_filename_for_display (symtab),
4027                                  SYMBOL_LINE (syms[i].symbol));
4028             }
4029           else if (is_enumeral
4030                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
4031             {
4032               printf_unfiltered (("[%d] "), i + first_choice);
4033               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
4034                               gdb_stdout, -1, 0, &type_print_raw_options);
4035               printf_unfiltered (_("'(%s) (enumeral)\n"),
4036                                  SYMBOL_PRINT_NAME (syms[i].symbol));
4037             }
4038           else
4039             {
4040               printf_unfiltered ("[%d] ", i + first_choice);
4041               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4042                                           &type_print_raw_options);
4043
4044               if (symtab != NULL)
4045                 printf_unfiltered (is_enumeral
4046                                    ? _(" in %s (enumeral)\n")
4047                                    : _(" at %s:?\n"),
4048                                    symtab_to_filename_for_display (symtab));
4049               else
4050                 printf_unfiltered (is_enumeral
4051                                    ? _(" (enumeral)\n")
4052                                    : _(" at ?\n"));
4053             }
4054         }
4055     }
4056
4057   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4058                              "overload-choice");
4059
4060   for (i = 0; i < n_chosen; i += 1)
4061     syms[i] = syms[chosen[i]];
4062
4063   return n_chosen;
4064 }
4065
4066 /* Read and validate a set of numeric choices from the user in the
4067    range 0 .. N_CHOICES-1.  Place the results in increasing
4068    order in CHOICES[0 .. N-1], and return N.
4069
4070    The user types choices as a sequence of numbers on one line
4071    separated by blanks, encoding them as follows:
4072
4073      + A choice of 0 means to cancel the selection, throwing an error.
4074      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4075      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4076
4077    The user is not allowed to choose more than MAX_RESULTS values.
4078
4079    ANNOTATION_SUFFIX, if present, is used to annotate the input
4080    prompts (for use with the -f switch).  */
4081
4082 int
4083 get_selections (int *choices, int n_choices, int max_results,
4084                 int is_all_choice, const char *annotation_suffix)
4085 {
4086   char *args;
4087   const char *prompt;
4088   int n_chosen;
4089   int first_choice = is_all_choice ? 2 : 1;
4090
4091   prompt = getenv ("PS2");
4092   if (prompt == NULL)
4093     prompt = "> ";
4094
4095   args = command_line_input (prompt, annotation_suffix);
4096
4097   if (args == NULL)
4098     error_no_arg (_("one or more choice numbers"));
4099
4100   n_chosen = 0;
4101
4102   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4103      order, as given in args.  Choices are validated.  */
4104   while (1)
4105     {
4106       char *args2;
4107       int choice, j;
4108
4109       args = skip_spaces (args);
4110       if (*args == '\0' && n_chosen == 0)
4111         error_no_arg (_("one or more choice numbers"));
4112       else if (*args == '\0')
4113         break;
4114
4115       choice = strtol (args, &args2, 10);
4116       if (args == args2 || choice < 0
4117           || choice > n_choices + first_choice - 1)
4118         error (_("Argument must be choice number"));
4119       args = args2;
4120
4121       if (choice == 0)
4122         error (_("cancelled"));
4123
4124       if (choice < first_choice)
4125         {
4126           n_chosen = n_choices;
4127           for (j = 0; j < n_choices; j += 1)
4128             choices[j] = j;
4129           break;
4130         }
4131       choice -= first_choice;
4132
4133       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4134         {
4135         }
4136
4137       if (j < 0 || choice != choices[j])
4138         {
4139           int k;
4140
4141           for (k = n_chosen - 1; k > j; k -= 1)
4142             choices[k + 1] = choices[k];
4143           choices[j + 1] = choice;
4144           n_chosen += 1;
4145         }
4146     }
4147
4148   if (n_chosen > max_results)
4149     error (_("Select no more than %d of the above"), max_results);
4150
4151   return n_chosen;
4152 }
4153
4154 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4155    on the function identified by SYM and BLOCK, and taking NARGS
4156    arguments.  Update *EXPP as needed to hold more space.  */
4157
4158 static void
4159 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4160                             int oplen, struct symbol *sym,
4161                             const struct block *block)
4162 {
4163   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4164      symbol, -oplen for operator being replaced).  */
4165   struct expression *newexp = (struct expression *)
4166     xzalloc (sizeof (struct expression)
4167              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4168   struct expression *exp = expp->get ();
4169
4170   newexp->nelts = exp->nelts + 7 - oplen;
4171   newexp->language_defn = exp->language_defn;
4172   newexp->gdbarch = exp->gdbarch;
4173   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4174   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4175           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4176
4177   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4178   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4179
4180   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4181   newexp->elts[pc + 4].block = block;
4182   newexp->elts[pc + 5].symbol = sym;
4183
4184   expp->reset (newexp);
4185 }
4186
4187 /* Type-class predicates */
4188
4189 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4190    or FLOAT).  */
4191
4192 static int
4193 numeric_type_p (struct type *type)
4194 {
4195   if (type == NULL)
4196     return 0;
4197   else
4198     {
4199       switch (TYPE_CODE (type))
4200         {
4201         case TYPE_CODE_INT:
4202         case TYPE_CODE_FLT:
4203           return 1;
4204         case TYPE_CODE_RANGE:
4205           return (type == TYPE_TARGET_TYPE (type)
4206                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4207         default:
4208           return 0;
4209         }
4210     }
4211 }
4212
4213 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4214
4215 static int
4216 integer_type_p (struct type *type)
4217 {
4218   if (type == NULL)
4219     return 0;
4220   else
4221     {
4222       switch (TYPE_CODE (type))
4223         {
4224         case TYPE_CODE_INT:
4225           return 1;
4226         case TYPE_CODE_RANGE:
4227           return (type == TYPE_TARGET_TYPE (type)
4228                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4229         default:
4230           return 0;
4231         }
4232     }
4233 }
4234
4235 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4236
4237 static int
4238 scalar_type_p (struct type *type)
4239 {
4240   if (type == NULL)
4241     return 0;
4242   else
4243     {
4244       switch (TYPE_CODE (type))
4245         {
4246         case TYPE_CODE_INT:
4247         case TYPE_CODE_RANGE:
4248         case TYPE_CODE_ENUM:
4249         case TYPE_CODE_FLT:
4250           return 1;
4251         default:
4252           return 0;
4253         }
4254     }
4255 }
4256
4257 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4258
4259 static int
4260 discrete_type_p (struct type *type)
4261 {
4262   if (type == NULL)
4263     return 0;
4264   else
4265     {
4266       switch (TYPE_CODE (type))
4267         {
4268         case TYPE_CODE_INT:
4269         case TYPE_CODE_RANGE:
4270         case TYPE_CODE_ENUM:
4271         case TYPE_CODE_BOOL:
4272           return 1;
4273         default:
4274           return 0;
4275         }
4276     }
4277 }
4278
4279 /* Returns non-zero if OP with operands in the vector ARGS could be
4280    a user-defined function.  Errs on the side of pre-defined operators
4281    (i.e., result 0).  */
4282
4283 static int
4284 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4285 {
4286   struct type *type0 =
4287     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4288   struct type *type1 =
4289     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4290
4291   if (type0 == NULL)
4292     return 0;
4293
4294   switch (op)
4295     {
4296     default:
4297       return 0;
4298
4299     case BINOP_ADD:
4300     case BINOP_SUB:
4301     case BINOP_MUL:
4302     case BINOP_DIV:
4303       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4304
4305     case BINOP_REM:
4306     case BINOP_MOD:
4307     case BINOP_BITWISE_AND:
4308     case BINOP_BITWISE_IOR:
4309     case BINOP_BITWISE_XOR:
4310       return (!(integer_type_p (type0) && integer_type_p (type1)));
4311
4312     case BINOP_EQUAL:
4313     case BINOP_NOTEQUAL:
4314     case BINOP_LESS:
4315     case BINOP_GTR:
4316     case BINOP_LEQ:
4317     case BINOP_GEQ:
4318       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4319
4320     case BINOP_CONCAT:
4321       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4322
4323     case BINOP_EXP:
4324       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4325
4326     case UNOP_NEG:
4327     case UNOP_PLUS:
4328     case UNOP_LOGICAL_NOT:
4329     case UNOP_ABS:
4330       return (!numeric_type_p (type0));
4331
4332     }
4333 }
4334 \f
4335                                 /* Renaming */
4336
4337 /* NOTES: 
4338
4339    1. In the following, we assume that a renaming type's name may
4340       have an ___XD suffix.  It would be nice if this went away at some
4341       point.
4342    2. We handle both the (old) purely type-based representation of 
4343       renamings and the (new) variable-based encoding.  At some point,
4344       it is devoutly to be hoped that the former goes away 
4345       (FIXME: hilfinger-2007-07-09).
4346    3. Subprogram renamings are not implemented, although the XRS
4347       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4348
4349 /* If SYM encodes a renaming, 
4350
4351        <renaming> renames <renamed entity>,
4352
4353    sets *LEN to the length of the renamed entity's name,
4354    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4355    the string describing the subcomponent selected from the renamed
4356    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4357    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4358    are undefined).  Otherwise, returns a value indicating the category
4359    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4360    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4361    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4362    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4363    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4364    may be NULL, in which case they are not assigned.
4365
4366    [Currently, however, GCC does not generate subprogram renamings.]  */
4367
4368 enum ada_renaming_category
4369 ada_parse_renaming (struct symbol *sym,
4370                     const char **renamed_entity, int *len, 
4371                     const char **renaming_expr)
4372 {
4373   enum ada_renaming_category kind;
4374   const char *info;
4375   const char *suffix;
4376
4377   if (sym == NULL)
4378     return ADA_NOT_RENAMING;
4379   switch (SYMBOL_CLASS (sym)) 
4380     {
4381     default:
4382       return ADA_NOT_RENAMING;
4383     case LOC_TYPEDEF:
4384       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4385                                        renamed_entity, len, renaming_expr);
4386     case LOC_LOCAL:
4387     case LOC_STATIC:
4388     case LOC_COMPUTED:
4389     case LOC_OPTIMIZED_OUT:
4390       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4391       if (info == NULL)
4392         return ADA_NOT_RENAMING;
4393       switch (info[5])
4394         {
4395         case '_':
4396           kind = ADA_OBJECT_RENAMING;
4397           info += 6;
4398           break;
4399         case 'E':
4400           kind = ADA_EXCEPTION_RENAMING;
4401           info += 7;
4402           break;
4403         case 'P':
4404           kind = ADA_PACKAGE_RENAMING;
4405           info += 7;
4406           break;
4407         case 'S':
4408           kind = ADA_SUBPROGRAM_RENAMING;
4409           info += 7;
4410           break;
4411         default:
4412           return ADA_NOT_RENAMING;
4413         }
4414     }
4415
4416   if (renamed_entity != NULL)
4417     *renamed_entity = info;
4418   suffix = strstr (info, "___XE");
4419   if (suffix == NULL || suffix == info)
4420     return ADA_NOT_RENAMING;
4421   if (len != NULL)
4422     *len = strlen (info) - strlen (suffix);
4423   suffix += 5;
4424   if (renaming_expr != NULL)
4425     *renaming_expr = suffix;
4426   return kind;
4427 }
4428
4429 /* Assuming TYPE encodes a renaming according to the old encoding in
4430    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4431    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4432    ADA_NOT_RENAMING otherwise.  */
4433 static enum ada_renaming_category
4434 parse_old_style_renaming (struct type *type,
4435                           const char **renamed_entity, int *len, 
4436                           const char **renaming_expr)
4437 {
4438   enum ada_renaming_category kind;
4439   const char *name;
4440   const char *info;
4441   const char *suffix;
4442
4443   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4444       || TYPE_NFIELDS (type) != 1)
4445     return ADA_NOT_RENAMING;
4446
4447   name = TYPE_NAME (type);
4448   if (name == NULL)
4449     return ADA_NOT_RENAMING;
4450   
4451   name = strstr (name, "___XR");
4452   if (name == NULL)
4453     return ADA_NOT_RENAMING;
4454   switch (name[5])
4455     {
4456     case '\0':
4457     case '_':
4458       kind = ADA_OBJECT_RENAMING;
4459       break;
4460     case 'E':
4461       kind = ADA_EXCEPTION_RENAMING;
4462       break;
4463     case 'P':
4464       kind = ADA_PACKAGE_RENAMING;
4465       break;
4466     case 'S':
4467       kind = ADA_SUBPROGRAM_RENAMING;
4468       break;
4469     default:
4470       return ADA_NOT_RENAMING;
4471     }
4472
4473   info = TYPE_FIELD_NAME (type, 0);
4474   if (info == NULL)
4475     return ADA_NOT_RENAMING;
4476   if (renamed_entity != NULL)
4477     *renamed_entity = info;
4478   suffix = strstr (info, "___XE");
4479   if (renaming_expr != NULL)
4480     *renaming_expr = suffix + 5;
4481   if (suffix == NULL || suffix == info)
4482     return ADA_NOT_RENAMING;
4483   if (len != NULL)
4484     *len = suffix - info;
4485   return kind;
4486 }
4487
4488 /* Compute the value of the given RENAMING_SYM, which is expected to
4489    be a symbol encoding a renaming expression.  BLOCK is the block
4490    used to evaluate the renaming.  */
4491
4492 static struct value *
4493 ada_read_renaming_var_value (struct symbol *renaming_sym,
4494                              const struct block *block)
4495 {
4496   const char *sym_name;
4497
4498   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4499   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4500   return evaluate_expression (expr.get ());
4501 }
4502 \f
4503
4504                                 /* Evaluation: Function Calls */
4505
4506 /* Return an lvalue containing the value VAL.  This is the identity on
4507    lvalues, and otherwise has the side-effect of allocating memory
4508    in the inferior where a copy of the value contents is copied.  */
4509
4510 static struct value *
4511 ensure_lval (struct value *val)
4512 {
4513   if (VALUE_LVAL (val) == not_lval
4514       || VALUE_LVAL (val) == lval_internalvar)
4515     {
4516       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4517       const CORE_ADDR addr =
4518         value_as_long (value_allocate_space_in_inferior (len));
4519
4520       VALUE_LVAL (val) = lval_memory;
4521       set_value_address (val, addr);
4522       write_memory (addr, value_contents (val), len);
4523     }
4524
4525   return val;
4526 }
4527
4528 /* Return the value ACTUAL, converted to be an appropriate value for a
4529    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4530    allocating any necessary descriptors (fat pointers), or copies of
4531    values not residing in memory, updating it as needed.  */
4532
4533 struct value *
4534 ada_convert_actual (struct value *actual, struct type *formal_type0)
4535 {
4536   struct type *actual_type = ada_check_typedef (value_type (actual));
4537   struct type *formal_type = ada_check_typedef (formal_type0);
4538   struct type *formal_target =
4539     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4540     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4541   struct type *actual_target =
4542     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4543     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4544
4545   if (ada_is_array_descriptor_type (formal_target)
4546       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4547     return make_array_descriptor (formal_type, actual);
4548   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4549            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4550     {
4551       struct value *result;
4552
4553       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4554           && ada_is_array_descriptor_type (actual_target))
4555         result = desc_data (actual);
4556       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4557         {
4558           if (VALUE_LVAL (actual) != lval_memory)
4559             {
4560               struct value *val;
4561
4562               actual_type = ada_check_typedef (value_type (actual));
4563               val = allocate_value (actual_type);
4564               memcpy ((char *) value_contents_raw (val),
4565                       (char *) value_contents (actual),
4566                       TYPE_LENGTH (actual_type));
4567               actual = ensure_lval (val);
4568             }
4569           result = value_addr (actual);
4570         }
4571       else
4572         return actual;
4573       return value_cast_pointers (formal_type, result, 0);
4574     }
4575   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4576     return ada_value_ind (actual);
4577   else if (ada_is_aligner_type (formal_type))
4578     {
4579       /* We need to turn this parameter into an aligner type
4580          as well.  */
4581       struct value *aligner = allocate_value (formal_type);
4582       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4583
4584       value_assign_to_component (aligner, component, actual);
4585       return aligner;
4586     }
4587
4588   return actual;
4589 }
4590
4591 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4592    type TYPE.  This is usually an inefficient no-op except on some targets
4593    (such as AVR) where the representation of a pointer and an address
4594    differs.  */
4595
4596 static CORE_ADDR
4597 value_pointer (struct value *value, struct type *type)
4598 {
4599   struct gdbarch *gdbarch = get_type_arch (type);
4600   unsigned len = TYPE_LENGTH (type);
4601   gdb_byte *buf = (gdb_byte *) alloca (len);
4602   CORE_ADDR addr;
4603
4604   addr = value_address (value);
4605   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4606   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4607   return addr;
4608 }
4609
4610
4611 /* Push a descriptor of type TYPE for array value ARR on the stack at
4612    *SP, updating *SP to reflect the new descriptor.  Return either
4613    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4614    to-descriptor type rather than a descriptor type), a struct value *
4615    representing a pointer to this descriptor.  */
4616
4617 static struct value *
4618 make_array_descriptor (struct type *type, struct value *arr)
4619 {
4620   struct type *bounds_type = desc_bounds_type (type);
4621   struct type *desc_type = desc_base_type (type);
4622   struct value *descriptor = allocate_value (desc_type);
4623   struct value *bounds = allocate_value (bounds_type);
4624   int i;
4625
4626   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4627        i > 0; i -= 1)
4628     {
4629       modify_field (value_type (bounds), value_contents_writeable (bounds),
4630                     ada_array_bound (arr, i, 0),
4631                     desc_bound_bitpos (bounds_type, i, 0),
4632                     desc_bound_bitsize (bounds_type, i, 0));
4633       modify_field (value_type (bounds), value_contents_writeable (bounds),
4634                     ada_array_bound (arr, i, 1),
4635                     desc_bound_bitpos (bounds_type, i, 1),
4636                     desc_bound_bitsize (bounds_type, i, 1));
4637     }
4638
4639   bounds = ensure_lval (bounds);
4640
4641   modify_field (value_type (descriptor),
4642                 value_contents_writeable (descriptor),
4643                 value_pointer (ensure_lval (arr),
4644                                TYPE_FIELD_TYPE (desc_type, 0)),
4645                 fat_pntr_data_bitpos (desc_type),
4646                 fat_pntr_data_bitsize (desc_type));
4647
4648   modify_field (value_type (descriptor),
4649                 value_contents_writeable (descriptor),
4650                 value_pointer (bounds,
4651                                TYPE_FIELD_TYPE (desc_type, 1)),
4652                 fat_pntr_bounds_bitpos (desc_type),
4653                 fat_pntr_bounds_bitsize (desc_type));
4654
4655   descriptor = ensure_lval (descriptor);
4656
4657   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4658     return value_addr (descriptor);
4659   else
4660     return descriptor;
4661 }
4662 \f
4663                                 /* Symbol Cache Module */
4664
4665 /* Performance measurements made as of 2010-01-15 indicate that
4666    this cache does bring some noticeable improvements.  Depending
4667    on the type of entity being printed, the cache can make it as much
4668    as an order of magnitude faster than without it.
4669
4670    The descriptive type DWARF extension has significantly reduced
4671    the need for this cache, at least when DWARF is being used.  However,
4672    even in this case, some expensive name-based symbol searches are still
4673    sometimes necessary - to find an XVZ variable, mostly.  */
4674
4675 /* Initialize the contents of SYM_CACHE.  */
4676
4677 static void
4678 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4679 {
4680   obstack_init (&sym_cache->cache_space);
4681   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4682 }
4683
4684 /* Free the memory used by SYM_CACHE.  */
4685
4686 static void
4687 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4688 {
4689   obstack_free (&sym_cache->cache_space, NULL);
4690   xfree (sym_cache);
4691 }
4692
4693 /* Return the symbol cache associated to the given program space PSPACE.
4694    If not allocated for this PSPACE yet, allocate and initialize one.  */
4695
4696 static struct ada_symbol_cache *
4697 ada_get_symbol_cache (struct program_space *pspace)
4698 {
4699   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4700
4701   if (pspace_data->sym_cache == NULL)
4702     {
4703       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4704       ada_init_symbol_cache (pspace_data->sym_cache);
4705     }
4706
4707   return pspace_data->sym_cache;
4708 }
4709
4710 /* Clear all entries from the symbol cache.  */
4711
4712 static void
4713 ada_clear_symbol_cache (void)
4714 {
4715   struct ada_symbol_cache *sym_cache
4716     = ada_get_symbol_cache (current_program_space);
4717
4718   obstack_free (&sym_cache->cache_space, NULL);
4719   ada_init_symbol_cache (sym_cache);
4720 }
4721
4722 /* Search our cache for an entry matching NAME and DOMAIN.
4723    Return it if found, or NULL otherwise.  */
4724
4725 static struct cache_entry **
4726 find_entry (const char *name, domain_enum domain)
4727 {
4728   struct ada_symbol_cache *sym_cache
4729     = ada_get_symbol_cache (current_program_space);
4730   int h = msymbol_hash (name) % HASH_SIZE;
4731   struct cache_entry **e;
4732
4733   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4734     {
4735       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4736         return e;
4737     }
4738   return NULL;
4739 }
4740
4741 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4742    Return 1 if found, 0 otherwise.
4743
4744    If an entry was found and SYM is not NULL, set *SYM to the entry's
4745    SYM.  Same principle for BLOCK if not NULL.  */
4746
4747 static int
4748 lookup_cached_symbol (const char *name, domain_enum domain,
4749                       struct symbol **sym, const struct block **block)
4750 {
4751   struct cache_entry **e = find_entry (name, domain);
4752
4753   if (e == NULL)
4754     return 0;
4755   if (sym != NULL)
4756     *sym = (*e)->sym;
4757   if (block != NULL)
4758     *block = (*e)->block;
4759   return 1;
4760 }
4761
4762 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4763    in domain DOMAIN, save this result in our symbol cache.  */
4764
4765 static void
4766 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4767               const struct block *block)
4768 {
4769   struct ada_symbol_cache *sym_cache
4770     = ada_get_symbol_cache (current_program_space);
4771   int h;
4772   char *copy;
4773   struct cache_entry *e;
4774
4775   /* Symbols for builtin types don't have a block.
4776      For now don't cache such symbols.  */
4777   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4778     return;
4779
4780   /* If the symbol is a local symbol, then do not cache it, as a search
4781      for that symbol depends on the context.  To determine whether
4782      the symbol is local or not, we check the block where we found it
4783      against the global and static blocks of its associated symtab.  */
4784   if (sym
4785       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4786                             GLOBAL_BLOCK) != block
4787       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4788                             STATIC_BLOCK) != block)
4789     return;
4790
4791   h = msymbol_hash (name) % HASH_SIZE;
4792   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4793   e->next = sym_cache->root[h];
4794   sym_cache->root[h] = e;
4795   e->name = copy
4796     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4797   strcpy (copy, name);
4798   e->sym = sym;
4799   e->domain = domain;
4800   e->block = block;
4801 }
4802 \f
4803                                 /* Symbol Lookup */
4804
4805 /* Return the symbol name match type that should be used used when
4806    searching for all symbols matching LOOKUP_NAME.
4807
4808    LOOKUP_NAME is expected to be a symbol name after transformation
4809    for Ada lookups.  */
4810
4811 static symbol_name_match_type
4812 name_match_type_from_name (const char *lookup_name)
4813 {
4814   return (strstr (lookup_name, "__") == NULL
4815           ? symbol_name_match_type::WILD
4816           : symbol_name_match_type::FULL);
4817 }
4818
4819 /* Return the result of a standard (literal, C-like) lookup of NAME in
4820    given DOMAIN, visible from lexical block BLOCK.  */
4821
4822 static struct symbol *
4823 standard_lookup (const char *name, const struct block *block,
4824                  domain_enum domain)
4825 {
4826   /* Initialize it just to avoid a GCC false warning.  */
4827   struct block_symbol sym = {NULL, NULL};
4828
4829   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4830     return sym.symbol;
4831   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4832   cache_symbol (name, domain, sym.symbol, sym.block);
4833   return sym.symbol;
4834 }
4835
4836
4837 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4838    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4839    since they contend in overloading in the same way.  */
4840 static int
4841 is_nonfunction (struct block_symbol syms[], int n)
4842 {
4843   int i;
4844
4845   for (i = 0; i < n; i += 1)
4846     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4847         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4848             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4849       return 1;
4850
4851   return 0;
4852 }
4853
4854 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4855    struct types.  Otherwise, they may not.  */
4856
4857 static int
4858 equiv_types (struct type *type0, struct type *type1)
4859 {
4860   if (type0 == type1)
4861     return 1;
4862   if (type0 == NULL || type1 == NULL
4863       || TYPE_CODE (type0) != TYPE_CODE (type1))
4864     return 0;
4865   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4866        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4867       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4868       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4869     return 1;
4870
4871   return 0;
4872 }
4873
4874 /* True iff SYM0 represents the same entity as SYM1, or one that is
4875    no more defined than that of SYM1.  */
4876
4877 static int
4878 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4879 {
4880   if (sym0 == sym1)
4881     return 1;
4882   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4883       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4884     return 0;
4885
4886   switch (SYMBOL_CLASS (sym0))
4887     {
4888     case LOC_UNDEF:
4889       return 1;
4890     case LOC_TYPEDEF:
4891       {
4892         struct type *type0 = SYMBOL_TYPE (sym0);
4893         struct type *type1 = SYMBOL_TYPE (sym1);
4894         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4895         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4896         int len0 = strlen (name0);
4897
4898         return
4899           TYPE_CODE (type0) == TYPE_CODE (type1)
4900           && (equiv_types (type0, type1)
4901               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4902                   && startswith (name1 + len0, "___XV")));
4903       }
4904     case LOC_CONST:
4905       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4906         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4907     default:
4908       return 0;
4909     }
4910 }
4911
4912 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4913    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4914
4915 static void
4916 add_defn_to_vec (struct obstack *obstackp,
4917                  struct symbol *sym,
4918                  const struct block *block)
4919 {
4920   int i;
4921   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4922
4923   /* Do not try to complete stub types, as the debugger is probably
4924      already scanning all symbols matching a certain name at the
4925      time when this function is called.  Trying to replace the stub
4926      type by its associated full type will cause us to restart a scan
4927      which may lead to an infinite recursion.  Instead, the client
4928      collecting the matching symbols will end up collecting several
4929      matches, with at least one of them complete.  It can then filter
4930      out the stub ones if needed.  */
4931
4932   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4933     {
4934       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4935         return;
4936       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4937         {
4938           prevDefns[i].symbol = sym;
4939           prevDefns[i].block = block;
4940           return;
4941         }
4942     }
4943
4944   {
4945     struct block_symbol info;
4946
4947     info.symbol = sym;
4948     info.block = block;
4949     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4950   }
4951 }
4952
4953 /* Number of block_symbol structures currently collected in current vector in
4954    OBSTACKP.  */
4955
4956 static int
4957 num_defns_collected (struct obstack *obstackp)
4958 {
4959   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4960 }
4961
4962 /* Vector of block_symbol structures currently collected in current vector in
4963    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4964
4965 static struct block_symbol *
4966 defns_collected (struct obstack *obstackp, int finish)
4967 {
4968   if (finish)
4969     return (struct block_symbol *) obstack_finish (obstackp);
4970   else
4971     return (struct block_symbol *) obstack_base (obstackp);
4972 }
4973
4974 /* Return a bound minimal symbol matching NAME according to Ada
4975    decoding rules.  Returns an invalid symbol if there is no such
4976    minimal symbol.  Names prefixed with "standard__" are handled
4977    specially: "standard__" is first stripped off, and only static and
4978    global symbols are searched.  */
4979
4980 struct bound_minimal_symbol
4981 ada_lookup_simple_minsym (const char *name)
4982 {
4983   struct bound_minimal_symbol result;
4984   struct objfile *objfile;
4985   struct minimal_symbol *msymbol;
4986
4987   memset (&result, 0, sizeof (result));
4988
4989   symbol_name_match_type match_type = name_match_type_from_name (name);
4990   lookup_name_info lookup_name (name, match_type);
4991
4992   symbol_name_matcher_ftype *match_name
4993     = ada_get_symbol_name_matcher (lookup_name);
4994
4995   ALL_MSYMBOLS (objfile, msymbol)
4996   {
4997     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4998         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4999       {
5000         result.minsym = msymbol;
5001         result.objfile = objfile;
5002         break;
5003       }
5004   }
5005
5006   return result;
5007 }
5008
5009 /* For all subprograms that statically enclose the subprogram of the
5010    selected frame, add symbols matching identifier NAME in DOMAIN
5011    and their blocks to the list of data in OBSTACKP, as for
5012    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
5013    with a wildcard prefix.  */
5014
5015 static void
5016 add_symbols_from_enclosing_procs (struct obstack *obstackp,
5017                                   const lookup_name_info &lookup_name,
5018                                   domain_enum domain)
5019 {
5020 }
5021
5022 /* True if TYPE is definitely an artificial type supplied to a symbol
5023    for which no debugging information was given in the symbol file.  */
5024
5025 static int
5026 is_nondebugging_type (struct type *type)
5027 {
5028   const char *name = ada_type_name (type);
5029
5030   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
5031 }
5032
5033 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
5034    that are deemed "identical" for practical purposes.
5035
5036    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5037    types and that their number of enumerals is identical (in other
5038    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5039
5040 static int
5041 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5042 {
5043   int i;
5044
5045   /* The heuristic we use here is fairly conservative.  We consider
5046      that 2 enumerate types are identical if they have the same
5047      number of enumerals and that all enumerals have the same
5048      underlying value and name.  */
5049
5050   /* All enums in the type should have an identical underlying value.  */
5051   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5052     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5053       return 0;
5054
5055   /* All enumerals should also have the same name (modulo any numerical
5056      suffix).  */
5057   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5058     {
5059       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5060       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5061       int len_1 = strlen (name_1);
5062       int len_2 = strlen (name_2);
5063
5064       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5065       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5066       if (len_1 != len_2
5067           || strncmp (TYPE_FIELD_NAME (type1, i),
5068                       TYPE_FIELD_NAME (type2, i),
5069                       len_1) != 0)
5070         return 0;
5071     }
5072
5073   return 1;
5074 }
5075
5076 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5077    that are deemed "identical" for practical purposes.  Sometimes,
5078    enumerals are not strictly identical, but their types are so similar
5079    that they can be considered identical.
5080
5081    For instance, consider the following code:
5082
5083       type Color is (Black, Red, Green, Blue, White);
5084       type RGB_Color is new Color range Red .. Blue;
5085
5086    Type RGB_Color is a subrange of an implicit type which is a copy
5087    of type Color. If we call that implicit type RGB_ColorB ("B" is
5088    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5089    As a result, when an expression references any of the enumeral
5090    by name (Eg. "print green"), the expression is technically
5091    ambiguous and the user should be asked to disambiguate. But
5092    doing so would only hinder the user, since it wouldn't matter
5093    what choice he makes, the outcome would always be the same.
5094    So, for practical purposes, we consider them as the same.  */
5095
5096 static int
5097 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5098 {
5099   int i;
5100
5101   /* Before performing a thorough comparison check of each type,
5102      we perform a series of inexpensive checks.  We expect that these
5103      checks will quickly fail in the vast majority of cases, and thus
5104      help prevent the unnecessary use of a more expensive comparison.
5105      Said comparison also expects us to make some of these checks
5106      (see ada_identical_enum_types_p).  */
5107
5108   /* Quick check: All symbols should have an enum type.  */
5109   for (i = 0; i < syms.size (); i++)
5110     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5111       return 0;
5112
5113   /* Quick check: They should all have the same value.  */
5114   for (i = 1; i < syms.size (); i++)
5115     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5116       return 0;
5117
5118   /* Quick check: They should all have the same number of enumerals.  */
5119   for (i = 1; i < syms.size (); i++)
5120     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5121         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5122       return 0;
5123
5124   /* All the sanity checks passed, so we might have a set of
5125      identical enumeration types.  Perform a more complete
5126      comparison of the type of each symbol.  */
5127   for (i = 1; i < syms.size (); i++)
5128     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5129                                      SYMBOL_TYPE (syms[0].symbol)))
5130       return 0;
5131
5132   return 1;
5133 }
5134
5135 /* Remove any non-debugging symbols in SYMS that definitely
5136    duplicate other symbols in the list (The only case I know of where
5137    this happens is when object files containing stabs-in-ecoff are
5138    linked with files containing ordinary ecoff debugging symbols (or no
5139    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5140    Returns the number of items in the modified list.  */
5141
5142 static int
5143 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5144 {
5145   int i, j;
5146
5147   /* We should never be called with less than 2 symbols, as there
5148      cannot be any extra symbol in that case.  But it's easy to
5149      handle, since we have nothing to do in that case.  */
5150   if (syms->size () < 2)
5151     return syms->size ();
5152
5153   i = 0;
5154   while (i < syms->size ())
5155     {
5156       int remove_p = 0;
5157
5158       /* If two symbols have the same name and one of them is a stub type,
5159          the get rid of the stub.  */
5160
5161       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5162           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5163         {
5164           for (j = 0; j < syms->size (); j++)
5165             {
5166               if (j != i
5167                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5168                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5169                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5170                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5171                 remove_p = 1;
5172             }
5173         }
5174
5175       /* Two symbols with the same name, same class and same address
5176          should be identical.  */
5177
5178       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5179           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5180           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5181         {
5182           for (j = 0; j < syms->size (); j += 1)
5183             {
5184               if (i != j
5185                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5186                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5187                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5188                   && SYMBOL_CLASS ((*syms)[i].symbol)
5189                        == SYMBOL_CLASS ((*syms)[j].symbol)
5190                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5191                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5192                 remove_p = 1;
5193             }
5194         }
5195       
5196       if (remove_p)
5197         syms->erase (syms->begin () + i);
5198
5199       i += 1;
5200     }
5201
5202   /* If all the remaining symbols are identical enumerals, then
5203      just keep the first one and discard the rest.
5204
5205      Unlike what we did previously, we do not discard any entry
5206      unless they are ALL identical.  This is because the symbol
5207      comparison is not a strict comparison, but rather a practical
5208      comparison.  If all symbols are considered identical, then
5209      we can just go ahead and use the first one and discard the rest.
5210      But if we cannot reduce the list to a single element, we have
5211      to ask the user to disambiguate anyways.  And if we have to
5212      present a multiple-choice menu, it's less confusing if the list
5213      isn't missing some choices that were identical and yet distinct.  */
5214   if (symbols_are_identical_enums (*syms))
5215     syms->resize (1);
5216
5217   return syms->size ();
5218 }
5219
5220 /* Given a type that corresponds to a renaming entity, use the type name
5221    to extract the scope (package name or function name, fully qualified,
5222    and following the GNAT encoding convention) where this renaming has been
5223    defined.  */
5224
5225 static std::string
5226 xget_renaming_scope (struct type *renaming_type)
5227 {
5228   /* The renaming types adhere to the following convention:
5229      <scope>__<rename>___<XR extension>.
5230      So, to extract the scope, we search for the "___XR" extension,
5231      and then backtrack until we find the first "__".  */
5232
5233   const char *name = TYPE_NAME (renaming_type);
5234   const char *suffix = strstr (name, "___XR");
5235   const char *last;
5236
5237   /* Now, backtrack a bit until we find the first "__".  Start looking
5238      at suffix - 3, as the <rename> part is at least one character long.  */
5239
5240   for (last = suffix - 3; last > name; last--)
5241     if (last[0] == '_' && last[1] == '_')
5242       break;
5243
5244   /* Make a copy of scope and return it.  */
5245   return std::string (name, last);
5246 }
5247
5248 /* Return nonzero if NAME corresponds to a package name.  */
5249
5250 static int
5251 is_package_name (const char *name)
5252 {
5253   /* Here, We take advantage of the fact that no symbols are generated
5254      for packages, while symbols are generated for each function.
5255      So the condition for NAME represent a package becomes equivalent
5256      to NAME not existing in our list of symbols.  There is only one
5257      small complication with library-level functions (see below).  */
5258
5259   /* If it is a function that has not been defined at library level,
5260      then we should be able to look it up in the symbols.  */
5261   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5262     return 0;
5263
5264   /* Library-level function names start with "_ada_".  See if function
5265      "_ada_" followed by NAME can be found.  */
5266
5267   /* Do a quick check that NAME does not contain "__", since library-level
5268      functions names cannot contain "__" in them.  */
5269   if (strstr (name, "__") != NULL)
5270     return 0;
5271
5272   std::string fun_name = string_printf ("_ada_%s", name);
5273
5274   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5275 }
5276
5277 /* Return nonzero if SYM corresponds to a renaming entity that is
5278    not visible from FUNCTION_NAME.  */
5279
5280 static int
5281 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5282 {
5283   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5284     return 0;
5285
5286   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5287
5288   /* If the rename has been defined in a package, then it is visible.  */
5289   if (is_package_name (scope.c_str ()))
5290     return 0;
5291
5292   /* Check that the rename is in the current function scope by checking
5293      that its name starts with SCOPE.  */
5294
5295   /* If the function name starts with "_ada_", it means that it is
5296      a library-level function.  Strip this prefix before doing the
5297      comparison, as the encoding for the renaming does not contain
5298      this prefix.  */
5299   if (startswith (function_name, "_ada_"))
5300     function_name += 5;
5301
5302   return !startswith (function_name, scope.c_str ());
5303 }
5304
5305 /* Remove entries from SYMS that corresponds to a renaming entity that
5306    is not visible from the function associated with CURRENT_BLOCK or
5307    that is superfluous due to the presence of more specific renaming
5308    information.  Places surviving symbols in the initial entries of
5309    SYMS and returns the number of surviving symbols.
5310    
5311    Rationale:
5312    First, in cases where an object renaming is implemented as a
5313    reference variable, GNAT may produce both the actual reference
5314    variable and the renaming encoding.  In this case, we discard the
5315    latter.
5316
5317    Second, GNAT emits a type following a specified encoding for each renaming
5318    entity.  Unfortunately, STABS currently does not support the definition
5319    of types that are local to a given lexical block, so all renamings types
5320    are emitted at library level.  As a consequence, if an application
5321    contains two renaming entities using the same name, and a user tries to
5322    print the value of one of these entities, the result of the ada symbol
5323    lookup will also contain the wrong renaming type.
5324
5325    This function partially covers for this limitation by attempting to
5326    remove from the SYMS list renaming symbols that should be visible
5327    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5328    method with the current information available.  The implementation
5329    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5330    
5331       - When the user tries to print a rename in a function while there
5332         is another rename entity defined in a package:  Normally, the
5333         rename in the function has precedence over the rename in the
5334         package, so the latter should be removed from the list.  This is
5335         currently not the case.
5336         
5337       - This function will incorrectly remove valid renames if
5338         the CURRENT_BLOCK corresponds to a function which symbol name
5339         has been changed by an "Export" pragma.  As a consequence,
5340         the user will be unable to print such rename entities.  */
5341
5342 static int
5343 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5344                              const struct block *current_block)
5345 {
5346   struct symbol *current_function;
5347   const char *current_function_name;
5348   int i;
5349   int is_new_style_renaming;
5350
5351   /* If there is both a renaming foo___XR... encoded as a variable and
5352      a simple variable foo in the same block, discard the latter.
5353      First, zero out such symbols, then compress.  */
5354   is_new_style_renaming = 0;
5355   for (i = 0; i < syms->size (); i += 1)
5356     {
5357       struct symbol *sym = (*syms)[i].symbol;
5358       const struct block *block = (*syms)[i].block;
5359       const char *name;
5360       const char *suffix;
5361
5362       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5363         continue;
5364       name = SYMBOL_LINKAGE_NAME (sym);
5365       suffix = strstr (name, "___XR");
5366
5367       if (suffix != NULL)
5368         {
5369           int name_len = suffix - name;
5370           int j;
5371
5372           is_new_style_renaming = 1;
5373           for (j = 0; j < syms->size (); j += 1)
5374             if (i != j && (*syms)[j].symbol != NULL
5375                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5376                             name_len) == 0
5377                 && block == (*syms)[j].block)
5378               (*syms)[j].symbol = NULL;
5379         }
5380     }
5381   if (is_new_style_renaming)
5382     {
5383       int j, k;
5384
5385       for (j = k = 0; j < syms->size (); j += 1)
5386         if ((*syms)[j].symbol != NULL)
5387             {
5388               (*syms)[k] = (*syms)[j];
5389               k += 1;
5390             }
5391       return k;
5392     }
5393
5394   /* Extract the function name associated to CURRENT_BLOCK.
5395      Abort if unable to do so.  */
5396
5397   if (current_block == NULL)
5398     return syms->size ();
5399
5400   current_function = block_linkage_function (current_block);
5401   if (current_function == NULL)
5402     return syms->size ();
5403
5404   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5405   if (current_function_name == NULL)
5406     return syms->size ();
5407
5408   /* Check each of the symbols, and remove it from the list if it is
5409      a type corresponding to a renaming that is out of the scope of
5410      the current block.  */
5411
5412   i = 0;
5413   while (i < syms->size ())
5414     {
5415       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5416           == ADA_OBJECT_RENAMING
5417           && old_renaming_is_invisible ((*syms)[i].symbol,
5418                                         current_function_name))
5419         syms->erase (syms->begin () + i);
5420       else
5421         i += 1;
5422     }
5423
5424   return syms->size ();
5425 }
5426
5427 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5428    whose name and domain match NAME and DOMAIN respectively.
5429    If no match was found, then extend the search to "enclosing"
5430    routines (in other words, if we're inside a nested function,
5431    search the symbols defined inside the enclosing functions).
5432    If WILD_MATCH_P is nonzero, perform the naming matching in
5433    "wild" mode (see function "wild_match" for more info).
5434
5435    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5436
5437 static void
5438 ada_add_local_symbols (struct obstack *obstackp,
5439                        const lookup_name_info &lookup_name,
5440                        const struct block *block, domain_enum domain)
5441 {
5442   int block_depth = 0;
5443
5444   while (block != NULL)
5445     {
5446       block_depth += 1;
5447       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5448
5449       /* If we found a non-function match, assume that's the one.  */
5450       if (is_nonfunction (defns_collected (obstackp, 0),
5451                           num_defns_collected (obstackp)))
5452         return;
5453
5454       block = BLOCK_SUPERBLOCK (block);
5455     }
5456
5457   /* If no luck so far, try to find NAME as a local symbol in some lexically
5458      enclosing subprogram.  */
5459   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5460     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5461 }
5462
5463 /* An object of this type is used as the user_data argument when
5464    calling the map_matching_symbols method.  */
5465
5466 struct match_data
5467 {
5468   struct objfile *objfile;
5469   struct obstack *obstackp;
5470   struct symbol *arg_sym;
5471   int found_sym;
5472 };
5473
5474 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5475    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5476    containing the obstack that collects the symbol list, the file that SYM
5477    must come from, a flag indicating whether a non-argument symbol has
5478    been found in the current block, and the last argument symbol
5479    passed in SYM within the current block (if any).  When SYM is null,
5480    marking the end of a block, the argument symbol is added if no
5481    other has been found.  */
5482
5483 static int
5484 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5485 {
5486   struct match_data *data = (struct match_data *) data0;
5487   
5488   if (sym == NULL)
5489     {
5490       if (!data->found_sym && data->arg_sym != NULL) 
5491         add_defn_to_vec (data->obstackp,
5492                          fixup_symbol_section (data->arg_sym, data->objfile),
5493                          block);
5494       data->found_sym = 0;
5495       data->arg_sym = NULL;
5496     }
5497   else 
5498     {
5499       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5500         return 0;
5501       else if (SYMBOL_IS_ARGUMENT (sym))
5502         data->arg_sym = sym;
5503       else
5504         {
5505           data->found_sym = 1;
5506           add_defn_to_vec (data->obstackp,
5507                            fixup_symbol_section (sym, data->objfile),
5508                            block);
5509         }
5510     }
5511   return 0;
5512 }
5513
5514 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5515    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5516    symbols to OBSTACKP.  Return whether we found such symbols.  */
5517
5518 static int
5519 ada_add_block_renamings (struct obstack *obstackp,
5520                          const struct block *block,
5521                          const lookup_name_info &lookup_name,
5522                          domain_enum domain)
5523 {
5524   struct using_direct *renaming;
5525   int defns_mark = num_defns_collected (obstackp);
5526
5527   symbol_name_matcher_ftype *name_match
5528     = ada_get_symbol_name_matcher (lookup_name);
5529
5530   for (renaming = block_using (block);
5531        renaming != NULL;
5532        renaming = renaming->next)
5533     {
5534       const char *r_name;
5535
5536       /* Avoid infinite recursions: skip this renaming if we are actually
5537          already traversing it.
5538
5539          Currently, symbol lookup in Ada don't use the namespace machinery from
5540          C++/Fortran support: skip namespace imports that use them.  */
5541       if (renaming->searched
5542           || (renaming->import_src != NULL
5543               && renaming->import_src[0] != '\0')
5544           || (renaming->import_dest != NULL
5545               && renaming->import_dest[0] != '\0'))
5546         continue;
5547       renaming->searched = 1;
5548
5549       /* TODO: here, we perform another name-based symbol lookup, which can
5550          pull its own multiple overloads.  In theory, we should be able to do
5551          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5552          not a simple name.  But in order to do this, we would need to enhance
5553          the DWARF reader to associate a symbol to this renaming, instead of a
5554          name.  So, for now, we do something simpler: re-use the C++/Fortran
5555          namespace machinery.  */
5556       r_name = (renaming->alias != NULL
5557                 ? renaming->alias
5558                 : renaming->declaration);
5559       if (name_match (r_name, lookup_name, NULL))
5560         {
5561           lookup_name_info decl_lookup_name (renaming->declaration,
5562                                              lookup_name.match_type ());
5563           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5564                                1, NULL);
5565         }
5566       renaming->searched = 0;
5567     }
5568   return num_defns_collected (obstackp) != defns_mark;
5569 }
5570
5571 /* Implements compare_names, but only applying the comparision using
5572    the given CASING.  */
5573
5574 static int
5575 compare_names_with_case (const char *string1, const char *string2,
5576                          enum case_sensitivity casing)
5577 {
5578   while (*string1 != '\0' && *string2 != '\0')
5579     {
5580       char c1, c2;
5581
5582       if (isspace (*string1) || isspace (*string2))
5583         return strcmp_iw_ordered (string1, string2);
5584
5585       if (casing == case_sensitive_off)
5586         {
5587           c1 = tolower (*string1);
5588           c2 = tolower (*string2);
5589         }
5590       else
5591         {
5592           c1 = *string1;
5593           c2 = *string2;
5594         }
5595       if (c1 != c2)
5596         break;
5597
5598       string1 += 1;
5599       string2 += 1;
5600     }
5601
5602   switch (*string1)
5603     {
5604     case '(':
5605       return strcmp_iw_ordered (string1, string2);
5606     case '_':
5607       if (*string2 == '\0')
5608         {
5609           if (is_name_suffix (string1))
5610             return 0;
5611           else
5612             return 1;
5613         }
5614       /* FALLTHROUGH */
5615     default:
5616       if (*string2 == '(')
5617         return strcmp_iw_ordered (string1, string2);
5618       else
5619         {
5620           if (casing == case_sensitive_off)
5621             return tolower (*string1) - tolower (*string2);
5622           else
5623             return *string1 - *string2;
5624         }
5625     }
5626 }
5627
5628 /* Compare STRING1 to STRING2, with results as for strcmp.
5629    Compatible with strcmp_iw_ordered in that...
5630
5631        strcmp_iw_ordered (STRING1, STRING2) <= 0
5632
5633    ... implies...
5634
5635        compare_names (STRING1, STRING2) <= 0
5636
5637    (they may differ as to what symbols compare equal).  */
5638
5639 static int
5640 compare_names (const char *string1, const char *string2)
5641 {
5642   int result;
5643
5644   /* Similar to what strcmp_iw_ordered does, we need to perform
5645      a case-insensitive comparison first, and only resort to
5646      a second, case-sensitive, comparison if the first one was
5647      not sufficient to differentiate the two strings.  */
5648
5649   result = compare_names_with_case (string1, string2, case_sensitive_off);
5650   if (result == 0)
5651     result = compare_names_with_case (string1, string2, case_sensitive_on);
5652
5653   return result;
5654 }
5655
5656 /* Convenience function to get at the Ada encoded lookup name for
5657    LOOKUP_NAME, as a C string.  */
5658
5659 static const char *
5660 ada_lookup_name (const lookup_name_info &lookup_name)
5661 {
5662   return lookup_name.ada ().lookup_name ().c_str ();
5663 }
5664
5665 /* Add to OBSTACKP all non-local symbols whose name and domain match
5666    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5667    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5668    symbols otherwise.  */
5669
5670 static void
5671 add_nonlocal_symbols (struct obstack *obstackp,
5672                       const lookup_name_info &lookup_name,
5673                       domain_enum domain, int global)
5674 {
5675   struct objfile *objfile;
5676   struct compunit_symtab *cu;
5677   struct match_data data;
5678
5679   memset (&data, 0, sizeof data);
5680   data.obstackp = obstackp;
5681
5682   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5683
5684   ALL_OBJFILES (objfile)
5685     {
5686       data.objfile = objfile;
5687
5688       if (is_wild_match)
5689         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5690                                                domain, global,
5691                                                aux_add_nonlocal_symbols, &data,
5692                                                symbol_name_match_type::WILD,
5693                                                NULL);
5694       else
5695         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5696                                                domain, global,
5697                                                aux_add_nonlocal_symbols, &data,
5698                                                symbol_name_match_type::FULL,
5699                                                compare_names);
5700
5701       ALL_OBJFILE_COMPUNITS (objfile, cu)
5702         {
5703           const struct block *global_block
5704             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5705
5706           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5707                                        domain))
5708             data.found_sym = 1;
5709         }
5710     }
5711
5712   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5713     {
5714       const char *name = ada_lookup_name (lookup_name);
5715       std::string name1 = std::string ("<_ada_") + name + '>';
5716
5717       ALL_OBJFILES (objfile)
5718         {
5719           data.objfile = objfile;
5720           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5721                                                  domain, global,
5722                                                  aux_add_nonlocal_symbols,
5723                                                  &data,
5724                                                  symbol_name_match_type::FULL,
5725                                                  compare_names);
5726         }
5727     }           
5728 }
5729
5730 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5731    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5732    returning the number of matches.  Add these to OBSTACKP.
5733
5734    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5735    symbol match within the nest of blocks whose innermost member is BLOCK,
5736    is the one match returned (no other matches in that or
5737    enclosing blocks is returned).  If there are any matches in or
5738    surrounding BLOCK, then these alone are returned.
5739
5740    Names prefixed with "standard__" are handled specially:
5741    "standard__" is first stripped off (by the lookup_name
5742    constructor), and only static and global symbols are searched.
5743
5744    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5745    to lookup global symbols.  */
5746
5747 static void
5748 ada_add_all_symbols (struct obstack *obstackp,
5749                      const struct block *block,
5750                      const lookup_name_info &lookup_name,
5751                      domain_enum domain,
5752                      int full_search,
5753                      int *made_global_lookup_p)
5754 {
5755   struct symbol *sym;
5756
5757   if (made_global_lookup_p)
5758     *made_global_lookup_p = 0;
5759
5760   /* Special case: If the user specifies a symbol name inside package
5761      Standard, do a non-wild matching of the symbol name without
5762      the "standard__" prefix.  This was primarily introduced in order
5763      to allow the user to specifically access the standard exceptions
5764      using, for instance, Standard.Constraint_Error when Constraint_Error
5765      is ambiguous (due to the user defining its own Constraint_Error
5766      entity inside its program).  */
5767   if (lookup_name.ada ().standard_p ())
5768     block = NULL;
5769
5770   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5771
5772   if (block != NULL)
5773     {
5774       if (full_search)
5775         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5776       else
5777         {
5778           /* In the !full_search case we're are being called by
5779              ada_iterate_over_symbols, and we don't want to search
5780              superblocks.  */
5781           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5782         }
5783       if (num_defns_collected (obstackp) > 0 || !full_search)
5784         return;
5785     }
5786
5787   /* No non-global symbols found.  Check our cache to see if we have
5788      already performed this search before.  If we have, then return
5789      the same result.  */
5790
5791   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5792                             domain, &sym, &block))
5793     {
5794       if (sym != NULL)
5795         add_defn_to_vec (obstackp, sym, block);
5796       return;
5797     }
5798
5799   if (made_global_lookup_p)
5800     *made_global_lookup_p = 1;
5801
5802   /* Search symbols from all global blocks.  */
5803  
5804   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5805
5806   /* Now add symbols from all per-file blocks if we've gotten no hits
5807      (not strictly correct, but perhaps better than an error).  */
5808
5809   if (num_defns_collected (obstackp) == 0)
5810     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5811 }
5812
5813 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5814    is non-zero, enclosing scope and in global scopes, returning the number of
5815    matches.
5816    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5817    found and the blocks and symbol tables (if any) in which they were
5818    found.
5819
5820    When full_search is non-zero, any non-function/non-enumeral
5821    symbol match within the nest of blocks whose innermost member is BLOCK,
5822    is the one match returned (no other matches in that or
5823    enclosing blocks is returned).  If there are any matches in or
5824    surrounding BLOCK, then these alone are returned.
5825
5826    Names prefixed with "standard__" are handled specially: "standard__"
5827    is first stripped off, and only static and global symbols are searched.  */
5828
5829 static int
5830 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5831                                const struct block *block,
5832                                domain_enum domain,
5833                                std::vector<struct block_symbol> *results,
5834                                int full_search)
5835 {
5836   int syms_from_global_search;
5837   int ndefns;
5838   auto_obstack obstack;
5839
5840   ada_add_all_symbols (&obstack, block, lookup_name,
5841                        domain, full_search, &syms_from_global_search);
5842
5843   ndefns = num_defns_collected (&obstack);
5844
5845   struct block_symbol *base = defns_collected (&obstack, 1);
5846   for (int i = 0; i < ndefns; ++i)
5847     results->push_back (base[i]);
5848
5849   ndefns = remove_extra_symbols (results);
5850
5851   if (ndefns == 0 && full_search && syms_from_global_search)
5852     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5853
5854   if (ndefns == 1 && full_search && syms_from_global_search)
5855     cache_symbol (ada_lookup_name (lookup_name), domain,
5856                   (*results)[0].symbol, (*results)[0].block);
5857
5858   ndefns = remove_irrelevant_renamings (results, block);
5859
5860   return ndefns;
5861 }
5862
5863 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5864    in global scopes, returning the number of matches, and filling *RESULTS
5865    with (SYM,BLOCK) tuples.
5866
5867    See ada_lookup_symbol_list_worker for further details.  */
5868
5869 int
5870 ada_lookup_symbol_list (const char *name, const struct block *block,
5871                         domain_enum domain,
5872                         std::vector<struct block_symbol> *results)
5873 {
5874   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5875   lookup_name_info lookup_name (name, name_match_type);
5876
5877   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5878 }
5879
5880 /* Implementation of the la_iterate_over_symbols method.  */
5881
5882 static void
5883 ada_iterate_over_symbols
5884   (const struct block *block, const lookup_name_info &name,
5885    domain_enum domain,
5886    gdb::function_view<symbol_found_callback_ftype> callback)
5887 {
5888   int ndefs, i;
5889   std::vector<struct block_symbol> results;
5890
5891   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5892
5893   for (i = 0; i < ndefs; ++i)
5894     {
5895       if (!callback (&results[i]))
5896         break;
5897     }
5898 }
5899
5900 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5901    to 1, but choosing the first symbol found if there are multiple
5902    choices.
5903
5904    The result is stored in *INFO, which must be non-NULL.
5905    If no match is found, INFO->SYM is set to NULL.  */
5906
5907 void
5908 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5909                            domain_enum domain,
5910                            struct block_symbol *info)
5911 {
5912   /* Since we already have an encoded name, wrap it in '<>' to force a
5913      verbatim match.  Otherwise, if the name happens to not look like
5914      an encoded name (because it doesn't include a "__"),
5915      ada_lookup_name_info would re-encode/fold it again, and that
5916      would e.g., incorrectly lowercase object renaming names like
5917      "R28b" -> "r28b".  */
5918   std::string verbatim = std::string ("<") + name + '>';
5919
5920   gdb_assert (info != NULL);
5921   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5922 }
5923
5924 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5925    scope and in global scopes, or NULL if none.  NAME is folded and
5926    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5927    choosing the first symbol if there are multiple choices.
5928    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5929
5930 struct block_symbol
5931 ada_lookup_symbol (const char *name, const struct block *block0,
5932                    domain_enum domain, int *is_a_field_of_this)
5933 {
5934   if (is_a_field_of_this != NULL)
5935     *is_a_field_of_this = 0;
5936
5937   std::vector<struct block_symbol> candidates;
5938   int n_candidates;
5939
5940   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5941
5942   if (n_candidates == 0)
5943     return {};
5944
5945   block_symbol info = candidates[0];
5946   info.symbol = fixup_symbol_section (info.symbol, NULL);
5947   return info;
5948 }
5949
5950 static struct block_symbol
5951 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5952                             const char *name,
5953                             const struct block *block,
5954                             const domain_enum domain)
5955 {
5956   struct block_symbol sym;
5957
5958   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5959   if (sym.symbol != NULL)
5960     return sym;
5961
5962   /* If we haven't found a match at this point, try the primitive
5963      types.  In other languages, this search is performed before
5964      searching for global symbols in order to short-circuit that
5965      global-symbol search if it happens that the name corresponds
5966      to a primitive type.  But we cannot do the same in Ada, because
5967      it is perfectly legitimate for a program to declare a type which
5968      has the same name as a standard type.  If looking up a type in
5969      that situation, we have traditionally ignored the primitive type
5970      in favor of user-defined types.  This is why, unlike most other
5971      languages, we search the primitive types this late and only after
5972      having searched the global symbols without success.  */
5973
5974   if (domain == VAR_DOMAIN)
5975     {
5976       struct gdbarch *gdbarch;
5977
5978       if (block == NULL)
5979         gdbarch = target_gdbarch ();
5980       else
5981         gdbarch = block_gdbarch (block);
5982       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5983       if (sym.symbol != NULL)
5984         return sym;
5985     }
5986
5987   return (struct block_symbol) {NULL, NULL};
5988 }
5989
5990
5991 /* True iff STR is a possible encoded suffix of a normal Ada name
5992    that is to be ignored for matching purposes.  Suffixes of parallel
5993    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5994    are given by any of the regular expressions:
5995
5996    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5997    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5998    TKB              [subprogram suffix for task bodies]
5999    _E[0-9]+[bs]$    [protected object entry suffixes]
6000    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
6001
6002    Also, any leading "__[0-9]+" sequence is skipped before the suffix
6003    match is performed.  This sequence is used to differentiate homonyms,
6004    is an optional part of a valid name suffix.  */
6005
6006 static int
6007 is_name_suffix (const char *str)
6008 {
6009   int k;
6010   const char *matching;
6011   const int len = strlen (str);
6012
6013   /* Skip optional leading __[0-9]+.  */
6014
6015   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
6016     {
6017       str += 3;
6018       while (isdigit (str[0]))
6019         str += 1;
6020     }
6021   
6022   /* [.$][0-9]+ */
6023
6024   if (str[0] == '.' || str[0] == '$')
6025     {
6026       matching = str + 1;
6027       while (isdigit (matching[0]))
6028         matching += 1;
6029       if (matching[0] == '\0')
6030         return 1;
6031     }
6032
6033   /* ___[0-9]+ */
6034
6035   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6036     {
6037       matching = str + 3;
6038       while (isdigit (matching[0]))
6039         matching += 1;
6040       if (matching[0] == '\0')
6041         return 1;
6042     }
6043
6044   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6045
6046   if (strcmp (str, "TKB") == 0)
6047     return 1;
6048
6049 #if 0
6050   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6051      with a N at the end.  Unfortunately, the compiler uses the same
6052      convention for other internal types it creates.  So treating
6053      all entity names that end with an "N" as a name suffix causes
6054      some regressions.  For instance, consider the case of an enumerated
6055      type.  To support the 'Image attribute, it creates an array whose
6056      name ends with N.
6057      Having a single character like this as a suffix carrying some
6058      information is a bit risky.  Perhaps we should change the encoding
6059      to be something like "_N" instead.  In the meantime, do not do
6060      the following check.  */
6061   /* Protected Object Subprograms */
6062   if (len == 1 && str [0] == 'N')
6063     return 1;
6064 #endif
6065
6066   /* _E[0-9]+[bs]$ */
6067   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6068     {
6069       matching = str + 3;
6070       while (isdigit (matching[0]))
6071         matching += 1;
6072       if ((matching[0] == 'b' || matching[0] == 's')
6073           && matching [1] == '\0')
6074         return 1;
6075     }
6076
6077   /* ??? We should not modify STR directly, as we are doing below.  This
6078      is fine in this case, but may become problematic later if we find
6079      that this alternative did not work, and want to try matching
6080      another one from the begining of STR.  Since we modified it, we
6081      won't be able to find the begining of the string anymore!  */
6082   if (str[0] == 'X')
6083     {
6084       str += 1;
6085       while (str[0] != '_' && str[0] != '\0')
6086         {
6087           if (str[0] != 'n' && str[0] != 'b')
6088             return 0;
6089           str += 1;
6090         }
6091     }
6092
6093   if (str[0] == '\000')
6094     return 1;
6095
6096   if (str[0] == '_')
6097     {
6098       if (str[1] != '_' || str[2] == '\000')
6099         return 0;
6100       if (str[2] == '_')
6101         {
6102           if (strcmp (str + 3, "JM") == 0)
6103             return 1;
6104           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6105              the LJM suffix in favor of the JM one.  But we will
6106              still accept LJM as a valid suffix for a reasonable
6107              amount of time, just to allow ourselves to debug programs
6108              compiled using an older version of GNAT.  */
6109           if (strcmp (str + 3, "LJM") == 0)
6110             return 1;
6111           if (str[3] != 'X')
6112             return 0;
6113           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6114               || str[4] == 'U' || str[4] == 'P')
6115             return 1;
6116           if (str[4] == 'R' && str[5] != 'T')
6117             return 1;
6118           return 0;
6119         }
6120       if (!isdigit (str[2]))
6121         return 0;
6122       for (k = 3; str[k] != '\0'; k += 1)
6123         if (!isdigit (str[k]) && str[k] != '_')
6124           return 0;
6125       return 1;
6126     }
6127   if (str[0] == '$' && isdigit (str[1]))
6128     {
6129       for (k = 2; str[k] != '\0'; k += 1)
6130         if (!isdigit (str[k]) && str[k] != '_')
6131           return 0;
6132       return 1;
6133     }
6134   return 0;
6135 }
6136
6137 /* Return non-zero if the string starting at NAME and ending before
6138    NAME_END contains no capital letters.  */
6139
6140 static int
6141 is_valid_name_for_wild_match (const char *name0)
6142 {
6143   const char *decoded_name = ada_decode (name0);
6144   int i;
6145
6146   /* If the decoded name starts with an angle bracket, it means that
6147      NAME0 does not follow the GNAT encoding format.  It should then
6148      not be allowed as a possible wild match.  */
6149   if (decoded_name[0] == '<')
6150     return 0;
6151
6152   for (i=0; decoded_name[i] != '\0'; i++)
6153     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6154       return 0;
6155
6156   return 1;
6157 }
6158
6159 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6160    that could start a simple name.  Assumes that *NAMEP points into
6161    the string beginning at NAME0.  */
6162
6163 static int
6164 advance_wild_match (const char **namep, const char *name0, int target0)
6165 {
6166   const char *name = *namep;
6167
6168   while (1)
6169     {
6170       int t0, t1;
6171
6172       t0 = *name;
6173       if (t0 == '_')
6174         {
6175           t1 = name[1];
6176           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6177             {
6178               name += 1;
6179               if (name == name0 + 5 && startswith (name0, "_ada"))
6180                 break;
6181               else
6182                 name += 1;
6183             }
6184           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6185                                  || name[2] == target0))
6186             {
6187               name += 2;
6188               break;
6189             }
6190           else
6191             return 0;
6192         }
6193       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6194         name += 1;
6195       else
6196         return 0;
6197     }
6198
6199   *namep = name;
6200   return 1;
6201 }
6202
6203 /* Return true iff NAME encodes a name of the form prefix.PATN.
6204    Ignores any informational suffixes of NAME (i.e., for which
6205    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6206    simple name.  */
6207
6208 static bool
6209 wild_match (const char *name, const char *patn)
6210 {
6211   const char *p;
6212   const char *name0 = name;
6213
6214   while (1)
6215     {
6216       const char *match = name;
6217
6218       if (*name == *patn)
6219         {
6220           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6221             if (*p != *name)
6222               break;
6223           if (*p == '\0' && is_name_suffix (name))
6224             return match == name0 || is_valid_name_for_wild_match (name0);
6225
6226           if (name[-1] == '_')
6227             name -= 1;
6228         }
6229       if (!advance_wild_match (&name, name0, *patn))
6230         return false;
6231     }
6232 }
6233
6234 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6235    any trailing suffixes that encode debugging information or leading
6236    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6237    information that is ignored).  */
6238
6239 static bool
6240 full_match (const char *sym_name, const char *search_name)
6241 {
6242   size_t search_name_len = strlen (search_name);
6243
6244   if (strncmp (sym_name, search_name, search_name_len) == 0
6245       && is_name_suffix (sym_name + search_name_len))
6246     return true;
6247
6248   if (startswith (sym_name, "_ada_")
6249       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6250       && is_name_suffix (sym_name + search_name_len + 5))
6251     return true;
6252
6253   return false;
6254 }
6255
6256 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6257    *defn_symbols, updating the list of symbols in OBSTACKP (if
6258    necessary).  OBJFILE is the section containing BLOCK.  */
6259
6260 static void
6261 ada_add_block_symbols (struct obstack *obstackp,
6262                        const struct block *block,
6263                        const lookup_name_info &lookup_name,
6264                        domain_enum domain, struct objfile *objfile)
6265 {
6266   struct block_iterator iter;
6267   /* A matching argument symbol, if any.  */
6268   struct symbol *arg_sym;
6269   /* Set true when we find a matching non-argument symbol.  */
6270   int found_sym;
6271   struct symbol *sym;
6272
6273   arg_sym = NULL;
6274   found_sym = 0;
6275   for (sym = block_iter_match_first (block, lookup_name, &iter);
6276        sym != NULL;
6277        sym = block_iter_match_next (lookup_name, &iter))
6278     {
6279       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6280                                  SYMBOL_DOMAIN (sym), domain))
6281         {
6282           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6283             {
6284               if (SYMBOL_IS_ARGUMENT (sym))
6285                 arg_sym = sym;
6286               else
6287                 {
6288                   found_sym = 1;
6289                   add_defn_to_vec (obstackp,
6290                                    fixup_symbol_section (sym, objfile),
6291                                    block);
6292                 }
6293             }
6294         }
6295     }
6296
6297   /* Handle renamings.  */
6298
6299   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6300     found_sym = 1;
6301
6302   if (!found_sym && arg_sym != NULL)
6303     {
6304       add_defn_to_vec (obstackp,
6305                        fixup_symbol_section (arg_sym, objfile),
6306                        block);
6307     }
6308
6309   if (!lookup_name.ada ().wild_match_p ())
6310     {
6311       arg_sym = NULL;
6312       found_sym = 0;
6313       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6314       const char *name = ada_lookup_name.c_str ();
6315       size_t name_len = ada_lookup_name.size ();
6316
6317       ALL_BLOCK_SYMBOLS (block, iter, sym)
6318       {
6319         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6320                                    SYMBOL_DOMAIN (sym), domain))
6321           {
6322             int cmp;
6323
6324             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6325             if (cmp == 0)
6326               {
6327                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6328                 if (cmp == 0)
6329                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6330                                  name_len);
6331               }
6332
6333             if (cmp == 0
6334                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6335               {
6336                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6337                   {
6338                     if (SYMBOL_IS_ARGUMENT (sym))
6339                       arg_sym = sym;
6340                     else
6341                       {
6342                         found_sym = 1;
6343                         add_defn_to_vec (obstackp,
6344                                          fixup_symbol_section (sym, objfile),
6345                                          block);
6346                       }
6347                   }
6348               }
6349           }
6350       }
6351
6352       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6353          They aren't parameters, right?  */
6354       if (!found_sym && arg_sym != NULL)
6355         {
6356           add_defn_to_vec (obstackp,
6357                            fixup_symbol_section (arg_sym, objfile),
6358                            block);
6359         }
6360     }
6361 }
6362 \f
6363
6364                                 /* Symbol Completion */
6365
6366 /* See symtab.h.  */
6367
6368 bool
6369 ada_lookup_name_info::matches
6370   (const char *sym_name,
6371    symbol_name_match_type match_type,
6372    completion_match_result *comp_match_res) const
6373 {
6374   bool match = false;
6375   const char *text = m_encoded_name.c_str ();
6376   size_t text_len = m_encoded_name.size ();
6377
6378   /* First, test against the fully qualified name of the symbol.  */
6379
6380   if (strncmp (sym_name, text, text_len) == 0)
6381     match = true;
6382
6383   if (match && !m_encoded_p)
6384     {
6385       /* One needed check before declaring a positive match is to verify
6386          that iff we are doing a verbatim match, the decoded version
6387          of the symbol name starts with '<'.  Otherwise, this symbol name
6388          is not a suitable completion.  */
6389       const char *sym_name_copy = sym_name;
6390       bool has_angle_bracket;
6391
6392       sym_name = ada_decode (sym_name);
6393       has_angle_bracket = (sym_name[0] == '<');
6394       match = (has_angle_bracket == m_verbatim_p);
6395       sym_name = sym_name_copy;
6396     }
6397
6398   if (match && !m_verbatim_p)
6399     {
6400       /* When doing non-verbatim match, another check that needs to
6401          be done is to verify that the potentially matching symbol name
6402          does not include capital letters, because the ada-mode would
6403          not be able to understand these symbol names without the
6404          angle bracket notation.  */
6405       const char *tmp;
6406
6407       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6408       if (*tmp != '\0')
6409         match = false;
6410     }
6411
6412   /* Second: Try wild matching...  */
6413
6414   if (!match && m_wild_match_p)
6415     {
6416       /* Since we are doing wild matching, this means that TEXT
6417          may represent an unqualified symbol name.  We therefore must
6418          also compare TEXT against the unqualified name of the symbol.  */
6419       sym_name = ada_unqualified_name (ada_decode (sym_name));
6420
6421       if (strncmp (sym_name, text, text_len) == 0)
6422         match = true;
6423     }
6424
6425   /* Finally: If we found a match, prepare the result to return.  */
6426
6427   if (!match)
6428     return false;
6429
6430   if (comp_match_res != NULL)
6431     {
6432       std::string &match_str = comp_match_res->match.storage ();
6433
6434       if (!m_encoded_p)
6435         match_str = ada_decode (sym_name);
6436       else
6437         {
6438           if (m_verbatim_p)
6439             match_str = add_angle_brackets (sym_name);
6440           else
6441             match_str = sym_name;
6442
6443         }
6444
6445       comp_match_res->set_match (match_str.c_str ());
6446     }
6447
6448   return true;
6449 }
6450
6451 /* Add the list of possible symbol names completing TEXT to TRACKER.
6452    WORD is the entire command on which completion is made.  */
6453
6454 static void
6455 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6456                                        complete_symbol_mode mode,
6457                                        symbol_name_match_type name_match_type,
6458                                        const char *text, const char *word,
6459                                        enum type_code code)
6460 {
6461   struct symbol *sym;
6462   struct compunit_symtab *s;
6463   struct minimal_symbol *msymbol;
6464   struct objfile *objfile;
6465   const struct block *b, *surrounding_static_block = 0;
6466   struct block_iterator iter;
6467
6468   gdb_assert (code == TYPE_CODE_UNDEF);
6469
6470   lookup_name_info lookup_name (text, name_match_type, true);
6471
6472   /* First, look at the partial symtab symbols.  */
6473   expand_symtabs_matching (NULL,
6474                            lookup_name,
6475                            NULL,
6476                            NULL,
6477                            ALL_DOMAIN);
6478
6479   /* At this point scan through the misc symbol vectors and add each
6480      symbol you find to the list.  Eventually we want to ignore
6481      anything that isn't a text symbol (everything else will be
6482      handled by the psymtab code above).  */
6483
6484   ALL_MSYMBOLS (objfile, msymbol)
6485   {
6486     QUIT;
6487
6488     if (completion_skip_symbol (mode, msymbol))
6489       continue;
6490
6491     language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6492
6493     /* Ada minimal symbols won't have their language set to Ada.  If
6494        we let completion_list_add_name compare using the
6495        default/C-like matcher, then when completing e.g., symbols in a
6496        package named "pck", we'd match internal Ada symbols like
6497        "pckS", which are invalid in an Ada expression, unless you wrap
6498        them in '<' '>' to request a verbatim match.
6499
6500        Unfortunately, some Ada encoded names successfully demangle as
6501        C++ symbols (using an old mangling scheme), such as "name__2Xn"
6502        -> "Xn::name(void)" and thus some Ada minimal symbols end up
6503        with the wrong language set.  Paper over that issue here.  */
6504     if (symbol_language == language_auto
6505         || symbol_language == language_cplus)
6506       symbol_language = language_ada;
6507
6508     completion_list_add_name (tracker,
6509                               symbol_language,
6510                               MSYMBOL_LINKAGE_NAME (msymbol),
6511                               lookup_name, text, word);
6512   }
6513
6514   /* Search upwards from currently selected frame (so that we can
6515      complete on local vars.  */
6516
6517   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6518     {
6519       if (!BLOCK_SUPERBLOCK (b))
6520         surrounding_static_block = b;   /* For elmin of dups */
6521
6522       ALL_BLOCK_SYMBOLS (b, iter, sym)
6523       {
6524         if (completion_skip_symbol (mode, sym))
6525           continue;
6526
6527         completion_list_add_name (tracker,
6528                                   SYMBOL_LANGUAGE (sym),
6529                                   SYMBOL_LINKAGE_NAME (sym),
6530                                   lookup_name, text, word);
6531       }
6532     }
6533
6534   /* Go through the symtabs and check the externs and statics for
6535      symbols which match.  */
6536
6537   ALL_COMPUNITS (objfile, s)
6538   {
6539     QUIT;
6540     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6541     ALL_BLOCK_SYMBOLS (b, iter, sym)
6542     {
6543       if (completion_skip_symbol (mode, sym))
6544         continue;
6545
6546       completion_list_add_name (tracker,
6547                                 SYMBOL_LANGUAGE (sym),
6548                                 SYMBOL_LINKAGE_NAME (sym),
6549                                 lookup_name, text, word);
6550     }
6551   }
6552
6553   ALL_COMPUNITS (objfile, s)
6554   {
6555     QUIT;
6556     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6557     /* Don't do this block twice.  */
6558     if (b == surrounding_static_block)
6559       continue;
6560     ALL_BLOCK_SYMBOLS (b, iter, sym)
6561     {
6562       if (completion_skip_symbol (mode, sym))
6563         continue;
6564
6565       completion_list_add_name (tracker,
6566                                 SYMBOL_LANGUAGE (sym),
6567                                 SYMBOL_LINKAGE_NAME (sym),
6568                                 lookup_name, text, word);
6569     }
6570   }
6571 }
6572
6573                                 /* Field Access */
6574
6575 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6576    for tagged types.  */
6577
6578 static int
6579 ada_is_dispatch_table_ptr_type (struct type *type)
6580 {
6581   const char *name;
6582
6583   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6584     return 0;
6585
6586   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6587   if (name == NULL)
6588     return 0;
6589
6590   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6591 }
6592
6593 /* Return non-zero if TYPE is an interface tag.  */
6594
6595 static int
6596 ada_is_interface_tag (struct type *type)
6597 {
6598   const char *name = TYPE_NAME (type);
6599
6600   if (name == NULL)
6601     return 0;
6602
6603   return (strcmp (name, "ada__tags__interface_tag") == 0);
6604 }
6605
6606 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6607    to be invisible to users.  */
6608
6609 int
6610 ada_is_ignored_field (struct type *type, int field_num)
6611 {
6612   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6613     return 1;
6614
6615   /* Check the name of that field.  */
6616   {
6617     const char *name = TYPE_FIELD_NAME (type, field_num);
6618
6619     /* Anonymous field names should not be printed.
6620        brobecker/2007-02-20: I don't think this can actually happen
6621        but we don't want to print the value of annonymous fields anyway.  */
6622     if (name == NULL)
6623       return 1;
6624
6625     /* Normally, fields whose name start with an underscore ("_")
6626        are fields that have been internally generated by the compiler,
6627        and thus should not be printed.  The "_parent" field is special,
6628        however: This is a field internally generated by the compiler
6629        for tagged types, and it contains the components inherited from
6630        the parent type.  This field should not be printed as is, but
6631        should not be ignored either.  */
6632     if (name[0] == '_' && !startswith (name, "_parent"))
6633       return 1;
6634   }
6635
6636   /* If this is the dispatch table of a tagged type or an interface tag,
6637      then ignore.  */
6638   if (ada_is_tagged_type (type, 1)
6639       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6640           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6641     return 1;
6642
6643   /* Not a special field, so it should not be ignored.  */
6644   return 0;
6645 }
6646
6647 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6648    pointer or reference type whose ultimate target has a tag field.  */
6649
6650 int
6651 ada_is_tagged_type (struct type *type, int refok)
6652 {
6653   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6654 }
6655
6656 /* True iff TYPE represents the type of X'Tag */
6657
6658 int
6659 ada_is_tag_type (struct type *type)
6660 {
6661   type = ada_check_typedef (type);
6662
6663   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6664     return 0;
6665   else
6666     {
6667       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6668
6669       return (name != NULL
6670               && strcmp (name, "ada__tags__dispatch_table") == 0);
6671     }
6672 }
6673
6674 /* The type of the tag on VAL.  */
6675
6676 struct type *
6677 ada_tag_type (struct value *val)
6678 {
6679   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6680 }
6681
6682 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6683    retired at Ada 05).  */
6684
6685 static int
6686 is_ada95_tag (struct value *tag)
6687 {
6688   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6689 }
6690
6691 /* The value of the tag on VAL.  */
6692
6693 struct value *
6694 ada_value_tag (struct value *val)
6695 {
6696   return ada_value_struct_elt (val, "_tag", 0);
6697 }
6698
6699 /* The value of the tag on the object of type TYPE whose contents are
6700    saved at VALADDR, if it is non-null, or is at memory address
6701    ADDRESS.  */
6702
6703 static struct value *
6704 value_tag_from_contents_and_address (struct type *type,
6705                                      const gdb_byte *valaddr,
6706                                      CORE_ADDR address)
6707 {
6708   int tag_byte_offset;
6709   struct type *tag_type;
6710
6711   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6712                          NULL, NULL, NULL))
6713     {
6714       const gdb_byte *valaddr1 = ((valaddr == NULL)
6715                                   ? NULL
6716                                   : valaddr + tag_byte_offset);
6717       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6718
6719       return value_from_contents_and_address (tag_type, valaddr1, address1);
6720     }
6721   return NULL;
6722 }
6723
6724 static struct type *
6725 type_from_tag (struct value *tag)
6726 {
6727   const char *type_name = ada_tag_name (tag);
6728
6729   if (type_name != NULL)
6730     return ada_find_any_type (ada_encode (type_name));
6731   return NULL;
6732 }
6733
6734 /* Given a value OBJ of a tagged type, return a value of this
6735    type at the base address of the object.  The base address, as
6736    defined in Ada.Tags, it is the address of the primary tag of
6737    the object, and therefore where the field values of its full
6738    view can be fetched.  */
6739
6740 struct value *
6741 ada_tag_value_at_base_address (struct value *obj)
6742 {
6743   struct value *val;
6744   LONGEST offset_to_top = 0;
6745   struct type *ptr_type, *obj_type;
6746   struct value *tag;
6747   CORE_ADDR base_address;
6748
6749   obj_type = value_type (obj);
6750
6751   /* It is the responsability of the caller to deref pointers.  */
6752
6753   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6754       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6755     return obj;
6756
6757   tag = ada_value_tag (obj);
6758   if (!tag)
6759     return obj;
6760
6761   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6762
6763   if (is_ada95_tag (tag))
6764     return obj;
6765
6766   ptr_type = language_lookup_primitive_type
6767     (language_def (language_ada), target_gdbarch(), "storage_offset");
6768   ptr_type = lookup_pointer_type (ptr_type);
6769   val = value_cast (ptr_type, tag);
6770   if (!val)
6771     return obj;
6772
6773   /* It is perfectly possible that an exception be raised while
6774      trying to determine the base address, just like for the tag;
6775      see ada_tag_name for more details.  We do not print the error
6776      message for the same reason.  */
6777
6778   TRY
6779     {
6780       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6781     }
6782
6783   CATCH (e, RETURN_MASK_ERROR)
6784     {
6785       return obj;
6786     }
6787   END_CATCH
6788
6789   /* If offset is null, nothing to do.  */
6790
6791   if (offset_to_top == 0)
6792     return obj;
6793
6794   /* -1 is a special case in Ada.Tags; however, what should be done
6795      is not quite clear from the documentation.  So do nothing for
6796      now.  */
6797
6798   if (offset_to_top == -1)
6799     return obj;
6800
6801   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6802      from the base address.  This was however incompatible with
6803      C++ dispatch table: C++ uses a *negative* value to *add*
6804      to the base address.  Ada's convention has therefore been
6805      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6806      use the same convention.  Here, we support both cases by
6807      checking the sign of OFFSET_TO_TOP.  */
6808
6809   if (offset_to_top > 0)
6810     offset_to_top = -offset_to_top;
6811
6812   base_address = value_address (obj) + offset_to_top;
6813   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6814
6815   /* Make sure that we have a proper tag at the new address.
6816      Otherwise, offset_to_top is bogus (which can happen when
6817      the object is not initialized yet).  */
6818
6819   if (!tag)
6820     return obj;
6821
6822   obj_type = type_from_tag (tag);
6823
6824   if (!obj_type)
6825     return obj;
6826
6827   return value_from_contents_and_address (obj_type, NULL, base_address);
6828 }
6829
6830 /* Return the "ada__tags__type_specific_data" type.  */
6831
6832 static struct type *
6833 ada_get_tsd_type (struct inferior *inf)
6834 {
6835   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6836
6837   if (data->tsd_type == 0)
6838     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6839   return data->tsd_type;
6840 }
6841
6842 /* Return the TSD (type-specific data) associated to the given TAG.
6843    TAG is assumed to be the tag of a tagged-type entity.
6844
6845    May return NULL if we are unable to get the TSD.  */
6846
6847 static struct value *
6848 ada_get_tsd_from_tag (struct value *tag)
6849 {
6850   struct value *val;
6851   struct type *type;
6852
6853   /* First option: The TSD is simply stored as a field of our TAG.
6854      Only older versions of GNAT would use this format, but we have
6855      to test it first, because there are no visible markers for
6856      the current approach except the absence of that field.  */
6857
6858   val = ada_value_struct_elt (tag, "tsd", 1);
6859   if (val)
6860     return val;
6861
6862   /* Try the second representation for the dispatch table (in which
6863      there is no explicit 'tsd' field in the referent of the tag pointer,
6864      and instead the tsd pointer is stored just before the dispatch
6865      table.  */
6866
6867   type = ada_get_tsd_type (current_inferior());
6868   if (type == NULL)
6869     return NULL;
6870   type = lookup_pointer_type (lookup_pointer_type (type));
6871   val = value_cast (type, tag);
6872   if (val == NULL)
6873     return NULL;
6874   return value_ind (value_ptradd (val, -1));
6875 }
6876
6877 /* Given the TSD of a tag (type-specific data), return a string
6878    containing the name of the associated type.
6879
6880    The returned value is good until the next call.  May return NULL
6881    if we are unable to determine the tag name.  */
6882
6883 static char *
6884 ada_tag_name_from_tsd (struct value *tsd)
6885 {
6886   static char name[1024];
6887   char *p;
6888   struct value *val;
6889
6890   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6891   if (val == NULL)
6892     return NULL;
6893   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6894   for (p = name; *p != '\0'; p += 1)
6895     if (isalpha (*p))
6896       *p = tolower (*p);
6897   return name;
6898 }
6899
6900 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6901    a C string.
6902
6903    Return NULL if the TAG is not an Ada tag, or if we were unable to
6904    determine the name of that tag.  The result is good until the next
6905    call.  */
6906
6907 const char *
6908 ada_tag_name (struct value *tag)
6909 {
6910   char *name = NULL;
6911
6912   if (!ada_is_tag_type (value_type (tag)))
6913     return NULL;
6914
6915   /* It is perfectly possible that an exception be raised while trying
6916      to determine the TAG's name, even under normal circumstances:
6917      The associated variable may be uninitialized or corrupted, for
6918      instance. We do not let any exception propagate past this point.
6919      instead we return NULL.
6920
6921      We also do not print the error message either (which often is very
6922      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6923      the caller print a more meaningful message if necessary.  */
6924   TRY
6925     {
6926       struct value *tsd = ada_get_tsd_from_tag (tag);
6927
6928       if (tsd != NULL)
6929         name = ada_tag_name_from_tsd (tsd);
6930     }
6931   CATCH (e, RETURN_MASK_ERROR)
6932     {
6933     }
6934   END_CATCH
6935
6936   return name;
6937 }
6938
6939 /* The parent type of TYPE, or NULL if none.  */
6940
6941 struct type *
6942 ada_parent_type (struct type *type)
6943 {
6944   int i;
6945
6946   type = ada_check_typedef (type);
6947
6948   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6949     return NULL;
6950
6951   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6952     if (ada_is_parent_field (type, i))
6953       {
6954         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6955
6956         /* If the _parent field is a pointer, then dereference it.  */
6957         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6958           parent_type = TYPE_TARGET_TYPE (parent_type);
6959         /* If there is a parallel XVS type, get the actual base type.  */
6960         parent_type = ada_get_base_type (parent_type);
6961
6962         return ada_check_typedef (parent_type);
6963       }
6964
6965   return NULL;
6966 }
6967
6968 /* True iff field number FIELD_NUM of structure type TYPE contains the
6969    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6970    a structure type with at least FIELD_NUM+1 fields.  */
6971
6972 int
6973 ada_is_parent_field (struct type *type, int field_num)
6974 {
6975   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6976
6977   return (name != NULL
6978           && (startswith (name, "PARENT")
6979               || startswith (name, "_parent")));
6980 }
6981
6982 /* True iff field number FIELD_NUM of structure type TYPE is a
6983    transparent wrapper field (which should be silently traversed when doing
6984    field selection and flattened when printing).  Assumes TYPE is a
6985    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6986    structures.  */
6987
6988 int
6989 ada_is_wrapper_field (struct type *type, int field_num)
6990 {
6991   const char *name = TYPE_FIELD_NAME (type, field_num);
6992
6993   if (name != NULL && strcmp (name, "RETVAL") == 0)
6994     {
6995       /* This happens in functions with "out" or "in out" parameters
6996          which are passed by copy.  For such functions, GNAT describes
6997          the function's return type as being a struct where the return
6998          value is in a field called RETVAL, and where the other "out"
6999          or "in out" parameters are fields of that struct.  This is not
7000          a wrapper.  */
7001       return 0;
7002     }
7003
7004   return (name != NULL
7005           && (startswith (name, "PARENT")
7006               || strcmp (name, "REP") == 0
7007               || startswith (name, "_parent")
7008               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
7009 }
7010
7011 /* True iff field number FIELD_NUM of structure or union type TYPE
7012    is a variant wrapper.  Assumes TYPE is a structure type with at least
7013    FIELD_NUM+1 fields.  */
7014
7015 int
7016 ada_is_variant_part (struct type *type, int field_num)
7017 {
7018   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7019
7020   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7021           || (is_dynamic_field (type, field_num)
7022               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7023                   == TYPE_CODE_UNION)));
7024 }
7025
7026 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7027    whose discriminants are contained in the record type OUTER_TYPE,
7028    returns the type of the controlling discriminant for the variant.
7029    May return NULL if the type could not be found.  */
7030
7031 struct type *
7032 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7033 {
7034   const char *name = ada_variant_discrim_name (var_type);
7035
7036   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7037 }
7038
7039 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7040    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7041    represents a 'when others' clause; otherwise 0.  */
7042
7043 int
7044 ada_is_others_clause (struct type *type, int field_num)
7045 {
7046   const char *name = TYPE_FIELD_NAME (type, field_num);
7047
7048   return (name != NULL && name[0] == 'O');
7049 }
7050
7051 /* Assuming that TYPE0 is the type of the variant part of a record,
7052    returns the name of the discriminant controlling the variant.
7053    The value is valid until the next call to ada_variant_discrim_name.  */
7054
7055 const char *
7056 ada_variant_discrim_name (struct type *type0)
7057 {
7058   static char *result = NULL;
7059   static size_t result_len = 0;
7060   struct type *type;
7061   const char *name;
7062   const char *discrim_end;
7063   const char *discrim_start;
7064
7065   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7066     type = TYPE_TARGET_TYPE (type0);
7067   else
7068     type = type0;
7069
7070   name = ada_type_name (type);
7071
7072   if (name == NULL || name[0] == '\000')
7073     return "";
7074
7075   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7076        discrim_end -= 1)
7077     {
7078       if (startswith (discrim_end, "___XVN"))
7079         break;
7080     }
7081   if (discrim_end == name)
7082     return "";
7083
7084   for (discrim_start = discrim_end; discrim_start != name + 3;
7085        discrim_start -= 1)
7086     {
7087       if (discrim_start == name + 1)
7088         return "";
7089       if ((discrim_start > name + 3
7090            && startswith (discrim_start - 3, "___"))
7091           || discrim_start[-1] == '.')
7092         break;
7093     }
7094
7095   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7096   strncpy (result, discrim_start, discrim_end - discrim_start);
7097   result[discrim_end - discrim_start] = '\0';
7098   return result;
7099 }
7100
7101 /* Scan STR for a subtype-encoded number, beginning at position K.
7102    Put the position of the character just past the number scanned in
7103    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7104    Return 1 if there was a valid number at the given position, and 0
7105    otherwise.  A "subtype-encoded" number consists of the absolute value
7106    in decimal, followed by the letter 'm' to indicate a negative number.
7107    Assumes 0m does not occur.  */
7108
7109 int
7110 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7111 {
7112   ULONGEST RU;
7113
7114   if (!isdigit (str[k]))
7115     return 0;
7116
7117   /* Do it the hard way so as not to make any assumption about
7118      the relationship of unsigned long (%lu scan format code) and
7119      LONGEST.  */
7120   RU = 0;
7121   while (isdigit (str[k]))
7122     {
7123       RU = RU * 10 + (str[k] - '0');
7124       k += 1;
7125     }
7126
7127   if (str[k] == 'm')
7128     {
7129       if (R != NULL)
7130         *R = (-(LONGEST) (RU - 1)) - 1;
7131       k += 1;
7132     }
7133   else if (R != NULL)
7134     *R = (LONGEST) RU;
7135
7136   /* NOTE on the above: Technically, C does not say what the results of
7137      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7138      number representable as a LONGEST (although either would probably work
7139      in most implementations).  When RU>0, the locution in the then branch
7140      above is always equivalent to the negative of RU.  */
7141
7142   if (new_k != NULL)
7143     *new_k = k;
7144   return 1;
7145 }
7146
7147 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7148    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7149    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7150
7151 int
7152 ada_in_variant (LONGEST val, struct type *type, int field_num)
7153 {
7154   const char *name = TYPE_FIELD_NAME (type, field_num);
7155   int p;
7156
7157   p = 0;
7158   while (1)
7159     {
7160       switch (name[p])
7161         {
7162         case '\0':
7163           return 0;
7164         case 'S':
7165           {
7166             LONGEST W;
7167
7168             if (!ada_scan_number (name, p + 1, &W, &p))
7169               return 0;
7170             if (val == W)
7171               return 1;
7172             break;
7173           }
7174         case 'R':
7175           {
7176             LONGEST L, U;
7177
7178             if (!ada_scan_number (name, p + 1, &L, &p)
7179                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7180               return 0;
7181             if (val >= L && val <= U)
7182               return 1;
7183             break;
7184           }
7185         case 'O':
7186           return 1;
7187         default:
7188           return 0;
7189         }
7190     }
7191 }
7192
7193 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7194
7195 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7196    ARG_TYPE, extract and return the value of one of its (non-static)
7197    fields.  FIELDNO says which field.   Differs from value_primitive_field
7198    only in that it can handle packed values of arbitrary type.  */
7199
7200 static struct value *
7201 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7202                            struct type *arg_type)
7203 {
7204   struct type *type;
7205
7206   arg_type = ada_check_typedef (arg_type);
7207   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7208
7209   /* Handle packed fields.  */
7210
7211   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7212     {
7213       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7214       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7215
7216       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7217                                              offset + bit_pos / 8,
7218                                              bit_pos % 8, bit_size, type);
7219     }
7220   else
7221     return value_primitive_field (arg1, offset, fieldno, arg_type);
7222 }
7223
7224 /* Find field with name NAME in object of type TYPE.  If found, 
7225    set the following for each argument that is non-null:
7226     - *FIELD_TYPE_P to the field's type; 
7227     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7228       an object of that type;
7229     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7230     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7231       0 otherwise;
7232    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7233    fields up to but not including the desired field, or by the total
7234    number of fields if not found.   A NULL value of NAME never
7235    matches; the function just counts visible fields in this case.
7236    
7237    Notice that we need to handle when a tagged record hierarchy
7238    has some components with the same name, like in this scenario:
7239
7240       type Top_T is tagged record
7241          N : Integer := 1;
7242          U : Integer := 974;
7243          A : Integer := 48;
7244       end record;
7245
7246       type Middle_T is new Top.Top_T with record
7247          N : Character := 'a';
7248          C : Integer := 3;
7249       end record;
7250
7251      type Bottom_T is new Middle.Middle_T with record
7252         N : Float := 4.0;
7253         C : Character := '5';
7254         X : Integer := 6;
7255         A : Character := 'J';
7256      end record;
7257
7258    Let's say we now have a variable declared and initialized as follow:
7259
7260      TC : Top_A := new Bottom_T;
7261
7262    And then we use this variable to call this function
7263
7264      procedure Assign (Obj: in out Top_T; TV : Integer);
7265
7266    as follow:
7267
7268       Assign (Top_T (B), 12);
7269
7270    Now, we're in the debugger, and we're inside that procedure
7271    then and we want to print the value of obj.c:
7272
7273    Usually, the tagged record or one of the parent type owns the
7274    component to print and there's no issue but in this particular
7275    case, what does it mean to ask for Obj.C? Since the actual
7276    type for object is type Bottom_T, it could mean two things: type
7277    component C from the Middle_T view, but also component C from
7278    Bottom_T.  So in that "undefined" case, when the component is
7279    not found in the non-resolved type (which includes all the
7280    components of the parent type), then resolve it and see if we
7281    get better luck once expanded.
7282
7283    In the case of homonyms in the derived tagged type, we don't
7284    guaranty anything, and pick the one that's easiest for us
7285    to program.
7286
7287    Returns 1 if found, 0 otherwise.  */
7288
7289 static int
7290 find_struct_field (const char *name, struct type *type, int offset,
7291                    struct type **field_type_p,
7292                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7293                    int *index_p)
7294 {
7295   int i;
7296   int parent_offset = -1;
7297
7298   type = ada_check_typedef (type);
7299
7300   if (field_type_p != NULL)
7301     *field_type_p = NULL;
7302   if (byte_offset_p != NULL)
7303     *byte_offset_p = 0;
7304   if (bit_offset_p != NULL)
7305     *bit_offset_p = 0;
7306   if (bit_size_p != NULL)
7307     *bit_size_p = 0;
7308
7309   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7310     {
7311       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7312       int fld_offset = offset + bit_pos / 8;
7313       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7314
7315       if (t_field_name == NULL)
7316         continue;
7317
7318       else if (ada_is_parent_field (type, i))
7319         {
7320           /* This is a field pointing us to the parent type of a tagged
7321              type.  As hinted in this function's documentation, we give
7322              preference to fields in the current record first, so what
7323              we do here is just record the index of this field before
7324              we skip it.  If it turns out we couldn't find our field
7325              in the current record, then we'll get back to it and search
7326              inside it whether the field might exist in the parent.  */
7327
7328           parent_offset = i;
7329           continue;
7330         }
7331
7332       else if (name != NULL && field_name_match (t_field_name, name))
7333         {
7334           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7335
7336           if (field_type_p != NULL)
7337             *field_type_p = TYPE_FIELD_TYPE (type, i);
7338           if (byte_offset_p != NULL)
7339             *byte_offset_p = fld_offset;
7340           if (bit_offset_p != NULL)
7341             *bit_offset_p = bit_pos % 8;
7342           if (bit_size_p != NULL)
7343             *bit_size_p = bit_size;
7344           return 1;
7345         }
7346       else if (ada_is_wrapper_field (type, i))
7347         {
7348           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7349                                  field_type_p, byte_offset_p, bit_offset_p,
7350                                  bit_size_p, index_p))
7351             return 1;
7352         }
7353       else if (ada_is_variant_part (type, i))
7354         {
7355           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7356              fixed type?? */
7357           int j;
7358           struct type *field_type
7359             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7360
7361           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7362             {
7363               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7364                                      fld_offset
7365                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7366                                      field_type_p, byte_offset_p,
7367                                      bit_offset_p, bit_size_p, index_p))
7368                 return 1;
7369             }
7370         }
7371       else if (index_p != NULL)
7372         *index_p += 1;
7373     }
7374
7375   /* Field not found so far.  If this is a tagged type which
7376      has a parent, try finding that field in the parent now.  */
7377
7378   if (parent_offset != -1)
7379     {
7380       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7381       int fld_offset = offset + bit_pos / 8;
7382
7383       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7384                              fld_offset, field_type_p, byte_offset_p,
7385                              bit_offset_p, bit_size_p, index_p))
7386         return 1;
7387     }
7388
7389   return 0;
7390 }
7391
7392 /* Number of user-visible fields in record type TYPE.  */
7393
7394 static int
7395 num_visible_fields (struct type *type)
7396 {
7397   int n;
7398
7399   n = 0;
7400   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7401   return n;
7402 }
7403
7404 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7405    and search in it assuming it has (class) type TYPE.
7406    If found, return value, else return NULL.
7407
7408    Searches recursively through wrapper fields (e.g., '_parent').
7409
7410    In the case of homonyms in the tagged types, please refer to the
7411    long explanation in find_struct_field's function documentation.  */
7412
7413 static struct value *
7414 ada_search_struct_field (const char *name, struct value *arg, int offset,
7415                          struct type *type)
7416 {
7417   int i;
7418   int parent_offset = -1;
7419
7420   type = ada_check_typedef (type);
7421   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7422     {
7423       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7424
7425       if (t_field_name == NULL)
7426         continue;
7427
7428       else if (ada_is_parent_field (type, i))
7429         {
7430           /* This is a field pointing us to the parent type of a tagged
7431              type.  As hinted in this function's documentation, we give
7432              preference to fields in the current record first, so what
7433              we do here is just record the index of this field before
7434              we skip it.  If it turns out we couldn't find our field
7435              in the current record, then we'll get back to it and search
7436              inside it whether the field might exist in the parent.  */
7437
7438           parent_offset = i;
7439           continue;
7440         }
7441
7442       else if (field_name_match (t_field_name, name))
7443         return ada_value_primitive_field (arg, offset, i, type);
7444
7445       else if (ada_is_wrapper_field (type, i))
7446         {
7447           struct value *v =     /* Do not let indent join lines here.  */
7448             ada_search_struct_field (name, arg,
7449                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7450                                      TYPE_FIELD_TYPE (type, i));
7451
7452           if (v != NULL)
7453             return v;
7454         }
7455
7456       else if (ada_is_variant_part (type, i))
7457         {
7458           /* PNH: Do we ever get here?  See find_struct_field.  */
7459           int j;
7460           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7461                                                                         i));
7462           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7463
7464           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7465             {
7466               struct value *v = ada_search_struct_field /* Force line
7467                                                            break.  */
7468                 (name, arg,
7469                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7470                  TYPE_FIELD_TYPE (field_type, j));
7471
7472               if (v != NULL)
7473                 return v;
7474             }
7475         }
7476     }
7477
7478   /* Field not found so far.  If this is a tagged type which
7479      has a parent, try finding that field in the parent now.  */
7480
7481   if (parent_offset != -1)
7482     {
7483       struct value *v = ada_search_struct_field (
7484         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7485         TYPE_FIELD_TYPE (type, parent_offset));
7486
7487       if (v != NULL)
7488         return v;
7489     }
7490
7491   return NULL;
7492 }
7493
7494 static struct value *ada_index_struct_field_1 (int *, struct value *,
7495                                                int, struct type *);
7496
7497
7498 /* Return field #INDEX in ARG, where the index is that returned by
7499  * find_struct_field through its INDEX_P argument.  Adjust the address
7500  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7501  * If found, return value, else return NULL.  */
7502
7503 static struct value *
7504 ada_index_struct_field (int index, struct value *arg, int offset,
7505                         struct type *type)
7506 {
7507   return ada_index_struct_field_1 (&index, arg, offset, type);
7508 }
7509
7510
7511 /* Auxiliary function for ada_index_struct_field.  Like
7512  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7513  * *INDEX_P.  */
7514
7515 static struct value *
7516 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7517                           struct type *type)
7518 {
7519   int i;
7520   type = ada_check_typedef (type);
7521
7522   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7523     {
7524       if (TYPE_FIELD_NAME (type, i) == NULL)
7525         continue;
7526       else if (ada_is_wrapper_field (type, i))
7527         {
7528           struct value *v =     /* Do not let indent join lines here.  */
7529             ada_index_struct_field_1 (index_p, arg,
7530                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7531                                       TYPE_FIELD_TYPE (type, i));
7532
7533           if (v != NULL)
7534             return v;
7535         }
7536
7537       else if (ada_is_variant_part (type, i))
7538         {
7539           /* PNH: Do we ever get here?  See ada_search_struct_field,
7540              find_struct_field.  */
7541           error (_("Cannot assign this kind of variant record"));
7542         }
7543       else if (*index_p == 0)
7544         return ada_value_primitive_field (arg, offset, i, type);
7545       else
7546         *index_p -= 1;
7547     }
7548   return NULL;
7549 }
7550
7551 /* Given ARG, a value of type (pointer or reference to a)*
7552    structure/union, extract the component named NAME from the ultimate
7553    target structure/union and return it as a value with its
7554    appropriate type.
7555
7556    The routine searches for NAME among all members of the structure itself
7557    and (recursively) among all members of any wrapper members
7558    (e.g., '_parent').
7559
7560    If NO_ERR, then simply return NULL in case of error, rather than 
7561    calling error.  */
7562
7563 struct value *
7564 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7565 {
7566   struct type *t, *t1;
7567   struct value *v;
7568   int check_tag;
7569
7570   v = NULL;
7571   t1 = t = ada_check_typedef (value_type (arg));
7572   if (TYPE_CODE (t) == TYPE_CODE_REF)
7573     {
7574       t1 = TYPE_TARGET_TYPE (t);
7575       if (t1 == NULL)
7576         goto BadValue;
7577       t1 = ada_check_typedef (t1);
7578       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7579         {
7580           arg = coerce_ref (arg);
7581           t = t1;
7582         }
7583     }
7584
7585   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7586     {
7587       t1 = TYPE_TARGET_TYPE (t);
7588       if (t1 == NULL)
7589         goto BadValue;
7590       t1 = ada_check_typedef (t1);
7591       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7592         {
7593           arg = value_ind (arg);
7594           t = t1;
7595         }
7596       else
7597         break;
7598     }
7599
7600   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7601     goto BadValue;
7602
7603   if (t1 == t)
7604     v = ada_search_struct_field (name, arg, 0, t);
7605   else
7606     {
7607       int bit_offset, bit_size, byte_offset;
7608       struct type *field_type;
7609       CORE_ADDR address;
7610
7611       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7612         address = value_address (ada_value_ind (arg));
7613       else
7614         address = value_address (ada_coerce_ref (arg));
7615
7616       /* Check to see if this is a tagged type.  We also need to handle
7617          the case where the type is a reference to a tagged type, but
7618          we have to be careful to exclude pointers to tagged types.
7619          The latter should be shown as usual (as a pointer), whereas
7620          a reference should mostly be transparent to the user.  */
7621
7622       if (ada_is_tagged_type (t1, 0)
7623           || (TYPE_CODE (t1) == TYPE_CODE_REF
7624               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7625         {
7626           /* We first try to find the searched field in the current type.
7627              If not found then let's look in the fixed type.  */
7628
7629           if (!find_struct_field (name, t1, 0,
7630                                   &field_type, &byte_offset, &bit_offset,
7631                                   &bit_size, NULL))
7632             check_tag = 1;
7633           else
7634             check_tag = 0;
7635         }
7636       else
7637         check_tag = 0;
7638
7639       /* Convert to fixed type in all cases, so that we have proper
7640          offsets to each field in unconstrained record types.  */
7641       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7642                               address, NULL, check_tag);
7643
7644       if (find_struct_field (name, t1, 0,
7645                              &field_type, &byte_offset, &bit_offset,
7646                              &bit_size, NULL))
7647         {
7648           if (bit_size != 0)
7649             {
7650               if (TYPE_CODE (t) == TYPE_CODE_REF)
7651                 arg = ada_coerce_ref (arg);
7652               else
7653                 arg = ada_value_ind (arg);
7654               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7655                                                   bit_offset, bit_size,
7656                                                   field_type);
7657             }
7658           else
7659             v = value_at_lazy (field_type, address + byte_offset);
7660         }
7661     }
7662
7663   if (v != NULL || no_err)
7664     return v;
7665   else
7666     error (_("There is no member named %s."), name);
7667
7668  BadValue:
7669   if (no_err)
7670     return NULL;
7671   else
7672     error (_("Attempt to extract a component of "
7673              "a value that is not a record."));
7674 }
7675
7676 /* Return a string representation of type TYPE.  */
7677
7678 static std::string
7679 type_as_string (struct type *type)
7680 {
7681   string_file tmp_stream;
7682
7683   type_print (type, "", &tmp_stream, -1);
7684
7685   return std::move (tmp_stream.string ());
7686 }
7687
7688 /* Given a type TYPE, look up the type of the component of type named NAME.
7689    If DISPP is non-null, add its byte displacement from the beginning of a
7690    structure (pointed to by a value) of type TYPE to *DISPP (does not
7691    work for packed fields).
7692
7693    Matches any field whose name has NAME as a prefix, possibly
7694    followed by "___".
7695
7696    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7697    be a (pointer or reference)+ to a struct or union, and the
7698    ultimate target type will be searched.
7699
7700    Looks recursively into variant clauses and parent types.
7701
7702    In the case of homonyms in the tagged types, please refer to the
7703    long explanation in find_struct_field's function documentation.
7704
7705    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7706    TYPE is not a type of the right kind.  */
7707
7708 static struct type *
7709 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7710                             int noerr)
7711 {
7712   int i;
7713   int parent_offset = -1;
7714
7715   if (name == NULL)
7716     goto BadName;
7717
7718   if (refok && type != NULL)
7719     while (1)
7720       {
7721         type = ada_check_typedef (type);
7722         if (TYPE_CODE (type) != TYPE_CODE_PTR
7723             && TYPE_CODE (type) != TYPE_CODE_REF)
7724           break;
7725         type = TYPE_TARGET_TYPE (type);
7726       }
7727
7728   if (type == NULL
7729       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7730           && TYPE_CODE (type) != TYPE_CODE_UNION))
7731     {
7732       if (noerr)
7733         return NULL;
7734
7735       error (_("Type %s is not a structure or union type"),
7736              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7737     }
7738
7739   type = to_static_fixed_type (type);
7740
7741   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7742     {
7743       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7744       struct type *t;
7745
7746       if (t_field_name == NULL)
7747         continue;
7748
7749       else if (ada_is_parent_field (type, i))
7750         {
7751           /* This is a field pointing us to the parent type of a tagged
7752              type.  As hinted in this function's documentation, we give
7753              preference to fields in the current record first, so what
7754              we do here is just record the index of this field before
7755              we skip it.  If it turns out we couldn't find our field
7756              in the current record, then we'll get back to it and search
7757              inside it whether the field might exist in the parent.  */
7758
7759           parent_offset = i;
7760           continue;
7761         }
7762
7763       else if (field_name_match (t_field_name, name))
7764         return TYPE_FIELD_TYPE (type, i);
7765
7766       else if (ada_is_wrapper_field (type, i))
7767         {
7768           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7769                                           0, 1);
7770           if (t != NULL)
7771             return t;
7772         }
7773
7774       else if (ada_is_variant_part (type, i))
7775         {
7776           int j;
7777           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7778                                                                         i));
7779
7780           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7781             {
7782               /* FIXME pnh 2008/01/26: We check for a field that is
7783                  NOT wrapped in a struct, since the compiler sometimes
7784                  generates these for unchecked variant types.  Revisit
7785                  if the compiler changes this practice.  */
7786               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7787
7788               if (v_field_name != NULL 
7789                   && field_name_match (v_field_name, name))
7790                 t = TYPE_FIELD_TYPE (field_type, j);
7791               else
7792                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7793                                                                  j),
7794                                                 name, 0, 1);
7795
7796               if (t != NULL)
7797                 return t;
7798             }
7799         }
7800
7801     }
7802
7803     /* Field not found so far.  If this is a tagged type which
7804        has a parent, try finding that field in the parent now.  */
7805
7806     if (parent_offset != -1)
7807       {
7808         struct type *t;
7809
7810         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7811                                         name, 0, 1);
7812         if (t != NULL)
7813           return t;
7814       }
7815
7816 BadName:
7817   if (!noerr)
7818     {
7819       const char *name_str = name != NULL ? name : _("<null>");
7820
7821       error (_("Type %s has no component named %s"),
7822              type_as_string (type).c_str (), name_str);
7823     }
7824
7825   return NULL;
7826 }
7827
7828 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7829    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7830    represents an unchecked union (that is, the variant part of a
7831    record that is named in an Unchecked_Union pragma).  */
7832
7833 static int
7834 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7835 {
7836   const char *discrim_name = ada_variant_discrim_name (var_type);
7837
7838   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7839 }
7840
7841
7842 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7843    within a value of type OUTER_TYPE that is stored in GDB at
7844    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7845    numbering from 0) is applicable.  Returns -1 if none are.  */
7846
7847 int
7848 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7849                            const gdb_byte *outer_valaddr)
7850 {
7851   int others_clause;
7852   int i;
7853   const char *discrim_name = ada_variant_discrim_name (var_type);
7854   struct value *outer;
7855   struct value *discrim;
7856   LONGEST discrim_val;
7857
7858   /* Using plain value_from_contents_and_address here causes problems
7859      because we will end up trying to resolve a type that is currently
7860      being constructed.  */
7861   outer = value_from_contents_and_address_unresolved (outer_type,
7862                                                       outer_valaddr, 0);
7863   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7864   if (discrim == NULL)
7865     return -1;
7866   discrim_val = value_as_long (discrim);
7867
7868   others_clause = -1;
7869   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7870     {
7871       if (ada_is_others_clause (var_type, i))
7872         others_clause = i;
7873       else if (ada_in_variant (discrim_val, var_type, i))
7874         return i;
7875     }
7876
7877   return others_clause;
7878 }
7879 \f
7880
7881
7882                                 /* Dynamic-Sized Records */
7883
7884 /* Strategy: The type ostensibly attached to a value with dynamic size
7885    (i.e., a size that is not statically recorded in the debugging
7886    data) does not accurately reflect the size or layout of the value.
7887    Our strategy is to convert these values to values with accurate,
7888    conventional types that are constructed on the fly.  */
7889
7890 /* There is a subtle and tricky problem here.  In general, we cannot
7891    determine the size of dynamic records without its data.  However,
7892    the 'struct value' data structure, which GDB uses to represent
7893    quantities in the inferior process (the target), requires the size
7894    of the type at the time of its allocation in order to reserve space
7895    for GDB's internal copy of the data.  That's why the
7896    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7897    rather than struct value*s.
7898
7899    However, GDB's internal history variables ($1, $2, etc.) are
7900    struct value*s containing internal copies of the data that are not, in
7901    general, the same as the data at their corresponding addresses in
7902    the target.  Fortunately, the types we give to these values are all
7903    conventional, fixed-size types (as per the strategy described
7904    above), so that we don't usually have to perform the
7905    'to_fixed_xxx_type' conversions to look at their values.
7906    Unfortunately, there is one exception: if one of the internal
7907    history variables is an array whose elements are unconstrained
7908    records, then we will need to create distinct fixed types for each
7909    element selected.  */
7910
7911 /* The upshot of all of this is that many routines take a (type, host
7912    address, target address) triple as arguments to represent a value.
7913    The host address, if non-null, is supposed to contain an internal
7914    copy of the relevant data; otherwise, the program is to consult the
7915    target at the target address.  */
7916
7917 /* Assuming that VAL0 represents a pointer value, the result of
7918    dereferencing it.  Differs from value_ind in its treatment of
7919    dynamic-sized types.  */
7920
7921 struct value *
7922 ada_value_ind (struct value *val0)
7923 {
7924   struct value *val = value_ind (val0);
7925
7926   if (ada_is_tagged_type (value_type (val), 0))
7927     val = ada_tag_value_at_base_address (val);
7928
7929   return ada_to_fixed_value (val);
7930 }
7931
7932 /* The value resulting from dereferencing any "reference to"
7933    qualifiers on VAL0.  */
7934
7935 static struct value *
7936 ada_coerce_ref (struct value *val0)
7937 {
7938   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7939     {
7940       struct value *val = val0;
7941
7942       val = coerce_ref (val);
7943
7944       if (ada_is_tagged_type (value_type (val), 0))
7945         val = ada_tag_value_at_base_address (val);
7946
7947       return ada_to_fixed_value (val);
7948     }
7949   else
7950     return val0;
7951 }
7952
7953 /* Return OFF rounded upward if necessary to a multiple of
7954    ALIGNMENT (a power of 2).  */
7955
7956 static unsigned int
7957 align_value (unsigned int off, unsigned int alignment)
7958 {
7959   return (off + alignment - 1) & ~(alignment - 1);
7960 }
7961
7962 /* Return the bit alignment required for field #F of template type TYPE.  */
7963
7964 static unsigned int
7965 field_alignment (struct type *type, int f)
7966 {
7967   const char *name = TYPE_FIELD_NAME (type, f);
7968   int len;
7969   int align_offset;
7970
7971   /* The field name should never be null, unless the debugging information
7972      is somehow malformed.  In this case, we assume the field does not
7973      require any alignment.  */
7974   if (name == NULL)
7975     return 1;
7976
7977   len = strlen (name);
7978
7979   if (!isdigit (name[len - 1]))
7980     return 1;
7981
7982   if (isdigit (name[len - 2]))
7983     align_offset = len - 2;
7984   else
7985     align_offset = len - 1;
7986
7987   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7988     return TARGET_CHAR_BIT;
7989
7990   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7991 }
7992
7993 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7994
7995 static struct symbol *
7996 ada_find_any_type_symbol (const char *name)
7997 {
7998   struct symbol *sym;
7999
8000   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
8001   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
8002     return sym;
8003
8004   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
8005   return sym;
8006 }
8007
8008 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
8009    solely for types defined by debug info, it will not search the GDB
8010    primitive types.  */
8011
8012 static struct type *
8013 ada_find_any_type (const char *name)
8014 {
8015   struct symbol *sym = ada_find_any_type_symbol (name);
8016
8017   if (sym != NULL)
8018     return SYMBOL_TYPE (sym);
8019
8020   return NULL;
8021 }
8022
8023 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8024    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8025    symbol, in which case it is returned.  Otherwise, this looks for
8026    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8027    Return symbol if found, and NULL otherwise.  */
8028
8029 struct symbol *
8030 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8031 {
8032   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8033   struct symbol *sym;
8034
8035   if (strstr (name, "___XR") != NULL)
8036      return name_sym;
8037
8038   sym = find_old_style_renaming_symbol (name, block);
8039
8040   if (sym != NULL)
8041     return sym;
8042
8043   /* Not right yet.  FIXME pnh 7/20/2007.  */
8044   sym = ada_find_any_type_symbol (name);
8045   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8046     return sym;
8047   else
8048     return NULL;
8049 }
8050
8051 static struct symbol *
8052 find_old_style_renaming_symbol (const char *name, const struct block *block)
8053 {
8054   const struct symbol *function_sym = block_linkage_function (block);
8055   char *rename;
8056
8057   if (function_sym != NULL)
8058     {
8059       /* If the symbol is defined inside a function, NAME is not fully
8060          qualified.  This means we need to prepend the function name
8061          as well as adding the ``___XR'' suffix to build the name of
8062          the associated renaming symbol.  */
8063       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8064       /* Function names sometimes contain suffixes used
8065          for instance to qualify nested subprograms.  When building
8066          the XR type name, we need to make sure that this suffix is
8067          not included.  So do not include any suffix in the function
8068          name length below.  */
8069       int function_name_len = ada_name_prefix_len (function_name);
8070       const int rename_len = function_name_len + 2      /*  "__" */
8071         + strlen (name) + 6 /* "___XR\0" */ ;
8072
8073       /* Strip the suffix if necessary.  */
8074       ada_remove_trailing_digits (function_name, &function_name_len);
8075       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8076       ada_remove_Xbn_suffix (function_name, &function_name_len);
8077
8078       /* Library-level functions are a special case, as GNAT adds
8079          a ``_ada_'' prefix to the function name to avoid namespace
8080          pollution.  However, the renaming symbols themselves do not
8081          have this prefix, so we need to skip this prefix if present.  */
8082       if (function_name_len > 5 /* "_ada_" */
8083           && strstr (function_name, "_ada_") == function_name)
8084         {
8085           function_name += 5;
8086           function_name_len -= 5;
8087         }
8088
8089       rename = (char *) alloca (rename_len * sizeof (char));
8090       strncpy (rename, function_name, function_name_len);
8091       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8092                  "__%s___XR", name);
8093     }
8094   else
8095     {
8096       const int rename_len = strlen (name) + 6;
8097
8098       rename = (char *) alloca (rename_len * sizeof (char));
8099       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8100     }
8101
8102   return ada_find_any_type_symbol (rename);
8103 }
8104
8105 /* Because of GNAT encoding conventions, several GDB symbols may match a
8106    given type name.  If the type denoted by TYPE0 is to be preferred to
8107    that of TYPE1 for purposes of type printing, return non-zero;
8108    otherwise return 0.  */
8109
8110 int
8111 ada_prefer_type (struct type *type0, struct type *type1)
8112 {
8113   if (type1 == NULL)
8114     return 1;
8115   else if (type0 == NULL)
8116     return 0;
8117   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8118     return 1;
8119   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8120     return 0;
8121   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8122     return 1;
8123   else if (ada_is_constrained_packed_array_type (type0))
8124     return 1;
8125   else if (ada_is_array_descriptor_type (type0)
8126            && !ada_is_array_descriptor_type (type1))
8127     return 1;
8128   else
8129     {
8130       const char *type0_name = TYPE_NAME (type0);
8131       const char *type1_name = TYPE_NAME (type1);
8132
8133       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8134           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8135         return 1;
8136     }
8137   return 0;
8138 }
8139
8140 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8141    null.  */
8142
8143 const char *
8144 ada_type_name (struct type *type)
8145 {
8146   if (type == NULL)
8147     return NULL;
8148   return TYPE_NAME (type);
8149 }
8150
8151 /* Search the list of "descriptive" types associated to TYPE for a type
8152    whose name is NAME.  */
8153
8154 static struct type *
8155 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8156 {
8157   struct type *result, *tmp;
8158
8159   if (ada_ignore_descriptive_types_p)
8160     return NULL;
8161
8162   /* If there no descriptive-type info, then there is no parallel type
8163      to be found.  */
8164   if (!HAVE_GNAT_AUX_INFO (type))
8165     return NULL;
8166
8167   result = TYPE_DESCRIPTIVE_TYPE (type);
8168   while (result != NULL)
8169     {
8170       const char *result_name = ada_type_name (result);
8171
8172       if (result_name == NULL)
8173         {
8174           warning (_("unexpected null name on descriptive type"));
8175           return NULL;
8176         }
8177
8178       /* If the names match, stop.  */
8179       if (strcmp (result_name, name) == 0)
8180         break;
8181
8182       /* Otherwise, look at the next item on the list, if any.  */
8183       if (HAVE_GNAT_AUX_INFO (result))
8184         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8185       else
8186         tmp = NULL;
8187
8188       /* If not found either, try after having resolved the typedef.  */
8189       if (tmp != NULL)
8190         result = tmp;
8191       else
8192         {
8193           result = check_typedef (result);
8194           if (HAVE_GNAT_AUX_INFO (result))
8195             result = TYPE_DESCRIPTIVE_TYPE (result);
8196           else
8197             result = NULL;
8198         }
8199     }
8200
8201   /* If we didn't find a match, see whether this is a packed array.  With
8202      older compilers, the descriptive type information is either absent or
8203      irrelevant when it comes to packed arrays so the above lookup fails.
8204      Fall back to using a parallel lookup by name in this case.  */
8205   if (result == NULL && ada_is_constrained_packed_array_type (type))
8206     return ada_find_any_type (name);
8207
8208   return result;
8209 }
8210
8211 /* Find a parallel type to TYPE with the specified NAME, using the
8212    descriptive type taken from the debugging information, if available,
8213    and otherwise using the (slower) name-based method.  */
8214
8215 static struct type *
8216 ada_find_parallel_type_with_name (struct type *type, const char *name)
8217 {
8218   struct type *result = NULL;
8219
8220   if (HAVE_GNAT_AUX_INFO (type))
8221     result = find_parallel_type_by_descriptive_type (type, name);
8222   else
8223     result = ada_find_any_type (name);
8224
8225   return result;
8226 }
8227
8228 /* Same as above, but specify the name of the parallel type by appending
8229    SUFFIX to the name of TYPE.  */
8230
8231 struct type *
8232 ada_find_parallel_type (struct type *type, const char *suffix)
8233 {
8234   char *name;
8235   const char *type_name = ada_type_name (type);
8236   int len;
8237
8238   if (type_name == NULL)
8239     return NULL;
8240
8241   len = strlen (type_name);
8242
8243   name = (char *) alloca (len + strlen (suffix) + 1);
8244
8245   strcpy (name, type_name);
8246   strcpy (name + len, suffix);
8247
8248   return ada_find_parallel_type_with_name (type, name);
8249 }
8250
8251 /* If TYPE is a variable-size record type, return the corresponding template
8252    type describing its fields.  Otherwise, return NULL.  */
8253
8254 static struct type *
8255 dynamic_template_type (struct type *type)
8256 {
8257   type = ada_check_typedef (type);
8258
8259   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8260       || ada_type_name (type) == NULL)
8261     return NULL;
8262   else
8263     {
8264       int len = strlen (ada_type_name (type));
8265
8266       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8267         return type;
8268       else
8269         return ada_find_parallel_type (type, "___XVE");
8270     }
8271 }
8272
8273 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8274    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8275
8276 static int
8277 is_dynamic_field (struct type *templ_type, int field_num)
8278 {
8279   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8280
8281   return name != NULL
8282     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8283     && strstr (name, "___XVL") != NULL;
8284 }
8285
8286 /* The index of the variant field of TYPE, or -1 if TYPE does not
8287    represent a variant record type.  */
8288
8289 static int
8290 variant_field_index (struct type *type)
8291 {
8292   int f;
8293
8294   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8295     return -1;
8296
8297   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8298     {
8299       if (ada_is_variant_part (type, f))
8300         return f;
8301     }
8302   return -1;
8303 }
8304
8305 /* A record type with no fields.  */
8306
8307 static struct type *
8308 empty_record (struct type *templ)
8309 {
8310   struct type *type = alloc_type_copy (templ);
8311
8312   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8313   TYPE_NFIELDS (type) = 0;
8314   TYPE_FIELDS (type) = NULL;
8315   INIT_CPLUS_SPECIFIC (type);
8316   TYPE_NAME (type) = "<empty>";
8317   TYPE_LENGTH (type) = 0;
8318   return type;
8319 }
8320
8321 /* An ordinary record type (with fixed-length fields) that describes
8322    the value of type TYPE at VALADDR or ADDRESS (see comments at
8323    the beginning of this section) VAL according to GNAT conventions.
8324    DVAL0 should describe the (portion of a) record that contains any
8325    necessary discriminants.  It should be NULL if value_type (VAL) is
8326    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8327    variant field (unless unchecked) is replaced by a particular branch
8328    of the variant.
8329
8330    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8331    length are not statically known are discarded.  As a consequence,
8332    VALADDR, ADDRESS and DVAL0 are ignored.
8333
8334    NOTE: Limitations: For now, we assume that dynamic fields and
8335    variants occupy whole numbers of bytes.  However, they need not be
8336    byte-aligned.  */
8337
8338 struct type *
8339 ada_template_to_fixed_record_type_1 (struct type *type,
8340                                      const gdb_byte *valaddr,
8341                                      CORE_ADDR address, struct value *dval0,
8342                                      int keep_dynamic_fields)
8343 {
8344   struct value *mark = value_mark ();
8345   struct value *dval;
8346   struct type *rtype;
8347   int nfields, bit_len;
8348   int variant_field;
8349   long off;
8350   int fld_bit_len;
8351   int f;
8352
8353   /* Compute the number of fields in this record type that are going
8354      to be processed: unless keep_dynamic_fields, this includes only
8355      fields whose position and length are static will be processed.  */
8356   if (keep_dynamic_fields)
8357     nfields = TYPE_NFIELDS (type);
8358   else
8359     {
8360       nfields = 0;
8361       while (nfields < TYPE_NFIELDS (type)
8362              && !ada_is_variant_part (type, nfields)
8363              && !is_dynamic_field (type, nfields))
8364         nfields++;
8365     }
8366
8367   rtype = alloc_type_copy (type);
8368   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8369   INIT_CPLUS_SPECIFIC (rtype);
8370   TYPE_NFIELDS (rtype) = nfields;
8371   TYPE_FIELDS (rtype) = (struct field *)
8372     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8373   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8374   TYPE_NAME (rtype) = ada_type_name (type);
8375   TYPE_FIXED_INSTANCE (rtype) = 1;
8376
8377   off = 0;
8378   bit_len = 0;
8379   variant_field = -1;
8380
8381   for (f = 0; f < nfields; f += 1)
8382     {
8383       off = align_value (off, field_alignment (type, f))
8384         + TYPE_FIELD_BITPOS (type, f);
8385       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8386       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8387
8388       if (ada_is_variant_part (type, f))
8389         {
8390           variant_field = f;
8391           fld_bit_len = 0;
8392         }
8393       else if (is_dynamic_field (type, f))
8394         {
8395           const gdb_byte *field_valaddr = valaddr;
8396           CORE_ADDR field_address = address;
8397           struct type *field_type =
8398             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8399
8400           if (dval0 == NULL)
8401             {
8402               /* rtype's length is computed based on the run-time
8403                  value of discriminants.  If the discriminants are not
8404                  initialized, the type size may be completely bogus and
8405                  GDB may fail to allocate a value for it.  So check the
8406                  size first before creating the value.  */
8407               ada_ensure_varsize_limit (rtype);
8408               /* Using plain value_from_contents_and_address here
8409                  causes problems because we will end up trying to
8410                  resolve a type that is currently being
8411                  constructed.  */
8412               dval = value_from_contents_and_address_unresolved (rtype,
8413                                                                  valaddr,
8414                                                                  address);
8415               rtype = value_type (dval);
8416             }
8417           else
8418             dval = dval0;
8419
8420           /* If the type referenced by this field is an aligner type, we need
8421              to unwrap that aligner type, because its size might not be set.
8422              Keeping the aligner type would cause us to compute the wrong
8423              size for this field, impacting the offset of the all the fields
8424              that follow this one.  */
8425           if (ada_is_aligner_type (field_type))
8426             {
8427               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8428
8429               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8430               field_address = cond_offset_target (field_address, field_offset);
8431               field_type = ada_aligned_type (field_type);
8432             }
8433
8434           field_valaddr = cond_offset_host (field_valaddr,
8435                                             off / TARGET_CHAR_BIT);
8436           field_address = cond_offset_target (field_address,
8437                                               off / TARGET_CHAR_BIT);
8438
8439           /* Get the fixed type of the field.  Note that, in this case,
8440              we do not want to get the real type out of the tag: if
8441              the current field is the parent part of a tagged record,
8442              we will get the tag of the object.  Clearly wrong: the real
8443              type of the parent is not the real type of the child.  We
8444              would end up in an infinite loop.  */
8445           field_type = ada_get_base_type (field_type);
8446           field_type = ada_to_fixed_type (field_type, field_valaddr,
8447                                           field_address, dval, 0);
8448           /* If the field size is already larger than the maximum
8449              object size, then the record itself will necessarily
8450              be larger than the maximum object size.  We need to make
8451              this check now, because the size might be so ridiculously
8452              large (due to an uninitialized variable in the inferior)
8453              that it would cause an overflow when adding it to the
8454              record size.  */
8455           ada_ensure_varsize_limit (field_type);
8456
8457           TYPE_FIELD_TYPE (rtype, f) = field_type;
8458           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8459           /* The multiplication can potentially overflow.  But because
8460              the field length has been size-checked just above, and
8461              assuming that the maximum size is a reasonable value,
8462              an overflow should not happen in practice.  So rather than
8463              adding overflow recovery code to this already complex code,
8464              we just assume that it's not going to happen.  */
8465           fld_bit_len =
8466             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8467         }
8468       else
8469         {
8470           /* Note: If this field's type is a typedef, it is important
8471              to preserve the typedef layer.
8472
8473              Otherwise, we might be transforming a typedef to a fat
8474              pointer (encoding a pointer to an unconstrained array),
8475              into a basic fat pointer (encoding an unconstrained
8476              array).  As both types are implemented using the same
8477              structure, the typedef is the only clue which allows us
8478              to distinguish between the two options.  Stripping it
8479              would prevent us from printing this field appropriately.  */
8480           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8481           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8482           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8483             fld_bit_len =
8484               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8485           else
8486             {
8487               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8488
8489               /* We need to be careful of typedefs when computing
8490                  the length of our field.  If this is a typedef,
8491                  get the length of the target type, not the length
8492                  of the typedef.  */
8493               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8494                 field_type = ada_typedef_target_type (field_type);
8495
8496               fld_bit_len =
8497                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8498             }
8499         }
8500       if (off + fld_bit_len > bit_len)
8501         bit_len = off + fld_bit_len;
8502       off += fld_bit_len;
8503       TYPE_LENGTH (rtype) =
8504         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8505     }
8506
8507   /* We handle the variant part, if any, at the end because of certain
8508      odd cases in which it is re-ordered so as NOT to be the last field of
8509      the record.  This can happen in the presence of representation
8510      clauses.  */
8511   if (variant_field >= 0)
8512     {
8513       struct type *branch_type;
8514
8515       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8516
8517       if (dval0 == NULL)
8518         {
8519           /* Using plain value_from_contents_and_address here causes
8520              problems because we will end up trying to resolve a type
8521              that is currently being constructed.  */
8522           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8523                                                              address);
8524           rtype = value_type (dval);
8525         }
8526       else
8527         dval = dval0;
8528
8529       branch_type =
8530         to_fixed_variant_branch_type
8531         (TYPE_FIELD_TYPE (type, variant_field),
8532          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8533          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8534       if (branch_type == NULL)
8535         {
8536           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8537             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8538           TYPE_NFIELDS (rtype) -= 1;
8539         }
8540       else
8541         {
8542           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8543           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8544           fld_bit_len =
8545             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8546             TARGET_CHAR_BIT;
8547           if (off + fld_bit_len > bit_len)
8548             bit_len = off + fld_bit_len;
8549           TYPE_LENGTH (rtype) =
8550             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8551         }
8552     }
8553
8554   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8555      should contain the alignment of that record, which should be a strictly
8556      positive value.  If null or negative, then something is wrong, most
8557      probably in the debug info.  In that case, we don't round up the size
8558      of the resulting type.  If this record is not part of another structure,
8559      the current RTYPE length might be good enough for our purposes.  */
8560   if (TYPE_LENGTH (type) <= 0)
8561     {
8562       if (TYPE_NAME (rtype))
8563         warning (_("Invalid type size for `%s' detected: %d."),
8564                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8565       else
8566         warning (_("Invalid type size for <unnamed> detected: %d."),
8567                  TYPE_LENGTH (type));
8568     }
8569   else
8570     {
8571       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8572                                          TYPE_LENGTH (type));
8573     }
8574
8575   value_free_to_mark (mark);
8576   if (TYPE_LENGTH (rtype) > varsize_limit)
8577     error (_("record type with dynamic size is larger than varsize-limit"));
8578   return rtype;
8579 }
8580
8581 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8582    of 1.  */
8583
8584 static struct type *
8585 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8586                                CORE_ADDR address, struct value *dval0)
8587 {
8588   return ada_template_to_fixed_record_type_1 (type, valaddr,
8589                                               address, dval0, 1);
8590 }
8591
8592 /* An ordinary record type in which ___XVL-convention fields and
8593    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8594    static approximations, containing all possible fields.  Uses
8595    no runtime values.  Useless for use in values, but that's OK,
8596    since the results are used only for type determinations.   Works on both
8597    structs and unions.  Representation note: to save space, we memorize
8598    the result of this function in the TYPE_TARGET_TYPE of the
8599    template type.  */
8600
8601 static struct type *
8602 template_to_static_fixed_type (struct type *type0)
8603 {
8604   struct type *type;
8605   int nfields;
8606   int f;
8607
8608   /* No need no do anything if the input type is already fixed.  */
8609   if (TYPE_FIXED_INSTANCE (type0))
8610     return type0;
8611
8612   /* Likewise if we already have computed the static approximation.  */
8613   if (TYPE_TARGET_TYPE (type0) != NULL)
8614     return TYPE_TARGET_TYPE (type0);
8615
8616   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8617   type = type0;
8618   nfields = TYPE_NFIELDS (type0);
8619
8620   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8621      recompute all over next time.  */
8622   TYPE_TARGET_TYPE (type0) = type;
8623
8624   for (f = 0; f < nfields; f += 1)
8625     {
8626       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8627       struct type *new_type;
8628
8629       if (is_dynamic_field (type0, f))
8630         {
8631           field_type = ada_check_typedef (field_type);
8632           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8633         }
8634       else
8635         new_type = static_unwrap_type (field_type);
8636
8637       if (new_type != field_type)
8638         {
8639           /* Clone TYPE0 only the first time we get a new field type.  */
8640           if (type == type0)
8641             {
8642               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8643               TYPE_CODE (type) = TYPE_CODE (type0);
8644               INIT_CPLUS_SPECIFIC (type);
8645               TYPE_NFIELDS (type) = nfields;
8646               TYPE_FIELDS (type) = (struct field *)
8647                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8648               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8649                       sizeof (struct field) * nfields);
8650               TYPE_NAME (type) = ada_type_name (type0);
8651               TYPE_FIXED_INSTANCE (type) = 1;
8652               TYPE_LENGTH (type) = 0;
8653             }
8654           TYPE_FIELD_TYPE (type, f) = new_type;
8655           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8656         }
8657     }
8658
8659   return type;
8660 }
8661
8662 /* Given an object of type TYPE whose contents are at VALADDR and
8663    whose address in memory is ADDRESS, returns a revision of TYPE,
8664    which should be a non-dynamic-sized record, in which the variant
8665    part, if any, is replaced with the appropriate branch.  Looks
8666    for discriminant values in DVAL0, which can be NULL if the record
8667    contains the necessary discriminant values.  */
8668
8669 static struct type *
8670 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8671                                    CORE_ADDR address, struct value *dval0)
8672 {
8673   struct value *mark = value_mark ();
8674   struct value *dval;
8675   struct type *rtype;
8676   struct type *branch_type;
8677   int nfields = TYPE_NFIELDS (type);
8678   int variant_field = variant_field_index (type);
8679
8680   if (variant_field == -1)
8681     return type;
8682
8683   if (dval0 == NULL)
8684     {
8685       dval = value_from_contents_and_address (type, valaddr, address);
8686       type = value_type (dval);
8687     }
8688   else
8689     dval = dval0;
8690
8691   rtype = alloc_type_copy (type);
8692   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8693   INIT_CPLUS_SPECIFIC (rtype);
8694   TYPE_NFIELDS (rtype) = nfields;
8695   TYPE_FIELDS (rtype) =
8696     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8697   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8698           sizeof (struct field) * nfields);
8699   TYPE_NAME (rtype) = ada_type_name (type);
8700   TYPE_FIXED_INSTANCE (rtype) = 1;
8701   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8702
8703   branch_type = to_fixed_variant_branch_type
8704     (TYPE_FIELD_TYPE (type, variant_field),
8705      cond_offset_host (valaddr,
8706                        TYPE_FIELD_BITPOS (type, variant_field)
8707                        / TARGET_CHAR_BIT),
8708      cond_offset_target (address,
8709                          TYPE_FIELD_BITPOS (type, variant_field)
8710                          / TARGET_CHAR_BIT), dval);
8711   if (branch_type == NULL)
8712     {
8713       int f;
8714
8715       for (f = variant_field + 1; f < nfields; f += 1)
8716         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8717       TYPE_NFIELDS (rtype) -= 1;
8718     }
8719   else
8720     {
8721       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8722       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8723       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8724       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8725     }
8726   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8727
8728   value_free_to_mark (mark);
8729   return rtype;
8730 }
8731
8732 /* An ordinary record type (with fixed-length fields) that describes
8733    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8734    beginning of this section].   Any necessary discriminants' values
8735    should be in DVAL, a record value; it may be NULL if the object
8736    at ADDR itself contains any necessary discriminant values.
8737    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8738    values from the record are needed.  Except in the case that DVAL,
8739    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8740    unchecked) is replaced by a particular branch of the variant.
8741
8742    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8743    is questionable and may be removed.  It can arise during the
8744    processing of an unconstrained-array-of-record type where all the
8745    variant branches have exactly the same size.  This is because in
8746    such cases, the compiler does not bother to use the XVS convention
8747    when encoding the record.  I am currently dubious of this
8748    shortcut and suspect the compiler should be altered.  FIXME.  */
8749
8750 static struct type *
8751 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8752                       CORE_ADDR address, struct value *dval)
8753 {
8754   struct type *templ_type;
8755
8756   if (TYPE_FIXED_INSTANCE (type0))
8757     return type0;
8758
8759   templ_type = dynamic_template_type (type0);
8760
8761   if (templ_type != NULL)
8762     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8763   else if (variant_field_index (type0) >= 0)
8764     {
8765       if (dval == NULL && valaddr == NULL && address == 0)
8766         return type0;
8767       return to_record_with_fixed_variant_part (type0, valaddr, address,
8768                                                 dval);
8769     }
8770   else
8771     {
8772       TYPE_FIXED_INSTANCE (type0) = 1;
8773       return type0;
8774     }
8775
8776 }
8777
8778 /* An ordinary record type (with fixed-length fields) that describes
8779    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8780    union type.  Any necessary discriminants' values should be in DVAL,
8781    a record value.  That is, this routine selects the appropriate
8782    branch of the union at ADDR according to the discriminant value
8783    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8784    it represents a variant subject to a pragma Unchecked_Union.  */
8785
8786 static struct type *
8787 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8788                               CORE_ADDR address, struct value *dval)
8789 {
8790   int which;
8791   struct type *templ_type;
8792   struct type *var_type;
8793
8794   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8795     var_type = TYPE_TARGET_TYPE (var_type0);
8796   else
8797     var_type = var_type0;
8798
8799   templ_type = ada_find_parallel_type (var_type, "___XVU");
8800
8801   if (templ_type != NULL)
8802     var_type = templ_type;
8803
8804   if (is_unchecked_variant (var_type, value_type (dval)))
8805       return var_type0;
8806   which =
8807     ada_which_variant_applies (var_type,
8808                                value_type (dval), value_contents (dval));
8809
8810   if (which < 0)
8811     return empty_record (var_type);
8812   else if (is_dynamic_field (var_type, which))
8813     return to_fixed_record_type
8814       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8815        valaddr, address, dval);
8816   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8817     return
8818       to_fixed_record_type
8819       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8820   else
8821     return TYPE_FIELD_TYPE (var_type, which);
8822 }
8823
8824 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8825    ENCODING_TYPE, a type following the GNAT conventions for discrete
8826    type encodings, only carries redundant information.  */
8827
8828 static int
8829 ada_is_redundant_range_encoding (struct type *range_type,
8830                                  struct type *encoding_type)
8831 {
8832   const char *bounds_str;
8833   int n;
8834   LONGEST lo, hi;
8835
8836   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8837
8838   if (TYPE_CODE (get_base_type (range_type))
8839       != TYPE_CODE (get_base_type (encoding_type)))
8840     {
8841       /* The compiler probably used a simple base type to describe
8842          the range type instead of the range's actual base type,
8843          expecting us to get the real base type from the encoding
8844          anyway.  In this situation, the encoding cannot be ignored
8845          as redundant.  */
8846       return 0;
8847     }
8848
8849   if (is_dynamic_type (range_type))
8850     return 0;
8851
8852   if (TYPE_NAME (encoding_type) == NULL)
8853     return 0;
8854
8855   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8856   if (bounds_str == NULL)
8857     return 0;
8858
8859   n = 8; /* Skip "___XDLU_".  */
8860   if (!ada_scan_number (bounds_str, n, &lo, &n))
8861     return 0;
8862   if (TYPE_LOW_BOUND (range_type) != lo)
8863     return 0;
8864
8865   n += 2; /* Skip the "__" separator between the two bounds.  */
8866   if (!ada_scan_number (bounds_str, n, &hi, &n))
8867     return 0;
8868   if (TYPE_HIGH_BOUND (range_type) != hi)
8869     return 0;
8870
8871   return 1;
8872 }
8873
8874 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8875    a type following the GNAT encoding for describing array type
8876    indices, only carries redundant information.  */
8877
8878 static int
8879 ada_is_redundant_index_type_desc (struct type *array_type,
8880                                   struct type *desc_type)
8881 {
8882   struct type *this_layer = check_typedef (array_type);
8883   int i;
8884
8885   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8886     {
8887       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8888                                             TYPE_FIELD_TYPE (desc_type, i)))
8889         return 0;
8890       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8891     }
8892
8893   return 1;
8894 }
8895
8896 /* Assuming that TYPE0 is an array type describing the type of a value
8897    at ADDR, and that DVAL describes a record containing any
8898    discriminants used in TYPE0, returns a type for the value that
8899    contains no dynamic components (that is, no components whose sizes
8900    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8901    true, gives an error message if the resulting type's size is over
8902    varsize_limit.  */
8903
8904 static struct type *
8905 to_fixed_array_type (struct type *type0, struct value *dval,
8906                      int ignore_too_big)
8907 {
8908   struct type *index_type_desc;
8909   struct type *result;
8910   int constrained_packed_array_p;
8911   static const char *xa_suffix = "___XA";
8912
8913   type0 = ada_check_typedef (type0);
8914   if (TYPE_FIXED_INSTANCE (type0))
8915     return type0;
8916
8917   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8918   if (constrained_packed_array_p)
8919     type0 = decode_constrained_packed_array_type (type0);
8920
8921   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8922
8923   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8924      encoding suffixed with 'P' may still be generated.  If so,
8925      it should be used to find the XA type.  */
8926
8927   if (index_type_desc == NULL)
8928     {
8929       const char *type_name = ada_type_name (type0);
8930
8931       if (type_name != NULL)
8932         {
8933           const int len = strlen (type_name);
8934           char *name = (char *) alloca (len + strlen (xa_suffix));
8935
8936           if (type_name[len - 1] == 'P')
8937             {
8938               strcpy (name, type_name);
8939               strcpy (name + len - 1, xa_suffix);
8940               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8941             }
8942         }
8943     }
8944
8945   ada_fixup_array_indexes_type (index_type_desc);
8946   if (index_type_desc != NULL
8947       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8948     {
8949       /* Ignore this ___XA parallel type, as it does not bring any
8950          useful information.  This allows us to avoid creating fixed
8951          versions of the array's index types, which would be identical
8952          to the original ones.  This, in turn, can also help avoid
8953          the creation of fixed versions of the array itself.  */
8954       index_type_desc = NULL;
8955     }
8956
8957   if (index_type_desc == NULL)
8958     {
8959       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8960
8961       /* NOTE: elt_type---the fixed version of elt_type0---should never
8962          depend on the contents of the array in properly constructed
8963          debugging data.  */
8964       /* Create a fixed version of the array element type.
8965          We're not providing the address of an element here,
8966          and thus the actual object value cannot be inspected to do
8967          the conversion.  This should not be a problem, since arrays of
8968          unconstrained objects are not allowed.  In particular, all
8969          the elements of an array of a tagged type should all be of
8970          the same type specified in the debugging info.  No need to
8971          consult the object tag.  */
8972       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8973
8974       /* Make sure we always create a new array type when dealing with
8975          packed array types, since we're going to fix-up the array
8976          type length and element bitsize a little further down.  */
8977       if (elt_type0 == elt_type && !constrained_packed_array_p)
8978         result = type0;
8979       else
8980         result = create_array_type (alloc_type_copy (type0),
8981                                     elt_type, TYPE_INDEX_TYPE (type0));
8982     }
8983   else
8984     {
8985       int i;
8986       struct type *elt_type0;
8987
8988       elt_type0 = type0;
8989       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8990         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8991
8992       /* NOTE: result---the fixed version of elt_type0---should never
8993          depend on the contents of the array in properly constructed
8994          debugging data.  */
8995       /* Create a fixed version of the array element type.
8996          We're not providing the address of an element here,
8997          and thus the actual object value cannot be inspected to do
8998          the conversion.  This should not be a problem, since arrays of
8999          unconstrained objects are not allowed.  In particular, all
9000          the elements of an array of a tagged type should all be of
9001          the same type specified in the debugging info.  No need to
9002          consult the object tag.  */
9003       result =
9004         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
9005
9006       elt_type0 = type0;
9007       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
9008         {
9009           struct type *range_type =
9010             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
9011
9012           result = create_array_type (alloc_type_copy (elt_type0),
9013                                       result, range_type);
9014           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
9015         }
9016       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
9017         error (_("array type with dynamic size is larger than varsize-limit"));
9018     }
9019
9020   /* We want to preserve the type name.  This can be useful when
9021      trying to get the type name of a value that has already been
9022      printed (for instance, if the user did "print VAR; whatis $".  */
9023   TYPE_NAME (result) = TYPE_NAME (type0);
9024
9025   if (constrained_packed_array_p)
9026     {
9027       /* So far, the resulting type has been created as if the original
9028          type was a regular (non-packed) array type.  As a result, the
9029          bitsize of the array elements needs to be set again, and the array
9030          length needs to be recomputed based on that bitsize.  */
9031       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9032       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9033
9034       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9035       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9036       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9037         TYPE_LENGTH (result)++;
9038     }
9039
9040   TYPE_FIXED_INSTANCE (result) = 1;
9041   return result;
9042 }
9043
9044
9045 /* A standard type (containing no dynamically sized components)
9046    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9047    DVAL describes a record containing any discriminants used in TYPE0,
9048    and may be NULL if there are none, or if the object of type TYPE at
9049    ADDRESS or in VALADDR contains these discriminants.
9050    
9051    If CHECK_TAG is not null, in the case of tagged types, this function
9052    attempts to locate the object's tag and use it to compute the actual
9053    type.  However, when ADDRESS is null, we cannot use it to determine the
9054    location of the tag, and therefore compute the tagged type's actual type.
9055    So we return the tagged type without consulting the tag.  */
9056    
9057 static struct type *
9058 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9059                    CORE_ADDR address, struct value *dval, int check_tag)
9060 {
9061   type = ada_check_typedef (type);
9062   switch (TYPE_CODE (type))
9063     {
9064     default:
9065       return type;
9066     case TYPE_CODE_STRUCT:
9067       {
9068         struct type *static_type = to_static_fixed_type (type);
9069         struct type *fixed_record_type =
9070           to_fixed_record_type (type, valaddr, address, NULL);
9071
9072         /* If STATIC_TYPE is a tagged type and we know the object's address,
9073            then we can determine its tag, and compute the object's actual
9074            type from there.  Note that we have to use the fixed record
9075            type (the parent part of the record may have dynamic fields
9076            and the way the location of _tag is expressed may depend on
9077            them).  */
9078
9079         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9080           {
9081             struct value *tag =
9082               value_tag_from_contents_and_address
9083               (fixed_record_type,
9084                valaddr,
9085                address);
9086             struct type *real_type = type_from_tag (tag);
9087             struct value *obj =
9088               value_from_contents_and_address (fixed_record_type,
9089                                                valaddr,
9090                                                address);
9091             fixed_record_type = value_type (obj);
9092             if (real_type != NULL)
9093               return to_fixed_record_type
9094                 (real_type, NULL,
9095                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9096           }
9097
9098         /* Check to see if there is a parallel ___XVZ variable.
9099            If there is, then it provides the actual size of our type.  */
9100         else if (ada_type_name (fixed_record_type) != NULL)
9101           {
9102             const char *name = ada_type_name (fixed_record_type);
9103             char *xvz_name
9104               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9105             bool xvz_found = false;
9106             LONGEST size;
9107
9108             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9109             TRY
9110               {
9111                 xvz_found = get_int_var_value (xvz_name, size);
9112               }
9113             CATCH (except, RETURN_MASK_ERROR)
9114               {
9115                 /* We found the variable, but somehow failed to read
9116                    its value.  Rethrow the same error, but with a little
9117                    bit more information, to help the user understand
9118                    what went wrong (Eg: the variable might have been
9119                    optimized out).  */
9120                 throw_error (except.error,
9121                              _("unable to read value of %s (%s)"),
9122                              xvz_name, except.message);
9123               }
9124             END_CATCH
9125
9126             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9127               {
9128                 fixed_record_type = copy_type (fixed_record_type);
9129                 TYPE_LENGTH (fixed_record_type) = size;
9130
9131                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9132                    observed this when the debugging info is STABS, and
9133                    apparently it is something that is hard to fix.
9134
9135                    In practice, we don't need the actual type definition
9136                    at all, because the presence of the XVZ variable allows us
9137                    to assume that there must be a XVS type as well, which we
9138                    should be able to use later, when we need the actual type
9139                    definition.
9140
9141                    In the meantime, pretend that the "fixed" type we are
9142                    returning is NOT a stub, because this can cause trouble
9143                    when using this type to create new types targeting it.
9144                    Indeed, the associated creation routines often check
9145                    whether the target type is a stub and will try to replace
9146                    it, thus using a type with the wrong size.  This, in turn,
9147                    might cause the new type to have the wrong size too.
9148                    Consider the case of an array, for instance, where the size
9149                    of the array is computed from the number of elements in
9150                    our array multiplied by the size of its element.  */
9151                 TYPE_STUB (fixed_record_type) = 0;
9152               }
9153           }
9154         return fixed_record_type;
9155       }
9156     case TYPE_CODE_ARRAY:
9157       return to_fixed_array_type (type, dval, 1);
9158     case TYPE_CODE_UNION:
9159       if (dval == NULL)
9160         return type;
9161       else
9162         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9163     }
9164 }
9165
9166 /* The same as ada_to_fixed_type_1, except that it preserves the type
9167    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9168
9169    The typedef layer needs be preserved in order to differentiate between
9170    arrays and array pointers when both types are implemented using the same
9171    fat pointer.  In the array pointer case, the pointer is encoded as
9172    a typedef of the pointer type.  For instance, considering:
9173
9174           type String_Access is access String;
9175           S1 : String_Access := null;
9176
9177    To the debugger, S1 is defined as a typedef of type String.  But
9178    to the user, it is a pointer.  So if the user tries to print S1,
9179    we should not dereference the array, but print the array address
9180    instead.
9181
9182    If we didn't preserve the typedef layer, we would lose the fact that
9183    the type is to be presented as a pointer (needs de-reference before
9184    being printed).  And we would also use the source-level type name.  */
9185
9186 struct type *
9187 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9188                    CORE_ADDR address, struct value *dval, int check_tag)
9189
9190 {
9191   struct type *fixed_type =
9192     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9193
9194   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9195       then preserve the typedef layer.
9196
9197       Implementation note: We can only check the main-type portion of
9198       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9199       from TYPE now returns a type that has the same instance flags
9200       as TYPE.  For instance, if TYPE is a "typedef const", and its
9201       target type is a "struct", then the typedef elimination will return
9202       a "const" version of the target type.  See check_typedef for more
9203       details about how the typedef layer elimination is done.
9204
9205       brobecker/2010-11-19: It seems to me that the only case where it is
9206       useful to preserve the typedef layer is when dealing with fat pointers.
9207       Perhaps, we could add a check for that and preserve the typedef layer
9208       only in that situation.  But this seems unecessary so far, probably
9209       because we call check_typedef/ada_check_typedef pretty much everywhere.
9210       */
9211   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9212       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9213           == TYPE_MAIN_TYPE (fixed_type)))
9214     return type;
9215
9216   return fixed_type;
9217 }
9218
9219 /* A standard (static-sized) type corresponding as well as possible to
9220    TYPE0, but based on no runtime data.  */
9221
9222 static struct type *
9223 to_static_fixed_type (struct type *type0)
9224 {
9225   struct type *type;
9226
9227   if (type0 == NULL)
9228     return NULL;
9229
9230   if (TYPE_FIXED_INSTANCE (type0))
9231     return type0;
9232
9233   type0 = ada_check_typedef (type0);
9234
9235   switch (TYPE_CODE (type0))
9236     {
9237     default:
9238       return type0;
9239     case TYPE_CODE_STRUCT:
9240       type = dynamic_template_type (type0);
9241       if (type != NULL)
9242         return template_to_static_fixed_type (type);
9243       else
9244         return template_to_static_fixed_type (type0);
9245     case TYPE_CODE_UNION:
9246       type = ada_find_parallel_type (type0, "___XVU");
9247       if (type != NULL)
9248         return template_to_static_fixed_type (type);
9249       else
9250         return template_to_static_fixed_type (type0);
9251     }
9252 }
9253
9254 /* A static approximation of TYPE with all type wrappers removed.  */
9255
9256 static struct type *
9257 static_unwrap_type (struct type *type)
9258 {
9259   if (ada_is_aligner_type (type))
9260     {
9261       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9262       if (ada_type_name (type1) == NULL)
9263         TYPE_NAME (type1) = ada_type_name (type);
9264
9265       return static_unwrap_type (type1);
9266     }
9267   else
9268     {
9269       struct type *raw_real_type = ada_get_base_type (type);
9270
9271       if (raw_real_type == type)
9272         return type;
9273       else
9274         return to_static_fixed_type (raw_real_type);
9275     }
9276 }
9277
9278 /* In some cases, incomplete and private types require
9279    cross-references that are not resolved as records (for example,
9280       type Foo;
9281       type FooP is access Foo;
9282       V: FooP;
9283       type Foo is array ...;
9284    ).  In these cases, since there is no mechanism for producing
9285    cross-references to such types, we instead substitute for FooP a
9286    stub enumeration type that is nowhere resolved, and whose tag is
9287    the name of the actual type.  Call these types "non-record stubs".  */
9288
9289 /* A type equivalent to TYPE that is not a non-record stub, if one
9290    exists, otherwise TYPE.  */
9291
9292 struct type *
9293 ada_check_typedef (struct type *type)
9294 {
9295   if (type == NULL)
9296     return NULL;
9297
9298   /* If our type is an access to an unconstrained array, which is encoded
9299      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9300      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9301      what allows us to distinguish between fat pointers that represent
9302      array types, and fat pointers that represent array access types
9303      (in both cases, the compiler implements them as fat pointers).  */
9304   if (ada_is_access_to_unconstrained_array (type))
9305     return type;
9306
9307   type = check_typedef (type);
9308   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9309       || !TYPE_STUB (type)
9310       || TYPE_NAME (type) == NULL)
9311     return type;
9312   else
9313     {
9314       const char *name = TYPE_NAME (type);
9315       struct type *type1 = ada_find_any_type (name);
9316
9317       if (type1 == NULL)
9318         return type;
9319
9320       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9321          stubs pointing to arrays, as we don't create symbols for array
9322          types, only for the typedef-to-array types).  If that's the case,
9323          strip the typedef layer.  */
9324       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9325         type1 = ada_check_typedef (type1);
9326
9327       return type1;
9328     }
9329 }
9330
9331 /* A value representing the data at VALADDR/ADDRESS as described by
9332    type TYPE0, but with a standard (static-sized) type that correctly
9333    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9334    type, then return VAL0 [this feature is simply to avoid redundant
9335    creation of struct values].  */
9336
9337 static struct value *
9338 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9339                            struct value *val0)
9340 {
9341   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9342
9343   if (type == type0 && val0 != NULL)
9344     return val0;
9345
9346   if (VALUE_LVAL (val0) != lval_memory)
9347     {
9348       /* Our value does not live in memory; it could be a convenience
9349          variable, for instance.  Create a not_lval value using val0's
9350          contents.  */
9351       return value_from_contents (type, value_contents (val0));
9352     }
9353
9354   return value_from_contents_and_address (type, 0, address);
9355 }
9356
9357 /* A value representing VAL, but with a standard (static-sized) type
9358    that correctly describes it.  Does not necessarily create a new
9359    value.  */
9360
9361 struct value *
9362 ada_to_fixed_value (struct value *val)
9363 {
9364   val = unwrap_value (val);
9365   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9366   return val;
9367 }
9368 \f
9369
9370 /* Attributes */
9371
9372 /* Table mapping attribute numbers to names.
9373    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9374
9375 static const char *attribute_names[] = {
9376   "<?>",
9377
9378   "first",
9379   "last",
9380   "length",
9381   "image",
9382   "max",
9383   "min",
9384   "modulus",
9385   "pos",
9386   "size",
9387   "tag",
9388   "val",
9389   0
9390 };
9391
9392 const char *
9393 ada_attribute_name (enum exp_opcode n)
9394 {
9395   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9396     return attribute_names[n - OP_ATR_FIRST + 1];
9397   else
9398     return attribute_names[0];
9399 }
9400
9401 /* Evaluate the 'POS attribute applied to ARG.  */
9402
9403 static LONGEST
9404 pos_atr (struct value *arg)
9405 {
9406   struct value *val = coerce_ref (arg);
9407   struct type *type = value_type (val);
9408   LONGEST result;
9409
9410   if (!discrete_type_p (type))
9411     error (_("'POS only defined on discrete types"));
9412
9413   if (!discrete_position (type, value_as_long (val), &result))
9414     error (_("enumeration value is invalid: can't find 'POS"));
9415
9416   return result;
9417 }
9418
9419 static struct value *
9420 value_pos_atr (struct type *type, struct value *arg)
9421 {
9422   return value_from_longest (type, pos_atr (arg));
9423 }
9424
9425 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9426
9427 static struct value *
9428 value_val_atr (struct type *type, struct value *arg)
9429 {
9430   if (!discrete_type_p (type))
9431     error (_("'VAL only defined on discrete types"));
9432   if (!integer_type_p (value_type (arg)))
9433     error (_("'VAL requires integral argument"));
9434
9435   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9436     {
9437       long pos = value_as_long (arg);
9438
9439       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9440         error (_("argument to 'VAL out of range"));
9441       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9442     }
9443   else
9444     return value_from_longest (type, value_as_long (arg));
9445 }
9446 \f
9447
9448                                 /* Evaluation */
9449
9450 /* True if TYPE appears to be an Ada character type.
9451    [At the moment, this is true only for Character and Wide_Character;
9452    It is a heuristic test that could stand improvement].  */
9453
9454 int
9455 ada_is_character_type (struct type *type)
9456 {
9457   const char *name;
9458
9459   /* If the type code says it's a character, then assume it really is,
9460      and don't check any further.  */
9461   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9462     return 1;
9463   
9464   /* Otherwise, assume it's a character type iff it is a discrete type
9465      with a known character type name.  */
9466   name = ada_type_name (type);
9467   return (name != NULL
9468           && (TYPE_CODE (type) == TYPE_CODE_INT
9469               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9470           && (strcmp (name, "character") == 0
9471               || strcmp (name, "wide_character") == 0
9472               || strcmp (name, "wide_wide_character") == 0
9473               || strcmp (name, "unsigned char") == 0));
9474 }
9475
9476 /* True if TYPE appears to be an Ada string type.  */
9477
9478 int
9479 ada_is_string_type (struct type *type)
9480 {
9481   type = ada_check_typedef (type);
9482   if (type != NULL
9483       && TYPE_CODE (type) != TYPE_CODE_PTR
9484       && (ada_is_simple_array_type (type)
9485           || ada_is_array_descriptor_type (type))
9486       && ada_array_arity (type) == 1)
9487     {
9488       struct type *elttype = ada_array_element_type (type, 1);
9489
9490       return ada_is_character_type (elttype);
9491     }
9492   else
9493     return 0;
9494 }
9495
9496 /* The compiler sometimes provides a parallel XVS type for a given
9497    PAD type.  Normally, it is safe to follow the PAD type directly,
9498    but older versions of the compiler have a bug that causes the offset
9499    of its "F" field to be wrong.  Following that field in that case
9500    would lead to incorrect results, but this can be worked around
9501    by ignoring the PAD type and using the associated XVS type instead.
9502
9503    Set to True if the debugger should trust the contents of PAD types.
9504    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9505 static int trust_pad_over_xvs = 1;
9506
9507 /* True if TYPE is a struct type introduced by the compiler to force the
9508    alignment of a value.  Such types have a single field with a
9509    distinctive name.  */
9510
9511 int
9512 ada_is_aligner_type (struct type *type)
9513 {
9514   type = ada_check_typedef (type);
9515
9516   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9517     return 0;
9518
9519   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9520           && TYPE_NFIELDS (type) == 1
9521           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9522 }
9523
9524 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9525    the parallel type.  */
9526
9527 struct type *
9528 ada_get_base_type (struct type *raw_type)
9529 {
9530   struct type *real_type_namer;
9531   struct type *raw_real_type;
9532
9533   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9534     return raw_type;
9535
9536   if (ada_is_aligner_type (raw_type))
9537     /* The encoding specifies that we should always use the aligner type.
9538        So, even if this aligner type has an associated XVS type, we should
9539        simply ignore it.
9540
9541        According to the compiler gurus, an XVS type parallel to an aligner
9542        type may exist because of a stabs limitation.  In stabs, aligner
9543        types are empty because the field has a variable-sized type, and
9544        thus cannot actually be used as an aligner type.  As a result,
9545        we need the associated parallel XVS type to decode the type.
9546        Since the policy in the compiler is to not change the internal
9547        representation based on the debugging info format, we sometimes
9548        end up having a redundant XVS type parallel to the aligner type.  */
9549     return raw_type;
9550
9551   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9552   if (real_type_namer == NULL
9553       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9554       || TYPE_NFIELDS (real_type_namer) != 1)
9555     return raw_type;
9556
9557   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9558     {
9559       /* This is an older encoding form where the base type needs to be
9560          looked up by name.  We prefer the newer enconding because it is
9561          more efficient.  */
9562       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9563       if (raw_real_type == NULL)
9564         return raw_type;
9565       else
9566         return raw_real_type;
9567     }
9568
9569   /* The field in our XVS type is a reference to the base type.  */
9570   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9571 }
9572
9573 /* The type of value designated by TYPE, with all aligners removed.  */
9574
9575 struct type *
9576 ada_aligned_type (struct type *type)
9577 {
9578   if (ada_is_aligner_type (type))
9579     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9580   else
9581     return ada_get_base_type (type);
9582 }
9583
9584
9585 /* The address of the aligned value in an object at address VALADDR
9586    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9587
9588 const gdb_byte *
9589 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9590 {
9591   if (ada_is_aligner_type (type))
9592     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9593                                    valaddr +
9594                                    TYPE_FIELD_BITPOS (type,
9595                                                       0) / TARGET_CHAR_BIT);
9596   else
9597     return valaddr;
9598 }
9599
9600
9601
9602 /* The printed representation of an enumeration literal with encoded
9603    name NAME.  The value is good to the next call of ada_enum_name.  */
9604 const char *
9605 ada_enum_name (const char *name)
9606 {
9607   static char *result;
9608   static size_t result_len = 0;
9609   const char *tmp;
9610
9611   /* First, unqualify the enumeration name:
9612      1. Search for the last '.' character.  If we find one, then skip
9613      all the preceding characters, the unqualified name starts
9614      right after that dot.
9615      2. Otherwise, we may be debugging on a target where the compiler
9616      translates dots into "__".  Search forward for double underscores,
9617      but stop searching when we hit an overloading suffix, which is
9618      of the form "__" followed by digits.  */
9619
9620   tmp = strrchr (name, '.');
9621   if (tmp != NULL)
9622     name = tmp + 1;
9623   else
9624     {
9625       while ((tmp = strstr (name, "__")) != NULL)
9626         {
9627           if (isdigit (tmp[2]))
9628             break;
9629           else
9630             name = tmp + 2;
9631         }
9632     }
9633
9634   if (name[0] == 'Q')
9635     {
9636       int v;
9637
9638       if (name[1] == 'U' || name[1] == 'W')
9639         {
9640           if (sscanf (name + 2, "%x", &v) != 1)
9641             return name;
9642         }
9643       else
9644         return name;
9645
9646       GROW_VECT (result, result_len, 16);
9647       if (isascii (v) && isprint (v))
9648         xsnprintf (result, result_len, "'%c'", v);
9649       else if (name[1] == 'U')
9650         xsnprintf (result, result_len, "[\"%02x\"]", v);
9651       else
9652         xsnprintf (result, result_len, "[\"%04x\"]", v);
9653
9654       return result;
9655     }
9656   else
9657     {
9658       tmp = strstr (name, "__");
9659       if (tmp == NULL)
9660         tmp = strstr (name, "$");
9661       if (tmp != NULL)
9662         {
9663           GROW_VECT (result, result_len, tmp - name + 1);
9664           strncpy (result, name, tmp - name);
9665           result[tmp - name] = '\0';
9666           return result;
9667         }
9668
9669       return name;
9670     }
9671 }
9672
9673 /* Evaluate the subexpression of EXP starting at *POS as for
9674    evaluate_type, updating *POS to point just past the evaluated
9675    expression.  */
9676
9677 static struct value *
9678 evaluate_subexp_type (struct expression *exp, int *pos)
9679 {
9680   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9681 }
9682
9683 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9684    value it wraps.  */
9685
9686 static struct value *
9687 unwrap_value (struct value *val)
9688 {
9689   struct type *type = ada_check_typedef (value_type (val));
9690
9691   if (ada_is_aligner_type (type))
9692     {
9693       struct value *v = ada_value_struct_elt (val, "F", 0);
9694       struct type *val_type = ada_check_typedef (value_type (v));
9695
9696       if (ada_type_name (val_type) == NULL)
9697         TYPE_NAME (val_type) = ada_type_name (type);
9698
9699       return unwrap_value (v);
9700     }
9701   else
9702     {
9703       struct type *raw_real_type =
9704         ada_check_typedef (ada_get_base_type (type));
9705
9706       /* If there is no parallel XVS or XVE type, then the value is
9707          already unwrapped.  Return it without further modification.  */
9708       if ((type == raw_real_type)
9709           && ada_find_parallel_type (type, "___XVE") == NULL)
9710         return val;
9711
9712       return
9713         coerce_unspec_val_to_type
9714         (val, ada_to_fixed_type (raw_real_type, 0,
9715                                  value_address (val),
9716                                  NULL, 1));
9717     }
9718 }
9719
9720 static struct value *
9721 cast_from_fixed (struct type *type, struct value *arg)
9722 {
9723   struct value *scale = ada_scaling_factor (value_type (arg));
9724   arg = value_cast (value_type (scale), arg);
9725
9726   arg = value_binop (arg, scale, BINOP_MUL);
9727   return value_cast (type, arg);
9728 }
9729
9730 static struct value *
9731 cast_to_fixed (struct type *type, struct value *arg)
9732 {
9733   if (type == value_type (arg))
9734     return arg;
9735
9736   struct value *scale = ada_scaling_factor (type);
9737   if (ada_is_fixed_point_type (value_type (arg)))
9738     arg = cast_from_fixed (value_type (scale), arg);
9739   else
9740     arg = value_cast (value_type (scale), arg);
9741
9742   arg = value_binop (arg, scale, BINOP_DIV);
9743   return value_cast (type, arg);
9744 }
9745
9746 /* Given two array types T1 and T2, return nonzero iff both arrays
9747    contain the same number of elements.  */
9748
9749 static int
9750 ada_same_array_size_p (struct type *t1, struct type *t2)
9751 {
9752   LONGEST lo1, hi1, lo2, hi2;
9753
9754   /* Get the array bounds in order to verify that the size of
9755      the two arrays match.  */
9756   if (!get_array_bounds (t1, &lo1, &hi1)
9757       || !get_array_bounds (t2, &lo2, &hi2))
9758     error (_("unable to determine array bounds"));
9759
9760   /* To make things easier for size comparison, normalize a bit
9761      the case of empty arrays by making sure that the difference
9762      between upper bound and lower bound is always -1.  */
9763   if (lo1 > hi1)
9764     hi1 = lo1 - 1;
9765   if (lo2 > hi2)
9766     hi2 = lo2 - 1;
9767
9768   return (hi1 - lo1 == hi2 - lo2);
9769 }
9770
9771 /* Assuming that VAL is an array of integrals, and TYPE represents
9772    an array with the same number of elements, but with wider integral
9773    elements, return an array "casted" to TYPE.  In practice, this
9774    means that the returned array is built by casting each element
9775    of the original array into TYPE's (wider) element type.  */
9776
9777 static struct value *
9778 ada_promote_array_of_integrals (struct type *type, struct value *val)
9779 {
9780   struct type *elt_type = TYPE_TARGET_TYPE (type);
9781   LONGEST lo, hi;
9782   struct value *res;
9783   LONGEST i;
9784
9785   /* Verify that both val and type are arrays of scalars, and
9786      that the size of val's elements is smaller than the size
9787      of type's element.  */
9788   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9789   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9790   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9791   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9792   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9793               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9794
9795   if (!get_array_bounds (type, &lo, &hi))
9796     error (_("unable to determine array bounds"));
9797
9798   res = allocate_value (type);
9799
9800   /* Promote each array element.  */
9801   for (i = 0; i < hi - lo + 1; i++)
9802     {
9803       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9804
9805       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9806               value_contents_all (elt), TYPE_LENGTH (elt_type));
9807     }
9808
9809   return res;
9810 }
9811
9812 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9813    return the converted value.  */
9814
9815 static struct value *
9816 coerce_for_assign (struct type *type, struct value *val)
9817 {
9818   struct type *type2 = value_type (val);
9819
9820   if (type == type2)
9821     return val;
9822
9823   type2 = ada_check_typedef (type2);
9824   type = ada_check_typedef (type);
9825
9826   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9827       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9828     {
9829       val = ada_value_ind (val);
9830       type2 = value_type (val);
9831     }
9832
9833   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9834       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9835     {
9836       if (!ada_same_array_size_p (type, type2))
9837         error (_("cannot assign arrays of different length"));
9838
9839       if (is_integral_type (TYPE_TARGET_TYPE (type))
9840           && is_integral_type (TYPE_TARGET_TYPE (type2))
9841           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9842                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9843         {
9844           /* Allow implicit promotion of the array elements to
9845              a wider type.  */
9846           return ada_promote_array_of_integrals (type, val);
9847         }
9848
9849       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9850           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9851         error (_("Incompatible types in assignment"));
9852       deprecated_set_value_type (val, type);
9853     }
9854   return val;
9855 }
9856
9857 static struct value *
9858 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9859 {
9860   struct value *val;
9861   struct type *type1, *type2;
9862   LONGEST v, v1, v2;
9863
9864   arg1 = coerce_ref (arg1);
9865   arg2 = coerce_ref (arg2);
9866   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9867   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9868
9869   if (TYPE_CODE (type1) != TYPE_CODE_INT
9870       || TYPE_CODE (type2) != TYPE_CODE_INT)
9871     return value_binop (arg1, arg2, op);
9872
9873   switch (op)
9874     {
9875     case BINOP_MOD:
9876     case BINOP_DIV:
9877     case BINOP_REM:
9878       break;
9879     default:
9880       return value_binop (arg1, arg2, op);
9881     }
9882
9883   v2 = value_as_long (arg2);
9884   if (v2 == 0)
9885     error (_("second operand of %s must not be zero."), op_string (op));
9886
9887   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9888     return value_binop (arg1, arg2, op);
9889
9890   v1 = value_as_long (arg1);
9891   switch (op)
9892     {
9893     case BINOP_DIV:
9894       v = v1 / v2;
9895       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9896         v += v > 0 ? -1 : 1;
9897       break;
9898     case BINOP_REM:
9899       v = v1 % v2;
9900       if (v * v1 < 0)
9901         v -= v2;
9902       break;
9903     default:
9904       /* Should not reach this point.  */
9905       v = 0;
9906     }
9907
9908   val = allocate_value (type1);
9909   store_unsigned_integer (value_contents_raw (val),
9910                           TYPE_LENGTH (value_type (val)),
9911                           gdbarch_byte_order (get_type_arch (type1)), v);
9912   return val;
9913 }
9914
9915 static int
9916 ada_value_equal (struct value *arg1, struct value *arg2)
9917 {
9918   if (ada_is_direct_array_type (value_type (arg1))
9919       || ada_is_direct_array_type (value_type (arg2)))
9920     {
9921       struct type *arg1_type, *arg2_type;
9922
9923       /* Automatically dereference any array reference before
9924          we attempt to perform the comparison.  */
9925       arg1 = ada_coerce_ref (arg1);
9926       arg2 = ada_coerce_ref (arg2);
9927
9928       arg1 = ada_coerce_to_simple_array (arg1);
9929       arg2 = ada_coerce_to_simple_array (arg2);
9930
9931       arg1_type = ada_check_typedef (value_type (arg1));
9932       arg2_type = ada_check_typedef (value_type (arg2));
9933
9934       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9935           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9936         error (_("Attempt to compare array with non-array"));
9937       /* FIXME: The following works only for types whose
9938          representations use all bits (no padding or undefined bits)
9939          and do not have user-defined equality.  */
9940       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9941               && memcmp (value_contents (arg1), value_contents (arg2),
9942                          TYPE_LENGTH (arg1_type)) == 0);
9943     }
9944   return value_equal (arg1, arg2);
9945 }
9946
9947 /* Total number of component associations in the aggregate starting at
9948    index PC in EXP.  Assumes that index PC is the start of an
9949    OP_AGGREGATE.  */
9950
9951 static int
9952 num_component_specs (struct expression *exp, int pc)
9953 {
9954   int n, m, i;
9955
9956   m = exp->elts[pc + 1].longconst;
9957   pc += 3;
9958   n = 0;
9959   for (i = 0; i < m; i += 1)
9960     {
9961       switch (exp->elts[pc].opcode) 
9962         {
9963         default:
9964           n += 1;
9965           break;
9966         case OP_CHOICES:
9967           n += exp->elts[pc + 1].longconst;
9968           break;
9969         }
9970       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9971     }
9972   return n;
9973 }
9974
9975 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9976    component of LHS (a simple array or a record), updating *POS past
9977    the expression, assuming that LHS is contained in CONTAINER.  Does
9978    not modify the inferior's memory, nor does it modify LHS (unless
9979    LHS == CONTAINER).  */
9980
9981 static void
9982 assign_component (struct value *container, struct value *lhs, LONGEST index,
9983                   struct expression *exp, int *pos)
9984 {
9985   struct value *mark = value_mark ();
9986   struct value *elt;
9987   struct type *lhs_type = check_typedef (value_type (lhs));
9988
9989   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9990     {
9991       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9992       struct value *index_val = value_from_longest (index_type, index);
9993
9994       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9995     }
9996   else
9997     {
9998       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9999       elt = ada_to_fixed_value (elt);
10000     }
10001
10002   if (exp->elts[*pos].opcode == OP_AGGREGATE)
10003     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
10004   else
10005     value_assign_to_component (container, elt, 
10006                                ada_evaluate_subexp (NULL, exp, pos, 
10007                                                     EVAL_NORMAL));
10008
10009   value_free_to_mark (mark);
10010 }
10011
10012 /* Assuming that LHS represents an lvalue having a record or array
10013    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
10014    of that aggregate's value to LHS, advancing *POS past the
10015    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10016    lvalue containing LHS (possibly LHS itself).  Does not modify
10017    the inferior's memory, nor does it modify the contents of 
10018    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10019
10020 static struct value *
10021 assign_aggregate (struct value *container, 
10022                   struct value *lhs, struct expression *exp, 
10023                   int *pos, enum noside noside)
10024 {
10025   struct type *lhs_type;
10026   int n = exp->elts[*pos+1].longconst;
10027   LONGEST low_index, high_index;
10028   int num_specs;
10029   LONGEST *indices;
10030   int max_indices, num_indices;
10031   int i;
10032
10033   *pos += 3;
10034   if (noside != EVAL_NORMAL)
10035     {
10036       for (i = 0; i < n; i += 1)
10037         ada_evaluate_subexp (NULL, exp, pos, noside);
10038       return container;
10039     }
10040
10041   container = ada_coerce_ref (container);
10042   if (ada_is_direct_array_type (value_type (container)))
10043     container = ada_coerce_to_simple_array (container);
10044   lhs = ada_coerce_ref (lhs);
10045   if (!deprecated_value_modifiable (lhs))
10046     error (_("Left operand of assignment is not a modifiable lvalue."));
10047
10048   lhs_type = check_typedef (value_type (lhs));
10049   if (ada_is_direct_array_type (lhs_type))
10050     {
10051       lhs = ada_coerce_to_simple_array (lhs);
10052       lhs_type = check_typedef (value_type (lhs));
10053       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10054       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10055     }
10056   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10057     {
10058       low_index = 0;
10059       high_index = num_visible_fields (lhs_type) - 1;
10060     }
10061   else
10062     error (_("Left-hand side must be array or record."));
10063
10064   num_specs = num_component_specs (exp, *pos - 3);
10065   max_indices = 4 * num_specs + 4;
10066   indices = XALLOCAVEC (LONGEST, max_indices);
10067   indices[0] = indices[1] = low_index - 1;
10068   indices[2] = indices[3] = high_index + 1;
10069   num_indices = 4;
10070
10071   for (i = 0; i < n; i += 1)
10072     {
10073       switch (exp->elts[*pos].opcode)
10074         {
10075           case OP_CHOICES:
10076             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10077                                            &num_indices, max_indices,
10078                                            low_index, high_index);
10079             break;
10080           case OP_POSITIONAL:
10081             aggregate_assign_positional (container, lhs, exp, pos, indices,
10082                                          &num_indices, max_indices,
10083                                          low_index, high_index);
10084             break;
10085           case OP_OTHERS:
10086             if (i != n-1)
10087               error (_("Misplaced 'others' clause"));
10088             aggregate_assign_others (container, lhs, exp, pos, indices, 
10089                                      num_indices, low_index, high_index);
10090             break;
10091           default:
10092             error (_("Internal error: bad aggregate clause"));
10093         }
10094     }
10095
10096   return container;
10097 }
10098               
10099 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10100    construct at *POS, updating *POS past the construct, given that
10101    the positions are relative to lower bound LOW, where HIGH is the 
10102    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10103    updating *NUM_INDICES as needed.  CONTAINER is as for
10104    assign_aggregate.  */
10105 static void
10106 aggregate_assign_positional (struct value *container,
10107                              struct value *lhs, struct expression *exp,
10108                              int *pos, LONGEST *indices, int *num_indices,
10109                              int max_indices, LONGEST low, LONGEST high) 
10110 {
10111   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10112   
10113   if (ind - 1 == high)
10114     warning (_("Extra components in aggregate ignored."));
10115   if (ind <= high)
10116     {
10117       add_component_interval (ind, ind, indices, num_indices, max_indices);
10118       *pos += 3;
10119       assign_component (container, lhs, ind, exp, pos);
10120     }
10121   else
10122     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10123 }
10124
10125 /* Assign into the components of LHS indexed by the OP_CHOICES
10126    construct at *POS, updating *POS past the construct, given that
10127    the allowable indices are LOW..HIGH.  Record the indices assigned
10128    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10129    needed.  CONTAINER is as for assign_aggregate.  */
10130 static void
10131 aggregate_assign_from_choices (struct value *container,
10132                                struct value *lhs, struct expression *exp,
10133                                int *pos, LONGEST *indices, int *num_indices,
10134                                int max_indices, LONGEST low, LONGEST high) 
10135 {
10136   int j;
10137   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10138   int choice_pos, expr_pc;
10139   int is_array = ada_is_direct_array_type (value_type (lhs));
10140
10141   choice_pos = *pos += 3;
10142
10143   for (j = 0; j < n_choices; j += 1)
10144     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10145   expr_pc = *pos;
10146   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10147   
10148   for (j = 0; j < n_choices; j += 1)
10149     {
10150       LONGEST lower, upper;
10151       enum exp_opcode op = exp->elts[choice_pos].opcode;
10152
10153       if (op == OP_DISCRETE_RANGE)
10154         {
10155           choice_pos += 1;
10156           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10157                                                       EVAL_NORMAL));
10158           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10159                                                       EVAL_NORMAL));
10160         }
10161       else if (is_array)
10162         {
10163           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10164                                                       EVAL_NORMAL));
10165           upper = lower;
10166         }
10167       else
10168         {
10169           int ind;
10170           const char *name;
10171
10172           switch (op)
10173             {
10174             case OP_NAME:
10175               name = &exp->elts[choice_pos + 2].string;
10176               break;
10177             case OP_VAR_VALUE:
10178               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10179               break;
10180             default:
10181               error (_("Invalid record component association."));
10182             }
10183           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10184           ind = 0;
10185           if (! find_struct_field (name, value_type (lhs), 0, 
10186                                    NULL, NULL, NULL, NULL, &ind))
10187             error (_("Unknown component name: %s."), name);
10188           lower = upper = ind;
10189         }
10190
10191       if (lower <= upper && (lower < low || upper > high))
10192         error (_("Index in component association out of bounds."));
10193
10194       add_component_interval (lower, upper, indices, num_indices,
10195                               max_indices);
10196       while (lower <= upper)
10197         {
10198           int pos1;
10199
10200           pos1 = expr_pc;
10201           assign_component (container, lhs, lower, exp, &pos1);
10202           lower += 1;
10203         }
10204     }
10205 }
10206
10207 /* Assign the value of the expression in the OP_OTHERS construct in
10208    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10209    have not been previously assigned.  The index intervals already assigned
10210    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10211    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10212 static void
10213 aggregate_assign_others (struct value *container,
10214                          struct value *lhs, struct expression *exp,
10215                          int *pos, LONGEST *indices, int num_indices,
10216                          LONGEST low, LONGEST high) 
10217 {
10218   int i;
10219   int expr_pc = *pos + 1;
10220   
10221   for (i = 0; i < num_indices - 2; i += 2)
10222     {
10223       LONGEST ind;
10224
10225       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10226         {
10227           int localpos;
10228
10229           localpos = expr_pc;
10230           assign_component (container, lhs, ind, exp, &localpos);
10231         }
10232     }
10233   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10234 }
10235
10236 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10237    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10238    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10239    MAX_SIZE.  The resulting intervals do not overlap.  */
10240 static void
10241 add_component_interval (LONGEST low, LONGEST high, 
10242                         LONGEST* indices, int *size, int max_size)
10243 {
10244   int i, j;
10245
10246   for (i = 0; i < *size; i += 2) {
10247     if (high >= indices[i] && low <= indices[i + 1])
10248       {
10249         int kh;
10250
10251         for (kh = i + 2; kh < *size; kh += 2)
10252           if (high < indices[kh])
10253             break;
10254         if (low < indices[i])
10255           indices[i] = low;
10256         indices[i + 1] = indices[kh - 1];
10257         if (high > indices[i + 1])
10258           indices[i + 1] = high;
10259         memcpy (indices + i + 2, indices + kh, *size - kh);
10260         *size -= kh - i - 2;
10261         return;
10262       }
10263     else if (high < indices[i])
10264       break;
10265   }
10266         
10267   if (*size == max_size)
10268     error (_("Internal error: miscounted aggregate components."));
10269   *size += 2;
10270   for (j = *size-1; j >= i+2; j -= 1)
10271     indices[j] = indices[j - 2];
10272   indices[i] = low;
10273   indices[i + 1] = high;
10274 }
10275
10276 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10277    is different.  */
10278
10279 static struct value *
10280 ada_value_cast (struct type *type, struct value *arg2)
10281 {
10282   if (type == ada_check_typedef (value_type (arg2)))
10283     return arg2;
10284
10285   if (ada_is_fixed_point_type (type))
10286     return cast_to_fixed (type, arg2);
10287
10288   if (ada_is_fixed_point_type (value_type (arg2)))
10289     return cast_from_fixed (type, arg2);
10290
10291   return value_cast (type, arg2);
10292 }
10293
10294 /*  Evaluating Ada expressions, and printing their result.
10295     ------------------------------------------------------
10296
10297     1. Introduction:
10298     ----------------
10299
10300     We usually evaluate an Ada expression in order to print its value.
10301     We also evaluate an expression in order to print its type, which
10302     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10303     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10304     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10305     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10306     similar.
10307
10308     Evaluating expressions is a little more complicated for Ada entities
10309     than it is for entities in languages such as C.  The main reason for
10310     this is that Ada provides types whose definition might be dynamic.
10311     One example of such types is variant records.  Or another example
10312     would be an array whose bounds can only be known at run time.
10313
10314     The following description is a general guide as to what should be
10315     done (and what should NOT be done) in order to evaluate an expression
10316     involving such types, and when.  This does not cover how the semantic
10317     information is encoded by GNAT as this is covered separatly.  For the
10318     document used as the reference for the GNAT encoding, see exp_dbug.ads
10319     in the GNAT sources.
10320
10321     Ideally, we should embed each part of this description next to its
10322     associated code.  Unfortunately, the amount of code is so vast right
10323     now that it's hard to see whether the code handling a particular
10324     situation might be duplicated or not.  One day, when the code is
10325     cleaned up, this guide might become redundant with the comments
10326     inserted in the code, and we might want to remove it.
10327
10328     2. ``Fixing'' an Entity, the Simple Case:
10329     -----------------------------------------
10330
10331     When evaluating Ada expressions, the tricky issue is that they may
10332     reference entities whose type contents and size are not statically
10333     known.  Consider for instance a variant record:
10334
10335        type Rec (Empty : Boolean := True) is record
10336           case Empty is
10337              when True => null;
10338              when False => Value : Integer;
10339           end case;
10340        end record;
10341        Yes : Rec := (Empty => False, Value => 1);
10342        No  : Rec := (empty => True);
10343
10344     The size and contents of that record depends on the value of the
10345     descriminant (Rec.Empty).  At this point, neither the debugging
10346     information nor the associated type structure in GDB are able to
10347     express such dynamic types.  So what the debugger does is to create
10348     "fixed" versions of the type that applies to the specific object.
10349     We also informally refer to this opperation as "fixing" an object,
10350     which means creating its associated fixed type.
10351
10352     Example: when printing the value of variable "Yes" above, its fixed
10353     type would look like this:
10354
10355        type Rec is record
10356           Empty : Boolean;
10357           Value : Integer;
10358        end record;
10359
10360     On the other hand, if we printed the value of "No", its fixed type
10361     would become:
10362
10363        type Rec is record
10364           Empty : Boolean;
10365        end record;
10366
10367     Things become a little more complicated when trying to fix an entity
10368     with a dynamic type that directly contains another dynamic type,
10369     such as an array of variant records, for instance.  There are
10370     two possible cases: Arrays, and records.
10371
10372     3. ``Fixing'' Arrays:
10373     ---------------------
10374
10375     The type structure in GDB describes an array in terms of its bounds,
10376     and the type of its elements.  By design, all elements in the array
10377     have the same type and we cannot represent an array of variant elements
10378     using the current type structure in GDB.  When fixing an array,
10379     we cannot fix the array element, as we would potentially need one
10380     fixed type per element of the array.  As a result, the best we can do
10381     when fixing an array is to produce an array whose bounds and size
10382     are correct (allowing us to read it from memory), but without having
10383     touched its element type.  Fixing each element will be done later,
10384     when (if) necessary.
10385
10386     Arrays are a little simpler to handle than records, because the same
10387     amount of memory is allocated for each element of the array, even if
10388     the amount of space actually used by each element differs from element
10389     to element.  Consider for instance the following array of type Rec:
10390
10391        type Rec_Array is array (1 .. 2) of Rec;
10392
10393     The actual amount of memory occupied by each element might be different
10394     from element to element, depending on the value of their discriminant.
10395     But the amount of space reserved for each element in the array remains
10396     fixed regardless.  So we simply need to compute that size using
10397     the debugging information available, from which we can then determine
10398     the array size (we multiply the number of elements of the array by
10399     the size of each element).
10400
10401     The simplest case is when we have an array of a constrained element
10402     type. For instance, consider the following type declarations:
10403
10404         type Bounded_String (Max_Size : Integer) is
10405            Length : Integer;
10406            Buffer : String (1 .. Max_Size);
10407         end record;
10408         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10409
10410     In this case, the compiler describes the array as an array of
10411     variable-size elements (identified by its XVS suffix) for which
10412     the size can be read in the parallel XVZ variable.
10413
10414     In the case of an array of an unconstrained element type, the compiler
10415     wraps the array element inside a private PAD type.  This type should not
10416     be shown to the user, and must be "unwrap"'ed before printing.  Note
10417     that we also use the adjective "aligner" in our code to designate
10418     these wrapper types.
10419
10420     In some cases, the size allocated for each element is statically
10421     known.  In that case, the PAD type already has the correct size,
10422     and the array element should remain unfixed.
10423
10424     But there are cases when this size is not statically known.
10425     For instance, assuming that "Five" is an integer variable:
10426
10427         type Dynamic is array (1 .. Five) of Integer;
10428         type Wrapper (Has_Length : Boolean := False) is record
10429            Data : Dynamic;
10430            case Has_Length is
10431               when True => Length : Integer;
10432               when False => null;
10433            end case;
10434         end record;
10435         type Wrapper_Array is array (1 .. 2) of Wrapper;
10436
10437         Hello : Wrapper_Array := (others => (Has_Length => True,
10438                                              Data => (others => 17),
10439                                              Length => 1));
10440
10441
10442     The debugging info would describe variable Hello as being an
10443     array of a PAD type.  The size of that PAD type is not statically
10444     known, but can be determined using a parallel XVZ variable.
10445     In that case, a copy of the PAD type with the correct size should
10446     be used for the fixed array.
10447
10448     3. ``Fixing'' record type objects:
10449     ----------------------------------
10450
10451     Things are slightly different from arrays in the case of dynamic
10452     record types.  In this case, in order to compute the associated
10453     fixed type, we need to determine the size and offset of each of
10454     its components.  This, in turn, requires us to compute the fixed
10455     type of each of these components.
10456
10457     Consider for instance the example:
10458
10459         type Bounded_String (Max_Size : Natural) is record
10460            Str : String (1 .. Max_Size);
10461            Length : Natural;
10462         end record;
10463         My_String : Bounded_String (Max_Size => 10);
10464
10465     In that case, the position of field "Length" depends on the size
10466     of field Str, which itself depends on the value of the Max_Size
10467     discriminant.  In order to fix the type of variable My_String,
10468     we need to fix the type of field Str.  Therefore, fixing a variant
10469     record requires us to fix each of its components.
10470
10471     However, if a component does not have a dynamic size, the component
10472     should not be fixed.  In particular, fields that use a PAD type
10473     should not fixed.  Here is an example where this might happen
10474     (assuming type Rec above):
10475
10476        type Container (Big : Boolean) is record
10477           First : Rec;
10478           After : Integer;
10479           case Big is
10480              when True => Another : Integer;
10481              when False => null;
10482           end case;
10483        end record;
10484        My_Container : Container := (Big => False,
10485                                     First => (Empty => True),
10486                                     After => 42);
10487
10488     In that example, the compiler creates a PAD type for component First,
10489     whose size is constant, and then positions the component After just
10490     right after it.  The offset of component After is therefore constant
10491     in this case.
10492
10493     The debugger computes the position of each field based on an algorithm
10494     that uses, among other things, the actual position and size of the field
10495     preceding it.  Let's now imagine that the user is trying to print
10496     the value of My_Container.  If the type fixing was recursive, we would
10497     end up computing the offset of field After based on the size of the
10498     fixed version of field First.  And since in our example First has
10499     only one actual field, the size of the fixed type is actually smaller
10500     than the amount of space allocated to that field, and thus we would
10501     compute the wrong offset of field After.
10502
10503     To make things more complicated, we need to watch out for dynamic
10504     components of variant records (identified by the ___XVL suffix in
10505     the component name).  Even if the target type is a PAD type, the size
10506     of that type might not be statically known.  So the PAD type needs
10507     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10508     we might end up with the wrong size for our component.  This can be
10509     observed with the following type declarations:
10510
10511         type Octal is new Integer range 0 .. 7;
10512         type Octal_Array is array (Positive range <>) of Octal;
10513         pragma Pack (Octal_Array);
10514
10515         type Octal_Buffer (Size : Positive) is record
10516            Buffer : Octal_Array (1 .. Size);
10517            Length : Integer;
10518         end record;
10519
10520     In that case, Buffer is a PAD type whose size is unset and needs
10521     to be computed by fixing the unwrapped type.
10522
10523     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10524     ----------------------------------------------------------
10525
10526     Lastly, when should the sub-elements of an entity that remained unfixed
10527     thus far, be actually fixed?
10528
10529     The answer is: Only when referencing that element.  For instance
10530     when selecting one component of a record, this specific component
10531     should be fixed at that point in time.  Or when printing the value
10532     of a record, each component should be fixed before its value gets
10533     printed.  Similarly for arrays, the element of the array should be
10534     fixed when printing each element of the array, or when extracting
10535     one element out of that array.  On the other hand, fixing should
10536     not be performed on the elements when taking a slice of an array!
10537
10538     Note that one of the side effects of miscomputing the offset and
10539     size of each field is that we end up also miscomputing the size
10540     of the containing type.  This can have adverse results when computing
10541     the value of an entity.  GDB fetches the value of an entity based
10542     on the size of its type, and thus a wrong size causes GDB to fetch
10543     the wrong amount of memory.  In the case where the computed size is
10544     too small, GDB fetches too little data to print the value of our
10545     entity.  Results in this case are unpredictable, as we usually read
10546     past the buffer containing the data =:-o.  */
10547
10548 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10549    for that subexpression cast to TO_TYPE.  Advance *POS over the
10550    subexpression.  */
10551
10552 static value *
10553 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10554                               enum noside noside, struct type *to_type)
10555 {
10556   int pc = *pos;
10557
10558   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10559       || exp->elts[pc].opcode == OP_VAR_VALUE)
10560     {
10561       (*pos) += 4;
10562
10563       value *val;
10564       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10565         {
10566           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10567             return value_zero (to_type, not_lval);
10568
10569           val = evaluate_var_msym_value (noside,
10570                                          exp->elts[pc + 1].objfile,
10571                                          exp->elts[pc + 2].msymbol);
10572         }
10573       else
10574         val = evaluate_var_value (noside,
10575                                   exp->elts[pc + 1].block,
10576                                   exp->elts[pc + 2].symbol);
10577
10578       if (noside == EVAL_SKIP)
10579         return eval_skip_value (exp);
10580
10581       val = ada_value_cast (to_type, val);
10582
10583       /* Follow the Ada language semantics that do not allow taking
10584          an address of the result of a cast (view conversion in Ada).  */
10585       if (VALUE_LVAL (val) == lval_memory)
10586         {
10587           if (value_lazy (val))
10588             value_fetch_lazy (val);
10589           VALUE_LVAL (val) = not_lval;
10590         }
10591       return val;
10592     }
10593
10594   value *val = evaluate_subexp (to_type, exp, pos, noside);
10595   if (noside == EVAL_SKIP)
10596     return eval_skip_value (exp);
10597   return ada_value_cast (to_type, val);
10598 }
10599
10600 /* Implement the evaluate_exp routine in the exp_descriptor structure
10601    for the Ada language.  */
10602
10603 static struct value *
10604 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10605                      int *pos, enum noside noside)
10606 {
10607   enum exp_opcode op;
10608   int tem;
10609   int pc;
10610   int preeval_pos;
10611   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10612   struct type *type;
10613   int nargs, oplen;
10614   struct value **argvec;
10615
10616   pc = *pos;
10617   *pos += 1;
10618   op = exp->elts[pc].opcode;
10619
10620   switch (op)
10621     {
10622     default:
10623       *pos -= 1;
10624       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10625
10626       if (noside == EVAL_NORMAL)
10627         arg1 = unwrap_value (arg1);
10628
10629       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10630          then we need to perform the conversion manually, because
10631          evaluate_subexp_standard doesn't do it.  This conversion is
10632          necessary in Ada because the different kinds of float/fixed
10633          types in Ada have different representations.
10634
10635          Similarly, we need to perform the conversion from OP_LONG
10636          ourselves.  */
10637       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10638         arg1 = ada_value_cast (expect_type, arg1);
10639
10640       return arg1;
10641
10642     case OP_STRING:
10643       {
10644         struct value *result;
10645
10646         *pos -= 1;
10647         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10648         /* The result type will have code OP_STRING, bashed there from 
10649            OP_ARRAY.  Bash it back.  */
10650         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10651           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10652         return result;
10653       }
10654
10655     case UNOP_CAST:
10656       (*pos) += 2;
10657       type = exp->elts[pc + 1].type;
10658       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10659
10660     case UNOP_QUAL:
10661       (*pos) += 2;
10662       type = exp->elts[pc + 1].type;
10663       return ada_evaluate_subexp (type, exp, pos, noside);
10664
10665     case BINOP_ASSIGN:
10666       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10667       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10668         {
10669           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10670           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10671             return arg1;
10672           return ada_value_assign (arg1, arg1);
10673         }
10674       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10675          except if the lhs of our assignment is a convenience variable.
10676          In the case of assigning to a convenience variable, the lhs
10677          should be exactly the result of the evaluation of the rhs.  */
10678       type = value_type (arg1);
10679       if (VALUE_LVAL (arg1) == lval_internalvar)
10680          type = NULL;
10681       arg2 = evaluate_subexp (type, exp, pos, noside);
10682       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10683         return arg1;
10684       if (ada_is_fixed_point_type (value_type (arg1)))
10685         arg2 = cast_to_fixed (value_type (arg1), arg2);
10686       else if (ada_is_fixed_point_type (value_type (arg2)))
10687         error
10688           (_("Fixed-point values must be assigned to fixed-point variables"));
10689       else
10690         arg2 = coerce_for_assign (value_type (arg1), arg2);
10691       return ada_value_assign (arg1, arg2);
10692
10693     case BINOP_ADD:
10694       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10695       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10696       if (noside == EVAL_SKIP)
10697         goto nosideret;
10698       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10699         return (value_from_longest
10700                  (value_type (arg1),
10701                   value_as_long (arg1) + value_as_long (arg2)));
10702       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10703         return (value_from_longest
10704                  (value_type (arg2),
10705                   value_as_long (arg1) + value_as_long (arg2)));
10706       if ((ada_is_fixed_point_type (value_type (arg1))
10707            || ada_is_fixed_point_type (value_type (arg2)))
10708           && value_type (arg1) != value_type (arg2))
10709         error (_("Operands of fixed-point addition must have the same type"));
10710       /* Do the addition, and cast the result to the type of the first
10711          argument.  We cannot cast the result to a reference type, so if
10712          ARG1 is a reference type, find its underlying type.  */
10713       type = value_type (arg1);
10714       while (TYPE_CODE (type) == TYPE_CODE_REF)
10715         type = TYPE_TARGET_TYPE (type);
10716       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10717       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10718
10719     case BINOP_SUB:
10720       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10721       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10722       if (noside == EVAL_SKIP)
10723         goto nosideret;
10724       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10725         return (value_from_longest
10726                  (value_type (arg1),
10727                   value_as_long (arg1) - value_as_long (arg2)));
10728       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10729         return (value_from_longest
10730                  (value_type (arg2),
10731                   value_as_long (arg1) - value_as_long (arg2)));
10732       if ((ada_is_fixed_point_type (value_type (arg1))
10733            || ada_is_fixed_point_type (value_type (arg2)))
10734           && value_type (arg1) != value_type (arg2))
10735         error (_("Operands of fixed-point subtraction "
10736                  "must have the same type"));
10737       /* Do the substraction, and cast the result to the type of the first
10738          argument.  We cannot cast the result to a reference type, so if
10739          ARG1 is a reference type, find its underlying type.  */
10740       type = value_type (arg1);
10741       while (TYPE_CODE (type) == TYPE_CODE_REF)
10742         type = TYPE_TARGET_TYPE (type);
10743       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10744       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10745
10746     case BINOP_MUL:
10747     case BINOP_DIV:
10748     case BINOP_REM:
10749     case BINOP_MOD:
10750       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10751       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10752       if (noside == EVAL_SKIP)
10753         goto nosideret;
10754       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10755         {
10756           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10757           return value_zero (value_type (arg1), not_lval);
10758         }
10759       else
10760         {
10761           type = builtin_type (exp->gdbarch)->builtin_double;
10762           if (ada_is_fixed_point_type (value_type (arg1)))
10763             arg1 = cast_from_fixed (type, arg1);
10764           if (ada_is_fixed_point_type (value_type (arg2)))
10765             arg2 = cast_from_fixed (type, arg2);
10766           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10767           return ada_value_binop (arg1, arg2, op);
10768         }
10769
10770     case BINOP_EQUAL:
10771     case BINOP_NOTEQUAL:
10772       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10773       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10774       if (noside == EVAL_SKIP)
10775         goto nosideret;
10776       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10777         tem = 0;
10778       else
10779         {
10780           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10781           tem = ada_value_equal (arg1, arg2);
10782         }
10783       if (op == BINOP_NOTEQUAL)
10784         tem = !tem;
10785       type = language_bool_type (exp->language_defn, exp->gdbarch);
10786       return value_from_longest (type, (LONGEST) tem);
10787
10788     case UNOP_NEG:
10789       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10790       if (noside == EVAL_SKIP)
10791         goto nosideret;
10792       else if (ada_is_fixed_point_type (value_type (arg1)))
10793         return value_cast (value_type (arg1), value_neg (arg1));
10794       else
10795         {
10796           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10797           return value_neg (arg1);
10798         }
10799
10800     case BINOP_LOGICAL_AND:
10801     case BINOP_LOGICAL_OR:
10802     case UNOP_LOGICAL_NOT:
10803       {
10804         struct value *val;
10805
10806         *pos -= 1;
10807         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10808         type = language_bool_type (exp->language_defn, exp->gdbarch);
10809         return value_cast (type, val);
10810       }
10811
10812     case BINOP_BITWISE_AND:
10813     case BINOP_BITWISE_IOR:
10814     case BINOP_BITWISE_XOR:
10815       {
10816         struct value *val;
10817
10818         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10819         *pos = pc;
10820         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10821
10822         return value_cast (value_type (arg1), val);
10823       }
10824
10825     case OP_VAR_VALUE:
10826       *pos -= 1;
10827
10828       if (noside == EVAL_SKIP)
10829         {
10830           *pos += 4;
10831           goto nosideret;
10832         }
10833
10834       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10835         /* Only encountered when an unresolved symbol occurs in a
10836            context other than a function call, in which case, it is
10837            invalid.  */
10838         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10839                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10840
10841       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10842         {
10843           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10844           /* Check to see if this is a tagged type.  We also need to handle
10845              the case where the type is a reference to a tagged type, but
10846              we have to be careful to exclude pointers to tagged types.
10847              The latter should be shown as usual (as a pointer), whereas
10848              a reference should mostly be transparent to the user.  */
10849           if (ada_is_tagged_type (type, 0)
10850               || (TYPE_CODE (type) == TYPE_CODE_REF
10851                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10852             {
10853               /* Tagged types are a little special in the fact that the real
10854                  type is dynamic and can only be determined by inspecting the
10855                  object's tag.  This means that we need to get the object's
10856                  value first (EVAL_NORMAL) and then extract the actual object
10857                  type from its tag.
10858
10859                  Note that we cannot skip the final step where we extract
10860                  the object type from its tag, because the EVAL_NORMAL phase
10861                  results in dynamic components being resolved into fixed ones.
10862                  This can cause problems when trying to print the type
10863                  description of tagged types whose parent has a dynamic size:
10864                  We use the type name of the "_parent" component in order
10865                  to print the name of the ancestor type in the type description.
10866                  If that component had a dynamic size, the resolution into
10867                  a fixed type would result in the loss of that type name,
10868                  thus preventing us from printing the name of the ancestor
10869                  type in the type description.  */
10870               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10871
10872               if (TYPE_CODE (type) != TYPE_CODE_REF)
10873                 {
10874                   struct type *actual_type;
10875
10876                   actual_type = type_from_tag (ada_value_tag (arg1));
10877                   if (actual_type == NULL)
10878                     /* If, for some reason, we were unable to determine
10879                        the actual type from the tag, then use the static
10880                        approximation that we just computed as a fallback.
10881                        This can happen if the debugging information is
10882                        incomplete, for instance.  */
10883                     actual_type = type;
10884                   return value_zero (actual_type, not_lval);
10885                 }
10886               else
10887                 {
10888                   /* In the case of a ref, ada_coerce_ref takes care
10889                      of determining the actual type.  But the evaluation
10890                      should return a ref as it should be valid to ask
10891                      for its address; so rebuild a ref after coerce.  */
10892                   arg1 = ada_coerce_ref (arg1);
10893                   return value_ref (arg1, TYPE_CODE_REF);
10894                 }
10895             }
10896
10897           /* Records and unions for which GNAT encodings have been
10898              generated need to be statically fixed as well.
10899              Otherwise, non-static fixing produces a type where
10900              all dynamic properties are removed, which prevents "ptype"
10901              from being able to completely describe the type.
10902              For instance, a case statement in a variant record would be
10903              replaced by the relevant components based on the actual
10904              value of the discriminants.  */
10905           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10906                && dynamic_template_type (type) != NULL)
10907               || (TYPE_CODE (type) == TYPE_CODE_UNION
10908                   && ada_find_parallel_type (type, "___XVU") != NULL))
10909             {
10910               *pos += 4;
10911               return value_zero (to_static_fixed_type (type), not_lval);
10912             }
10913         }
10914
10915       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10916       return ada_to_fixed_value (arg1);
10917
10918     case OP_FUNCALL:
10919       (*pos) += 2;
10920
10921       /* Allocate arg vector, including space for the function to be
10922          called in argvec[0] and a terminating NULL.  */
10923       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10924       argvec = XALLOCAVEC (struct value *, nargs + 2);
10925
10926       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10927           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10928         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10929                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10930       else
10931         {
10932           for (tem = 0; tem <= nargs; tem += 1)
10933             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10934           argvec[tem] = 0;
10935
10936           if (noside == EVAL_SKIP)
10937             goto nosideret;
10938         }
10939
10940       if (ada_is_constrained_packed_array_type
10941           (desc_base_type (value_type (argvec[0]))))
10942         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10943       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10944                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10945         /* This is a packed array that has already been fixed, and
10946            therefore already coerced to a simple array.  Nothing further
10947            to do.  */
10948         ;
10949       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10950         {
10951           /* Make sure we dereference references so that all the code below
10952              feels like it's really handling the referenced value.  Wrapping
10953              types (for alignment) may be there, so make sure we strip them as
10954              well.  */
10955           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10956         }
10957       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10958                && VALUE_LVAL (argvec[0]) == lval_memory)
10959         argvec[0] = value_addr (argvec[0]);
10960
10961       type = ada_check_typedef (value_type (argvec[0]));
10962
10963       /* Ada allows us to implicitly dereference arrays when subscripting
10964          them.  So, if this is an array typedef (encoding use for array
10965          access types encoded as fat pointers), strip it now.  */
10966       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10967         type = ada_typedef_target_type (type);
10968
10969       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10970         {
10971           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10972             {
10973             case TYPE_CODE_FUNC:
10974               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10975               break;
10976             case TYPE_CODE_ARRAY:
10977               break;
10978             case TYPE_CODE_STRUCT:
10979               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10980                 argvec[0] = ada_value_ind (argvec[0]);
10981               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10982               break;
10983             default:
10984               error (_("cannot subscript or call something of type `%s'"),
10985                      ada_type_name (value_type (argvec[0])));
10986               break;
10987             }
10988         }
10989
10990       switch (TYPE_CODE (type))
10991         {
10992         case TYPE_CODE_FUNC:
10993           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10994             {
10995               if (TYPE_TARGET_TYPE (type) == NULL)
10996                 error_call_unknown_return_type (NULL);
10997               return allocate_value (TYPE_TARGET_TYPE (type));
10998             }
10999           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
11000         case TYPE_CODE_INTERNAL_FUNCTION:
11001           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11002             /* We don't know anything about what the internal
11003                function might return, but we have to return
11004                something.  */
11005             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11006                                not_lval);
11007           else
11008             return call_internal_function (exp->gdbarch, exp->language_defn,
11009                                            argvec[0], nargs, argvec + 1);
11010
11011         case TYPE_CODE_STRUCT:
11012           {
11013             int arity;
11014
11015             arity = ada_array_arity (type);
11016             type = ada_array_element_type (type, nargs);
11017             if (type == NULL)
11018               error (_("cannot subscript or call a record"));
11019             if (arity != nargs)
11020               error (_("wrong number of subscripts; expecting %d"), arity);
11021             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11022               return value_zero (ada_aligned_type (type), lval_memory);
11023             return
11024               unwrap_value (ada_value_subscript
11025                             (argvec[0], nargs, argvec + 1));
11026           }
11027         case TYPE_CODE_ARRAY:
11028           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11029             {
11030               type = ada_array_element_type (type, nargs);
11031               if (type == NULL)
11032                 error (_("element type of array unknown"));
11033               else
11034                 return value_zero (ada_aligned_type (type), lval_memory);
11035             }
11036           return
11037             unwrap_value (ada_value_subscript
11038                           (ada_coerce_to_simple_array (argvec[0]),
11039                            nargs, argvec + 1));
11040         case TYPE_CODE_PTR:     /* Pointer to array */
11041           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11042             {
11043               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11044               type = ada_array_element_type (type, nargs);
11045               if (type == NULL)
11046                 error (_("element type of array unknown"));
11047               else
11048                 return value_zero (ada_aligned_type (type), lval_memory);
11049             }
11050           return
11051             unwrap_value (ada_value_ptr_subscript (argvec[0],
11052                                                    nargs, argvec + 1));
11053
11054         default:
11055           error (_("Attempt to index or call something other than an "
11056                    "array or function"));
11057         }
11058
11059     case TERNOP_SLICE:
11060       {
11061         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11062         struct value *low_bound_val =
11063           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11064         struct value *high_bound_val =
11065           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11066         LONGEST low_bound;
11067         LONGEST high_bound;
11068
11069         low_bound_val = coerce_ref (low_bound_val);
11070         high_bound_val = coerce_ref (high_bound_val);
11071         low_bound = value_as_long (low_bound_val);
11072         high_bound = value_as_long (high_bound_val);
11073
11074         if (noside == EVAL_SKIP)
11075           goto nosideret;
11076
11077         /* If this is a reference to an aligner type, then remove all
11078            the aligners.  */
11079         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11080             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11081           TYPE_TARGET_TYPE (value_type (array)) =
11082             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11083
11084         if (ada_is_constrained_packed_array_type (value_type (array)))
11085           error (_("cannot slice a packed array"));
11086
11087         /* If this is a reference to an array or an array lvalue,
11088            convert to a pointer.  */
11089         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11090             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11091                 && VALUE_LVAL (array) == lval_memory))
11092           array = value_addr (array);
11093
11094         if (noside == EVAL_AVOID_SIDE_EFFECTS
11095             && ada_is_array_descriptor_type (ada_check_typedef
11096                                              (value_type (array))))
11097           return empty_array (ada_type_of_array (array, 0), low_bound);
11098
11099         array = ada_coerce_to_simple_array_ptr (array);
11100
11101         /* If we have more than one level of pointer indirection,
11102            dereference the value until we get only one level.  */
11103         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11104                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11105                      == TYPE_CODE_PTR))
11106           array = value_ind (array);
11107
11108         /* Make sure we really do have an array type before going further,
11109            to avoid a SEGV when trying to get the index type or the target
11110            type later down the road if the debug info generated by
11111            the compiler is incorrect or incomplete.  */
11112         if (!ada_is_simple_array_type (value_type (array)))
11113           error (_("cannot take slice of non-array"));
11114
11115         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11116             == TYPE_CODE_PTR)
11117           {
11118             struct type *type0 = ada_check_typedef (value_type (array));
11119
11120             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11121               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11122             else
11123               {
11124                 struct type *arr_type0 =
11125                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11126
11127                 return ada_value_slice_from_ptr (array, arr_type0,
11128                                                  longest_to_int (low_bound),
11129                                                  longest_to_int (high_bound));
11130               }
11131           }
11132         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11133           return array;
11134         else if (high_bound < low_bound)
11135           return empty_array (value_type (array), low_bound);
11136         else
11137           return ada_value_slice (array, longest_to_int (low_bound),
11138                                   longest_to_int (high_bound));
11139       }
11140
11141     case UNOP_IN_RANGE:
11142       (*pos) += 2;
11143       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11144       type = check_typedef (exp->elts[pc + 1].type);
11145
11146       if (noside == EVAL_SKIP)
11147         goto nosideret;
11148
11149       switch (TYPE_CODE (type))
11150         {
11151         default:
11152           lim_warning (_("Membership test incompletely implemented; "
11153                          "always returns true"));
11154           type = language_bool_type (exp->language_defn, exp->gdbarch);
11155           return value_from_longest (type, (LONGEST) 1);
11156
11157         case TYPE_CODE_RANGE:
11158           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11159           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11160           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11161           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11162           type = language_bool_type (exp->language_defn, exp->gdbarch);
11163           return
11164             value_from_longest (type,
11165                                 (value_less (arg1, arg3)
11166                                  || value_equal (arg1, arg3))
11167                                 && (value_less (arg2, arg1)
11168                                     || value_equal (arg2, arg1)));
11169         }
11170
11171     case BINOP_IN_BOUNDS:
11172       (*pos) += 2;
11173       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11174       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11175
11176       if (noside == EVAL_SKIP)
11177         goto nosideret;
11178
11179       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11180         {
11181           type = language_bool_type (exp->language_defn, exp->gdbarch);
11182           return value_zero (type, not_lval);
11183         }
11184
11185       tem = longest_to_int (exp->elts[pc + 1].longconst);
11186
11187       type = ada_index_type (value_type (arg2), tem, "range");
11188       if (!type)
11189         type = value_type (arg1);
11190
11191       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11192       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11193
11194       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11195       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11196       type = language_bool_type (exp->language_defn, exp->gdbarch);
11197       return
11198         value_from_longest (type,
11199                             (value_less (arg1, arg3)
11200                              || value_equal (arg1, arg3))
11201                             && (value_less (arg2, arg1)
11202                                 || value_equal (arg2, arg1)));
11203
11204     case TERNOP_IN_RANGE:
11205       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11206       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11207       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11208
11209       if (noside == EVAL_SKIP)
11210         goto nosideret;
11211
11212       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11213       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11214       type = language_bool_type (exp->language_defn, exp->gdbarch);
11215       return
11216         value_from_longest (type,
11217                             (value_less (arg1, arg3)
11218                              || value_equal (arg1, arg3))
11219                             && (value_less (arg2, arg1)
11220                                 || value_equal (arg2, arg1)));
11221
11222     case OP_ATR_FIRST:
11223     case OP_ATR_LAST:
11224     case OP_ATR_LENGTH:
11225       {
11226         struct type *type_arg;
11227
11228         if (exp->elts[*pos].opcode == OP_TYPE)
11229           {
11230             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11231             arg1 = NULL;
11232             type_arg = check_typedef (exp->elts[pc + 2].type);
11233           }
11234         else
11235           {
11236             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11237             type_arg = NULL;
11238           }
11239
11240         if (exp->elts[*pos].opcode != OP_LONG)
11241           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11242         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11243         *pos += 4;
11244
11245         if (noside == EVAL_SKIP)
11246           goto nosideret;
11247
11248         if (type_arg == NULL)
11249           {
11250             arg1 = ada_coerce_ref (arg1);
11251
11252             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11253               arg1 = ada_coerce_to_simple_array (arg1);
11254
11255             if (op == OP_ATR_LENGTH)
11256               type = builtin_type (exp->gdbarch)->builtin_int;
11257             else
11258               {
11259                 type = ada_index_type (value_type (arg1), tem,
11260                                        ada_attribute_name (op));
11261                 if (type == NULL)
11262                   type = builtin_type (exp->gdbarch)->builtin_int;
11263               }
11264
11265             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11266               return allocate_value (type);
11267
11268             switch (op)
11269               {
11270               default:          /* Should never happen.  */
11271                 error (_("unexpected attribute encountered"));
11272               case OP_ATR_FIRST:
11273                 return value_from_longest
11274                         (type, ada_array_bound (arg1, tem, 0));
11275               case OP_ATR_LAST:
11276                 return value_from_longest
11277                         (type, ada_array_bound (arg1, tem, 1));
11278               case OP_ATR_LENGTH:
11279                 return value_from_longest
11280                         (type, ada_array_length (arg1, tem));
11281               }
11282           }
11283         else if (discrete_type_p (type_arg))
11284           {
11285             struct type *range_type;
11286             const char *name = ada_type_name (type_arg);
11287
11288             range_type = NULL;
11289             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11290               range_type = to_fixed_range_type (type_arg, NULL);
11291             if (range_type == NULL)
11292               range_type = type_arg;
11293             switch (op)
11294               {
11295               default:
11296                 error (_("unexpected attribute encountered"));
11297               case OP_ATR_FIRST:
11298                 return value_from_longest 
11299                   (range_type, ada_discrete_type_low_bound (range_type));
11300               case OP_ATR_LAST:
11301                 return value_from_longest
11302                   (range_type, ada_discrete_type_high_bound (range_type));
11303               case OP_ATR_LENGTH:
11304                 error (_("the 'length attribute applies only to array types"));
11305               }
11306           }
11307         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11308           error (_("unimplemented type attribute"));
11309         else
11310           {
11311             LONGEST low, high;
11312
11313             if (ada_is_constrained_packed_array_type (type_arg))
11314               type_arg = decode_constrained_packed_array_type (type_arg);
11315
11316             if (op == OP_ATR_LENGTH)
11317               type = builtin_type (exp->gdbarch)->builtin_int;
11318             else
11319               {
11320                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11321                 if (type == NULL)
11322                   type = builtin_type (exp->gdbarch)->builtin_int;
11323               }
11324
11325             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11326               return allocate_value (type);
11327
11328             switch (op)
11329               {
11330               default:
11331                 error (_("unexpected attribute encountered"));
11332               case OP_ATR_FIRST:
11333                 low = ada_array_bound_from_type (type_arg, tem, 0);
11334                 return value_from_longest (type, low);
11335               case OP_ATR_LAST:
11336                 high = ada_array_bound_from_type (type_arg, tem, 1);
11337                 return value_from_longest (type, high);
11338               case OP_ATR_LENGTH:
11339                 low = ada_array_bound_from_type (type_arg, tem, 0);
11340                 high = ada_array_bound_from_type (type_arg, tem, 1);
11341                 return value_from_longest (type, high - low + 1);
11342               }
11343           }
11344       }
11345
11346     case OP_ATR_TAG:
11347       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11348       if (noside == EVAL_SKIP)
11349         goto nosideret;
11350
11351       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11352         return value_zero (ada_tag_type (arg1), not_lval);
11353
11354       return ada_value_tag (arg1);
11355
11356     case OP_ATR_MIN:
11357     case OP_ATR_MAX:
11358       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11359       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11360       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11361       if (noside == EVAL_SKIP)
11362         goto nosideret;
11363       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11364         return value_zero (value_type (arg1), not_lval);
11365       else
11366         {
11367           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11368           return value_binop (arg1, arg2,
11369                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11370         }
11371
11372     case OP_ATR_MODULUS:
11373       {
11374         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11375
11376         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11377         if (noside == EVAL_SKIP)
11378           goto nosideret;
11379
11380         if (!ada_is_modular_type (type_arg))
11381           error (_("'modulus must be applied to modular type"));
11382
11383         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11384                                    ada_modulus (type_arg));
11385       }
11386
11387
11388     case OP_ATR_POS:
11389       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11390       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11391       if (noside == EVAL_SKIP)
11392         goto nosideret;
11393       type = builtin_type (exp->gdbarch)->builtin_int;
11394       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11395         return value_zero (type, not_lval);
11396       else
11397         return value_pos_atr (type, arg1);
11398
11399     case OP_ATR_SIZE:
11400       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11401       type = value_type (arg1);
11402
11403       /* If the argument is a reference, then dereference its type, since
11404          the user is really asking for the size of the actual object,
11405          not the size of the pointer.  */
11406       if (TYPE_CODE (type) == TYPE_CODE_REF)
11407         type = TYPE_TARGET_TYPE (type);
11408
11409       if (noside == EVAL_SKIP)
11410         goto nosideret;
11411       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11412         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11413       else
11414         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11415                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11416
11417     case OP_ATR_VAL:
11418       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11419       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11420       type = exp->elts[pc + 2].type;
11421       if (noside == EVAL_SKIP)
11422         goto nosideret;
11423       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11424         return value_zero (type, not_lval);
11425       else
11426         return value_val_atr (type, arg1);
11427
11428     case BINOP_EXP:
11429       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11430       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11431       if (noside == EVAL_SKIP)
11432         goto nosideret;
11433       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11434         return value_zero (value_type (arg1), not_lval);
11435       else
11436         {
11437           /* For integer exponentiation operations,
11438              only promote the first argument.  */
11439           if (is_integral_type (value_type (arg2)))
11440             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11441           else
11442             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11443
11444           return value_binop (arg1, arg2, op);
11445         }
11446
11447     case UNOP_PLUS:
11448       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11449       if (noside == EVAL_SKIP)
11450         goto nosideret;
11451       else
11452         return arg1;
11453
11454     case UNOP_ABS:
11455       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11456       if (noside == EVAL_SKIP)
11457         goto nosideret;
11458       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11459       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11460         return value_neg (arg1);
11461       else
11462         return arg1;
11463
11464     case UNOP_IND:
11465       preeval_pos = *pos;
11466       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11467       if (noside == EVAL_SKIP)
11468         goto nosideret;
11469       type = ada_check_typedef (value_type (arg1));
11470       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11471         {
11472           if (ada_is_array_descriptor_type (type))
11473             /* GDB allows dereferencing GNAT array descriptors.  */
11474             {
11475               struct type *arrType = ada_type_of_array (arg1, 0);
11476
11477               if (arrType == NULL)
11478                 error (_("Attempt to dereference null array pointer."));
11479               return value_at_lazy (arrType, 0);
11480             }
11481           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11482                    || TYPE_CODE (type) == TYPE_CODE_REF
11483                    /* In C you can dereference an array to get the 1st elt.  */
11484                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11485             {
11486             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11487                only be determined by inspecting the object's tag.
11488                This means that we need to evaluate completely the
11489                expression in order to get its type.  */
11490
11491               if ((TYPE_CODE (type) == TYPE_CODE_REF
11492                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11493                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11494                 {
11495                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11496                                           EVAL_NORMAL);
11497                   type = value_type (ada_value_ind (arg1));
11498                 }
11499               else
11500                 {
11501                   type = to_static_fixed_type
11502                     (ada_aligned_type
11503                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11504                 }
11505               ada_ensure_varsize_limit (type);
11506               return value_zero (type, lval_memory);
11507             }
11508           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11509             {
11510               /* GDB allows dereferencing an int.  */
11511               if (expect_type == NULL)
11512                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11513                                    lval_memory);
11514               else
11515                 {
11516                   expect_type = 
11517                     to_static_fixed_type (ada_aligned_type (expect_type));
11518                   return value_zero (expect_type, lval_memory);
11519                 }
11520             }
11521           else
11522             error (_("Attempt to take contents of a non-pointer value."));
11523         }
11524       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11525       type = ada_check_typedef (value_type (arg1));
11526
11527       if (TYPE_CODE (type) == TYPE_CODE_INT)
11528           /* GDB allows dereferencing an int.  If we were given
11529              the expect_type, then use that as the target type.
11530              Otherwise, assume that the target type is an int.  */
11531         {
11532           if (expect_type != NULL)
11533             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11534                                               arg1));
11535           else
11536             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11537                                   (CORE_ADDR) value_as_address (arg1));
11538         }
11539
11540       if (ada_is_array_descriptor_type (type))
11541         /* GDB allows dereferencing GNAT array descriptors.  */
11542         return ada_coerce_to_simple_array (arg1);
11543       else
11544         return ada_value_ind (arg1);
11545
11546     case STRUCTOP_STRUCT:
11547       tem = longest_to_int (exp->elts[pc + 1].longconst);
11548       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11549       preeval_pos = *pos;
11550       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11551       if (noside == EVAL_SKIP)
11552         goto nosideret;
11553       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11554         {
11555           struct type *type1 = value_type (arg1);
11556
11557           if (ada_is_tagged_type (type1, 1))
11558             {
11559               type = ada_lookup_struct_elt_type (type1,
11560                                                  &exp->elts[pc + 2].string,
11561                                                  1, 1);
11562
11563               /* If the field is not found, check if it exists in the
11564                  extension of this object's type. This means that we
11565                  need to evaluate completely the expression.  */
11566
11567               if (type == NULL)
11568                 {
11569                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11570                                           EVAL_NORMAL);
11571                   arg1 = ada_value_struct_elt (arg1,
11572                                                &exp->elts[pc + 2].string,
11573                                                0);
11574                   arg1 = unwrap_value (arg1);
11575                   type = value_type (ada_to_fixed_value (arg1));
11576                 }
11577             }
11578           else
11579             type =
11580               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11581                                           0);
11582
11583           return value_zero (ada_aligned_type (type), lval_memory);
11584         }
11585       else
11586         {
11587           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11588           arg1 = unwrap_value (arg1);
11589           return ada_to_fixed_value (arg1);
11590         }
11591
11592     case OP_TYPE:
11593       /* The value is not supposed to be used.  This is here to make it
11594          easier to accommodate expressions that contain types.  */
11595       (*pos) += 2;
11596       if (noside == EVAL_SKIP)
11597         goto nosideret;
11598       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11599         return allocate_value (exp->elts[pc + 1].type);
11600       else
11601         error (_("Attempt to use a type name as an expression"));
11602
11603     case OP_AGGREGATE:
11604     case OP_CHOICES:
11605     case OP_OTHERS:
11606     case OP_DISCRETE_RANGE:
11607     case OP_POSITIONAL:
11608     case OP_NAME:
11609       if (noside == EVAL_NORMAL)
11610         switch (op) 
11611           {
11612           case OP_NAME:
11613             error (_("Undefined name, ambiguous name, or renaming used in "
11614                      "component association: %s."), &exp->elts[pc+2].string);
11615           case OP_AGGREGATE:
11616             error (_("Aggregates only allowed on the right of an assignment"));
11617           default:
11618             internal_error (__FILE__, __LINE__,
11619                             _("aggregate apparently mangled"));
11620           }
11621
11622       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11623       *pos += oplen - 1;
11624       for (tem = 0; tem < nargs; tem += 1) 
11625         ada_evaluate_subexp (NULL, exp, pos, noside);
11626       goto nosideret;
11627     }
11628
11629 nosideret:
11630   return eval_skip_value (exp);
11631 }
11632 \f
11633
11634                                 /* Fixed point */
11635
11636 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11637    type name that encodes the 'small and 'delta information.
11638    Otherwise, return NULL.  */
11639
11640 static const char *
11641 fixed_type_info (struct type *type)
11642 {
11643   const char *name = ada_type_name (type);
11644   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11645
11646   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11647     {
11648       const char *tail = strstr (name, "___XF_");
11649
11650       if (tail == NULL)
11651         return NULL;
11652       else
11653         return tail + 5;
11654     }
11655   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11656     return fixed_type_info (TYPE_TARGET_TYPE (type));
11657   else
11658     return NULL;
11659 }
11660
11661 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11662
11663 int
11664 ada_is_fixed_point_type (struct type *type)
11665 {
11666   return fixed_type_info (type) != NULL;
11667 }
11668
11669 /* Return non-zero iff TYPE represents a System.Address type.  */
11670
11671 int
11672 ada_is_system_address_type (struct type *type)
11673 {
11674   return (TYPE_NAME (type)
11675           && strcmp (TYPE_NAME (type), "system__address") == 0);
11676 }
11677
11678 /* Assuming that TYPE is the representation of an Ada fixed-point
11679    type, return the target floating-point type to be used to represent
11680    of this type during internal computation.  */
11681
11682 static struct type *
11683 ada_scaling_type (struct type *type)
11684 {
11685   return builtin_type (get_type_arch (type))->builtin_long_double;
11686 }
11687
11688 /* Assuming that TYPE is the representation of an Ada fixed-point
11689    type, return its delta, or NULL if the type is malformed and the
11690    delta cannot be determined.  */
11691
11692 struct value *
11693 ada_delta (struct type *type)
11694 {
11695   const char *encoding = fixed_type_info (type);
11696   struct type *scale_type = ada_scaling_type (type);
11697
11698   long long num, den;
11699
11700   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11701     return nullptr;
11702   else
11703     return value_binop (value_from_longest (scale_type, num),
11704                         value_from_longest (scale_type, den), BINOP_DIV);
11705 }
11706
11707 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11708    factor ('SMALL value) associated with the type.  */
11709
11710 struct value *
11711 ada_scaling_factor (struct type *type)
11712 {
11713   const char *encoding = fixed_type_info (type);
11714   struct type *scale_type = ada_scaling_type (type);
11715
11716   long long num0, den0, num1, den1;
11717   int n;
11718
11719   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11720               &num0, &den0, &num1, &den1);
11721
11722   if (n < 2)
11723     return value_from_longest (scale_type, 1);
11724   else if (n == 4)
11725     return value_binop (value_from_longest (scale_type, num1),
11726                         value_from_longest (scale_type, den1), BINOP_DIV);
11727   else
11728     return value_binop (value_from_longest (scale_type, num0),
11729                         value_from_longest (scale_type, den0), BINOP_DIV);
11730 }
11731
11732 \f
11733
11734                                 /* Range types */
11735
11736 /* Scan STR beginning at position K for a discriminant name, and
11737    return the value of that discriminant field of DVAL in *PX.  If
11738    PNEW_K is not null, put the position of the character beyond the
11739    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11740    not alter *PX and *PNEW_K if unsuccessful.  */
11741
11742 static int
11743 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11744                     int *pnew_k)
11745 {
11746   static char *bound_buffer = NULL;
11747   static size_t bound_buffer_len = 0;
11748   const char *pstart, *pend, *bound;
11749   struct value *bound_val;
11750
11751   if (dval == NULL || str == NULL || str[k] == '\0')
11752     return 0;
11753
11754   pstart = str + k;
11755   pend = strstr (pstart, "__");
11756   if (pend == NULL)
11757     {
11758       bound = pstart;
11759       k += strlen (bound);
11760     }
11761   else
11762     {
11763       int len = pend - pstart;
11764
11765       /* Strip __ and beyond.  */
11766       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11767       strncpy (bound_buffer, pstart, len);
11768       bound_buffer[len] = '\0';
11769
11770       bound = bound_buffer;
11771       k = pend - str;
11772     }
11773
11774   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11775   if (bound_val == NULL)
11776     return 0;
11777
11778   *px = value_as_long (bound_val);
11779   if (pnew_k != NULL)
11780     *pnew_k = k;
11781   return 1;
11782 }
11783
11784 /* Value of variable named NAME in the current environment.  If
11785    no such variable found, then if ERR_MSG is null, returns 0, and
11786    otherwise causes an error with message ERR_MSG.  */
11787
11788 static struct value *
11789 get_var_value (const char *name, const char *err_msg)
11790 {
11791   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11792
11793   std::vector<struct block_symbol> syms;
11794   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11795                                              get_selected_block (0),
11796                                              VAR_DOMAIN, &syms, 1);
11797
11798   if (nsyms != 1)
11799     {
11800       if (err_msg == NULL)
11801         return 0;
11802       else
11803         error (("%s"), err_msg);
11804     }
11805
11806   return value_of_variable (syms[0].symbol, syms[0].block);
11807 }
11808
11809 /* Value of integer variable named NAME in the current environment.
11810    If no such variable is found, returns false.  Otherwise, sets VALUE
11811    to the variable's value and returns true.  */
11812
11813 bool
11814 get_int_var_value (const char *name, LONGEST &value)
11815 {
11816   struct value *var_val = get_var_value (name, 0);
11817
11818   if (var_val == 0)
11819     return false;
11820
11821   value = value_as_long (var_val);
11822   return true;
11823 }
11824
11825
11826 /* Return a range type whose base type is that of the range type named
11827    NAME in the current environment, and whose bounds are calculated
11828    from NAME according to the GNAT range encoding conventions.
11829    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11830    corresponding range type from debug information; fall back to using it
11831    if symbol lookup fails.  If a new type must be created, allocate it
11832    like ORIG_TYPE was.  The bounds information, in general, is encoded
11833    in NAME, the base type given in the named range type.  */
11834
11835 static struct type *
11836 to_fixed_range_type (struct type *raw_type, struct value *dval)
11837 {
11838   const char *name;
11839   struct type *base_type;
11840   const char *subtype_info;
11841
11842   gdb_assert (raw_type != NULL);
11843   gdb_assert (TYPE_NAME (raw_type) != NULL);
11844
11845   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11846     base_type = TYPE_TARGET_TYPE (raw_type);
11847   else
11848     base_type = raw_type;
11849
11850   name = TYPE_NAME (raw_type);
11851   subtype_info = strstr (name, "___XD");
11852   if (subtype_info == NULL)
11853     {
11854       LONGEST L = ada_discrete_type_low_bound (raw_type);
11855       LONGEST U = ada_discrete_type_high_bound (raw_type);
11856
11857       if (L < INT_MIN || U > INT_MAX)
11858         return raw_type;
11859       else
11860         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11861                                          L, U);
11862     }
11863   else
11864     {
11865       static char *name_buf = NULL;
11866       static size_t name_len = 0;
11867       int prefix_len = subtype_info - name;
11868       LONGEST L, U;
11869       struct type *type;
11870       const char *bounds_str;
11871       int n;
11872
11873       GROW_VECT (name_buf, name_len, prefix_len + 5);
11874       strncpy (name_buf, name, prefix_len);
11875       name_buf[prefix_len] = '\0';
11876
11877       subtype_info += 5;
11878       bounds_str = strchr (subtype_info, '_');
11879       n = 1;
11880
11881       if (*subtype_info == 'L')
11882         {
11883           if (!ada_scan_number (bounds_str, n, &L, &n)
11884               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11885             return raw_type;
11886           if (bounds_str[n] == '_')
11887             n += 2;
11888           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11889             n += 1;
11890           subtype_info += 1;
11891         }
11892       else
11893         {
11894           strcpy (name_buf + prefix_len, "___L");
11895           if (!get_int_var_value (name_buf, L))
11896             {
11897               lim_warning (_("Unknown lower bound, using 1."));
11898               L = 1;
11899             }
11900         }
11901
11902       if (*subtype_info == 'U')
11903         {
11904           if (!ada_scan_number (bounds_str, n, &U, &n)
11905               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11906             return raw_type;
11907         }
11908       else
11909         {
11910           strcpy (name_buf + prefix_len, "___U");
11911           if (!get_int_var_value (name_buf, U))
11912             {
11913               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11914               U = L;
11915             }
11916         }
11917
11918       type = create_static_range_type (alloc_type_copy (raw_type),
11919                                        base_type, L, U);
11920       /* create_static_range_type alters the resulting type's length
11921          to match the size of the base_type, which is not what we want.
11922          Set it back to the original range type's length.  */
11923       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11924       TYPE_NAME (type) = name;
11925       return type;
11926     }
11927 }
11928
11929 /* True iff NAME is the name of a range type.  */
11930
11931 int
11932 ada_is_range_type_name (const char *name)
11933 {
11934   return (name != NULL && strstr (name, "___XD"));
11935 }
11936 \f
11937
11938                                 /* Modular types */
11939
11940 /* True iff TYPE is an Ada modular type.  */
11941
11942 int
11943 ada_is_modular_type (struct type *type)
11944 {
11945   struct type *subranged_type = get_base_type (type);
11946
11947   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11948           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11949           && TYPE_UNSIGNED (subranged_type));
11950 }
11951
11952 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11953
11954 ULONGEST
11955 ada_modulus (struct type *type)
11956 {
11957   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11958 }
11959 \f
11960
11961 /* Ada exception catchpoint support:
11962    ---------------------------------
11963
11964    We support 3 kinds of exception catchpoints:
11965      . catchpoints on Ada exceptions
11966      . catchpoints on unhandled Ada exceptions
11967      . catchpoints on failed assertions
11968
11969    Exceptions raised during failed assertions, or unhandled exceptions
11970    could perfectly be caught with the general catchpoint on Ada exceptions.
11971    However, we can easily differentiate these two special cases, and having
11972    the option to distinguish these two cases from the rest can be useful
11973    to zero-in on certain situations.
11974
11975    Exception catchpoints are a specialized form of breakpoint,
11976    since they rely on inserting breakpoints inside known routines
11977    of the GNAT runtime.  The implementation therefore uses a standard
11978    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11979    of breakpoint_ops.
11980
11981    Support in the runtime for exception catchpoints have been changed
11982    a few times already, and these changes affect the implementation
11983    of these catchpoints.  In order to be able to support several
11984    variants of the runtime, we use a sniffer that will determine
11985    the runtime variant used by the program being debugged.  */
11986
11987 /* Ada's standard exceptions.
11988
11989    The Ada 83 standard also defined Numeric_Error.  But there so many
11990    situations where it was unclear from the Ada 83 Reference Manual
11991    (RM) whether Constraint_Error or Numeric_Error should be raised,
11992    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11993    Interpretation saying that anytime the RM says that Numeric_Error
11994    should be raised, the implementation may raise Constraint_Error.
11995    Ada 95 went one step further and pretty much removed Numeric_Error
11996    from the list of standard exceptions (it made it a renaming of
11997    Constraint_Error, to help preserve compatibility when compiling
11998    an Ada83 compiler). As such, we do not include Numeric_Error from
11999    this list of standard exceptions.  */
12000
12001 static const char *standard_exc[] = {
12002   "constraint_error",
12003   "program_error",
12004   "storage_error",
12005   "tasking_error"
12006 };
12007
12008 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
12009
12010 /* A structure that describes how to support exception catchpoints
12011    for a given executable.  */
12012
12013 struct exception_support_info
12014 {
12015    /* The name of the symbol to break on in order to insert
12016       a catchpoint on exceptions.  */
12017    const char *catch_exception_sym;
12018
12019    /* The name of the symbol to break on in order to insert
12020       a catchpoint on unhandled exceptions.  */
12021    const char *catch_exception_unhandled_sym;
12022
12023    /* The name of the symbol to break on in order to insert
12024       a catchpoint on failed assertions.  */
12025    const char *catch_assert_sym;
12026
12027    /* The name of the symbol to break on in order to insert
12028       a catchpoint on exception handling.  */
12029    const char *catch_handlers_sym;
12030
12031    /* Assuming that the inferior just triggered an unhandled exception
12032       catchpoint, this function is responsible for returning the address
12033       in inferior memory where the name of that exception is stored.
12034       Return zero if the address could not be computed.  */
12035    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12036 };
12037
12038 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12039 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12040
12041 /* The following exception support info structure describes how to
12042    implement exception catchpoints with the latest version of the
12043    Ada runtime (as of 2007-03-06).  */
12044
12045 static const struct exception_support_info default_exception_support_info =
12046 {
12047   "__gnat_debug_raise_exception", /* catch_exception_sym */
12048   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12049   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12050   "__gnat_begin_handler", /* catch_handlers_sym */
12051   ada_unhandled_exception_name_addr
12052 };
12053
12054 /* The following exception support info structure describes how to
12055    implement exception catchpoints with a slightly older version
12056    of the Ada runtime.  */
12057
12058 static const struct exception_support_info exception_support_info_fallback =
12059 {
12060   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12061   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12062   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12063   "__gnat_begin_handler", /* catch_handlers_sym */
12064   ada_unhandled_exception_name_addr_from_raise
12065 };
12066
12067 /* Return nonzero if we can detect the exception support routines
12068    described in EINFO.
12069
12070    This function errors out if an abnormal situation is detected
12071    (for instance, if we find the exception support routines, but
12072    that support is found to be incomplete).  */
12073
12074 static int
12075 ada_has_this_exception_support (const struct exception_support_info *einfo)
12076 {
12077   struct symbol *sym;
12078
12079   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12080      that should be compiled with debugging information.  As a result, we
12081      expect to find that symbol in the symtabs.  */
12082
12083   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12084   if (sym == NULL)
12085     {
12086       /* Perhaps we did not find our symbol because the Ada runtime was
12087          compiled without debugging info, or simply stripped of it.
12088          It happens on some GNU/Linux distributions for instance, where
12089          users have to install a separate debug package in order to get
12090          the runtime's debugging info.  In that situation, let the user
12091          know why we cannot insert an Ada exception catchpoint.
12092
12093          Note: Just for the purpose of inserting our Ada exception
12094          catchpoint, we could rely purely on the associated minimal symbol.
12095          But we would be operating in degraded mode anyway, since we are
12096          still lacking the debugging info needed later on to extract
12097          the name of the exception being raised (this name is printed in
12098          the catchpoint message, and is also used when trying to catch
12099          a specific exception).  We do not handle this case for now.  */
12100       struct bound_minimal_symbol msym
12101         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12102
12103       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12104         error (_("Your Ada runtime appears to be missing some debugging "
12105                  "information.\nCannot insert Ada exception catchpoint "
12106                  "in this configuration."));
12107
12108       return 0;
12109     }
12110
12111   /* Make sure that the symbol we found corresponds to a function.  */
12112
12113   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12114     error (_("Symbol \"%s\" is not a function (class = %d)"),
12115            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12116
12117   return 1;
12118 }
12119
12120 /* Inspect the Ada runtime and determine which exception info structure
12121    should be used to provide support for exception catchpoints.
12122
12123    This function will always set the per-inferior exception_info,
12124    or raise an error.  */
12125
12126 static void
12127 ada_exception_support_info_sniffer (void)
12128 {
12129   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12130
12131   /* If the exception info is already known, then no need to recompute it.  */
12132   if (data->exception_info != NULL)
12133     return;
12134
12135   /* Check the latest (default) exception support info.  */
12136   if (ada_has_this_exception_support (&default_exception_support_info))
12137     {
12138       data->exception_info = &default_exception_support_info;
12139       return;
12140     }
12141
12142   /* Try our fallback exception suport info.  */
12143   if (ada_has_this_exception_support (&exception_support_info_fallback))
12144     {
12145       data->exception_info = &exception_support_info_fallback;
12146       return;
12147     }
12148
12149   /* Sometimes, it is normal for us to not be able to find the routine
12150      we are looking for.  This happens when the program is linked with
12151      the shared version of the GNAT runtime, and the program has not been
12152      started yet.  Inform the user of these two possible causes if
12153      applicable.  */
12154
12155   if (ada_update_initial_language (language_unknown) != language_ada)
12156     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12157
12158   /* If the symbol does not exist, then check that the program is
12159      already started, to make sure that shared libraries have been
12160      loaded.  If it is not started, this may mean that the symbol is
12161      in a shared library.  */
12162
12163   if (inferior_ptid.pid () == 0)
12164     error (_("Unable to insert catchpoint. Try to start the program first."));
12165
12166   /* At this point, we know that we are debugging an Ada program and
12167      that the inferior has been started, but we still are not able to
12168      find the run-time symbols.  That can mean that we are in
12169      configurable run time mode, or that a-except as been optimized
12170      out by the linker...  In any case, at this point it is not worth
12171      supporting this feature.  */
12172
12173   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12174 }
12175
12176 /* True iff FRAME is very likely to be that of a function that is
12177    part of the runtime system.  This is all very heuristic, but is
12178    intended to be used as advice as to what frames are uninteresting
12179    to most users.  */
12180
12181 static int
12182 is_known_support_routine (struct frame_info *frame)
12183 {
12184   enum language func_lang;
12185   int i;
12186   const char *fullname;
12187
12188   /* If this code does not have any debugging information (no symtab),
12189      This cannot be any user code.  */
12190
12191   symtab_and_line sal = find_frame_sal (frame);
12192   if (sal.symtab == NULL)
12193     return 1;
12194
12195   /* If there is a symtab, but the associated source file cannot be
12196      located, then assume this is not user code:  Selecting a frame
12197      for which we cannot display the code would not be very helpful
12198      for the user.  This should also take care of case such as VxWorks
12199      where the kernel has some debugging info provided for a few units.  */
12200
12201   fullname = symtab_to_fullname (sal.symtab);
12202   if (access (fullname, R_OK) != 0)
12203     return 1;
12204
12205   /* Check the unit filename againt the Ada runtime file naming.
12206      We also check the name of the objfile against the name of some
12207      known system libraries that sometimes come with debugging info
12208      too.  */
12209
12210   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12211     {
12212       re_comp (known_runtime_file_name_patterns[i]);
12213       if (re_exec (lbasename (sal.symtab->filename)))
12214         return 1;
12215       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12216           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12217         return 1;
12218     }
12219
12220   /* Check whether the function is a GNAT-generated entity.  */
12221
12222   gdb::unique_xmalloc_ptr<char> func_name
12223     = find_frame_funname (frame, &func_lang, NULL);
12224   if (func_name == NULL)
12225     return 1;
12226
12227   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12228     {
12229       re_comp (known_auxiliary_function_name_patterns[i]);
12230       if (re_exec (func_name.get ()))
12231         return 1;
12232     }
12233
12234   return 0;
12235 }
12236
12237 /* Find the first frame that contains debugging information and that is not
12238    part of the Ada run-time, starting from FI and moving upward.  */
12239
12240 void
12241 ada_find_printable_frame (struct frame_info *fi)
12242 {
12243   for (; fi != NULL; fi = get_prev_frame (fi))
12244     {
12245       if (!is_known_support_routine (fi))
12246         {
12247           select_frame (fi);
12248           break;
12249         }
12250     }
12251
12252 }
12253
12254 /* Assuming that the inferior just triggered an unhandled exception
12255    catchpoint, return the address in inferior memory where the name
12256    of the exception is stored.
12257    
12258    Return zero if the address could not be computed.  */
12259
12260 static CORE_ADDR
12261 ada_unhandled_exception_name_addr (void)
12262 {
12263   return parse_and_eval_address ("e.full_name");
12264 }
12265
12266 /* Same as ada_unhandled_exception_name_addr, except that this function
12267    should be used when the inferior uses an older version of the runtime,
12268    where the exception name needs to be extracted from a specific frame
12269    several frames up in the callstack.  */
12270
12271 static CORE_ADDR
12272 ada_unhandled_exception_name_addr_from_raise (void)
12273 {
12274   int frame_level;
12275   struct frame_info *fi;
12276   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12277
12278   /* To determine the name of this exception, we need to select
12279      the frame corresponding to RAISE_SYM_NAME.  This frame is
12280      at least 3 levels up, so we simply skip the first 3 frames
12281      without checking the name of their associated function.  */
12282   fi = get_current_frame ();
12283   for (frame_level = 0; frame_level < 3; frame_level += 1)
12284     if (fi != NULL)
12285       fi = get_prev_frame (fi); 
12286
12287   while (fi != NULL)
12288     {
12289       enum language func_lang;
12290
12291       gdb::unique_xmalloc_ptr<char> func_name
12292         = find_frame_funname (fi, &func_lang, NULL);
12293       if (func_name != NULL)
12294         {
12295           if (strcmp (func_name.get (),
12296                       data->exception_info->catch_exception_sym) == 0)
12297             break; /* We found the frame we were looking for...  */
12298         }
12299       fi = get_prev_frame (fi);
12300     }
12301
12302   if (fi == NULL)
12303     return 0;
12304
12305   select_frame (fi);
12306   return parse_and_eval_address ("id.full_name");
12307 }
12308
12309 /* Assuming the inferior just triggered an Ada exception catchpoint
12310    (of any type), return the address in inferior memory where the name
12311    of the exception is stored, if applicable.
12312
12313    Assumes the selected frame is the current frame.
12314
12315    Return zero if the address could not be computed, or if not relevant.  */
12316
12317 static CORE_ADDR
12318 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12319                            struct breakpoint *b)
12320 {
12321   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12322
12323   switch (ex)
12324     {
12325       case ada_catch_exception:
12326         return (parse_and_eval_address ("e.full_name"));
12327         break;
12328
12329       case ada_catch_exception_unhandled:
12330         return data->exception_info->unhandled_exception_name_addr ();
12331         break;
12332
12333       case ada_catch_handlers:
12334         return 0;  /* The runtimes does not provide access to the exception
12335                       name.  */
12336         break;
12337
12338       case ada_catch_assert:
12339         return 0;  /* Exception name is not relevant in this case.  */
12340         break;
12341
12342       default:
12343         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12344         break;
12345     }
12346
12347   return 0; /* Should never be reached.  */
12348 }
12349
12350 /* Assuming the inferior is stopped at an exception catchpoint,
12351    return the message which was associated to the exception, if
12352    available.  Return NULL if the message could not be retrieved.
12353
12354    Note: The exception message can be associated to an exception
12355    either through the use of the Raise_Exception function, or
12356    more simply (Ada 2005 and later), via:
12357
12358        raise Exception_Name with "exception message";
12359
12360    */
12361
12362 static gdb::unique_xmalloc_ptr<char>
12363 ada_exception_message_1 (void)
12364 {
12365   struct value *e_msg_val;
12366   int e_msg_len;
12367
12368   /* For runtimes that support this feature, the exception message
12369      is passed as an unbounded string argument called "message".  */
12370   e_msg_val = parse_and_eval ("message");
12371   if (e_msg_val == NULL)
12372     return NULL; /* Exception message not supported.  */
12373
12374   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12375   gdb_assert (e_msg_val != NULL);
12376   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12377
12378   /* If the message string is empty, then treat it as if there was
12379      no exception message.  */
12380   if (e_msg_len <= 0)
12381     return NULL;
12382
12383   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12384   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12385   e_msg.get ()[e_msg_len] = '\0';
12386
12387   return e_msg;
12388 }
12389
12390 /* Same as ada_exception_message_1, except that all exceptions are
12391    contained here (returning NULL instead).  */
12392
12393 static gdb::unique_xmalloc_ptr<char>
12394 ada_exception_message (void)
12395 {
12396   gdb::unique_xmalloc_ptr<char> e_msg;
12397
12398   TRY
12399     {
12400       e_msg = ada_exception_message_1 ();
12401     }
12402   CATCH (e, RETURN_MASK_ERROR)
12403     {
12404       e_msg.reset (nullptr);
12405     }
12406   END_CATCH
12407
12408   return e_msg;
12409 }
12410
12411 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12412    any error that ada_exception_name_addr_1 might cause to be thrown.
12413    When an error is intercepted, a warning with the error message is printed,
12414    and zero is returned.  */
12415
12416 static CORE_ADDR
12417 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12418                          struct breakpoint *b)
12419 {
12420   CORE_ADDR result = 0;
12421
12422   TRY
12423     {
12424       result = ada_exception_name_addr_1 (ex, b);
12425     }
12426
12427   CATCH (e, RETURN_MASK_ERROR)
12428     {
12429       warning (_("failed to get exception name: %s"), e.message);
12430       return 0;
12431     }
12432   END_CATCH
12433
12434   return result;
12435 }
12436
12437 static std::string ada_exception_catchpoint_cond_string
12438   (const char *excep_string,
12439    enum ada_exception_catchpoint_kind ex);
12440
12441 /* Ada catchpoints.
12442
12443    In the case of catchpoints on Ada exceptions, the catchpoint will
12444    stop the target on every exception the program throws.  When a user
12445    specifies the name of a specific exception, we translate this
12446    request into a condition expression (in text form), and then parse
12447    it into an expression stored in each of the catchpoint's locations.
12448    We then use this condition to check whether the exception that was
12449    raised is the one the user is interested in.  If not, then the
12450    target is resumed again.  We store the name of the requested
12451    exception, in order to be able to re-set the condition expression
12452    when symbols change.  */
12453
12454 /* An instance of this type is used to represent an Ada catchpoint
12455    breakpoint location.  */
12456
12457 class ada_catchpoint_location : public bp_location
12458 {
12459 public:
12460   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12461     : bp_location (ops, owner)
12462   {}
12463
12464   /* The condition that checks whether the exception that was raised
12465      is the specific exception the user specified on catchpoint
12466      creation.  */
12467   expression_up excep_cond_expr;
12468 };
12469
12470 /* Implement the DTOR method in the bp_location_ops structure for all
12471    Ada exception catchpoint kinds.  */
12472
12473 static void
12474 ada_catchpoint_location_dtor (struct bp_location *bl)
12475 {
12476   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12477
12478   al->excep_cond_expr.reset ();
12479 }
12480
12481 /* The vtable to be used in Ada catchpoint locations.  */
12482
12483 static const struct bp_location_ops ada_catchpoint_location_ops =
12484 {
12485   ada_catchpoint_location_dtor
12486 };
12487
12488 /* An instance of this type is used to represent an Ada catchpoint.  */
12489
12490 struct ada_catchpoint : public breakpoint
12491 {
12492   /* The name of the specific exception the user specified.  */
12493   std::string excep_string;
12494 };
12495
12496 /* Parse the exception condition string in the context of each of the
12497    catchpoint's locations, and store them for later evaluation.  */
12498
12499 static void
12500 create_excep_cond_exprs (struct ada_catchpoint *c,
12501                          enum ada_exception_catchpoint_kind ex)
12502 {
12503   struct bp_location *bl;
12504
12505   /* Nothing to do if there's no specific exception to catch.  */
12506   if (c->excep_string.empty ())
12507     return;
12508
12509   /* Same if there are no locations... */
12510   if (c->loc == NULL)
12511     return;
12512
12513   /* Compute the condition expression in text form, from the specific
12514      expection we want to catch.  */
12515   std::string cond_string
12516     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12517
12518   /* Iterate over all the catchpoint's locations, and parse an
12519      expression for each.  */
12520   for (bl = c->loc; bl != NULL; bl = bl->next)
12521     {
12522       struct ada_catchpoint_location *ada_loc
12523         = (struct ada_catchpoint_location *) bl;
12524       expression_up exp;
12525
12526       if (!bl->shlib_disabled)
12527         {
12528           const char *s;
12529
12530           s = cond_string.c_str ();
12531           TRY
12532             {
12533               exp = parse_exp_1 (&s, bl->address,
12534                                  block_for_pc (bl->address),
12535                                  0);
12536             }
12537           CATCH (e, RETURN_MASK_ERROR)
12538             {
12539               warning (_("failed to reevaluate internal exception condition "
12540                          "for catchpoint %d: %s"),
12541                        c->number, e.message);
12542             }
12543           END_CATCH
12544         }
12545
12546       ada_loc->excep_cond_expr = std::move (exp);
12547     }
12548 }
12549
12550 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12551    structure for all exception catchpoint kinds.  */
12552
12553 static struct bp_location *
12554 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12555                              struct breakpoint *self)
12556 {
12557   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12558 }
12559
12560 /* Implement the RE_SET method in the breakpoint_ops structure for all
12561    exception catchpoint kinds.  */
12562
12563 static void
12564 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12565 {
12566   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12567
12568   /* Call the base class's method.  This updates the catchpoint's
12569      locations.  */
12570   bkpt_breakpoint_ops.re_set (b);
12571
12572   /* Reparse the exception conditional expressions.  One for each
12573      location.  */
12574   create_excep_cond_exprs (c, ex);
12575 }
12576
12577 /* Returns true if we should stop for this breakpoint hit.  If the
12578    user specified a specific exception, we only want to cause a stop
12579    if the program thrown that exception.  */
12580
12581 static int
12582 should_stop_exception (const struct bp_location *bl)
12583 {
12584   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12585   const struct ada_catchpoint_location *ada_loc
12586     = (const struct ada_catchpoint_location *) bl;
12587   int stop;
12588
12589   /* With no specific exception, should always stop.  */
12590   if (c->excep_string.empty ())
12591     return 1;
12592
12593   if (ada_loc->excep_cond_expr == NULL)
12594     {
12595       /* We will have a NULL expression if back when we were creating
12596          the expressions, this location's had failed to parse.  */
12597       return 1;
12598     }
12599
12600   stop = 1;
12601   TRY
12602     {
12603       struct value *mark;
12604
12605       mark = value_mark ();
12606       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12607       value_free_to_mark (mark);
12608     }
12609   CATCH (ex, RETURN_MASK_ALL)
12610     {
12611       exception_fprintf (gdb_stderr, ex,
12612                          _("Error in testing exception condition:\n"));
12613     }
12614   END_CATCH
12615
12616   return stop;
12617 }
12618
12619 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12620    for all exception catchpoint kinds.  */
12621
12622 static void
12623 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12624 {
12625   bs->stop = should_stop_exception (bs->bp_location_at);
12626 }
12627
12628 /* Implement the PRINT_IT method in the breakpoint_ops structure
12629    for all exception catchpoint kinds.  */
12630
12631 static enum print_stop_action
12632 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12633 {
12634   struct ui_out *uiout = current_uiout;
12635   struct breakpoint *b = bs->breakpoint_at;
12636
12637   annotate_catchpoint (b->number);
12638
12639   if (uiout->is_mi_like_p ())
12640     {
12641       uiout->field_string ("reason",
12642                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12643       uiout->field_string ("disp", bpdisp_text (b->disposition));
12644     }
12645
12646   uiout->text (b->disposition == disp_del
12647                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12648   uiout->field_int ("bkptno", b->number);
12649   uiout->text (", ");
12650
12651   /* ada_exception_name_addr relies on the selected frame being the
12652      current frame.  Need to do this here because this function may be
12653      called more than once when printing a stop, and below, we'll
12654      select the first frame past the Ada run-time (see
12655      ada_find_printable_frame).  */
12656   select_frame (get_current_frame ());
12657
12658   switch (ex)
12659     {
12660       case ada_catch_exception:
12661       case ada_catch_exception_unhandled:
12662       case ada_catch_handlers:
12663         {
12664           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12665           char exception_name[256];
12666
12667           if (addr != 0)
12668             {
12669               read_memory (addr, (gdb_byte *) exception_name,
12670                            sizeof (exception_name) - 1);
12671               exception_name [sizeof (exception_name) - 1] = '\0';
12672             }
12673           else
12674             {
12675               /* For some reason, we were unable to read the exception
12676                  name.  This could happen if the Runtime was compiled
12677                  without debugging info, for instance.  In that case,
12678                  just replace the exception name by the generic string
12679                  "exception" - it will read as "an exception" in the
12680                  notification we are about to print.  */
12681               memcpy (exception_name, "exception", sizeof ("exception"));
12682             }
12683           /* In the case of unhandled exception breakpoints, we print
12684              the exception name as "unhandled EXCEPTION_NAME", to make
12685              it clearer to the user which kind of catchpoint just got
12686              hit.  We used ui_out_text to make sure that this extra
12687              info does not pollute the exception name in the MI case.  */
12688           if (ex == ada_catch_exception_unhandled)
12689             uiout->text ("unhandled ");
12690           uiout->field_string ("exception-name", exception_name);
12691         }
12692         break;
12693       case ada_catch_assert:
12694         /* In this case, the name of the exception is not really
12695            important.  Just print "failed assertion" to make it clearer
12696            that his program just hit an assertion-failure catchpoint.
12697            We used ui_out_text because this info does not belong in
12698            the MI output.  */
12699         uiout->text ("failed assertion");
12700         break;
12701     }
12702
12703   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12704   if (exception_message != NULL)
12705     {
12706       uiout->text (" (");
12707       uiout->field_string ("exception-message", exception_message.get ());
12708       uiout->text (")");
12709     }
12710
12711   uiout->text (" at ");
12712   ada_find_printable_frame (get_current_frame ());
12713
12714   return PRINT_SRC_AND_LOC;
12715 }
12716
12717 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12718    for all exception catchpoint kinds.  */
12719
12720 static void
12721 print_one_exception (enum ada_exception_catchpoint_kind ex,
12722                      struct breakpoint *b, struct bp_location **last_loc)
12723
12724   struct ui_out *uiout = current_uiout;
12725   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12726   struct value_print_options opts;
12727
12728   get_user_print_options (&opts);
12729   if (opts.addressprint)
12730     {
12731       annotate_field (4);
12732       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12733     }
12734
12735   annotate_field (5);
12736   *last_loc = b->loc;
12737   switch (ex)
12738     {
12739       case ada_catch_exception:
12740         if (!c->excep_string.empty ())
12741           {
12742             std::string msg = string_printf (_("`%s' Ada exception"),
12743                                              c->excep_string.c_str ());
12744
12745             uiout->field_string ("what", msg);
12746           }
12747         else
12748           uiout->field_string ("what", "all Ada exceptions");
12749         
12750         break;
12751
12752       case ada_catch_exception_unhandled:
12753         uiout->field_string ("what", "unhandled Ada exceptions");
12754         break;
12755       
12756       case ada_catch_handlers:
12757         if (!c->excep_string.empty ())
12758           {
12759             uiout->field_fmt ("what",
12760                               _("`%s' Ada exception handlers"),
12761                               c->excep_string.c_str ());
12762           }
12763         else
12764           uiout->field_string ("what", "all Ada exceptions handlers");
12765         break;
12766
12767       case ada_catch_assert:
12768         uiout->field_string ("what", "failed Ada assertions");
12769         break;
12770
12771       default:
12772         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12773         break;
12774     }
12775 }
12776
12777 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12778    for all exception catchpoint kinds.  */
12779
12780 static void
12781 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12782                          struct breakpoint *b)
12783 {
12784   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12785   struct ui_out *uiout = current_uiout;
12786
12787   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12788                                                  : _("Catchpoint "));
12789   uiout->field_int ("bkptno", b->number);
12790   uiout->text (": ");
12791
12792   switch (ex)
12793     {
12794       case ada_catch_exception:
12795         if (!c->excep_string.empty ())
12796           {
12797             std::string info = string_printf (_("`%s' Ada exception"),
12798                                               c->excep_string.c_str ());
12799             uiout->text (info.c_str ());
12800           }
12801         else
12802           uiout->text (_("all Ada exceptions"));
12803         break;
12804
12805       case ada_catch_exception_unhandled:
12806         uiout->text (_("unhandled Ada exceptions"));
12807         break;
12808
12809       case ada_catch_handlers:
12810         if (!c->excep_string.empty ())
12811           {
12812             std::string info
12813               = string_printf (_("`%s' Ada exception handlers"),
12814                                c->excep_string.c_str ());
12815             uiout->text (info.c_str ());
12816           }
12817         else
12818           uiout->text (_("all Ada exceptions handlers"));
12819         break;
12820
12821       case ada_catch_assert:
12822         uiout->text (_("failed Ada assertions"));
12823         break;
12824
12825       default:
12826         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12827         break;
12828     }
12829 }
12830
12831 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12832    for all exception catchpoint kinds.  */
12833
12834 static void
12835 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12836                           struct breakpoint *b, struct ui_file *fp)
12837 {
12838   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12839
12840   switch (ex)
12841     {
12842       case ada_catch_exception:
12843         fprintf_filtered (fp, "catch exception");
12844         if (!c->excep_string.empty ())
12845           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12846         break;
12847
12848       case ada_catch_exception_unhandled:
12849         fprintf_filtered (fp, "catch exception unhandled");
12850         break;
12851
12852       case ada_catch_handlers:
12853         fprintf_filtered (fp, "catch handlers");
12854         break;
12855
12856       case ada_catch_assert:
12857         fprintf_filtered (fp, "catch assert");
12858         break;
12859
12860       default:
12861         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12862     }
12863   print_recreate_thread (b, fp);
12864 }
12865
12866 /* Virtual table for "catch exception" breakpoints.  */
12867
12868 static struct bp_location *
12869 allocate_location_catch_exception (struct breakpoint *self)
12870 {
12871   return allocate_location_exception (ada_catch_exception, self);
12872 }
12873
12874 static void
12875 re_set_catch_exception (struct breakpoint *b)
12876 {
12877   re_set_exception (ada_catch_exception, b);
12878 }
12879
12880 static void
12881 check_status_catch_exception (bpstat bs)
12882 {
12883   check_status_exception (ada_catch_exception, bs);
12884 }
12885
12886 static enum print_stop_action
12887 print_it_catch_exception (bpstat bs)
12888 {
12889   return print_it_exception (ada_catch_exception, bs);
12890 }
12891
12892 static void
12893 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12894 {
12895   print_one_exception (ada_catch_exception, b, last_loc);
12896 }
12897
12898 static void
12899 print_mention_catch_exception (struct breakpoint *b)
12900 {
12901   print_mention_exception (ada_catch_exception, b);
12902 }
12903
12904 static void
12905 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12906 {
12907   print_recreate_exception (ada_catch_exception, b, fp);
12908 }
12909
12910 static struct breakpoint_ops catch_exception_breakpoint_ops;
12911
12912 /* Virtual table for "catch exception unhandled" breakpoints.  */
12913
12914 static struct bp_location *
12915 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12916 {
12917   return allocate_location_exception (ada_catch_exception_unhandled, self);
12918 }
12919
12920 static void
12921 re_set_catch_exception_unhandled (struct breakpoint *b)
12922 {
12923   re_set_exception (ada_catch_exception_unhandled, b);
12924 }
12925
12926 static void
12927 check_status_catch_exception_unhandled (bpstat bs)
12928 {
12929   check_status_exception (ada_catch_exception_unhandled, bs);
12930 }
12931
12932 static enum print_stop_action
12933 print_it_catch_exception_unhandled (bpstat bs)
12934 {
12935   return print_it_exception (ada_catch_exception_unhandled, bs);
12936 }
12937
12938 static void
12939 print_one_catch_exception_unhandled (struct breakpoint *b,
12940                                      struct bp_location **last_loc)
12941 {
12942   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12943 }
12944
12945 static void
12946 print_mention_catch_exception_unhandled (struct breakpoint *b)
12947 {
12948   print_mention_exception (ada_catch_exception_unhandled, b);
12949 }
12950
12951 static void
12952 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12953                                           struct ui_file *fp)
12954 {
12955   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12956 }
12957
12958 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12959
12960 /* Virtual table for "catch assert" breakpoints.  */
12961
12962 static struct bp_location *
12963 allocate_location_catch_assert (struct breakpoint *self)
12964 {
12965   return allocate_location_exception (ada_catch_assert, self);
12966 }
12967
12968 static void
12969 re_set_catch_assert (struct breakpoint *b)
12970 {
12971   re_set_exception (ada_catch_assert, b);
12972 }
12973
12974 static void
12975 check_status_catch_assert (bpstat bs)
12976 {
12977   check_status_exception (ada_catch_assert, bs);
12978 }
12979
12980 static enum print_stop_action
12981 print_it_catch_assert (bpstat bs)
12982 {
12983   return print_it_exception (ada_catch_assert, bs);
12984 }
12985
12986 static void
12987 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12988 {
12989   print_one_exception (ada_catch_assert, b, last_loc);
12990 }
12991
12992 static void
12993 print_mention_catch_assert (struct breakpoint *b)
12994 {
12995   print_mention_exception (ada_catch_assert, b);
12996 }
12997
12998 static void
12999 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
13000 {
13001   print_recreate_exception (ada_catch_assert, b, fp);
13002 }
13003
13004 static struct breakpoint_ops catch_assert_breakpoint_ops;
13005
13006 /* Virtual table for "catch handlers" breakpoints.  */
13007
13008 static struct bp_location *
13009 allocate_location_catch_handlers (struct breakpoint *self)
13010 {
13011   return allocate_location_exception (ada_catch_handlers, self);
13012 }
13013
13014 static void
13015 re_set_catch_handlers (struct breakpoint *b)
13016 {
13017   re_set_exception (ada_catch_handlers, b);
13018 }
13019
13020 static void
13021 check_status_catch_handlers (bpstat bs)
13022 {
13023   check_status_exception (ada_catch_handlers, bs);
13024 }
13025
13026 static enum print_stop_action
13027 print_it_catch_handlers (bpstat bs)
13028 {
13029   return print_it_exception (ada_catch_handlers, bs);
13030 }
13031
13032 static void
13033 print_one_catch_handlers (struct breakpoint *b,
13034                           struct bp_location **last_loc)
13035 {
13036   print_one_exception (ada_catch_handlers, b, last_loc);
13037 }
13038
13039 static void
13040 print_mention_catch_handlers (struct breakpoint *b)
13041 {
13042   print_mention_exception (ada_catch_handlers, b);
13043 }
13044
13045 static void
13046 print_recreate_catch_handlers (struct breakpoint *b,
13047                                struct ui_file *fp)
13048 {
13049   print_recreate_exception (ada_catch_handlers, b, fp);
13050 }
13051
13052 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13053
13054 /* Split the arguments specified in a "catch exception" command.  
13055    Set EX to the appropriate catchpoint type.
13056    Set EXCEP_STRING to the name of the specific exception if
13057    specified by the user.
13058    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13059    "catch handlers" command.  False otherwise.
13060    If a condition is found at the end of the arguments, the condition
13061    expression is stored in COND_STRING (memory must be deallocated
13062    after use).  Otherwise COND_STRING is set to NULL.  */
13063
13064 static void
13065 catch_ada_exception_command_split (const char *args,
13066                                    bool is_catch_handlers_cmd,
13067                                    enum ada_exception_catchpoint_kind *ex,
13068                                    std::string *excep_string,
13069                                    std::string *cond_string)
13070 {
13071   std::string exception_name;
13072
13073   exception_name = extract_arg (&args);
13074   if (exception_name == "if")
13075     {
13076       /* This is not an exception name; this is the start of a condition
13077          expression for a catchpoint on all exceptions.  So, "un-get"
13078          this token, and set exception_name to NULL.  */
13079       exception_name.clear ();
13080       args -= 2;
13081     }
13082
13083   /* Check to see if we have a condition.  */
13084
13085   args = skip_spaces (args);
13086   if (startswith (args, "if")
13087       && (isspace (args[2]) || args[2] == '\0'))
13088     {
13089       args += 2;
13090       args = skip_spaces (args);
13091
13092       if (args[0] == '\0')
13093         error (_("Condition missing after `if' keyword"));
13094       *cond_string = args;
13095
13096       args += strlen (args);
13097     }
13098
13099   /* Check that we do not have any more arguments.  Anything else
13100      is unexpected.  */
13101
13102   if (args[0] != '\0')
13103     error (_("Junk at end of expression"));
13104
13105   if (is_catch_handlers_cmd)
13106     {
13107       /* Catch handling of exceptions.  */
13108       *ex = ada_catch_handlers;
13109       *excep_string = exception_name;
13110     }
13111   else if (exception_name.empty ())
13112     {
13113       /* Catch all exceptions.  */
13114       *ex = ada_catch_exception;
13115       excep_string->clear ();
13116     }
13117   else if (exception_name == "unhandled")
13118     {
13119       /* Catch unhandled exceptions.  */
13120       *ex = ada_catch_exception_unhandled;
13121       excep_string->clear ();
13122     }
13123   else
13124     {
13125       /* Catch a specific exception.  */
13126       *ex = ada_catch_exception;
13127       *excep_string = exception_name;
13128     }
13129 }
13130
13131 /* Return the name of the symbol on which we should break in order to
13132    implement a catchpoint of the EX kind.  */
13133
13134 static const char *
13135 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13136 {
13137   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13138
13139   gdb_assert (data->exception_info != NULL);
13140
13141   switch (ex)
13142     {
13143       case ada_catch_exception:
13144         return (data->exception_info->catch_exception_sym);
13145         break;
13146       case ada_catch_exception_unhandled:
13147         return (data->exception_info->catch_exception_unhandled_sym);
13148         break;
13149       case ada_catch_assert:
13150         return (data->exception_info->catch_assert_sym);
13151         break;
13152       case ada_catch_handlers:
13153         return (data->exception_info->catch_handlers_sym);
13154         break;
13155       default:
13156         internal_error (__FILE__, __LINE__,
13157                         _("unexpected catchpoint kind (%d)"), ex);
13158     }
13159 }
13160
13161 /* Return the breakpoint ops "virtual table" used for catchpoints
13162    of the EX kind.  */
13163
13164 static const struct breakpoint_ops *
13165 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13166 {
13167   switch (ex)
13168     {
13169       case ada_catch_exception:
13170         return (&catch_exception_breakpoint_ops);
13171         break;
13172       case ada_catch_exception_unhandled:
13173         return (&catch_exception_unhandled_breakpoint_ops);
13174         break;
13175       case ada_catch_assert:
13176         return (&catch_assert_breakpoint_ops);
13177         break;
13178       case ada_catch_handlers:
13179         return (&catch_handlers_breakpoint_ops);
13180         break;
13181       default:
13182         internal_error (__FILE__, __LINE__,
13183                         _("unexpected catchpoint kind (%d)"), ex);
13184     }
13185 }
13186
13187 /* Return the condition that will be used to match the current exception
13188    being raised with the exception that the user wants to catch.  This
13189    assumes that this condition is used when the inferior just triggered
13190    an exception catchpoint.
13191    EX: the type of catchpoints used for catching Ada exceptions.  */
13192
13193 static std::string
13194 ada_exception_catchpoint_cond_string (const char *excep_string,
13195                                       enum ada_exception_catchpoint_kind ex)
13196 {
13197   int i;
13198   bool is_standard_exc = false;
13199   std::string result;
13200
13201   if (ex == ada_catch_handlers)
13202     {
13203       /* For exception handlers catchpoints, the condition string does
13204          not use the same parameter as for the other exceptions.  */
13205       result = ("long_integer (GNAT_GCC_exception_Access"
13206                 "(gcc_exception).all.occurrence.id)");
13207     }
13208   else
13209     result = "long_integer (e)";
13210
13211   /* The standard exceptions are a special case.  They are defined in
13212      runtime units that have been compiled without debugging info; if
13213      EXCEP_STRING is the not-fully-qualified name of a standard
13214      exception (e.g. "constraint_error") then, during the evaluation
13215      of the condition expression, the symbol lookup on this name would
13216      *not* return this standard exception.  The catchpoint condition
13217      may then be set only on user-defined exceptions which have the
13218      same not-fully-qualified name (e.g. my_package.constraint_error).
13219
13220      To avoid this unexcepted behavior, these standard exceptions are
13221      systematically prefixed by "standard".  This means that "catch
13222      exception constraint_error" is rewritten into "catch exception
13223      standard.constraint_error".
13224
13225      If an exception named contraint_error is defined in another package of
13226      the inferior program, then the only way to specify this exception as a
13227      breakpoint condition is to use its fully-qualified named:
13228      e.g. my_package.constraint_error.  */
13229
13230   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13231     {
13232       if (strcmp (standard_exc [i], excep_string) == 0)
13233         {
13234           is_standard_exc = true;
13235           break;
13236         }
13237     }
13238
13239   result += " = ";
13240
13241   if (is_standard_exc)
13242     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13243   else
13244     string_appendf (result, "long_integer (&%s)", excep_string);
13245
13246   return result;
13247 }
13248
13249 /* Return the symtab_and_line that should be used to insert an exception
13250    catchpoint of the TYPE kind.
13251
13252    ADDR_STRING returns the name of the function where the real
13253    breakpoint that implements the catchpoints is set, depending on the
13254    type of catchpoint we need to create.  */
13255
13256 static struct symtab_and_line
13257 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13258                    const char **addr_string, const struct breakpoint_ops **ops)
13259 {
13260   const char *sym_name;
13261   struct symbol *sym;
13262
13263   /* First, find out which exception support info to use.  */
13264   ada_exception_support_info_sniffer ();
13265
13266   /* Then lookup the function on which we will break in order to catch
13267      the Ada exceptions requested by the user.  */
13268   sym_name = ada_exception_sym_name (ex);
13269   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13270
13271   if (sym == NULL)
13272     error (_("Catchpoint symbol not found: %s"), sym_name);
13273
13274   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13275     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13276
13277   /* Set ADDR_STRING.  */
13278   *addr_string = xstrdup (sym_name);
13279
13280   /* Set OPS.  */
13281   *ops = ada_exception_breakpoint_ops (ex);
13282
13283   return find_function_start_sal (sym, 1);
13284 }
13285
13286 /* Create an Ada exception catchpoint.
13287
13288    EX_KIND is the kind of exception catchpoint to be created.
13289
13290    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13291    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13292    of the exception to which this catchpoint applies.
13293
13294    COND_STRING, if not empty, is the catchpoint condition.
13295
13296    TEMPFLAG, if nonzero, means that the underlying breakpoint
13297    should be temporary.
13298
13299    FROM_TTY is the usual argument passed to all commands implementations.  */
13300
13301 void
13302 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13303                                  enum ada_exception_catchpoint_kind ex_kind,
13304                                  const std::string &excep_string,
13305                                  const std::string &cond_string,
13306                                  int tempflag,
13307                                  int disabled,
13308                                  int from_tty)
13309 {
13310   const char *addr_string = NULL;
13311   const struct breakpoint_ops *ops = NULL;
13312   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13313
13314   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13315   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13316                                  ops, tempflag, disabled, from_tty);
13317   c->excep_string = excep_string;
13318   create_excep_cond_exprs (c.get (), ex_kind);
13319   if (!cond_string.empty ())
13320     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13321   install_breakpoint (0, std::move (c), 1);
13322 }
13323
13324 /* Implement the "catch exception" command.  */
13325
13326 static void
13327 catch_ada_exception_command (const char *arg_entry, int from_tty,
13328                              struct cmd_list_element *command)
13329 {
13330   const char *arg = arg_entry;
13331   struct gdbarch *gdbarch = get_current_arch ();
13332   int tempflag;
13333   enum ada_exception_catchpoint_kind ex_kind;
13334   std::string excep_string;
13335   std::string cond_string;
13336
13337   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13338
13339   if (!arg)
13340     arg = "";
13341   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13342                                      &cond_string);
13343   create_ada_exception_catchpoint (gdbarch, ex_kind,
13344                                    excep_string, cond_string,
13345                                    tempflag, 1 /* enabled */,
13346                                    from_tty);
13347 }
13348
13349 /* Implement the "catch handlers" command.  */
13350
13351 static void
13352 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13353                             struct cmd_list_element *command)
13354 {
13355   const char *arg = arg_entry;
13356   struct gdbarch *gdbarch = get_current_arch ();
13357   int tempflag;
13358   enum ada_exception_catchpoint_kind ex_kind;
13359   std::string excep_string;
13360   std::string cond_string;
13361
13362   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13363
13364   if (!arg)
13365     arg = "";
13366   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13367                                      &cond_string);
13368   create_ada_exception_catchpoint (gdbarch, ex_kind,
13369                                    excep_string, cond_string,
13370                                    tempflag, 1 /* enabled */,
13371                                    from_tty);
13372 }
13373
13374 /* Split the arguments specified in a "catch assert" command.
13375
13376    ARGS contains the command's arguments (or the empty string if
13377    no arguments were passed).
13378
13379    If ARGS contains a condition, set COND_STRING to that condition
13380    (the memory needs to be deallocated after use).  */
13381
13382 static void
13383 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13384 {
13385   args = skip_spaces (args);
13386
13387   /* Check whether a condition was provided.  */
13388   if (startswith (args, "if")
13389       && (isspace (args[2]) || args[2] == '\0'))
13390     {
13391       args += 2;
13392       args = skip_spaces (args);
13393       if (args[0] == '\0')
13394         error (_("condition missing after `if' keyword"));
13395       cond_string.assign (args);
13396     }
13397
13398   /* Otherwise, there should be no other argument at the end of
13399      the command.  */
13400   else if (args[0] != '\0')
13401     error (_("Junk at end of arguments."));
13402 }
13403
13404 /* Implement the "catch assert" command.  */
13405
13406 static void
13407 catch_assert_command (const char *arg_entry, int from_tty,
13408                       struct cmd_list_element *command)
13409 {
13410   const char *arg = arg_entry;
13411   struct gdbarch *gdbarch = get_current_arch ();
13412   int tempflag;
13413   std::string cond_string;
13414
13415   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13416
13417   if (!arg)
13418     arg = "";
13419   catch_ada_assert_command_split (arg, cond_string);
13420   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13421                                    "", cond_string,
13422                                    tempflag, 1 /* enabled */,
13423                                    from_tty);
13424 }
13425
13426 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13427
13428 static int
13429 ada_is_exception_sym (struct symbol *sym)
13430 {
13431   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13432
13433   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13434           && SYMBOL_CLASS (sym) != LOC_BLOCK
13435           && SYMBOL_CLASS (sym) != LOC_CONST
13436           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13437           && type_name != NULL && strcmp (type_name, "exception") == 0);
13438 }
13439
13440 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13441    Ada exception object.  This matches all exceptions except the ones
13442    defined by the Ada language.  */
13443
13444 static int
13445 ada_is_non_standard_exception_sym (struct symbol *sym)
13446 {
13447   int i;
13448
13449   if (!ada_is_exception_sym (sym))
13450     return 0;
13451
13452   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13453     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13454       return 0;  /* A standard exception.  */
13455
13456   /* Numeric_Error is also a standard exception, so exclude it.
13457      See the STANDARD_EXC description for more details as to why
13458      this exception is not listed in that array.  */
13459   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13460     return 0;
13461
13462   return 1;
13463 }
13464
13465 /* A helper function for std::sort, comparing two struct ada_exc_info
13466    objects.
13467
13468    The comparison is determined first by exception name, and then
13469    by exception address.  */
13470
13471 bool
13472 ada_exc_info::operator< (const ada_exc_info &other) const
13473 {
13474   int result;
13475
13476   result = strcmp (name, other.name);
13477   if (result < 0)
13478     return true;
13479   if (result == 0 && addr < other.addr)
13480     return true;
13481   return false;
13482 }
13483
13484 bool
13485 ada_exc_info::operator== (const ada_exc_info &other) const
13486 {
13487   return addr == other.addr && strcmp (name, other.name) == 0;
13488 }
13489
13490 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13491    routine, but keeping the first SKIP elements untouched.
13492
13493    All duplicates are also removed.  */
13494
13495 static void
13496 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13497                                       int skip)
13498 {
13499   std::sort (exceptions->begin () + skip, exceptions->end ());
13500   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13501                      exceptions->end ());
13502 }
13503
13504 /* Add all exceptions defined by the Ada standard whose name match
13505    a regular expression.
13506
13507    If PREG is not NULL, then this regexp_t object is used to
13508    perform the symbol name matching.  Otherwise, no name-based
13509    filtering is performed.
13510
13511    EXCEPTIONS is a vector of exceptions to which matching exceptions
13512    gets pushed.  */
13513
13514 static void
13515 ada_add_standard_exceptions (compiled_regex *preg,
13516                              std::vector<ada_exc_info> *exceptions)
13517 {
13518   int i;
13519
13520   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13521     {
13522       if (preg == NULL
13523           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13524         {
13525           struct bound_minimal_symbol msymbol
13526             = ada_lookup_simple_minsym (standard_exc[i]);
13527
13528           if (msymbol.minsym != NULL)
13529             {
13530               struct ada_exc_info info
13531                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13532
13533               exceptions->push_back (info);
13534             }
13535         }
13536     }
13537 }
13538
13539 /* Add all Ada exceptions defined locally and accessible from the given
13540    FRAME.
13541
13542    If PREG is not NULL, then this regexp_t object is used to
13543    perform the symbol name matching.  Otherwise, no name-based
13544    filtering is performed.
13545
13546    EXCEPTIONS is a vector of exceptions to which matching exceptions
13547    gets pushed.  */
13548
13549 static void
13550 ada_add_exceptions_from_frame (compiled_regex *preg,
13551                                struct frame_info *frame,
13552                                std::vector<ada_exc_info> *exceptions)
13553 {
13554   const struct block *block = get_frame_block (frame, 0);
13555
13556   while (block != 0)
13557     {
13558       struct block_iterator iter;
13559       struct symbol *sym;
13560
13561       ALL_BLOCK_SYMBOLS (block, iter, sym)
13562         {
13563           switch (SYMBOL_CLASS (sym))
13564             {
13565             case LOC_TYPEDEF:
13566             case LOC_BLOCK:
13567             case LOC_CONST:
13568               break;
13569             default:
13570               if (ada_is_exception_sym (sym))
13571                 {
13572                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13573                                               SYMBOL_VALUE_ADDRESS (sym)};
13574
13575                   exceptions->push_back (info);
13576                 }
13577             }
13578         }
13579       if (BLOCK_FUNCTION (block) != NULL)
13580         break;
13581       block = BLOCK_SUPERBLOCK (block);
13582     }
13583 }
13584
13585 /* Return true if NAME matches PREG or if PREG is NULL.  */
13586
13587 static bool
13588 name_matches_regex (const char *name, compiled_regex *preg)
13589 {
13590   return (preg == NULL
13591           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13592 }
13593
13594 /* Add all exceptions defined globally whose name name match
13595    a regular expression, excluding standard exceptions.
13596
13597    The reason we exclude standard exceptions is that they need
13598    to be handled separately: Standard exceptions are defined inside
13599    a runtime unit which is normally not compiled with debugging info,
13600    and thus usually do not show up in our symbol search.  However,
13601    if the unit was in fact built with debugging info, we need to
13602    exclude them because they would duplicate the entry we found
13603    during the special loop that specifically searches for those
13604    standard exceptions.
13605
13606    If PREG is not NULL, then this regexp_t object is used to
13607    perform the symbol name matching.  Otherwise, no name-based
13608    filtering is performed.
13609
13610    EXCEPTIONS is a vector of exceptions to which matching exceptions
13611    gets pushed.  */
13612
13613 static void
13614 ada_add_global_exceptions (compiled_regex *preg,
13615                            std::vector<ada_exc_info> *exceptions)
13616 {
13617   struct objfile *objfile;
13618   struct compunit_symtab *s;
13619
13620   /* In Ada, the symbol "search name" is a linkage name, whereas the
13621      regular expression used to do the matching refers to the natural
13622      name.  So match against the decoded name.  */
13623   expand_symtabs_matching (NULL,
13624                            lookup_name_info::match_any (),
13625                            [&] (const char *search_name)
13626                            {
13627                              const char *decoded = ada_decode (search_name);
13628                              return name_matches_regex (decoded, preg);
13629                            },
13630                            NULL,
13631                            VARIABLES_DOMAIN);
13632
13633   ALL_COMPUNITS (objfile, s)
13634     {
13635       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13636       int i;
13637
13638       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13639         {
13640           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13641           struct block_iterator iter;
13642           struct symbol *sym;
13643
13644           ALL_BLOCK_SYMBOLS (b, iter, sym)
13645             if (ada_is_non_standard_exception_sym (sym)
13646                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13647               {
13648                 struct ada_exc_info info
13649                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13650
13651                 exceptions->push_back (info);
13652               }
13653         }
13654     }
13655 }
13656
13657 /* Implements ada_exceptions_list with the regular expression passed
13658    as a regex_t, rather than a string.
13659
13660    If not NULL, PREG is used to filter out exceptions whose names
13661    do not match.  Otherwise, all exceptions are listed.  */
13662
13663 static std::vector<ada_exc_info>
13664 ada_exceptions_list_1 (compiled_regex *preg)
13665 {
13666   std::vector<ada_exc_info> result;
13667   int prev_len;
13668
13669   /* First, list the known standard exceptions.  These exceptions
13670      need to be handled separately, as they are usually defined in
13671      runtime units that have been compiled without debugging info.  */
13672
13673   ada_add_standard_exceptions (preg, &result);
13674
13675   /* Next, find all exceptions whose scope is local and accessible
13676      from the currently selected frame.  */
13677
13678   if (has_stack_frames ())
13679     {
13680       prev_len = result.size ();
13681       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13682                                      &result);
13683       if (result.size () > prev_len)
13684         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13685     }
13686
13687   /* Add all exceptions whose scope is global.  */
13688
13689   prev_len = result.size ();
13690   ada_add_global_exceptions (preg, &result);
13691   if (result.size () > prev_len)
13692     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13693
13694   return result;
13695 }
13696
13697 /* Return a vector of ada_exc_info.
13698
13699    If REGEXP is NULL, all exceptions are included in the result.
13700    Otherwise, it should contain a valid regular expression,
13701    and only the exceptions whose names match that regular expression
13702    are included in the result.
13703
13704    The exceptions are sorted in the following order:
13705      - Standard exceptions (defined by the Ada language), in
13706        alphabetical order;
13707      - Exceptions only visible from the current frame, in
13708        alphabetical order;
13709      - Exceptions whose scope is global, in alphabetical order.  */
13710
13711 std::vector<ada_exc_info>
13712 ada_exceptions_list (const char *regexp)
13713 {
13714   if (regexp == NULL)
13715     return ada_exceptions_list_1 (NULL);
13716
13717   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13718   return ada_exceptions_list_1 (&reg);
13719 }
13720
13721 /* Implement the "info exceptions" command.  */
13722
13723 static void
13724 info_exceptions_command (const char *regexp, int from_tty)
13725 {
13726   struct gdbarch *gdbarch = get_current_arch ();
13727
13728   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13729
13730   if (regexp != NULL)
13731     printf_filtered
13732       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13733   else
13734     printf_filtered (_("All defined Ada exceptions:\n"));
13735
13736   for (const ada_exc_info &info : exceptions)
13737     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13738 }
13739
13740                                 /* Operators */
13741 /* Information about operators given special treatment in functions
13742    below.  */
13743 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13744
13745 #define ADA_OPERATORS \
13746     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13747     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13748     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13749     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13750     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13751     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13752     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13753     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13754     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13755     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13756     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13757     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13758     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13759     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13760     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13761     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13762     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13763     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13764     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13765
13766 static void
13767 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13768                      int *argsp)
13769 {
13770   switch (exp->elts[pc - 1].opcode)
13771     {
13772     default:
13773       operator_length_standard (exp, pc, oplenp, argsp);
13774       break;
13775
13776 #define OP_DEFN(op, len, args, binop) \
13777     case op: *oplenp = len; *argsp = args; break;
13778       ADA_OPERATORS;
13779 #undef OP_DEFN
13780
13781     case OP_AGGREGATE:
13782       *oplenp = 3;
13783       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13784       break;
13785
13786     case OP_CHOICES:
13787       *oplenp = 3;
13788       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13789       break;
13790     }
13791 }
13792
13793 /* Implementation of the exp_descriptor method operator_check.  */
13794
13795 static int
13796 ada_operator_check (struct expression *exp, int pos,
13797                     int (*objfile_func) (struct objfile *objfile, void *data),
13798                     void *data)
13799 {
13800   const union exp_element *const elts = exp->elts;
13801   struct type *type = NULL;
13802
13803   switch (elts[pos].opcode)
13804     {
13805       case UNOP_IN_RANGE:
13806       case UNOP_QUAL:
13807         type = elts[pos + 1].type;
13808         break;
13809
13810       default:
13811         return operator_check_standard (exp, pos, objfile_func, data);
13812     }
13813
13814   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13815
13816   if (type && TYPE_OBJFILE (type)
13817       && (*objfile_func) (TYPE_OBJFILE (type), data))
13818     return 1;
13819
13820   return 0;
13821 }
13822
13823 static const char *
13824 ada_op_name (enum exp_opcode opcode)
13825 {
13826   switch (opcode)
13827     {
13828     default:
13829       return op_name_standard (opcode);
13830
13831 #define OP_DEFN(op, len, args, binop) case op: return #op;
13832       ADA_OPERATORS;
13833 #undef OP_DEFN
13834
13835     case OP_AGGREGATE:
13836       return "OP_AGGREGATE";
13837     case OP_CHOICES:
13838       return "OP_CHOICES";
13839     case OP_NAME:
13840       return "OP_NAME";
13841     }
13842 }
13843
13844 /* As for operator_length, but assumes PC is pointing at the first
13845    element of the operator, and gives meaningful results only for the 
13846    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13847
13848 static void
13849 ada_forward_operator_length (struct expression *exp, int pc,
13850                              int *oplenp, int *argsp)
13851 {
13852   switch (exp->elts[pc].opcode)
13853     {
13854     default:
13855       *oplenp = *argsp = 0;
13856       break;
13857
13858 #define OP_DEFN(op, len, args, binop) \
13859     case op: *oplenp = len; *argsp = args; break;
13860       ADA_OPERATORS;
13861 #undef OP_DEFN
13862
13863     case OP_AGGREGATE:
13864       *oplenp = 3;
13865       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13866       break;
13867
13868     case OP_CHOICES:
13869       *oplenp = 3;
13870       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13871       break;
13872
13873     case OP_STRING:
13874     case OP_NAME:
13875       {
13876         int len = longest_to_int (exp->elts[pc + 1].longconst);
13877
13878         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13879         *argsp = 0;
13880         break;
13881       }
13882     }
13883 }
13884
13885 static int
13886 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13887 {
13888   enum exp_opcode op = exp->elts[elt].opcode;
13889   int oplen, nargs;
13890   int pc = elt;
13891   int i;
13892
13893   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13894
13895   switch (op)
13896     {
13897       /* Ada attributes ('Foo).  */
13898     case OP_ATR_FIRST:
13899     case OP_ATR_LAST:
13900     case OP_ATR_LENGTH:
13901     case OP_ATR_IMAGE:
13902     case OP_ATR_MAX:
13903     case OP_ATR_MIN:
13904     case OP_ATR_MODULUS:
13905     case OP_ATR_POS:
13906     case OP_ATR_SIZE:
13907     case OP_ATR_TAG:
13908     case OP_ATR_VAL:
13909       break;
13910
13911     case UNOP_IN_RANGE:
13912     case UNOP_QUAL:
13913       /* XXX: gdb_sprint_host_address, type_sprint */
13914       fprintf_filtered (stream, _("Type @"));
13915       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13916       fprintf_filtered (stream, " (");
13917       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13918       fprintf_filtered (stream, ")");
13919       break;
13920     case BINOP_IN_BOUNDS:
13921       fprintf_filtered (stream, " (%d)",
13922                         longest_to_int (exp->elts[pc + 2].longconst));
13923       break;
13924     case TERNOP_IN_RANGE:
13925       break;
13926
13927     case OP_AGGREGATE:
13928     case OP_OTHERS:
13929     case OP_DISCRETE_RANGE:
13930     case OP_POSITIONAL:
13931     case OP_CHOICES:
13932       break;
13933
13934     case OP_NAME:
13935     case OP_STRING:
13936       {
13937         char *name = &exp->elts[elt + 2].string;
13938         int len = longest_to_int (exp->elts[elt + 1].longconst);
13939
13940         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13941         break;
13942       }
13943
13944     default:
13945       return dump_subexp_body_standard (exp, stream, elt);
13946     }
13947
13948   elt += oplen;
13949   for (i = 0; i < nargs; i += 1)
13950     elt = dump_subexp (exp, stream, elt);
13951
13952   return elt;
13953 }
13954
13955 /* The Ada extension of print_subexp (q.v.).  */
13956
13957 static void
13958 ada_print_subexp (struct expression *exp, int *pos,
13959                   struct ui_file *stream, enum precedence prec)
13960 {
13961   int oplen, nargs, i;
13962   int pc = *pos;
13963   enum exp_opcode op = exp->elts[pc].opcode;
13964
13965   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13966
13967   *pos += oplen;
13968   switch (op)
13969     {
13970     default:
13971       *pos -= oplen;
13972       print_subexp_standard (exp, pos, stream, prec);
13973       return;
13974
13975     case OP_VAR_VALUE:
13976       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13977       return;
13978
13979     case BINOP_IN_BOUNDS:
13980       /* XXX: sprint_subexp */
13981       print_subexp (exp, pos, stream, PREC_SUFFIX);
13982       fputs_filtered (" in ", stream);
13983       print_subexp (exp, pos, stream, PREC_SUFFIX);
13984       fputs_filtered ("'range", stream);
13985       if (exp->elts[pc + 1].longconst > 1)
13986         fprintf_filtered (stream, "(%ld)",
13987                           (long) exp->elts[pc + 1].longconst);
13988       return;
13989
13990     case TERNOP_IN_RANGE:
13991       if (prec >= PREC_EQUAL)
13992         fputs_filtered ("(", stream);
13993       /* XXX: sprint_subexp */
13994       print_subexp (exp, pos, stream, PREC_SUFFIX);
13995       fputs_filtered (" in ", stream);
13996       print_subexp (exp, pos, stream, PREC_EQUAL);
13997       fputs_filtered (" .. ", stream);
13998       print_subexp (exp, pos, stream, PREC_EQUAL);
13999       if (prec >= PREC_EQUAL)
14000         fputs_filtered (")", stream);
14001       return;
14002
14003     case OP_ATR_FIRST:
14004     case OP_ATR_LAST:
14005     case OP_ATR_LENGTH:
14006     case OP_ATR_IMAGE:
14007     case OP_ATR_MAX:
14008     case OP_ATR_MIN:
14009     case OP_ATR_MODULUS:
14010     case OP_ATR_POS:
14011     case OP_ATR_SIZE:
14012     case OP_ATR_TAG:
14013     case OP_ATR_VAL:
14014       if (exp->elts[*pos].opcode == OP_TYPE)
14015         {
14016           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14017             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14018                            &type_print_raw_options);
14019           *pos += 3;
14020         }
14021       else
14022         print_subexp (exp, pos, stream, PREC_SUFFIX);
14023       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14024       if (nargs > 1)
14025         {
14026           int tem;
14027
14028           for (tem = 1; tem < nargs; tem += 1)
14029             {
14030               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14031               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14032             }
14033           fputs_filtered (")", stream);
14034         }
14035       return;
14036
14037     case UNOP_QUAL:
14038       type_print (exp->elts[pc + 1].type, "", stream, 0);
14039       fputs_filtered ("'(", stream);
14040       print_subexp (exp, pos, stream, PREC_PREFIX);
14041       fputs_filtered (")", stream);
14042       return;
14043
14044     case UNOP_IN_RANGE:
14045       /* XXX: sprint_subexp */
14046       print_subexp (exp, pos, stream, PREC_SUFFIX);
14047       fputs_filtered (" in ", stream);
14048       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14049                      &type_print_raw_options);
14050       return;
14051
14052     case OP_DISCRETE_RANGE:
14053       print_subexp (exp, pos, stream, PREC_SUFFIX);
14054       fputs_filtered ("..", stream);
14055       print_subexp (exp, pos, stream, PREC_SUFFIX);
14056       return;
14057
14058     case OP_OTHERS:
14059       fputs_filtered ("others => ", stream);
14060       print_subexp (exp, pos, stream, PREC_SUFFIX);
14061       return;
14062
14063     case OP_CHOICES:
14064       for (i = 0; i < nargs-1; i += 1)
14065         {
14066           if (i > 0)
14067             fputs_filtered ("|", stream);
14068           print_subexp (exp, pos, stream, PREC_SUFFIX);
14069         }
14070       fputs_filtered (" => ", stream);
14071       print_subexp (exp, pos, stream, PREC_SUFFIX);
14072       return;
14073       
14074     case OP_POSITIONAL:
14075       print_subexp (exp, pos, stream, PREC_SUFFIX);
14076       return;
14077
14078     case OP_AGGREGATE:
14079       fputs_filtered ("(", stream);
14080       for (i = 0; i < nargs; i += 1)
14081         {
14082           if (i > 0)
14083             fputs_filtered (", ", stream);
14084           print_subexp (exp, pos, stream, PREC_SUFFIX);
14085         }
14086       fputs_filtered (")", stream);
14087       return;
14088     }
14089 }
14090
14091 /* Table mapping opcodes into strings for printing operators
14092    and precedences of the operators.  */
14093
14094 static const struct op_print ada_op_print_tab[] = {
14095   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14096   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14097   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14098   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14099   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14100   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14101   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14102   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14103   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14104   {">=", BINOP_GEQ, PREC_ORDER, 0},
14105   {">", BINOP_GTR, PREC_ORDER, 0},
14106   {"<", BINOP_LESS, PREC_ORDER, 0},
14107   {">>", BINOP_RSH, PREC_SHIFT, 0},
14108   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14109   {"+", BINOP_ADD, PREC_ADD, 0},
14110   {"-", BINOP_SUB, PREC_ADD, 0},
14111   {"&", BINOP_CONCAT, PREC_ADD, 0},
14112   {"*", BINOP_MUL, PREC_MUL, 0},
14113   {"/", BINOP_DIV, PREC_MUL, 0},
14114   {"rem", BINOP_REM, PREC_MUL, 0},
14115   {"mod", BINOP_MOD, PREC_MUL, 0},
14116   {"**", BINOP_EXP, PREC_REPEAT, 0},
14117   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14118   {"-", UNOP_NEG, PREC_PREFIX, 0},
14119   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14120   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14121   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14122   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14123   {".all", UNOP_IND, PREC_SUFFIX, 1},
14124   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14125   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14126   {NULL, OP_NULL, PREC_SUFFIX, 0}
14127 };
14128 \f
14129 enum ada_primitive_types {
14130   ada_primitive_type_int,
14131   ada_primitive_type_long,
14132   ada_primitive_type_short,
14133   ada_primitive_type_char,
14134   ada_primitive_type_float,
14135   ada_primitive_type_double,
14136   ada_primitive_type_void,
14137   ada_primitive_type_long_long,
14138   ada_primitive_type_long_double,
14139   ada_primitive_type_natural,
14140   ada_primitive_type_positive,
14141   ada_primitive_type_system_address,
14142   ada_primitive_type_storage_offset,
14143   nr_ada_primitive_types
14144 };
14145
14146 static void
14147 ada_language_arch_info (struct gdbarch *gdbarch,
14148                         struct language_arch_info *lai)
14149 {
14150   const struct builtin_type *builtin = builtin_type (gdbarch);
14151
14152   lai->primitive_type_vector
14153     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14154                               struct type *);
14155
14156   lai->primitive_type_vector [ada_primitive_type_int]
14157     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14158                          0, "integer");
14159   lai->primitive_type_vector [ada_primitive_type_long]
14160     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14161                          0, "long_integer");
14162   lai->primitive_type_vector [ada_primitive_type_short]
14163     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14164                          0, "short_integer");
14165   lai->string_char_type
14166     = lai->primitive_type_vector [ada_primitive_type_char]
14167     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14168   lai->primitive_type_vector [ada_primitive_type_float]
14169     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14170                        "float", gdbarch_float_format (gdbarch));
14171   lai->primitive_type_vector [ada_primitive_type_double]
14172     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14173                        "long_float", gdbarch_double_format (gdbarch));
14174   lai->primitive_type_vector [ada_primitive_type_long_long]
14175     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14176                          0, "long_long_integer");
14177   lai->primitive_type_vector [ada_primitive_type_long_double]
14178     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14179                        "long_long_float", gdbarch_long_double_format (gdbarch));
14180   lai->primitive_type_vector [ada_primitive_type_natural]
14181     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14182                          0, "natural");
14183   lai->primitive_type_vector [ada_primitive_type_positive]
14184     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14185                          0, "positive");
14186   lai->primitive_type_vector [ada_primitive_type_void]
14187     = builtin->builtin_void;
14188
14189   lai->primitive_type_vector [ada_primitive_type_system_address]
14190     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14191                                       "void"));
14192   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14193     = "system__address";
14194
14195   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14196      type.  This is a signed integral type whose size is the same as
14197      the size of addresses.  */
14198   {
14199     unsigned int addr_length = TYPE_LENGTH
14200       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14201
14202     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14203       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14204                            "storage_offset");
14205   }
14206
14207   lai->bool_type_symbol = NULL;
14208   lai->bool_type_default = builtin->builtin_bool;
14209 }
14210 \f
14211                                 /* Language vector */
14212
14213 /* Not really used, but needed in the ada_language_defn.  */
14214
14215 static void
14216 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14217 {
14218   ada_emit_char (c, type, stream, quoter, 1);
14219 }
14220
14221 static int
14222 parse (struct parser_state *ps)
14223 {
14224   warnings_issued = 0;
14225   return ada_parse (ps);
14226 }
14227
14228 static const struct exp_descriptor ada_exp_descriptor = {
14229   ada_print_subexp,
14230   ada_operator_length,
14231   ada_operator_check,
14232   ada_op_name,
14233   ada_dump_subexp_body,
14234   ada_evaluate_subexp
14235 };
14236
14237 /* symbol_name_matcher_ftype adapter for wild_match.  */
14238
14239 static bool
14240 do_wild_match (const char *symbol_search_name,
14241                const lookup_name_info &lookup_name,
14242                completion_match_result *comp_match_res)
14243 {
14244   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14245 }
14246
14247 /* symbol_name_matcher_ftype adapter for full_match.  */
14248
14249 static bool
14250 do_full_match (const char *symbol_search_name,
14251                const lookup_name_info &lookup_name,
14252                completion_match_result *comp_match_res)
14253 {
14254   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14255 }
14256
14257 /* Build the Ada lookup name for LOOKUP_NAME.  */
14258
14259 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14260 {
14261   const std::string &user_name = lookup_name.name ();
14262
14263   if (user_name[0] == '<')
14264     {
14265       if (user_name.back () == '>')
14266         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14267       else
14268         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14269       m_encoded_p = true;
14270       m_verbatim_p = true;
14271       m_wild_match_p = false;
14272       m_standard_p = false;
14273     }
14274   else
14275     {
14276       m_verbatim_p = false;
14277
14278       m_encoded_p = user_name.find ("__") != std::string::npos;
14279
14280       if (!m_encoded_p)
14281         {
14282           const char *folded = ada_fold_name (user_name.c_str ());
14283           const char *encoded = ada_encode_1 (folded, false);
14284           if (encoded != NULL)
14285             m_encoded_name = encoded;
14286           else
14287             m_encoded_name = user_name;
14288         }
14289       else
14290         m_encoded_name = user_name;
14291
14292       /* Handle the 'package Standard' special case.  See description
14293          of m_standard_p.  */
14294       if (startswith (m_encoded_name.c_str (), "standard__"))
14295         {
14296           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14297           m_standard_p = true;
14298         }
14299       else
14300         m_standard_p = false;
14301
14302       /* If the name contains a ".", then the user is entering a fully
14303          qualified entity name, and the match must not be done in wild
14304          mode.  Similarly, if the user wants to complete what looks
14305          like an encoded name, the match must not be done in wild
14306          mode.  Also, in the standard__ special case always do
14307          non-wild matching.  */
14308       m_wild_match_p
14309         = (lookup_name.match_type () != symbol_name_match_type::FULL
14310            && !m_encoded_p
14311            && !m_standard_p
14312            && user_name.find ('.') == std::string::npos);
14313     }
14314 }
14315
14316 /* symbol_name_matcher_ftype method for Ada.  This only handles
14317    completion mode.  */
14318
14319 static bool
14320 ada_symbol_name_matches (const char *symbol_search_name,
14321                          const lookup_name_info &lookup_name,
14322                          completion_match_result *comp_match_res)
14323 {
14324   return lookup_name.ada ().matches (symbol_search_name,
14325                                      lookup_name.match_type (),
14326                                      comp_match_res);
14327 }
14328
14329 /* A name matcher that matches the symbol name exactly, with
14330    strcmp.  */
14331
14332 static bool
14333 literal_symbol_name_matcher (const char *symbol_search_name,
14334                              const lookup_name_info &lookup_name,
14335                              completion_match_result *comp_match_res)
14336 {
14337   const std::string &name = lookup_name.name ();
14338
14339   int cmp = (lookup_name.completion_mode ()
14340              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14341              : strcmp (symbol_search_name, name.c_str ()));
14342   if (cmp == 0)
14343     {
14344       if (comp_match_res != NULL)
14345         comp_match_res->set_match (symbol_search_name);
14346       return true;
14347     }
14348   else
14349     return false;
14350 }
14351
14352 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14353    Ada.  */
14354
14355 static symbol_name_matcher_ftype *
14356 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14357 {
14358   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14359     return literal_symbol_name_matcher;
14360
14361   if (lookup_name.completion_mode ())
14362     return ada_symbol_name_matches;
14363   else
14364     {
14365       if (lookup_name.ada ().wild_match_p ())
14366         return do_wild_match;
14367       else
14368         return do_full_match;
14369     }
14370 }
14371
14372 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14373
14374 static struct value *
14375 ada_read_var_value (struct symbol *var, const struct block *var_block,
14376                     struct frame_info *frame)
14377 {
14378   const struct block *frame_block = NULL;
14379   struct symbol *renaming_sym = NULL;
14380
14381   /* The only case where default_read_var_value is not sufficient
14382      is when VAR is a renaming...  */
14383   if (frame)
14384     frame_block = get_frame_block (frame, NULL);
14385   if (frame_block)
14386     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14387   if (renaming_sym != NULL)
14388     return ada_read_renaming_var_value (renaming_sym, frame_block);
14389
14390   /* This is a typical case where we expect the default_read_var_value
14391      function to work.  */
14392   return default_read_var_value (var, var_block, frame);
14393 }
14394
14395 static const char *ada_extensions[] =
14396 {
14397   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14398 };
14399
14400 extern const struct language_defn ada_language_defn = {
14401   "ada",                        /* Language name */
14402   "Ada",
14403   language_ada,
14404   range_check_off,
14405   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14406                                    that's not quite what this means.  */
14407   array_row_major,
14408   macro_expansion_no,
14409   ada_extensions,
14410   &ada_exp_descriptor,
14411   parse,
14412   resolve,
14413   ada_printchar,                /* Print a character constant */
14414   ada_printstr,                 /* Function to print string constant */
14415   emit_char,                    /* Function to print single char (not used) */
14416   ada_print_type,               /* Print a type using appropriate syntax */
14417   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14418   ada_val_print,                /* Print a value using appropriate syntax */
14419   ada_value_print,              /* Print a top-level value */
14420   ada_read_var_value,           /* la_read_var_value */
14421   NULL,                         /* Language specific skip_trampoline */
14422   NULL,                         /* name_of_this */
14423   true,                         /* la_store_sym_names_in_linkage_form_p */
14424   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14425   basic_lookup_transparent_type,        /* lookup_transparent_type */
14426   ada_la_decode,                /* Language specific symbol demangler */
14427   ada_sniff_from_mangled_name,
14428   NULL,                         /* Language specific
14429                                    class_name_from_physname */
14430   ada_op_print_tab,             /* expression operators for printing */
14431   0,                            /* c-style arrays */
14432   1,                            /* String lower bound */
14433   ada_get_gdb_completer_word_break_characters,
14434   ada_collect_symbol_completion_matches,
14435   ada_language_arch_info,
14436   ada_print_array_index,
14437   default_pass_by_reference,
14438   c_get_string,
14439   ada_watch_location_expression,
14440   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14441   ada_iterate_over_symbols,
14442   default_search_name_hash,
14443   &ada_varobj_ops,
14444   NULL,
14445   NULL,
14446   LANG_MAGIC
14447 };
14448
14449 /* Command-list for the "set/show ada" prefix command.  */
14450 static struct cmd_list_element *set_ada_list;
14451 static struct cmd_list_element *show_ada_list;
14452
14453 /* Implement the "set ada" prefix command.  */
14454
14455 static void
14456 set_ada_command (const char *arg, int from_tty)
14457 {
14458   printf_unfiltered (_(\
14459 "\"set ada\" must be followed by the name of a setting.\n"));
14460   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14461 }
14462
14463 /* Implement the "show ada" prefix command.  */
14464
14465 static void
14466 show_ada_command (const char *args, int from_tty)
14467 {
14468   cmd_show_list (show_ada_list, from_tty, "");
14469 }
14470
14471 static void
14472 initialize_ada_catchpoint_ops (void)
14473 {
14474   struct breakpoint_ops *ops;
14475
14476   initialize_breakpoint_ops ();
14477
14478   ops = &catch_exception_breakpoint_ops;
14479   *ops = bkpt_breakpoint_ops;
14480   ops->allocate_location = allocate_location_catch_exception;
14481   ops->re_set = re_set_catch_exception;
14482   ops->check_status = check_status_catch_exception;
14483   ops->print_it = print_it_catch_exception;
14484   ops->print_one = print_one_catch_exception;
14485   ops->print_mention = print_mention_catch_exception;
14486   ops->print_recreate = print_recreate_catch_exception;
14487
14488   ops = &catch_exception_unhandled_breakpoint_ops;
14489   *ops = bkpt_breakpoint_ops;
14490   ops->allocate_location = allocate_location_catch_exception_unhandled;
14491   ops->re_set = re_set_catch_exception_unhandled;
14492   ops->check_status = check_status_catch_exception_unhandled;
14493   ops->print_it = print_it_catch_exception_unhandled;
14494   ops->print_one = print_one_catch_exception_unhandled;
14495   ops->print_mention = print_mention_catch_exception_unhandled;
14496   ops->print_recreate = print_recreate_catch_exception_unhandled;
14497
14498   ops = &catch_assert_breakpoint_ops;
14499   *ops = bkpt_breakpoint_ops;
14500   ops->allocate_location = allocate_location_catch_assert;
14501   ops->re_set = re_set_catch_assert;
14502   ops->check_status = check_status_catch_assert;
14503   ops->print_it = print_it_catch_assert;
14504   ops->print_one = print_one_catch_assert;
14505   ops->print_mention = print_mention_catch_assert;
14506   ops->print_recreate = print_recreate_catch_assert;
14507
14508   ops = &catch_handlers_breakpoint_ops;
14509   *ops = bkpt_breakpoint_ops;
14510   ops->allocate_location = allocate_location_catch_handlers;
14511   ops->re_set = re_set_catch_handlers;
14512   ops->check_status = check_status_catch_handlers;
14513   ops->print_it = print_it_catch_handlers;
14514   ops->print_one = print_one_catch_handlers;
14515   ops->print_mention = print_mention_catch_handlers;
14516   ops->print_recreate = print_recreate_catch_handlers;
14517 }
14518
14519 /* This module's 'new_objfile' observer.  */
14520
14521 static void
14522 ada_new_objfile_observer (struct objfile *objfile)
14523 {
14524   ada_clear_symbol_cache ();
14525 }
14526
14527 /* This module's 'free_objfile' observer.  */
14528
14529 static void
14530 ada_free_objfile_observer (struct objfile *objfile)
14531 {
14532   ada_clear_symbol_cache ();
14533 }
14534
14535 void
14536 _initialize_ada_language (void)
14537 {
14538   initialize_ada_catchpoint_ops ();
14539
14540   add_prefix_cmd ("ada", no_class, set_ada_command,
14541                   _("Prefix command for changing Ada-specific settings"),
14542                   &set_ada_list, "set ada ", 0, &setlist);
14543
14544   add_prefix_cmd ("ada", no_class, show_ada_command,
14545                   _("Generic command for showing Ada-specific settings."),
14546                   &show_ada_list, "show ada ", 0, &showlist);
14547
14548   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14549                            &trust_pad_over_xvs, _("\
14550 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14551 Show whether an optimization trusting PAD types over XVS types is activated"),
14552                            _("\
14553 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14554 should normally trust the contents of PAD types, but certain older versions\n\
14555 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14556 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14557 work around this bug.  It is always safe to turn this option \"off\", but\n\
14558 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14559 this option to \"off\" unless necessary."),
14560                             NULL, NULL, &set_ada_list, &show_ada_list);
14561
14562   add_setshow_boolean_cmd ("print-signatures", class_vars,
14563                            &print_signatures, _("\
14564 Enable or disable the output of formal and return types for functions in the \
14565 overloads selection menu"), _("\
14566 Show whether the output of formal and return types for functions in the \
14567 overloads selection menu is activated"),
14568                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14569
14570   add_catch_command ("exception", _("\
14571 Catch Ada exceptions, when raised.\n\
14572 With an argument, catch only exceptions with the given name."),
14573                      catch_ada_exception_command,
14574                      NULL,
14575                      CATCH_PERMANENT,
14576                      CATCH_TEMPORARY);
14577
14578   add_catch_command ("handlers", _("\
14579 Catch Ada exceptions, when handled.\n\
14580 With an argument, catch only exceptions with the given name."),
14581                      catch_ada_handlers_command,
14582                      NULL,
14583                      CATCH_PERMANENT,
14584                      CATCH_TEMPORARY);
14585   add_catch_command ("assert", _("\
14586 Catch failed Ada assertions, when raised.\n\
14587 With an argument, catch only exceptions with the given name."),
14588                      catch_assert_command,
14589                      NULL,
14590                      CATCH_PERMANENT,
14591                      CATCH_TEMPORARY);
14592
14593   varsize_limit = 65536;
14594   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14595                             &varsize_limit, _("\
14596 Set the maximum number of bytes allowed in a variable-size object."), _("\
14597 Show the maximum number of bytes allowed in a variable-size object."), _("\
14598 Attempts to access an object whose size is not a compile-time constant\n\
14599 and exceeds this limit will cause an error."),
14600                             NULL, NULL, &setlist, &showlist);
14601
14602   add_info ("exceptions", info_exceptions_command,
14603             _("\
14604 List all Ada exception names.\n\
14605 If a regular expression is passed as an argument, only those matching\n\
14606 the regular expression are listed."));
14607
14608   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14609                   _("Set Ada maintenance-related variables."),
14610                   &maint_set_ada_cmdlist, "maintenance set ada ",
14611                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14612
14613   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14614                   _("Show Ada maintenance-related variables"),
14615                   &maint_show_ada_cmdlist, "maintenance show ada ",
14616                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14617
14618   add_setshow_boolean_cmd
14619     ("ignore-descriptive-types", class_maintenance,
14620      &ada_ignore_descriptive_types_p,
14621      _("Set whether descriptive types generated by GNAT should be ignored."),
14622      _("Show whether descriptive types generated by GNAT should be ignored."),
14623      _("\
14624 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14625 DWARF attribute."),
14626      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14627
14628   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14629                                            NULL, xcalloc, xfree);
14630
14631   /* The ada-lang observers.  */
14632   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14633   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14634   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14635
14636   /* Setup various context-specific data.  */
14637   ada_inferior_data
14638     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14639   ada_pspace_data_handle
14640     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14641 }