New cli-utils.h/.c function extract_info_print_args
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "vec.h"
53 #include "stack.h"
54 #include "gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66
67 /* Define whether or not the C operator '/' truncates towards zero for
68    differently signed operands (truncation direction is undefined in C).
69    Copied from valarith.c.  */
70
71 #ifndef TRUNCATION_TOWARDS_ZERO
72 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
73 #endif
74
75 static struct type *desc_base_type (struct type *);
76
77 static struct type *desc_bounds_type (struct type *);
78
79 static struct value *desc_bounds (struct value *);
80
81 static int fat_pntr_bounds_bitpos (struct type *);
82
83 static int fat_pntr_bounds_bitsize (struct type *);
84
85 static struct type *desc_data_target_type (struct type *);
86
87 static struct value *desc_data (struct value *);
88
89 static int fat_pntr_data_bitpos (struct type *);
90
91 static int fat_pntr_data_bitsize (struct type *);
92
93 static struct value *desc_one_bound (struct value *, int, int);
94
95 static int desc_bound_bitpos (struct type *, int, int);
96
97 static int desc_bound_bitsize (struct type *, int, int);
98
99 static struct type *desc_index_type (struct type *, int);
100
101 static int desc_arity (struct type *);
102
103 static int ada_type_match (struct type *, struct type *, int);
104
105 static int ada_args_match (struct symbol *, struct value **, int);
106
107 static struct value *make_array_descriptor (struct type *, struct value *);
108
109 static void ada_add_block_symbols (struct obstack *,
110                                    const struct block *,
111                                    const lookup_name_info &lookup_name,
112                                    domain_enum, struct objfile *);
113
114 static void ada_add_all_symbols (struct obstack *, const struct block *,
115                                  const lookup_name_info &lookup_name,
116                                  domain_enum, int, int *);
117
118 static int is_nonfunction (struct block_symbol *, int);
119
120 static void add_defn_to_vec (struct obstack *, struct symbol *,
121                              const struct block *);
122
123 static int num_defns_collected (struct obstack *);
124
125 static struct block_symbol *defns_collected (struct obstack *, int);
126
127 static struct value *resolve_subexp (expression_up *, int *, int,
128                                      struct type *);
129
130 static void replace_operator_with_call (expression_up *, int, int, int,
131                                         struct symbol *, const struct block *);
132
133 static int possible_user_operator_p (enum exp_opcode, struct value **);
134
135 static const char *ada_op_name (enum exp_opcode);
136
137 static const char *ada_decoded_op_name (enum exp_opcode);
138
139 static int numeric_type_p (struct type *);
140
141 static int integer_type_p (struct type *);
142
143 static int scalar_type_p (struct type *);
144
145 static int discrete_type_p (struct type *);
146
147 static enum ada_renaming_category parse_old_style_renaming (struct type *,
148                                                             const char **,
149                                                             int *,
150                                                             const char **);
151
152 static struct symbol *find_old_style_renaming_symbol (const char *,
153                                                       const struct block *);
154
155 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
156                                                 int, int);
157
158 static struct value *evaluate_subexp_type (struct expression *, int *);
159
160 static struct type *ada_find_parallel_type_with_name (struct type *,
161                                                       const char *);
162
163 static int is_dynamic_field (struct type *, int);
164
165 static struct type *to_fixed_variant_branch_type (struct type *,
166                                                   const gdb_byte *,
167                                                   CORE_ADDR, struct value *);
168
169 static struct type *to_fixed_array_type (struct type *, struct value *, int);
170
171 static struct type *to_fixed_range_type (struct type *, struct value *);
172
173 static struct type *to_static_fixed_type (struct type *);
174 static struct type *static_unwrap_type (struct type *type);
175
176 static struct value *unwrap_value (struct value *);
177
178 static struct type *constrained_packed_array_type (struct type *, long *);
179
180 static struct type *decode_constrained_packed_array_type (struct type *);
181
182 static long decode_packed_array_bitsize (struct type *);
183
184 static struct value *decode_constrained_packed_array (struct value *);
185
186 static int ada_is_packed_array_type  (struct type *);
187
188 static int ada_is_unconstrained_packed_array_type (struct type *);
189
190 static struct value *value_subscript_packed (struct value *, int,
191                                              struct value **);
192
193 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196                                                 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217                                        domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220                                               struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223                                                 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226                               struct type **, int *, int *, int *, int *);
227
228 static int ada_resolve_function (struct block_symbol *, int,
229                                  struct value **, int, const char *,
230                                  struct type *);
231
232 static int ada_is_direct_array_type (struct type *);
233
234 static void ada_language_arch_info (struct gdbarch *,
235                                     struct language_arch_info *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238                                              struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *, 
241                                        struct expression *,
242                                        int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *, 
245                                            struct expression *,
246                                            int *, LONGEST *, int *,
247                                            int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250                                          struct expression *,
251                                          int *, LONGEST *, int *, int,
252                                          LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256                                      struct expression *,
257                                      int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264                                           int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267                                          int *);
268
269 static struct type *ada_find_any_type (const char *name);
270
271 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
272   (const lookup_name_info &lookup_name);
273
274 \f
275
276 /* The result of a symbol lookup to be stored in our symbol cache.  */
277
278 struct cache_entry
279 {
280   /* The name used to perform the lookup.  */
281   const char *name;
282   /* The namespace used during the lookup.  */
283   domain_enum domain;
284   /* The symbol returned by the lookup, or NULL if no matching symbol
285      was found.  */
286   struct symbol *sym;
287   /* The block where the symbol was found, or NULL if no matching
288      symbol was found.  */
289   const struct block *block;
290   /* A pointer to the next entry with the same hash.  */
291   struct cache_entry *next;
292 };
293
294 /* The Ada symbol cache, used to store the result of Ada-mode symbol
295    lookups in the course of executing the user's commands.
296
297    The cache is implemented using a simple, fixed-sized hash.
298    The size is fixed on the grounds that there are not likely to be
299    all that many symbols looked up during any given session, regardless
300    of the size of the symbol table.  If we decide to go to a resizable
301    table, let's just use the stuff from libiberty instead.  */
302
303 #define HASH_SIZE 1009
304
305 struct ada_symbol_cache
306 {
307   /* An obstack used to store the entries in our cache.  */
308   struct obstack cache_space;
309
310   /* The root of the hash table used to implement our symbol cache.  */
311   struct cache_entry *root[HASH_SIZE];
312 };
313
314 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
315
316 /* Maximum-sized dynamic type.  */
317 static unsigned int varsize_limit;
318
319 static const char ada_completer_word_break_characters[] =
320 #ifdef VMS
321   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram.  */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328   = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation.  */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334    expression evaluation.  */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Maintenance-related settings for this module.  */
346
347 static struct cmd_list_element *maint_set_ada_cmdlist;
348 static struct cmd_list_element *maint_show_ada_cmdlist;
349
350 /* Implement the "maintenance set ada" (prefix) command.  */
351
352 static void
353 maint_set_ada_cmd (const char *args, int from_tty)
354 {
355   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
356              gdb_stdout);
357 }
358
359 /* Implement the "maintenance show ada" (prefix) command.  */
360
361 static void
362 maint_show_ada_cmd (const char *args, int from_tty)
363 {
364   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
365 }
366
367 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
368
369 static int ada_ignore_descriptive_types_p = 0;
370
371                         /* Inferior-specific data.  */
372
373 /* Per-inferior data for this module.  */
374
375 struct ada_inferior_data
376 {
377   /* The ada__tags__type_specific_data type, which is used when decoding
378      tagged types.  With older versions of GNAT, this type was directly
379      accessible through a component ("tsd") in the object tag.  But this
380      is no longer the case, so we cache it for each inferior.  */
381   struct type *tsd_type;
382
383   /* The exception_support_info data.  This data is used to determine
384      how to implement support for Ada exception catchpoints in a given
385      inferior.  */
386   const struct exception_support_info *exception_info;
387 };
388
389 /* Our key to this module's inferior data.  */
390 static const struct inferior_data *ada_inferior_data;
391
392 /* A cleanup routine for our inferior data.  */
393 static void
394 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
395 {
396   struct ada_inferior_data *data;
397
398   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
399   if (data != NULL)
400     xfree (data);
401 }
402
403 /* Return our inferior data for the given inferior (INF).
404
405    This function always returns a valid pointer to an allocated
406    ada_inferior_data structure.  If INF's inferior data has not
407    been previously set, this functions creates a new one with all
408    fields set to zero, sets INF's inferior to it, and then returns
409    a pointer to that newly allocated ada_inferior_data.  */
410
411 static struct ada_inferior_data *
412 get_ada_inferior_data (struct inferior *inf)
413 {
414   struct ada_inferior_data *data;
415
416   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
417   if (data == NULL)
418     {
419       data = XCNEW (struct ada_inferior_data);
420       set_inferior_data (inf, ada_inferior_data, data);
421     }
422
423   return data;
424 }
425
426 /* Perform all necessary cleanups regarding our module's inferior data
427    that is required after the inferior INF just exited.  */
428
429 static void
430 ada_inferior_exit (struct inferior *inf)
431 {
432   ada_inferior_data_cleanup (inf, NULL);
433   set_inferior_data (inf, ada_inferior_data, NULL);
434 }
435
436
437                         /* program-space-specific data.  */
438
439 /* This module's per-program-space data.  */
440 struct ada_pspace_data
441 {
442   /* The Ada symbol cache.  */
443   struct ada_symbol_cache *sym_cache;
444 };
445
446 /* Key to our per-program-space data.  */
447 static const struct program_space_data *ada_pspace_data_handle;
448
449 /* Return this module's data for the given program space (PSPACE).
450    If not is found, add a zero'ed one now.
451
452    This function always returns a valid object.  */
453
454 static struct ada_pspace_data *
455 get_ada_pspace_data (struct program_space *pspace)
456 {
457   struct ada_pspace_data *data;
458
459   data = ((struct ada_pspace_data *)
460           program_space_data (pspace, ada_pspace_data_handle));
461   if (data == NULL)
462     {
463       data = XCNEW (struct ada_pspace_data);
464       set_program_space_data (pspace, ada_pspace_data_handle, data);
465     }
466
467   return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data.  */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
476
477   if (pspace_data->sym_cache != NULL)
478     ada_free_symbol_cache (pspace_data->sym_cache);
479   xfree (pspace_data);
480 }
481
482                         /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485    all typedef layers have been peeled.  Otherwise, return TYPE.
486
487    Normally, we really expect a typedef type to only have 1 typedef layer.
488    In other words, we really expect the target type of a typedef type to be
489    a non-typedef type.  This is particularly true for Ada units, because
490    the language does not have a typedef vs not-typedef distinction.
491    In that respect, the Ada compiler has been trying to eliminate as many
492    typedef definitions in the debugging information, since they generally
493    do not bring any extra information (we still use typedef under certain
494    circumstances related mostly to the GNAT encoding).
495
496    Unfortunately, we have seen situations where the debugging information
497    generated by the compiler leads to such multiple typedef layers.  For
498    instance, consider the following example with stabs:
499
500      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503    This is an error in the debugging information which causes type
504    pck__float_array___XUP to be defined twice, and the second time,
505    it is defined as a typedef of a typedef.
506
507    This is on the fringe of legality as far as debugging information is
508    concerned, and certainly unexpected.  But it is easy to handle these
509    situations correctly, so we can afford to be lenient in this case.  */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515     type = TYPE_TARGET_TYPE (type);
516   return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520    decoded form (ie using the Ada dotted notation), returns
521    its unqualified name.  */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526   const char *result;
527   
528   /* If the decoded name starts with '<', it means that the encoded
529      name does not follow standard naming conventions, and thus that
530      it is not your typical Ada symbol name.  Trying to unqualify it
531      is therefore pointless and possibly erroneous.  */
532   if (decoded_name[0] == '<')
533     return decoded_name;
534
535   result = strrchr (decoded_name, '.');
536   if (result != NULL)
537     result++;                   /* Skip the dot...  */
538   else
539     result = decoded_name;
540
541   return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'.  */
545
546 static std::string
547 add_angle_brackets (const char *str)
548 {
549   return string_printf ("<%s>", str);
550 }
551
552 static const char *
553 ada_get_gdb_completer_word_break_characters (void)
554 {
555   return ada_completer_word_break_characters;
556 }
557
558 /* Print an array element index using the Ada syntax.  */
559
560 static void
561 ada_print_array_index (struct value *index_value, struct ui_file *stream,
562                        const struct value_print_options *options)
563 {
564   LA_VALUE_PRINT (index_value, stream, options);
565   fprintf_filtered (stream, " => ");
566 }
567
568 /* Assuming VECT points to an array of *SIZE objects of size
569    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
570    updating *SIZE as necessary and returning the (new) array.  */
571
572 void *
573 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
574 {
575   if (*size < min_size)
576     {
577       *size *= 2;
578       if (*size < min_size)
579         *size = min_size;
580       vect = xrealloc (vect, *size * element_size);
581     }
582   return vect;
583 }
584
585 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
586    suffix of FIELD_NAME beginning "___".  */
587
588 static int
589 field_name_match (const char *field_name, const char *target)
590 {
591   int len = strlen (target);
592
593   return
594     (strncmp (field_name, target, len) == 0
595      && (field_name[len] == '\0'
596          || (startswith (field_name + len, "___")
597              && strcmp (field_name + strlen (field_name) - 6,
598                         "___XVN") != 0)));
599 }
600
601
602 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
603    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
604    and return its index.  This function also handles fields whose name
605    have ___ suffixes because the compiler sometimes alters their name
606    by adding such a suffix to represent fields with certain constraints.
607    If the field could not be found, return a negative number if
608    MAYBE_MISSING is set.  Otherwise raise an error.  */
609
610 int
611 ada_get_field_index (const struct type *type, const char *field_name,
612                      int maybe_missing)
613 {
614   int fieldno;
615   struct type *struct_type = check_typedef ((struct type *) type);
616
617   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
618     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
619       return fieldno;
620
621   if (!maybe_missing)
622     error (_("Unable to find field %s in struct %s.  Aborting"),
623            field_name, TYPE_NAME (struct_type));
624
625   return -1;
626 }
627
628 /* The length of the prefix of NAME prior to any "___" suffix.  */
629
630 int
631 ada_name_prefix_len (const char *name)
632 {
633   if (name == NULL)
634     return 0;
635   else
636     {
637       const char *p = strstr (name, "___");
638
639       if (p == NULL)
640         return strlen (name);
641       else
642         return p - name;
643     }
644 }
645
646 /* Return non-zero if SUFFIX is a suffix of STR.
647    Return zero if STR is null.  */
648
649 static int
650 is_suffix (const char *str, const char *suffix)
651 {
652   int len1, len2;
653
654   if (str == NULL)
655     return 0;
656   len1 = strlen (str);
657   len2 = strlen (suffix);
658   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
659 }
660
661 /* The contents of value VAL, treated as a value of type TYPE.  The
662    result is an lval in memory if VAL is.  */
663
664 static struct value *
665 coerce_unspec_val_to_type (struct value *val, struct type *type)
666 {
667   type = ada_check_typedef (type);
668   if (value_type (val) == type)
669     return val;
670   else
671     {
672       struct value *result;
673
674       /* Make sure that the object size is not unreasonable before
675          trying to allocate some memory for it.  */
676       ada_ensure_varsize_limit (type);
677
678       if (value_lazy (val)
679           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
680         result = allocate_value_lazy (type);
681       else
682         {
683           result = allocate_value (type);
684           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
685         }
686       set_value_component_location (result, val);
687       set_value_bitsize (result, value_bitsize (val));
688       set_value_bitpos (result, value_bitpos (val));
689       set_value_address (result, value_address (val));
690       return result;
691     }
692 }
693
694 static const gdb_byte *
695 cond_offset_host (const gdb_byte *valaddr, long offset)
696 {
697   if (valaddr == NULL)
698     return NULL;
699   else
700     return valaddr + offset;
701 }
702
703 static CORE_ADDR
704 cond_offset_target (CORE_ADDR address, long offset)
705 {
706   if (address == 0)
707     return 0;
708   else
709     return address + offset;
710 }
711
712 /* Issue a warning (as for the definition of warning in utils.c, but
713    with exactly one argument rather than ...), unless the limit on the
714    number of warnings has passed during the evaluation of the current
715    expression.  */
716
717 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
718    provided by "complaint".  */
719 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
720
721 static void
722 lim_warning (const char *format, ...)
723 {
724   va_list args;
725
726   va_start (args, format);
727   warnings_issued += 1;
728   if (warnings_issued <= warning_limit)
729     vwarning (format, args);
730
731   va_end (args);
732 }
733
734 /* Issue an error if the size of an object of type T is unreasonable,
735    i.e. if it would be a bad idea to allocate a value of this type in
736    GDB.  */
737
738 void
739 ada_ensure_varsize_limit (const struct type *type)
740 {
741   if (TYPE_LENGTH (type) > varsize_limit)
742     error (_("object size is larger than varsize-limit"));
743 }
744
745 /* Maximum value of a SIZE-byte signed integer type.  */
746 static LONGEST
747 max_of_size (int size)
748 {
749   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
750
751   return top_bit | (top_bit - 1);
752 }
753
754 /* Minimum value of a SIZE-byte signed integer type.  */
755 static LONGEST
756 min_of_size (int size)
757 {
758   return -max_of_size (size) - 1;
759 }
760
761 /* Maximum value of a SIZE-byte unsigned integer type.  */
762 static ULONGEST
763 umax_of_size (int size)
764 {
765   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
766
767   return top_bit | (top_bit - 1);
768 }
769
770 /* Maximum value of integral type T, as a signed quantity.  */
771 static LONGEST
772 max_of_type (struct type *t)
773 {
774   if (TYPE_UNSIGNED (t))
775     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
776   else
777     return max_of_size (TYPE_LENGTH (t));
778 }
779
780 /* Minimum value of integral type T, as a signed quantity.  */
781 static LONGEST
782 min_of_type (struct type *t)
783 {
784   if (TYPE_UNSIGNED (t)) 
785     return 0;
786   else
787     return min_of_size (TYPE_LENGTH (t));
788 }
789
790 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
791 LONGEST
792 ada_discrete_type_high_bound (struct type *type)
793 {
794   type = resolve_dynamic_type (type, NULL, 0);
795   switch (TYPE_CODE (type))
796     {
797     case TYPE_CODE_RANGE:
798       return TYPE_HIGH_BOUND (type);
799     case TYPE_CODE_ENUM:
800       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
801     case TYPE_CODE_BOOL:
802       return 1;
803     case TYPE_CODE_CHAR:
804     case TYPE_CODE_INT:
805       return max_of_type (type);
806     default:
807       error (_("Unexpected type in ada_discrete_type_high_bound."));
808     }
809 }
810
811 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
812 LONGEST
813 ada_discrete_type_low_bound (struct type *type)
814 {
815   type = resolve_dynamic_type (type, NULL, 0);
816   switch (TYPE_CODE (type))
817     {
818     case TYPE_CODE_RANGE:
819       return TYPE_LOW_BOUND (type);
820     case TYPE_CODE_ENUM:
821       return TYPE_FIELD_ENUMVAL (type, 0);
822     case TYPE_CODE_BOOL:
823       return 0;
824     case TYPE_CODE_CHAR:
825     case TYPE_CODE_INT:
826       return min_of_type (type);
827     default:
828       error (_("Unexpected type in ada_discrete_type_low_bound."));
829     }
830 }
831
832 /* The identity on non-range types.  For range types, the underlying
833    non-range scalar type.  */
834
835 static struct type *
836 get_base_type (struct type *type)
837 {
838   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
839     {
840       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
841         return type;
842       type = TYPE_TARGET_TYPE (type);
843     }
844   return type;
845 }
846
847 /* Return a decoded version of the given VALUE.  This means returning
848    a value whose type is obtained by applying all the GNAT-specific
849    encondings, making the resulting type a static but standard description
850    of the initial type.  */
851
852 struct value *
853 ada_get_decoded_value (struct value *value)
854 {
855   struct type *type = ada_check_typedef (value_type (value));
856
857   if (ada_is_array_descriptor_type (type)
858       || (ada_is_constrained_packed_array_type (type)
859           && TYPE_CODE (type) != TYPE_CODE_PTR))
860     {
861       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
862         value = ada_coerce_to_simple_array_ptr (value);
863       else
864         value = ada_coerce_to_simple_array (value);
865     }
866   else
867     value = ada_to_fixed_value (value);
868
869   return value;
870 }
871
872 /* Same as ada_get_decoded_value, but with the given TYPE.
873    Because there is no associated actual value for this type,
874    the resulting type might be a best-effort approximation in
875    the case of dynamic types.  */
876
877 struct type *
878 ada_get_decoded_type (struct type *type)
879 {
880   type = to_static_fixed_type (type);
881   if (ada_is_constrained_packed_array_type (type))
882     type = ada_coerce_to_simple_array_type (type);
883   return type;
884 }
885
886 \f
887
888                                 /* Language Selection */
889
890 /* If the main program is in Ada, return language_ada, otherwise return LANG
891    (the main program is in Ada iif the adainit symbol is found).  */
892
893 enum language
894 ada_update_initial_language (enum language lang)
895 {
896   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
897                              (struct objfile *) NULL).minsym != NULL)
898     return language_ada;
899
900   return lang;
901 }
902
903 /* If the main procedure is written in Ada, then return its name.
904    The result is good until the next call.  Return NULL if the main
905    procedure doesn't appear to be in Ada.  */
906
907 char *
908 ada_main_name (void)
909 {
910   struct bound_minimal_symbol msym;
911   static gdb::unique_xmalloc_ptr<char> main_program_name;
912
913   /* For Ada, the name of the main procedure is stored in a specific
914      string constant, generated by the binder.  Look for that symbol,
915      extract its address, and then read that string.  If we didn't find
916      that string, then most probably the main procedure is not written
917      in Ada.  */
918   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
919
920   if (msym.minsym != NULL)
921     {
922       CORE_ADDR main_program_name_addr;
923       int err_code;
924
925       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
926       if (main_program_name_addr == 0)
927         error (_("Invalid address for Ada main program name."));
928
929       target_read_string (main_program_name_addr, &main_program_name,
930                           1024, &err_code);
931
932       if (err_code != 0)
933         return NULL;
934       return main_program_name.get ();
935     }
936
937   /* The main procedure doesn't seem to be in Ada.  */
938   return NULL;
939 }
940 \f
941                                 /* Symbols */
942
943 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
944    of NULLs.  */
945
946 const struct ada_opname_map ada_opname_table[] = {
947   {"Oadd", "\"+\"", BINOP_ADD},
948   {"Osubtract", "\"-\"", BINOP_SUB},
949   {"Omultiply", "\"*\"", BINOP_MUL},
950   {"Odivide", "\"/\"", BINOP_DIV},
951   {"Omod", "\"mod\"", BINOP_MOD},
952   {"Orem", "\"rem\"", BINOP_REM},
953   {"Oexpon", "\"**\"", BINOP_EXP},
954   {"Olt", "\"<\"", BINOP_LESS},
955   {"Ole", "\"<=\"", BINOP_LEQ},
956   {"Ogt", "\">\"", BINOP_GTR},
957   {"Oge", "\">=\"", BINOP_GEQ},
958   {"Oeq", "\"=\"", BINOP_EQUAL},
959   {"One", "\"/=\"", BINOP_NOTEQUAL},
960   {"Oand", "\"and\"", BINOP_BITWISE_AND},
961   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
962   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
963   {"Oconcat", "\"&\"", BINOP_CONCAT},
964   {"Oabs", "\"abs\"", UNOP_ABS},
965   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
966   {"Oadd", "\"+\"", UNOP_PLUS},
967   {"Osubtract", "\"-\"", UNOP_NEG},
968   {NULL, NULL}
969 };
970
971 /* The "encoded" form of DECODED, according to GNAT conventions.  The
972    result is valid until the next call to ada_encode.  If
973    THROW_ERRORS, throw an error if invalid operator name is found.
974    Otherwise, return NULL in that case.  */
975
976 static char *
977 ada_encode_1 (const char *decoded, bool throw_errors)
978 {
979   static char *encoding_buffer = NULL;
980   static size_t encoding_buffer_size = 0;
981   const char *p;
982   int k;
983
984   if (decoded == NULL)
985     return NULL;
986
987   GROW_VECT (encoding_buffer, encoding_buffer_size,
988              2 * strlen (decoded) + 10);
989
990   k = 0;
991   for (p = decoded; *p != '\0'; p += 1)
992     {
993       if (*p == '.')
994         {
995           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
996           k += 2;
997         }
998       else if (*p == '"')
999         {
1000           const struct ada_opname_map *mapping;
1001
1002           for (mapping = ada_opname_table;
1003                mapping->encoded != NULL
1004                && !startswith (p, mapping->decoded); mapping += 1)
1005             ;
1006           if (mapping->encoded == NULL)
1007             {
1008               if (throw_errors)
1009                 error (_("invalid Ada operator name: %s"), p);
1010               else
1011                 return NULL;
1012             }
1013           strcpy (encoding_buffer + k, mapping->encoded);
1014           k += strlen (mapping->encoded);
1015           break;
1016         }
1017       else
1018         {
1019           encoding_buffer[k] = *p;
1020           k += 1;
1021         }
1022     }
1023
1024   encoding_buffer[k] = '\0';
1025   return encoding_buffer;
1026 }
1027
1028 /* The "encoded" form of DECODED, according to GNAT conventions.
1029    The result is valid until the next call to ada_encode.  */
1030
1031 char *
1032 ada_encode (const char *decoded)
1033 {
1034   return ada_encode_1 (decoded, true);
1035 }
1036
1037 /* Return NAME folded to lower case, or, if surrounded by single
1038    quotes, unfolded, but with the quotes stripped away.  Result good
1039    to next call.  */
1040
1041 char *
1042 ada_fold_name (const char *name)
1043 {
1044   static char *fold_buffer = NULL;
1045   static size_t fold_buffer_size = 0;
1046
1047   int len = strlen (name);
1048   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1049
1050   if (name[0] == '\'')
1051     {
1052       strncpy (fold_buffer, name + 1, len - 2);
1053       fold_buffer[len - 2] = '\000';
1054     }
1055   else
1056     {
1057       int i;
1058
1059       for (i = 0; i <= len; i += 1)
1060         fold_buffer[i] = tolower (name[i]);
1061     }
1062
1063   return fold_buffer;
1064 }
1065
1066 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1067
1068 static int
1069 is_lower_alphanum (const char c)
1070 {
1071   return (isdigit (c) || (isalpha (c) && islower (c)));
1072 }
1073
1074 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1075    This function saves in LEN the length of that same symbol name but
1076    without either of these suffixes:
1077      . .{DIGIT}+
1078      . ${DIGIT}+
1079      . ___{DIGIT}+
1080      . __{DIGIT}+.
1081
1082    These are suffixes introduced by the compiler for entities such as
1083    nested subprogram for instance, in order to avoid name clashes.
1084    They do not serve any purpose for the debugger.  */
1085
1086 static void
1087 ada_remove_trailing_digits (const char *encoded, int *len)
1088 {
1089   if (*len > 1 && isdigit (encoded[*len - 1]))
1090     {
1091       int i = *len - 2;
1092
1093       while (i > 0 && isdigit (encoded[i]))
1094         i--;
1095       if (i >= 0 && encoded[i] == '.')
1096         *len = i;
1097       else if (i >= 0 && encoded[i] == '$')
1098         *len = i;
1099       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1100         *len = i - 2;
1101       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1102         *len = i - 1;
1103     }
1104 }
1105
1106 /* Remove the suffix introduced by the compiler for protected object
1107    subprograms.  */
1108
1109 static void
1110 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1111 {
1112   /* Remove trailing N.  */
1113
1114   /* Protected entry subprograms are broken into two
1115      separate subprograms: The first one is unprotected, and has
1116      a 'N' suffix; the second is the protected version, and has
1117      the 'P' suffix.  The second calls the first one after handling
1118      the protection.  Since the P subprograms are internally generated,
1119      we leave these names undecoded, giving the user a clue that this
1120      entity is internal.  */
1121
1122   if (*len > 1
1123       && encoded[*len - 1] == 'N'
1124       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1125     *len = *len - 1;
1126 }
1127
1128 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1129
1130 static void
1131 ada_remove_Xbn_suffix (const char *encoded, int *len)
1132 {
1133   int i = *len - 1;
1134
1135   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1136     i--;
1137
1138   if (encoded[i] != 'X')
1139     return;
1140
1141   if (i == 0)
1142     return;
1143
1144   if (isalnum (encoded[i-1]))
1145     *len = i;
1146 }
1147
1148 /* If ENCODED follows the GNAT entity encoding conventions, then return
1149    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1150    replaced by ENCODED.
1151
1152    The resulting string is valid until the next call of ada_decode.
1153    If the string is unchanged by decoding, the original string pointer
1154    is returned.  */
1155
1156 const char *
1157 ada_decode (const char *encoded)
1158 {
1159   int i, j;
1160   int len0;
1161   const char *p;
1162   char *decoded;
1163   int at_start_name;
1164   static char *decoding_buffer = NULL;
1165   static size_t decoding_buffer_size = 0;
1166
1167   /* With function descriptors on PPC64, the value of a symbol named
1168      ".FN", if it exists, is the entry point of the function "FN".  */
1169   if (encoded[0] == '.')
1170     encoded += 1;
1171
1172   /* The name of the Ada main procedure starts with "_ada_".
1173      This prefix is not part of the decoded name, so skip this part
1174      if we see this prefix.  */
1175   if (startswith (encoded, "_ada_"))
1176     encoded += 5;
1177
1178   /* If the name starts with '_', then it is not a properly encoded
1179      name, so do not attempt to decode it.  Similarly, if the name
1180      starts with '<', the name should not be decoded.  */
1181   if (encoded[0] == '_' || encoded[0] == '<')
1182     goto Suppress;
1183
1184   len0 = strlen (encoded);
1185
1186   ada_remove_trailing_digits (encoded, &len0);
1187   ada_remove_po_subprogram_suffix (encoded, &len0);
1188
1189   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1190      the suffix is located before the current "end" of ENCODED.  We want
1191      to avoid re-matching parts of ENCODED that have previously been
1192      marked as discarded (by decrementing LEN0).  */
1193   p = strstr (encoded, "___");
1194   if (p != NULL && p - encoded < len0 - 3)
1195     {
1196       if (p[3] == 'X')
1197         len0 = p - encoded;
1198       else
1199         goto Suppress;
1200     }
1201
1202   /* Remove any trailing TKB suffix.  It tells us that this symbol
1203      is for the body of a task, but that information does not actually
1204      appear in the decoded name.  */
1205
1206   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1207     len0 -= 3;
1208
1209   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1210      from the TKB suffix because it is used for non-anonymous task
1211      bodies.  */
1212
1213   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1214     len0 -= 2;
1215
1216   /* Remove trailing "B" suffixes.  */
1217   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1218
1219   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1220     len0 -= 1;
1221
1222   /* Make decoded big enough for possible expansion by operator name.  */
1223
1224   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1225   decoded = decoding_buffer;
1226
1227   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1228
1229   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1230     {
1231       i = len0 - 2;
1232       while ((i >= 0 && isdigit (encoded[i]))
1233              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1234         i -= 1;
1235       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1236         len0 = i - 1;
1237       else if (encoded[i] == '$')
1238         len0 = i;
1239     }
1240
1241   /* The first few characters that are not alphabetic are not part
1242      of any encoding we use, so we can copy them over verbatim.  */
1243
1244   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1245     decoded[j] = encoded[i];
1246
1247   at_start_name = 1;
1248   while (i < len0)
1249     {
1250       /* Is this a symbol function?  */
1251       if (at_start_name && encoded[i] == 'O')
1252         {
1253           int k;
1254
1255           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1256             {
1257               int op_len = strlen (ada_opname_table[k].encoded);
1258               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1259                             op_len - 1) == 0)
1260                   && !isalnum (encoded[i + op_len]))
1261                 {
1262                   strcpy (decoded + j, ada_opname_table[k].decoded);
1263                   at_start_name = 0;
1264                   i += op_len;
1265                   j += strlen (ada_opname_table[k].decoded);
1266                   break;
1267                 }
1268             }
1269           if (ada_opname_table[k].encoded != NULL)
1270             continue;
1271         }
1272       at_start_name = 0;
1273
1274       /* Replace "TK__" with "__", which will eventually be translated
1275          into "." (just below).  */
1276
1277       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1278         i += 2;
1279
1280       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1281          be translated into "." (just below).  These are internal names
1282          generated for anonymous blocks inside which our symbol is nested.  */
1283
1284       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1285           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1286           && isdigit (encoded [i+4]))
1287         {
1288           int k = i + 5;
1289           
1290           while (k < len0 && isdigit (encoded[k]))
1291             k++;  /* Skip any extra digit.  */
1292
1293           /* Double-check that the "__B_{DIGITS}+" sequence we found
1294              is indeed followed by "__".  */
1295           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1296             i = k;
1297         }
1298
1299       /* Remove _E{DIGITS}+[sb] */
1300
1301       /* Just as for protected object subprograms, there are 2 categories
1302          of subprograms created by the compiler for each entry.  The first
1303          one implements the actual entry code, and has a suffix following
1304          the convention above; the second one implements the barrier and
1305          uses the same convention as above, except that the 'E' is replaced
1306          by a 'B'.
1307
1308          Just as above, we do not decode the name of barrier functions
1309          to give the user a clue that the code he is debugging has been
1310          internally generated.  */
1311
1312       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1313           && isdigit (encoded[i+2]))
1314         {
1315           int k = i + 3;
1316
1317           while (k < len0 && isdigit (encoded[k]))
1318             k++;
1319
1320           if (k < len0
1321               && (encoded[k] == 'b' || encoded[k] == 's'))
1322             {
1323               k++;
1324               /* Just as an extra precaution, make sure that if this
1325                  suffix is followed by anything else, it is a '_'.
1326                  Otherwise, we matched this sequence by accident.  */
1327               if (k == len0
1328                   || (k < len0 && encoded[k] == '_'))
1329                 i = k;
1330             }
1331         }
1332
1333       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1334          the GNAT front-end in protected object subprograms.  */
1335
1336       if (i < len0 + 3
1337           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1338         {
1339           /* Backtrack a bit up until we reach either the begining of
1340              the encoded name, or "__".  Make sure that we only find
1341              digits or lowercase characters.  */
1342           const char *ptr = encoded + i - 1;
1343
1344           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1345             ptr--;
1346           if (ptr < encoded
1347               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1348             i++;
1349         }
1350
1351       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1352         {
1353           /* This is a X[bn]* sequence not separated from the previous
1354              part of the name with a non-alpha-numeric character (in other
1355              words, immediately following an alpha-numeric character), then
1356              verify that it is placed at the end of the encoded name.  If
1357              not, then the encoding is not valid and we should abort the
1358              decoding.  Otherwise, just skip it, it is used in body-nested
1359              package names.  */
1360           do
1361             i += 1;
1362           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1363           if (i < len0)
1364             goto Suppress;
1365         }
1366       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1367         {
1368          /* Replace '__' by '.'.  */
1369           decoded[j] = '.';
1370           at_start_name = 1;
1371           i += 2;
1372           j += 1;
1373         }
1374       else
1375         {
1376           /* It's a character part of the decoded name, so just copy it
1377              over.  */
1378           decoded[j] = encoded[i];
1379           i += 1;
1380           j += 1;
1381         }
1382     }
1383   decoded[j] = '\000';
1384
1385   /* Decoded names should never contain any uppercase character.
1386      Double-check this, and abort the decoding if we find one.  */
1387
1388   for (i = 0; decoded[i] != '\0'; i += 1)
1389     if (isupper (decoded[i]) || decoded[i] == ' ')
1390       goto Suppress;
1391
1392   if (strcmp (decoded, encoded) == 0)
1393     return encoded;
1394   else
1395     return decoded;
1396
1397 Suppress:
1398   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1399   decoded = decoding_buffer;
1400   if (encoded[0] == '<')
1401     strcpy (decoded, encoded);
1402   else
1403     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1404   return decoded;
1405
1406 }
1407
1408 /* Table for keeping permanent unique copies of decoded names.  Once
1409    allocated, names in this table are never released.  While this is a
1410    storage leak, it should not be significant unless there are massive
1411    changes in the set of decoded names in successive versions of a 
1412    symbol table loaded during a single session.  */
1413 static struct htab *decoded_names_store;
1414
1415 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1416    in the language-specific part of GSYMBOL, if it has not been
1417    previously computed.  Tries to save the decoded name in the same
1418    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1419    in any case, the decoded symbol has a lifetime at least that of
1420    GSYMBOL).
1421    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1422    const, but nevertheless modified to a semantically equivalent form
1423    when a decoded name is cached in it.  */
1424
1425 const char *
1426 ada_decode_symbol (const struct general_symbol_info *arg)
1427 {
1428   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1429   const char **resultp =
1430     &gsymbol->language_specific.demangled_name;
1431
1432   if (!gsymbol->ada_mangled)
1433     {
1434       const char *decoded = ada_decode (gsymbol->name);
1435       struct obstack *obstack = gsymbol->language_specific.obstack;
1436
1437       gsymbol->ada_mangled = 1;
1438
1439       if (obstack != NULL)
1440         *resultp
1441           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1442       else
1443         {
1444           /* Sometimes, we can't find a corresponding objfile, in
1445              which case, we put the result on the heap.  Since we only
1446              decode when needed, we hope this usually does not cause a
1447              significant memory leak (FIXME).  */
1448
1449           char **slot = (char **) htab_find_slot (decoded_names_store,
1450                                                   decoded, INSERT);
1451
1452           if (*slot == NULL)
1453             *slot = xstrdup (decoded);
1454           *resultp = *slot;
1455         }
1456     }
1457
1458   return *resultp;
1459 }
1460
1461 static char *
1462 ada_la_decode (const char *encoded, int options)
1463 {
1464   return xstrdup (ada_decode (encoded));
1465 }
1466
1467 /* Implement la_sniff_from_mangled_name for Ada.  */
1468
1469 static int
1470 ada_sniff_from_mangled_name (const char *mangled, char **out)
1471 {
1472   const char *demangled = ada_decode (mangled);
1473
1474   *out = NULL;
1475
1476   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1477     {
1478       /* Set the gsymbol language to Ada, but still return 0.
1479          Two reasons for that:
1480
1481          1. For Ada, we prefer computing the symbol's decoded name
1482          on the fly rather than pre-compute it, in order to save
1483          memory (Ada projects are typically very large).
1484
1485          2. There are some areas in the definition of the GNAT
1486          encoding where, with a bit of bad luck, we might be able
1487          to decode a non-Ada symbol, generating an incorrect
1488          demangled name (Eg: names ending with "TB" for instance
1489          are identified as task bodies and so stripped from
1490          the decoded name returned).
1491
1492          Returning 1, here, but not setting *DEMANGLED, helps us get a
1493          little bit of the best of both worlds.  Because we're last,
1494          we should not affect any of the other languages that were
1495          able to demangle the symbol before us; we get to correctly
1496          tag Ada symbols as such; and even if we incorrectly tagged a
1497          non-Ada symbol, which should be rare, any routing through the
1498          Ada language should be transparent (Ada tries to behave much
1499          like C/C++ with non-Ada symbols).  */
1500       return 1;
1501     }
1502
1503   return 0;
1504 }
1505
1506 \f
1507
1508                                 /* Arrays */
1509
1510 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1511    generated by the GNAT compiler to describe the index type used
1512    for each dimension of an array, check whether it follows the latest
1513    known encoding.  If not, fix it up to conform to the latest encoding.
1514    Otherwise, do nothing.  This function also does nothing if
1515    INDEX_DESC_TYPE is NULL.
1516
1517    The GNAT encoding used to describle the array index type evolved a bit.
1518    Initially, the information would be provided through the name of each
1519    field of the structure type only, while the type of these fields was
1520    described as unspecified and irrelevant.  The debugger was then expected
1521    to perform a global type lookup using the name of that field in order
1522    to get access to the full index type description.  Because these global
1523    lookups can be very expensive, the encoding was later enhanced to make
1524    the global lookup unnecessary by defining the field type as being
1525    the full index type description.
1526
1527    The purpose of this routine is to allow us to support older versions
1528    of the compiler by detecting the use of the older encoding, and by
1529    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1530    we essentially replace each field's meaningless type by the associated
1531    index subtype).  */
1532
1533 void
1534 ada_fixup_array_indexes_type (struct type *index_desc_type)
1535 {
1536   int i;
1537
1538   if (index_desc_type == NULL)
1539     return;
1540   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1541
1542   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1543      to check one field only, no need to check them all).  If not, return
1544      now.
1545
1546      If our INDEX_DESC_TYPE was generated using the older encoding,
1547      the field type should be a meaningless integer type whose name
1548      is not equal to the field name.  */
1549   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1550       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1551                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1552     return;
1553
1554   /* Fixup each field of INDEX_DESC_TYPE.  */
1555   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1556    {
1557      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1558      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1559
1560      if (raw_type)
1561        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1562    }
1563 }
1564
1565 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1566
1567 static const char *bound_name[] = {
1568   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1569   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1570 };
1571
1572 /* Maximum number of array dimensions we are prepared to handle.  */
1573
1574 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1575
1576
1577 /* The desc_* routines return primitive portions of array descriptors
1578    (fat pointers).  */
1579
1580 /* The descriptor or array type, if any, indicated by TYPE; removes
1581    level of indirection, if needed.  */
1582
1583 static struct type *
1584 desc_base_type (struct type *type)
1585 {
1586   if (type == NULL)
1587     return NULL;
1588   type = ada_check_typedef (type);
1589   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1590     type = ada_typedef_target_type (type);
1591
1592   if (type != NULL
1593       && (TYPE_CODE (type) == TYPE_CODE_PTR
1594           || TYPE_CODE (type) == TYPE_CODE_REF))
1595     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1596   else
1597     return type;
1598 }
1599
1600 /* True iff TYPE indicates a "thin" array pointer type.  */
1601
1602 static int
1603 is_thin_pntr (struct type *type)
1604 {
1605   return
1606     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1607     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1608 }
1609
1610 /* The descriptor type for thin pointer type TYPE.  */
1611
1612 static struct type *
1613 thin_descriptor_type (struct type *type)
1614 {
1615   struct type *base_type = desc_base_type (type);
1616
1617   if (base_type == NULL)
1618     return NULL;
1619   if (is_suffix (ada_type_name (base_type), "___XVE"))
1620     return base_type;
1621   else
1622     {
1623       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1624
1625       if (alt_type == NULL)
1626         return base_type;
1627       else
1628         return alt_type;
1629     }
1630 }
1631
1632 /* A pointer to the array data for thin-pointer value VAL.  */
1633
1634 static struct value *
1635 thin_data_pntr (struct value *val)
1636 {
1637   struct type *type = ada_check_typedef (value_type (val));
1638   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1639
1640   data_type = lookup_pointer_type (data_type);
1641
1642   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1643     return value_cast (data_type, value_copy (val));
1644   else
1645     return value_from_longest (data_type, value_address (val));
1646 }
1647
1648 /* True iff TYPE indicates a "thick" array pointer type.  */
1649
1650 static int
1651 is_thick_pntr (struct type *type)
1652 {
1653   type = desc_base_type (type);
1654   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1655           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1656 }
1657
1658 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1659    pointer to one, the type of its bounds data; otherwise, NULL.  */
1660
1661 static struct type *
1662 desc_bounds_type (struct type *type)
1663 {
1664   struct type *r;
1665
1666   type = desc_base_type (type);
1667
1668   if (type == NULL)
1669     return NULL;
1670   else if (is_thin_pntr (type))
1671     {
1672       type = thin_descriptor_type (type);
1673       if (type == NULL)
1674         return NULL;
1675       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1676       if (r != NULL)
1677         return ada_check_typedef (r);
1678     }
1679   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1680     {
1681       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1682       if (r != NULL)
1683         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1684     }
1685   return NULL;
1686 }
1687
1688 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1689    one, a pointer to its bounds data.   Otherwise NULL.  */
1690
1691 static struct value *
1692 desc_bounds (struct value *arr)
1693 {
1694   struct type *type = ada_check_typedef (value_type (arr));
1695
1696   if (is_thin_pntr (type))
1697     {
1698       struct type *bounds_type =
1699         desc_bounds_type (thin_descriptor_type (type));
1700       LONGEST addr;
1701
1702       if (bounds_type == NULL)
1703         error (_("Bad GNAT array descriptor"));
1704
1705       /* NOTE: The following calculation is not really kosher, but
1706          since desc_type is an XVE-encoded type (and shouldn't be),
1707          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1708       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1709         addr = value_as_long (arr);
1710       else
1711         addr = value_address (arr);
1712
1713       return
1714         value_from_longest (lookup_pointer_type (bounds_type),
1715                             addr - TYPE_LENGTH (bounds_type));
1716     }
1717
1718   else if (is_thick_pntr (type))
1719     {
1720       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1721                                                _("Bad GNAT array descriptor"));
1722       struct type *p_bounds_type = value_type (p_bounds);
1723
1724       if (p_bounds_type
1725           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1726         {
1727           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1728
1729           if (TYPE_STUB (target_type))
1730             p_bounds = value_cast (lookup_pointer_type
1731                                    (ada_check_typedef (target_type)),
1732                                    p_bounds);
1733         }
1734       else
1735         error (_("Bad GNAT array descriptor"));
1736
1737       return p_bounds;
1738     }
1739   else
1740     return NULL;
1741 }
1742
1743 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1744    position of the field containing the address of the bounds data.  */
1745
1746 static int
1747 fat_pntr_bounds_bitpos (struct type *type)
1748 {
1749   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1750 }
1751
1752 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1753    size of the field containing the address of the bounds data.  */
1754
1755 static int
1756 fat_pntr_bounds_bitsize (struct type *type)
1757 {
1758   type = desc_base_type (type);
1759
1760   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1761     return TYPE_FIELD_BITSIZE (type, 1);
1762   else
1763     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1764 }
1765
1766 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1767    pointer to one, the type of its array data (a array-with-no-bounds type);
1768    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1769    data.  */
1770
1771 static struct type *
1772 desc_data_target_type (struct type *type)
1773 {
1774   type = desc_base_type (type);
1775
1776   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1777   if (is_thin_pntr (type))
1778     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1779   else if (is_thick_pntr (type))
1780     {
1781       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1782
1783       if (data_type
1784           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1785         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1786     }
1787
1788   return NULL;
1789 }
1790
1791 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1792    its array data.  */
1793
1794 static struct value *
1795 desc_data (struct value *arr)
1796 {
1797   struct type *type = value_type (arr);
1798
1799   if (is_thin_pntr (type))
1800     return thin_data_pntr (arr);
1801   else if (is_thick_pntr (type))
1802     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1803                              _("Bad GNAT array descriptor"));
1804   else
1805     return NULL;
1806 }
1807
1808
1809 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1810    position of the field containing the address of the data.  */
1811
1812 static int
1813 fat_pntr_data_bitpos (struct type *type)
1814 {
1815   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1816 }
1817
1818 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1819    size of the field containing the address of the data.  */
1820
1821 static int
1822 fat_pntr_data_bitsize (struct type *type)
1823 {
1824   type = desc_base_type (type);
1825
1826   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1827     return TYPE_FIELD_BITSIZE (type, 0);
1828   else
1829     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1830 }
1831
1832 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1833    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1834    bound, if WHICH is 1.  The first bound is I=1.  */
1835
1836 static struct value *
1837 desc_one_bound (struct value *bounds, int i, int which)
1838 {
1839   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1840                            _("Bad GNAT array descriptor bounds"));
1841 }
1842
1843 /* If BOUNDS is an array-bounds structure type, return the bit position
1844    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1845    bound, if WHICH is 1.  The first bound is I=1.  */
1846
1847 static int
1848 desc_bound_bitpos (struct type *type, int i, int which)
1849 {
1850   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1851 }
1852
1853 /* If BOUNDS is an array-bounds structure type, return the bit field size
1854    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1855    bound, if WHICH is 1.  The first bound is I=1.  */
1856
1857 static int
1858 desc_bound_bitsize (struct type *type, int i, int which)
1859 {
1860   type = desc_base_type (type);
1861
1862   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1863     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1864   else
1865     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1866 }
1867
1868 /* If TYPE is the type of an array-bounds structure, the type of its
1869    Ith bound (numbering from 1).  Otherwise, NULL.  */
1870
1871 static struct type *
1872 desc_index_type (struct type *type, int i)
1873 {
1874   type = desc_base_type (type);
1875
1876   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1877     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1878   else
1879     return NULL;
1880 }
1881
1882 /* The number of index positions in the array-bounds type TYPE.
1883    Return 0 if TYPE is NULL.  */
1884
1885 static int
1886 desc_arity (struct type *type)
1887 {
1888   type = desc_base_type (type);
1889
1890   if (type != NULL)
1891     return TYPE_NFIELDS (type) / 2;
1892   return 0;
1893 }
1894
1895 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1896    an array descriptor type (representing an unconstrained array
1897    type).  */
1898
1899 static int
1900 ada_is_direct_array_type (struct type *type)
1901 {
1902   if (type == NULL)
1903     return 0;
1904   type = ada_check_typedef (type);
1905   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1906           || ada_is_array_descriptor_type (type));
1907 }
1908
1909 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1910  * to one.  */
1911
1912 static int
1913 ada_is_array_type (struct type *type)
1914 {
1915   while (type != NULL 
1916          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1917              || TYPE_CODE (type) == TYPE_CODE_REF))
1918     type = TYPE_TARGET_TYPE (type);
1919   return ada_is_direct_array_type (type);
1920 }
1921
1922 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1923
1924 int
1925 ada_is_simple_array_type (struct type *type)
1926 {
1927   if (type == NULL)
1928     return 0;
1929   type = ada_check_typedef (type);
1930   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1931           || (TYPE_CODE (type) == TYPE_CODE_PTR
1932               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1933                  == TYPE_CODE_ARRAY));
1934 }
1935
1936 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1937
1938 int
1939 ada_is_array_descriptor_type (struct type *type)
1940 {
1941   struct type *data_type = desc_data_target_type (type);
1942
1943   if (type == NULL)
1944     return 0;
1945   type = ada_check_typedef (type);
1946   return (data_type != NULL
1947           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1948           && desc_arity (desc_bounds_type (type)) > 0);
1949 }
1950
1951 /* Non-zero iff type is a partially mal-formed GNAT array
1952    descriptor.  FIXME: This is to compensate for some problems with
1953    debugging output from GNAT.  Re-examine periodically to see if it
1954    is still needed.  */
1955
1956 int
1957 ada_is_bogus_array_descriptor (struct type *type)
1958 {
1959   return
1960     type != NULL
1961     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1962     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1963         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1964     && !ada_is_array_descriptor_type (type);
1965 }
1966
1967
1968 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1969    (fat pointer) returns the type of the array data described---specifically,
1970    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1971    in from the descriptor; otherwise, they are left unspecified.  If
1972    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1973    returns NULL.  The result is simply the type of ARR if ARR is not
1974    a descriptor.  */
1975 struct type *
1976 ada_type_of_array (struct value *arr, int bounds)
1977 {
1978   if (ada_is_constrained_packed_array_type (value_type (arr)))
1979     return decode_constrained_packed_array_type (value_type (arr));
1980
1981   if (!ada_is_array_descriptor_type (value_type (arr)))
1982     return value_type (arr);
1983
1984   if (!bounds)
1985     {
1986       struct type *array_type =
1987         ada_check_typedef (desc_data_target_type (value_type (arr)));
1988
1989       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1990         TYPE_FIELD_BITSIZE (array_type, 0) =
1991           decode_packed_array_bitsize (value_type (arr));
1992       
1993       return array_type;
1994     }
1995   else
1996     {
1997       struct type *elt_type;
1998       int arity;
1999       struct value *descriptor;
2000
2001       elt_type = ada_array_element_type (value_type (arr), -1);
2002       arity = ada_array_arity (value_type (arr));
2003
2004       if (elt_type == NULL || arity == 0)
2005         return ada_check_typedef (value_type (arr));
2006
2007       descriptor = desc_bounds (arr);
2008       if (value_as_long (descriptor) == 0)
2009         return NULL;
2010       while (arity > 0)
2011         {
2012           struct type *range_type = alloc_type_copy (value_type (arr));
2013           struct type *array_type = alloc_type_copy (value_type (arr));
2014           struct value *low = desc_one_bound (descriptor, arity, 0);
2015           struct value *high = desc_one_bound (descriptor, arity, 1);
2016
2017           arity -= 1;
2018           create_static_range_type (range_type, value_type (low),
2019                                     longest_to_int (value_as_long (low)),
2020                                     longest_to_int (value_as_long (high)));
2021           elt_type = create_array_type (array_type, elt_type, range_type);
2022
2023           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2024             {
2025               /* We need to store the element packed bitsize, as well as
2026                  recompute the array size, because it was previously
2027                  computed based on the unpacked element size.  */
2028               LONGEST lo = value_as_long (low);
2029               LONGEST hi = value_as_long (high);
2030
2031               TYPE_FIELD_BITSIZE (elt_type, 0) =
2032                 decode_packed_array_bitsize (value_type (arr));
2033               /* If the array has no element, then the size is already
2034                  zero, and does not need to be recomputed.  */
2035               if (lo < hi)
2036                 {
2037                   int array_bitsize =
2038                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2039
2040                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2041                 }
2042             }
2043         }
2044
2045       return lookup_pointer_type (elt_type);
2046     }
2047 }
2048
2049 /* If ARR does not represent an array, returns ARR unchanged.
2050    Otherwise, returns either a standard GDB array with bounds set
2051    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2052    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2053
2054 struct value *
2055 ada_coerce_to_simple_array_ptr (struct value *arr)
2056 {
2057   if (ada_is_array_descriptor_type (value_type (arr)))
2058     {
2059       struct type *arrType = ada_type_of_array (arr, 1);
2060
2061       if (arrType == NULL)
2062         return NULL;
2063       return value_cast (arrType, value_copy (desc_data (arr)));
2064     }
2065   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2066     return decode_constrained_packed_array (arr);
2067   else
2068     return arr;
2069 }
2070
2071 /* If ARR does not represent an array, returns ARR unchanged.
2072    Otherwise, returns a standard GDB array describing ARR (which may
2073    be ARR itself if it already is in the proper form).  */
2074
2075 struct value *
2076 ada_coerce_to_simple_array (struct value *arr)
2077 {
2078   if (ada_is_array_descriptor_type (value_type (arr)))
2079     {
2080       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2081
2082       if (arrVal == NULL)
2083         error (_("Bounds unavailable for null array pointer."));
2084       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2085       return value_ind (arrVal);
2086     }
2087   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2088     return decode_constrained_packed_array (arr);
2089   else
2090     return arr;
2091 }
2092
2093 /* If TYPE represents a GNAT array type, return it translated to an
2094    ordinary GDB array type (possibly with BITSIZE fields indicating
2095    packing).  For other types, is the identity.  */
2096
2097 struct type *
2098 ada_coerce_to_simple_array_type (struct type *type)
2099 {
2100   if (ada_is_constrained_packed_array_type (type))
2101     return decode_constrained_packed_array_type (type);
2102
2103   if (ada_is_array_descriptor_type (type))
2104     return ada_check_typedef (desc_data_target_type (type));
2105
2106   return type;
2107 }
2108
2109 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2110
2111 static int
2112 ada_is_packed_array_type  (struct type *type)
2113 {
2114   if (type == NULL)
2115     return 0;
2116   type = desc_base_type (type);
2117   type = ada_check_typedef (type);
2118   return
2119     ada_type_name (type) != NULL
2120     && strstr (ada_type_name (type), "___XP") != NULL;
2121 }
2122
2123 /* Non-zero iff TYPE represents a standard GNAT constrained
2124    packed-array type.  */
2125
2126 int
2127 ada_is_constrained_packed_array_type (struct type *type)
2128 {
2129   return ada_is_packed_array_type (type)
2130     && !ada_is_array_descriptor_type (type);
2131 }
2132
2133 /* Non-zero iff TYPE represents an array descriptor for a
2134    unconstrained packed-array type.  */
2135
2136 static int
2137 ada_is_unconstrained_packed_array_type (struct type *type)
2138 {
2139   return ada_is_packed_array_type (type)
2140     && ada_is_array_descriptor_type (type);
2141 }
2142
2143 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2144    return the size of its elements in bits.  */
2145
2146 static long
2147 decode_packed_array_bitsize (struct type *type)
2148 {
2149   const char *raw_name;
2150   const char *tail;
2151   long bits;
2152
2153   /* Access to arrays implemented as fat pointers are encoded as a typedef
2154      of the fat pointer type.  We need the name of the fat pointer type
2155      to do the decoding, so strip the typedef layer.  */
2156   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2157     type = ada_typedef_target_type (type);
2158
2159   raw_name = ada_type_name (ada_check_typedef (type));
2160   if (!raw_name)
2161     raw_name = ada_type_name (desc_base_type (type));
2162
2163   if (!raw_name)
2164     return 0;
2165
2166   tail = strstr (raw_name, "___XP");
2167   gdb_assert (tail != NULL);
2168
2169   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2170     {
2171       lim_warning
2172         (_("could not understand bit size information on packed array"));
2173       return 0;
2174     }
2175
2176   return bits;
2177 }
2178
2179 /* Given that TYPE is a standard GDB array type with all bounds filled
2180    in, and that the element size of its ultimate scalar constituents
2181    (that is, either its elements, or, if it is an array of arrays, its
2182    elements' elements, etc.) is *ELT_BITS, return an identical type,
2183    but with the bit sizes of its elements (and those of any
2184    constituent arrays) recorded in the BITSIZE components of its
2185    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2186    in bits.
2187
2188    Note that, for arrays whose index type has an XA encoding where
2189    a bound references a record discriminant, getting that discriminant,
2190    and therefore the actual value of that bound, is not possible
2191    because none of the given parameters gives us access to the record.
2192    This function assumes that it is OK in the context where it is being
2193    used to return an array whose bounds are still dynamic and where
2194    the length is arbitrary.  */
2195
2196 static struct type *
2197 constrained_packed_array_type (struct type *type, long *elt_bits)
2198 {
2199   struct type *new_elt_type;
2200   struct type *new_type;
2201   struct type *index_type_desc;
2202   struct type *index_type;
2203   LONGEST low_bound, high_bound;
2204
2205   type = ada_check_typedef (type);
2206   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2207     return type;
2208
2209   index_type_desc = ada_find_parallel_type (type, "___XA");
2210   if (index_type_desc)
2211     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2212                                       NULL);
2213   else
2214     index_type = TYPE_INDEX_TYPE (type);
2215
2216   new_type = alloc_type_copy (type);
2217   new_elt_type =
2218     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2219                                    elt_bits);
2220   create_array_type (new_type, new_elt_type, index_type);
2221   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2222   TYPE_NAME (new_type) = ada_type_name (type);
2223
2224   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2225        && is_dynamic_type (check_typedef (index_type)))
2226       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2227     low_bound = high_bound = 0;
2228   if (high_bound < low_bound)
2229     *elt_bits = TYPE_LENGTH (new_type) = 0;
2230   else
2231     {
2232       *elt_bits *= (high_bound - low_bound + 1);
2233       TYPE_LENGTH (new_type) =
2234         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2235     }
2236
2237   TYPE_FIXED_INSTANCE (new_type) = 1;
2238   return new_type;
2239 }
2240
2241 /* The array type encoded by TYPE, where
2242    ada_is_constrained_packed_array_type (TYPE).  */
2243
2244 static struct type *
2245 decode_constrained_packed_array_type (struct type *type)
2246 {
2247   const char *raw_name = ada_type_name (ada_check_typedef (type));
2248   char *name;
2249   const char *tail;
2250   struct type *shadow_type;
2251   long bits;
2252
2253   if (!raw_name)
2254     raw_name = ada_type_name (desc_base_type (type));
2255
2256   if (!raw_name)
2257     return NULL;
2258
2259   name = (char *) alloca (strlen (raw_name) + 1);
2260   tail = strstr (raw_name, "___XP");
2261   type = desc_base_type (type);
2262
2263   memcpy (name, raw_name, tail - raw_name);
2264   name[tail - raw_name] = '\000';
2265
2266   shadow_type = ada_find_parallel_type_with_name (type, name);
2267
2268   if (shadow_type == NULL)
2269     {
2270       lim_warning (_("could not find bounds information on packed array"));
2271       return NULL;
2272     }
2273   shadow_type = check_typedef (shadow_type);
2274
2275   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2276     {
2277       lim_warning (_("could not understand bounds "
2278                      "information on packed array"));
2279       return NULL;
2280     }
2281
2282   bits = decode_packed_array_bitsize (type);
2283   return constrained_packed_array_type (shadow_type, &bits);
2284 }
2285
2286 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2287    array, returns a simple array that denotes that array.  Its type is a
2288    standard GDB array type except that the BITSIZEs of the array
2289    target types are set to the number of bits in each element, and the
2290    type length is set appropriately.  */
2291
2292 static struct value *
2293 decode_constrained_packed_array (struct value *arr)
2294 {
2295   struct type *type;
2296
2297   /* If our value is a pointer, then dereference it. Likewise if
2298      the value is a reference.  Make sure that this operation does not
2299      cause the target type to be fixed, as this would indirectly cause
2300      this array to be decoded.  The rest of the routine assumes that
2301      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2302      and "value_ind" routines to perform the dereferencing, as opposed
2303      to using "ada_coerce_ref" or "ada_value_ind".  */
2304   arr = coerce_ref (arr);
2305   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2306     arr = value_ind (arr);
2307
2308   type = decode_constrained_packed_array_type (value_type (arr));
2309   if (type == NULL)
2310     {
2311       error (_("can't unpack array"));
2312       return NULL;
2313     }
2314
2315   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2316       && ada_is_modular_type (value_type (arr)))
2317     {
2318        /* This is a (right-justified) modular type representing a packed
2319          array with no wrapper.  In order to interpret the value through
2320          the (left-justified) packed array type we just built, we must
2321          first left-justify it.  */
2322       int bit_size, bit_pos;
2323       ULONGEST mod;
2324
2325       mod = ada_modulus (value_type (arr)) - 1;
2326       bit_size = 0;
2327       while (mod > 0)
2328         {
2329           bit_size += 1;
2330           mod >>= 1;
2331         }
2332       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2333       arr = ada_value_primitive_packed_val (arr, NULL,
2334                                             bit_pos / HOST_CHAR_BIT,
2335                                             bit_pos % HOST_CHAR_BIT,
2336                                             bit_size,
2337                                             type);
2338     }
2339
2340   return coerce_unspec_val_to_type (arr, type);
2341 }
2342
2343
2344 /* The value of the element of packed array ARR at the ARITY indices
2345    given in IND.   ARR must be a simple array.  */
2346
2347 static struct value *
2348 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2349 {
2350   int i;
2351   int bits, elt_off, bit_off;
2352   long elt_total_bit_offset;
2353   struct type *elt_type;
2354   struct value *v;
2355
2356   bits = 0;
2357   elt_total_bit_offset = 0;
2358   elt_type = ada_check_typedef (value_type (arr));
2359   for (i = 0; i < arity; i += 1)
2360     {
2361       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2362           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2363         error
2364           (_("attempt to do packed indexing of "
2365              "something other than a packed array"));
2366       else
2367         {
2368           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2369           LONGEST lowerbound, upperbound;
2370           LONGEST idx;
2371
2372           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2373             {
2374               lim_warning (_("don't know bounds of array"));
2375               lowerbound = upperbound = 0;
2376             }
2377
2378           idx = pos_atr (ind[i]);
2379           if (idx < lowerbound || idx > upperbound)
2380             lim_warning (_("packed array index %ld out of bounds"),
2381                          (long) idx);
2382           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2383           elt_total_bit_offset += (idx - lowerbound) * bits;
2384           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2385         }
2386     }
2387   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2388   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2389
2390   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2391                                       bits, elt_type);
2392   return v;
2393 }
2394
2395 /* Non-zero iff TYPE includes negative integer values.  */
2396
2397 static int
2398 has_negatives (struct type *type)
2399 {
2400   switch (TYPE_CODE (type))
2401     {
2402     default:
2403       return 0;
2404     case TYPE_CODE_INT:
2405       return !TYPE_UNSIGNED (type);
2406     case TYPE_CODE_RANGE:
2407       return TYPE_LOW_BOUND (type) < 0;
2408     }
2409 }
2410
2411 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2412    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2413    the unpacked buffer.
2414
2415    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2416    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2417
2418    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2419    zero otherwise.
2420
2421    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2422
2423    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2424
2425 static void
2426 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2427                           gdb_byte *unpacked, int unpacked_len,
2428                           int is_big_endian, int is_signed_type,
2429                           int is_scalar)
2430 {
2431   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2432   int src_idx;                  /* Index into the source area */
2433   int src_bytes_left;           /* Number of source bytes left to process.  */
2434   int srcBitsLeft;              /* Number of source bits left to move */
2435   int unusedLS;                 /* Number of bits in next significant
2436                                    byte of source that are unused */
2437
2438   int unpacked_idx;             /* Index into the unpacked buffer */
2439   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2440
2441   unsigned long accum;          /* Staging area for bits being transferred */
2442   int accumSize;                /* Number of meaningful bits in accum */
2443   unsigned char sign;
2444
2445   /* Transmit bytes from least to most significant; delta is the direction
2446      the indices move.  */
2447   int delta = is_big_endian ? -1 : 1;
2448
2449   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2450      bits from SRC.  .*/
2451   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2452     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2453            bit_size, unpacked_len);
2454
2455   srcBitsLeft = bit_size;
2456   src_bytes_left = src_len;
2457   unpacked_bytes_left = unpacked_len;
2458   sign = 0;
2459
2460   if (is_big_endian)
2461     {
2462       src_idx = src_len - 1;
2463       if (is_signed_type
2464           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2465         sign = ~0;
2466
2467       unusedLS =
2468         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2469         % HOST_CHAR_BIT;
2470
2471       if (is_scalar)
2472         {
2473           accumSize = 0;
2474           unpacked_idx = unpacked_len - 1;
2475         }
2476       else
2477         {
2478           /* Non-scalar values must be aligned at a byte boundary...  */
2479           accumSize =
2480             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2481           /* ... And are placed at the beginning (most-significant) bytes
2482              of the target.  */
2483           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2484           unpacked_bytes_left = unpacked_idx + 1;
2485         }
2486     }
2487   else
2488     {
2489       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2490
2491       src_idx = unpacked_idx = 0;
2492       unusedLS = bit_offset;
2493       accumSize = 0;
2494
2495       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2496         sign = ~0;
2497     }
2498
2499   accum = 0;
2500   while (src_bytes_left > 0)
2501     {
2502       /* Mask for removing bits of the next source byte that are not
2503          part of the value.  */
2504       unsigned int unusedMSMask =
2505         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2506         1;
2507       /* Sign-extend bits for this byte.  */
2508       unsigned int signMask = sign & ~unusedMSMask;
2509
2510       accum |=
2511         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2512       accumSize += HOST_CHAR_BIT - unusedLS;
2513       if (accumSize >= HOST_CHAR_BIT)
2514         {
2515           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2516           accumSize -= HOST_CHAR_BIT;
2517           accum >>= HOST_CHAR_BIT;
2518           unpacked_bytes_left -= 1;
2519           unpacked_idx += delta;
2520         }
2521       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2522       unusedLS = 0;
2523       src_bytes_left -= 1;
2524       src_idx += delta;
2525     }
2526   while (unpacked_bytes_left > 0)
2527     {
2528       accum |= sign << accumSize;
2529       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2530       accumSize -= HOST_CHAR_BIT;
2531       if (accumSize < 0)
2532         accumSize = 0;
2533       accum >>= HOST_CHAR_BIT;
2534       unpacked_bytes_left -= 1;
2535       unpacked_idx += delta;
2536     }
2537 }
2538
2539 /* Create a new value of type TYPE from the contents of OBJ starting
2540    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2541    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2542    assigning through the result will set the field fetched from.
2543    VALADDR is ignored unless OBJ is NULL, in which case,
2544    VALADDR+OFFSET must address the start of storage containing the 
2545    packed value.  The value returned  in this case is never an lval.
2546    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2547
2548 struct value *
2549 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2550                                 long offset, int bit_offset, int bit_size,
2551                                 struct type *type)
2552 {
2553   struct value *v;
2554   const gdb_byte *src;                /* First byte containing data to unpack */
2555   gdb_byte *unpacked;
2556   const int is_scalar = is_scalar_type (type);
2557   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2558   gdb::byte_vector staging;
2559
2560   type = ada_check_typedef (type);
2561
2562   if (obj == NULL)
2563     src = valaddr + offset;
2564   else
2565     src = value_contents (obj) + offset;
2566
2567   if (is_dynamic_type (type))
2568     {
2569       /* The length of TYPE might by dynamic, so we need to resolve
2570          TYPE in order to know its actual size, which we then use
2571          to create the contents buffer of the value we return.
2572          The difficulty is that the data containing our object is
2573          packed, and therefore maybe not at a byte boundary.  So, what
2574          we do, is unpack the data into a byte-aligned buffer, and then
2575          use that buffer as our object's value for resolving the type.  */
2576       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2577       staging.resize (staging_len);
2578
2579       ada_unpack_from_contents (src, bit_offset, bit_size,
2580                                 staging.data (), staging.size (),
2581                                 is_big_endian, has_negatives (type),
2582                                 is_scalar);
2583       type = resolve_dynamic_type (type, staging.data (), 0);
2584       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2585         {
2586           /* This happens when the length of the object is dynamic,
2587              and is actually smaller than the space reserved for it.
2588              For instance, in an array of variant records, the bit_size
2589              we're given is the array stride, which is constant and
2590              normally equal to the maximum size of its element.
2591              But, in reality, each element only actually spans a portion
2592              of that stride.  */
2593           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2594         }
2595     }
2596
2597   if (obj == NULL)
2598     {
2599       v = allocate_value (type);
2600       src = valaddr + offset;
2601     }
2602   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2603     {
2604       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2605       gdb_byte *buf;
2606
2607       v = value_at (type, value_address (obj) + offset);
2608       buf = (gdb_byte *) alloca (src_len);
2609       read_memory (value_address (v), buf, src_len);
2610       src = buf;
2611     }
2612   else
2613     {
2614       v = allocate_value (type);
2615       src = value_contents (obj) + offset;
2616     }
2617
2618   if (obj != NULL)
2619     {
2620       long new_offset = offset;
2621
2622       set_value_component_location (v, obj);
2623       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2624       set_value_bitsize (v, bit_size);
2625       if (value_bitpos (v) >= HOST_CHAR_BIT)
2626         {
2627           ++new_offset;
2628           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2629         }
2630       set_value_offset (v, new_offset);
2631
2632       /* Also set the parent value.  This is needed when trying to
2633          assign a new value (in inferior memory).  */
2634       set_value_parent (v, obj);
2635     }
2636   else
2637     set_value_bitsize (v, bit_size);
2638   unpacked = value_contents_writeable (v);
2639
2640   if (bit_size == 0)
2641     {
2642       memset (unpacked, 0, TYPE_LENGTH (type));
2643       return v;
2644     }
2645
2646   if (staging.size () == TYPE_LENGTH (type))
2647     {
2648       /* Small short-cut: If we've unpacked the data into a buffer
2649          of the same size as TYPE's length, then we can reuse that,
2650          instead of doing the unpacking again.  */
2651       memcpy (unpacked, staging.data (), staging.size ());
2652     }
2653   else
2654     ada_unpack_from_contents (src, bit_offset, bit_size,
2655                               unpacked, TYPE_LENGTH (type),
2656                               is_big_endian, has_negatives (type), is_scalar);
2657
2658   return v;
2659 }
2660
2661 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2662    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2663    not overlap.  */
2664 static void
2665 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2666            int src_offset, int n, int bits_big_endian_p)
2667 {
2668   unsigned int accum, mask;
2669   int accum_bits, chunk_size;
2670
2671   target += targ_offset / HOST_CHAR_BIT;
2672   targ_offset %= HOST_CHAR_BIT;
2673   source += src_offset / HOST_CHAR_BIT;
2674   src_offset %= HOST_CHAR_BIT;
2675   if (bits_big_endian_p)
2676     {
2677       accum = (unsigned char) *source;
2678       source += 1;
2679       accum_bits = HOST_CHAR_BIT - src_offset;
2680
2681       while (n > 0)
2682         {
2683           int unused_right;
2684
2685           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2686           accum_bits += HOST_CHAR_BIT;
2687           source += 1;
2688           chunk_size = HOST_CHAR_BIT - targ_offset;
2689           if (chunk_size > n)
2690             chunk_size = n;
2691           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2692           mask = ((1 << chunk_size) - 1) << unused_right;
2693           *target =
2694             (*target & ~mask)
2695             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2696           n -= chunk_size;
2697           accum_bits -= chunk_size;
2698           target += 1;
2699           targ_offset = 0;
2700         }
2701     }
2702   else
2703     {
2704       accum = (unsigned char) *source >> src_offset;
2705       source += 1;
2706       accum_bits = HOST_CHAR_BIT - src_offset;
2707
2708       while (n > 0)
2709         {
2710           accum = accum + ((unsigned char) *source << accum_bits);
2711           accum_bits += HOST_CHAR_BIT;
2712           source += 1;
2713           chunk_size = HOST_CHAR_BIT - targ_offset;
2714           if (chunk_size > n)
2715             chunk_size = n;
2716           mask = ((1 << chunk_size) - 1) << targ_offset;
2717           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2718           n -= chunk_size;
2719           accum_bits -= chunk_size;
2720           accum >>= chunk_size;
2721           target += 1;
2722           targ_offset = 0;
2723         }
2724     }
2725 }
2726
2727 /* Store the contents of FROMVAL into the location of TOVAL.
2728    Return a new value with the location of TOVAL and contents of
2729    FROMVAL.   Handles assignment into packed fields that have
2730    floating-point or non-scalar types.  */
2731
2732 static struct value *
2733 ada_value_assign (struct value *toval, struct value *fromval)
2734 {
2735   struct type *type = value_type (toval);
2736   int bits = value_bitsize (toval);
2737
2738   toval = ada_coerce_ref (toval);
2739   fromval = ada_coerce_ref (fromval);
2740
2741   if (ada_is_direct_array_type (value_type (toval)))
2742     toval = ada_coerce_to_simple_array (toval);
2743   if (ada_is_direct_array_type (value_type (fromval)))
2744     fromval = ada_coerce_to_simple_array (fromval);
2745
2746   if (!deprecated_value_modifiable (toval))
2747     error (_("Left operand of assignment is not a modifiable lvalue."));
2748
2749   if (VALUE_LVAL (toval) == lval_memory
2750       && bits > 0
2751       && (TYPE_CODE (type) == TYPE_CODE_FLT
2752           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2753     {
2754       int len = (value_bitpos (toval)
2755                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2756       int from_size;
2757       gdb_byte *buffer = (gdb_byte *) alloca (len);
2758       struct value *val;
2759       CORE_ADDR to_addr = value_address (toval);
2760
2761       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2762         fromval = value_cast (type, fromval);
2763
2764       read_memory (to_addr, buffer, len);
2765       from_size = value_bitsize (fromval);
2766       if (from_size == 0)
2767         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2768       if (gdbarch_bits_big_endian (get_type_arch (type)))
2769         move_bits (buffer, value_bitpos (toval),
2770                    value_contents (fromval), from_size - bits, bits, 1);
2771       else
2772         move_bits (buffer, value_bitpos (toval),
2773                    value_contents (fromval), 0, bits, 0);
2774       write_memory_with_notification (to_addr, buffer, len);
2775
2776       val = value_copy (toval);
2777       memcpy (value_contents_raw (val), value_contents (fromval),
2778               TYPE_LENGTH (type));
2779       deprecated_set_value_type (val, type);
2780
2781       return val;
2782     }
2783
2784   return value_assign (toval, fromval);
2785 }
2786
2787
2788 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2789    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2790    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2791    COMPONENT, and not the inferior's memory.  The current contents
2792    of COMPONENT are ignored.
2793
2794    Although not part of the initial design, this function also works
2795    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2796    had a null address, and COMPONENT had an address which is equal to
2797    its offset inside CONTAINER.  */
2798
2799 static void
2800 value_assign_to_component (struct value *container, struct value *component,
2801                            struct value *val)
2802 {
2803   LONGEST offset_in_container =
2804     (LONGEST)  (value_address (component) - value_address (container));
2805   int bit_offset_in_container =
2806     value_bitpos (component) - value_bitpos (container);
2807   int bits;
2808
2809   val = value_cast (value_type (component), val);
2810
2811   if (value_bitsize (component) == 0)
2812     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2813   else
2814     bits = value_bitsize (component);
2815
2816   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2817     {
2818       int src_offset;
2819
2820       if (is_scalar_type (check_typedef (value_type (component))))
2821         src_offset
2822           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2823       else
2824         src_offset = 0;
2825       move_bits (value_contents_writeable (container) + offset_in_container,
2826                  value_bitpos (container) + bit_offset_in_container,
2827                  value_contents (val), src_offset, bits, 1);
2828     }
2829   else
2830     move_bits (value_contents_writeable (container) + offset_in_container,
2831                value_bitpos (container) + bit_offset_in_container,
2832                value_contents (val), 0, bits, 0);
2833 }
2834
2835 /* Determine if TYPE is an access to an unconstrained array.  */
2836
2837 bool
2838 ada_is_access_to_unconstrained_array (struct type *type)
2839 {
2840   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2841           && is_thick_pntr (ada_typedef_target_type (type)));
2842 }
2843
2844 /* The value of the element of array ARR at the ARITY indices given in IND.
2845    ARR may be either a simple array, GNAT array descriptor, or pointer
2846    thereto.  */
2847
2848 struct value *
2849 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2850 {
2851   int k;
2852   struct value *elt;
2853   struct type *elt_type;
2854
2855   elt = ada_coerce_to_simple_array (arr);
2856
2857   elt_type = ada_check_typedef (value_type (elt));
2858   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2859       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2860     return value_subscript_packed (elt, arity, ind);
2861
2862   for (k = 0; k < arity; k += 1)
2863     {
2864       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2865
2866       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2867         error (_("too many subscripts (%d expected)"), k);
2868
2869       elt = value_subscript (elt, pos_atr (ind[k]));
2870
2871       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2872           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2873         {
2874           /* The element is a typedef to an unconstrained array,
2875              except that the value_subscript call stripped the
2876              typedef layer.  The typedef layer is GNAT's way to
2877              specify that the element is, at the source level, an
2878              access to the unconstrained array, rather than the
2879              unconstrained array.  So, we need to restore that
2880              typedef layer, which we can do by forcing the element's
2881              type back to its original type. Otherwise, the returned
2882              value is going to be printed as the array, rather
2883              than as an access.  Another symptom of the same issue
2884              would be that an expression trying to dereference the
2885              element would also be improperly rejected.  */
2886           deprecated_set_value_type (elt, saved_elt_type);
2887         }
2888
2889       elt_type = ada_check_typedef (value_type (elt));
2890     }
2891
2892   return elt;
2893 }
2894
2895 /* Assuming ARR is a pointer to a GDB array, the value of the element
2896    of *ARR at the ARITY indices given in IND.
2897    Does not read the entire array into memory.
2898
2899    Note: Unlike what one would expect, this function is used instead of
2900    ada_value_subscript for basically all non-packed array types.  The reason
2901    for this is that a side effect of doing our own pointer arithmetics instead
2902    of relying on value_subscript is that there is no implicit typedef peeling.
2903    This is important for arrays of array accesses, where it allows us to
2904    preserve the fact that the array's element is an array access, where the
2905    access part os encoded in a typedef layer.  */
2906
2907 static struct value *
2908 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2909 {
2910   int k;
2911   struct value *array_ind = ada_value_ind (arr);
2912   struct type *type
2913     = check_typedef (value_enclosing_type (array_ind));
2914
2915   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2916       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2917     return value_subscript_packed (array_ind, arity, ind);
2918
2919   for (k = 0; k < arity; k += 1)
2920     {
2921       LONGEST lwb, upb;
2922       struct value *lwb_value;
2923
2924       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2925         error (_("too many subscripts (%d expected)"), k);
2926       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2927                         value_copy (arr));
2928       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2929       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2930       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2931       type = TYPE_TARGET_TYPE (type);
2932     }
2933
2934   return value_ind (arr);
2935 }
2936
2937 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2938    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2939    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2940    this array is LOW, as per Ada rules.  */
2941 static struct value *
2942 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2943                           int low, int high)
2944 {
2945   struct type *type0 = ada_check_typedef (type);
2946   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2947   struct type *index_type
2948     = create_static_range_type (NULL, base_index_type, low, high);
2949   struct type *slice_type = create_array_type_with_stride
2950                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2951                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2952                                TYPE_FIELD_BITSIZE (type0, 0));
2953   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2954   LONGEST base_low_pos, low_pos;
2955   CORE_ADDR base;
2956
2957   if (!discrete_position (base_index_type, low, &low_pos)
2958       || !discrete_position (base_index_type, base_low, &base_low_pos))
2959     {
2960       warning (_("unable to get positions in slice, use bounds instead"));
2961       low_pos = low;
2962       base_low_pos = base_low;
2963     }
2964
2965   base = value_as_address (array_ptr)
2966     + ((low_pos - base_low_pos)
2967        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2968   return value_at_lazy (slice_type, base);
2969 }
2970
2971
2972 static struct value *
2973 ada_value_slice (struct value *array, int low, int high)
2974 {
2975   struct type *type = ada_check_typedef (value_type (array));
2976   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2977   struct type *index_type
2978     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2979   struct type *slice_type = create_array_type_with_stride
2980                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2981                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2982                                TYPE_FIELD_BITSIZE (type, 0));
2983   LONGEST low_pos, high_pos;
2984
2985   if (!discrete_position (base_index_type, low, &low_pos)
2986       || !discrete_position (base_index_type, high, &high_pos))
2987     {
2988       warning (_("unable to get positions in slice, use bounds instead"));
2989       low_pos = low;
2990       high_pos = high;
2991     }
2992
2993   return value_cast (slice_type,
2994                      value_slice (array, low, high_pos - low_pos + 1));
2995 }
2996
2997 /* If type is a record type in the form of a standard GNAT array
2998    descriptor, returns the number of dimensions for type.  If arr is a
2999    simple array, returns the number of "array of"s that prefix its
3000    type designation.  Otherwise, returns 0.  */
3001
3002 int
3003 ada_array_arity (struct type *type)
3004 {
3005   int arity;
3006
3007   if (type == NULL)
3008     return 0;
3009
3010   type = desc_base_type (type);
3011
3012   arity = 0;
3013   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3014     return desc_arity (desc_bounds_type (type));
3015   else
3016     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3017       {
3018         arity += 1;
3019         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
3020       }
3021
3022   return arity;
3023 }
3024
3025 /* If TYPE is a record type in the form of a standard GNAT array
3026    descriptor or a simple array type, returns the element type for
3027    TYPE after indexing by NINDICES indices, or by all indices if
3028    NINDICES is -1.  Otherwise, returns NULL.  */
3029
3030 struct type *
3031 ada_array_element_type (struct type *type, int nindices)
3032 {
3033   type = desc_base_type (type);
3034
3035   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3036     {
3037       int k;
3038       struct type *p_array_type;
3039
3040       p_array_type = desc_data_target_type (type);
3041
3042       k = ada_array_arity (type);
3043       if (k == 0)
3044         return NULL;
3045
3046       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3047       if (nindices >= 0 && k > nindices)
3048         k = nindices;
3049       while (k > 0 && p_array_type != NULL)
3050         {
3051           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3052           k -= 1;
3053         }
3054       return p_array_type;
3055     }
3056   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3057     {
3058       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3059         {
3060           type = TYPE_TARGET_TYPE (type);
3061           nindices -= 1;
3062         }
3063       return type;
3064     }
3065
3066   return NULL;
3067 }
3068
3069 /* The type of nth index in arrays of given type (n numbering from 1).
3070    Does not examine memory.  Throws an error if N is invalid or TYPE
3071    is not an array type.  NAME is the name of the Ada attribute being
3072    evaluated ('range, 'first, 'last, or 'length); it is used in building
3073    the error message.  */
3074
3075 static struct type *
3076 ada_index_type (struct type *type, int n, const char *name)
3077 {
3078   struct type *result_type;
3079
3080   type = desc_base_type (type);
3081
3082   if (n < 0 || n > ada_array_arity (type))
3083     error (_("invalid dimension number to '%s"), name);
3084
3085   if (ada_is_simple_array_type (type))
3086     {
3087       int i;
3088
3089       for (i = 1; i < n; i += 1)
3090         type = TYPE_TARGET_TYPE (type);
3091       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3092       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3093          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3094          perhaps stabsread.c would make more sense.  */
3095       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3096         result_type = NULL;
3097     }
3098   else
3099     {
3100       result_type = desc_index_type (desc_bounds_type (type), n);
3101       if (result_type == NULL)
3102         error (_("attempt to take bound of something that is not an array"));
3103     }
3104
3105   return result_type;
3106 }
3107
3108 /* Given that arr is an array type, returns the lower bound of the
3109    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3110    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3111    array-descriptor type.  It works for other arrays with bounds supplied
3112    by run-time quantities other than discriminants.  */
3113
3114 static LONGEST
3115 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3116 {
3117   struct type *type, *index_type_desc, *index_type;
3118   int i;
3119
3120   gdb_assert (which == 0 || which == 1);
3121
3122   if (ada_is_constrained_packed_array_type (arr_type))
3123     arr_type = decode_constrained_packed_array_type (arr_type);
3124
3125   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3126     return (LONGEST) - which;
3127
3128   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3129     type = TYPE_TARGET_TYPE (arr_type);
3130   else
3131     type = arr_type;
3132
3133   if (TYPE_FIXED_INSTANCE (type))
3134     {
3135       /* The array has already been fixed, so we do not need to
3136          check the parallel ___XA type again.  That encoding has
3137          already been applied, so ignore it now.  */
3138       index_type_desc = NULL;
3139     }
3140   else
3141     {
3142       index_type_desc = ada_find_parallel_type (type, "___XA");
3143       ada_fixup_array_indexes_type (index_type_desc);
3144     }
3145
3146   if (index_type_desc != NULL)
3147     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3148                                       NULL);
3149   else
3150     {
3151       struct type *elt_type = check_typedef (type);
3152
3153       for (i = 1; i < n; i++)
3154         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3155
3156       index_type = TYPE_INDEX_TYPE (elt_type);
3157     }
3158
3159   return
3160     (LONGEST) (which == 0
3161                ? ada_discrete_type_low_bound (index_type)
3162                : ada_discrete_type_high_bound (index_type));
3163 }
3164
3165 /* Given that arr is an array value, returns the lower bound of the
3166    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3167    WHICH is 1.  This routine will also work for arrays with bounds
3168    supplied by run-time quantities other than discriminants.  */
3169
3170 static LONGEST
3171 ada_array_bound (struct value *arr, int n, int which)
3172 {
3173   struct type *arr_type;
3174
3175   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3176     arr = value_ind (arr);
3177   arr_type = value_enclosing_type (arr);
3178
3179   if (ada_is_constrained_packed_array_type (arr_type))
3180     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3181   else if (ada_is_simple_array_type (arr_type))
3182     return ada_array_bound_from_type (arr_type, n, which);
3183   else
3184     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3185 }
3186
3187 /* Given that arr is an array value, returns the length of the
3188    nth index.  This routine will also work for arrays with bounds
3189    supplied by run-time quantities other than discriminants.
3190    Does not work for arrays indexed by enumeration types with representation
3191    clauses at the moment.  */
3192
3193 static LONGEST
3194 ada_array_length (struct value *arr, int n)
3195 {
3196   struct type *arr_type, *index_type;
3197   int low, high;
3198
3199   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3200     arr = value_ind (arr);
3201   arr_type = value_enclosing_type (arr);
3202
3203   if (ada_is_constrained_packed_array_type (arr_type))
3204     return ada_array_length (decode_constrained_packed_array (arr), n);
3205
3206   if (ada_is_simple_array_type (arr_type))
3207     {
3208       low = ada_array_bound_from_type (arr_type, n, 0);
3209       high = ada_array_bound_from_type (arr_type, n, 1);
3210     }
3211   else
3212     {
3213       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3214       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3215     }
3216
3217   arr_type = check_typedef (arr_type);
3218   index_type = ada_index_type (arr_type, n, "length");
3219   if (index_type != NULL)
3220     {
3221       struct type *base_type;
3222       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3223         base_type = TYPE_TARGET_TYPE (index_type);
3224       else
3225         base_type = index_type;
3226
3227       low = pos_atr (value_from_longest (base_type, low));
3228       high = pos_atr (value_from_longest (base_type, high));
3229     }
3230   return high - low + 1;
3231 }
3232
3233 /* An empty array whose type is that of ARR_TYPE (an array type),
3234    with bounds LOW to LOW-1.  */
3235
3236 static struct value *
3237 empty_array (struct type *arr_type, int low)
3238 {
3239   struct type *arr_type0 = ada_check_typedef (arr_type);
3240   struct type *index_type
3241     = create_static_range_type
3242         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3243   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3244
3245   return allocate_value (create_array_type (NULL, elt_type, index_type));
3246 }
3247 \f
3248
3249                                 /* Name resolution */
3250
3251 /* The "decoded" name for the user-definable Ada operator corresponding
3252    to OP.  */
3253
3254 static const char *
3255 ada_decoded_op_name (enum exp_opcode op)
3256 {
3257   int i;
3258
3259   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3260     {
3261       if (ada_opname_table[i].op == op)
3262         return ada_opname_table[i].decoded;
3263     }
3264   error (_("Could not find operator name for opcode"));
3265 }
3266
3267
3268 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3269    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3270    undefined namespace) and converts operators that are
3271    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3272    non-null, it provides a preferred result type [at the moment, only
3273    type void has any effect---causing procedures to be preferred over
3274    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3275    return type is preferred.  May change (expand) *EXP.  */
3276
3277 static void
3278 resolve (expression_up *expp, int void_context_p)
3279 {
3280   struct type *context_type = NULL;
3281   int pc = 0;
3282
3283   if (void_context_p)
3284     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3285
3286   resolve_subexp (expp, &pc, 1, context_type);
3287 }
3288
3289 /* Resolve the operator of the subexpression beginning at
3290    position *POS of *EXPP.  "Resolving" consists of replacing
3291    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3292    with their resolutions, replacing built-in operators with
3293    function calls to user-defined operators, where appropriate, and,
3294    when DEPROCEDURE_P is non-zero, converting function-valued variables
3295    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3296    are as in ada_resolve, above.  */
3297
3298 static struct value *
3299 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3300                 struct type *context_type)
3301 {
3302   int pc = *pos;
3303   int i;
3304   struct expression *exp;       /* Convenience: == *expp.  */
3305   enum exp_opcode op = (*expp)->elts[pc].opcode;
3306   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3307   int nargs;                    /* Number of operands.  */
3308   int oplen;
3309
3310   argvec = NULL;
3311   nargs = 0;
3312   exp = expp->get ();
3313
3314   /* Pass one: resolve operands, saving their types and updating *pos,
3315      if needed.  */
3316   switch (op)
3317     {
3318     case OP_FUNCALL:
3319       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3320           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3321         *pos += 7;
3322       else
3323         {
3324           *pos += 3;
3325           resolve_subexp (expp, pos, 0, NULL);
3326         }
3327       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3328       break;
3329
3330     case UNOP_ADDR:
3331       *pos += 1;
3332       resolve_subexp (expp, pos, 0, NULL);
3333       break;
3334
3335     case UNOP_QUAL:
3336       *pos += 3;
3337       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3338       break;
3339
3340     case OP_ATR_MODULUS:
3341     case OP_ATR_SIZE:
3342     case OP_ATR_TAG:
3343     case OP_ATR_FIRST:
3344     case OP_ATR_LAST:
3345     case OP_ATR_LENGTH:
3346     case OP_ATR_POS:
3347     case OP_ATR_VAL:
3348     case OP_ATR_MIN:
3349     case OP_ATR_MAX:
3350     case TERNOP_IN_RANGE:
3351     case BINOP_IN_BOUNDS:
3352     case UNOP_IN_RANGE:
3353     case OP_AGGREGATE:
3354     case OP_OTHERS:
3355     case OP_CHOICES:
3356     case OP_POSITIONAL:
3357     case OP_DISCRETE_RANGE:
3358     case OP_NAME:
3359       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3360       *pos += oplen;
3361       break;
3362
3363     case BINOP_ASSIGN:
3364       {
3365         struct value *arg1;
3366
3367         *pos += 1;
3368         arg1 = resolve_subexp (expp, pos, 0, NULL);
3369         if (arg1 == NULL)
3370           resolve_subexp (expp, pos, 1, NULL);
3371         else
3372           resolve_subexp (expp, pos, 1, value_type (arg1));
3373         break;
3374       }
3375
3376     case UNOP_CAST:
3377       *pos += 3;
3378       nargs = 1;
3379       break;
3380
3381     case BINOP_ADD:
3382     case BINOP_SUB:
3383     case BINOP_MUL:
3384     case BINOP_DIV:
3385     case BINOP_REM:
3386     case BINOP_MOD:
3387     case BINOP_EXP:
3388     case BINOP_CONCAT:
3389     case BINOP_LOGICAL_AND:
3390     case BINOP_LOGICAL_OR:
3391     case BINOP_BITWISE_AND:
3392     case BINOP_BITWISE_IOR:
3393     case BINOP_BITWISE_XOR:
3394
3395     case BINOP_EQUAL:
3396     case BINOP_NOTEQUAL:
3397     case BINOP_LESS:
3398     case BINOP_GTR:
3399     case BINOP_LEQ:
3400     case BINOP_GEQ:
3401
3402     case BINOP_REPEAT:
3403     case BINOP_SUBSCRIPT:
3404     case BINOP_COMMA:
3405       *pos += 1;
3406       nargs = 2;
3407       break;
3408
3409     case UNOP_NEG:
3410     case UNOP_PLUS:
3411     case UNOP_LOGICAL_NOT:
3412     case UNOP_ABS:
3413     case UNOP_IND:
3414       *pos += 1;
3415       nargs = 1;
3416       break;
3417
3418     case OP_LONG:
3419     case OP_FLOAT:
3420     case OP_VAR_VALUE:
3421     case OP_VAR_MSYM_VALUE:
3422       *pos += 4;
3423       break;
3424
3425     case OP_TYPE:
3426     case OP_BOOL:
3427     case OP_LAST:
3428     case OP_INTERNALVAR:
3429       *pos += 3;
3430       break;
3431
3432     case UNOP_MEMVAL:
3433       *pos += 3;
3434       nargs = 1;
3435       break;
3436
3437     case OP_REGISTER:
3438       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3439       break;
3440
3441     case STRUCTOP_STRUCT:
3442       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3443       nargs = 1;
3444       break;
3445
3446     case TERNOP_SLICE:
3447       *pos += 1;
3448       nargs = 3;
3449       break;
3450
3451     case OP_STRING:
3452       break;
3453
3454     default:
3455       error (_("Unexpected operator during name resolution"));
3456     }
3457
3458   argvec = XALLOCAVEC (struct value *, nargs + 1);
3459   for (i = 0; i < nargs; i += 1)
3460     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3461   argvec[i] = NULL;
3462   exp = expp->get ();
3463
3464   /* Pass two: perform any resolution on principal operator.  */
3465   switch (op)
3466     {
3467     default:
3468       break;
3469
3470     case OP_VAR_VALUE:
3471       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3472         {
3473           std::vector<struct block_symbol> candidates;
3474           int n_candidates;
3475
3476           n_candidates =
3477             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3478                                     (exp->elts[pc + 2].symbol),
3479                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3480                                     &candidates);
3481
3482           if (n_candidates > 1)
3483             {
3484               /* Types tend to get re-introduced locally, so if there
3485                  are any local symbols that are not types, first filter
3486                  out all types.  */
3487               int j;
3488               for (j = 0; j < n_candidates; j += 1)
3489                 switch (SYMBOL_CLASS (candidates[j].symbol))
3490                   {
3491                   case LOC_REGISTER:
3492                   case LOC_ARG:
3493                   case LOC_REF_ARG:
3494                   case LOC_REGPARM_ADDR:
3495                   case LOC_LOCAL:
3496                   case LOC_COMPUTED:
3497                     goto FoundNonType;
3498                   default:
3499                     break;
3500                   }
3501             FoundNonType:
3502               if (j < n_candidates)
3503                 {
3504                   j = 0;
3505                   while (j < n_candidates)
3506                     {
3507                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3508                         {
3509                           candidates[j] = candidates[n_candidates - 1];
3510                           n_candidates -= 1;
3511                         }
3512                       else
3513                         j += 1;
3514                     }
3515                 }
3516             }
3517
3518           if (n_candidates == 0)
3519             error (_("No definition found for %s"),
3520                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3521           else if (n_candidates == 1)
3522             i = 0;
3523           else if (deprocedure_p
3524                    && !is_nonfunction (candidates.data (), n_candidates))
3525             {
3526               i = ada_resolve_function
3527                 (candidates.data (), n_candidates, NULL, 0,
3528                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3529                  context_type);
3530               if (i < 0)
3531                 error (_("Could not find a match for %s"),
3532                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3533             }
3534           else
3535             {
3536               printf_filtered (_("Multiple matches for %s\n"),
3537                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3538               user_select_syms (candidates.data (), n_candidates, 1);
3539               i = 0;
3540             }
3541
3542           exp->elts[pc + 1].block = candidates[i].block;
3543           exp->elts[pc + 2].symbol = candidates[i].symbol;
3544           innermost_block.update (candidates[i]);
3545         }
3546
3547       if (deprocedure_p
3548           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3549               == TYPE_CODE_FUNC))
3550         {
3551           replace_operator_with_call (expp, pc, 0, 4,
3552                                       exp->elts[pc + 2].symbol,
3553                                       exp->elts[pc + 1].block);
3554           exp = expp->get ();
3555         }
3556       break;
3557
3558     case OP_FUNCALL:
3559       {
3560         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3561             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3562           {
3563             std::vector<struct block_symbol> candidates;
3564             int n_candidates;
3565
3566             n_candidates =
3567               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3568                                       (exp->elts[pc + 5].symbol),
3569                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3570                                       &candidates);
3571
3572             if (n_candidates == 1)
3573               i = 0;
3574             else
3575               {
3576                 i = ada_resolve_function
3577                   (candidates.data (), n_candidates,
3578                    argvec, nargs,
3579                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3580                    context_type);
3581                 if (i < 0)
3582                   error (_("Could not find a match for %s"),
3583                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3584               }
3585
3586             exp->elts[pc + 4].block = candidates[i].block;
3587             exp->elts[pc + 5].symbol = candidates[i].symbol;
3588             innermost_block.update (candidates[i]);
3589           }
3590       }
3591       break;
3592     case BINOP_ADD:
3593     case BINOP_SUB:
3594     case BINOP_MUL:
3595     case BINOP_DIV:
3596     case BINOP_REM:
3597     case BINOP_MOD:
3598     case BINOP_CONCAT:
3599     case BINOP_BITWISE_AND:
3600     case BINOP_BITWISE_IOR:
3601     case BINOP_BITWISE_XOR:
3602     case BINOP_EQUAL:
3603     case BINOP_NOTEQUAL:
3604     case BINOP_LESS:
3605     case BINOP_GTR:
3606     case BINOP_LEQ:
3607     case BINOP_GEQ:
3608     case BINOP_EXP:
3609     case UNOP_NEG:
3610     case UNOP_PLUS:
3611     case UNOP_LOGICAL_NOT:
3612     case UNOP_ABS:
3613       if (possible_user_operator_p (op, argvec))
3614         {
3615           std::vector<struct block_symbol> candidates;
3616           int n_candidates;
3617
3618           n_candidates =
3619             ada_lookup_symbol_list (ada_decoded_op_name (op),
3620                                     (struct block *) NULL, VAR_DOMAIN,
3621                                     &candidates);
3622
3623           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3624                                     nargs, ada_decoded_op_name (op), NULL);
3625           if (i < 0)
3626             break;
3627
3628           replace_operator_with_call (expp, pc, nargs, 1,
3629                                       candidates[i].symbol,
3630                                       candidates[i].block);
3631           exp = expp->get ();
3632         }
3633       break;
3634
3635     case OP_TYPE:
3636     case OP_REGISTER:
3637       return NULL;
3638     }
3639
3640   *pos = pc;
3641   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3642     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3643                                     exp->elts[pc + 1].objfile,
3644                                     exp->elts[pc + 2].msymbol);
3645   else
3646     return evaluate_subexp_type (exp, pos);
3647 }
3648
3649 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3650    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3651    a non-pointer.  */
3652 /* The term "match" here is rather loose.  The match is heuristic and
3653    liberal.  */
3654
3655 static int
3656 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3657 {
3658   ftype = ada_check_typedef (ftype);
3659   atype = ada_check_typedef (atype);
3660
3661   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3662     ftype = TYPE_TARGET_TYPE (ftype);
3663   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3664     atype = TYPE_TARGET_TYPE (atype);
3665
3666   switch (TYPE_CODE (ftype))
3667     {
3668     default:
3669       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3670     case TYPE_CODE_PTR:
3671       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3672         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3673                                TYPE_TARGET_TYPE (atype), 0);
3674       else
3675         return (may_deref
3676                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3677     case TYPE_CODE_INT:
3678     case TYPE_CODE_ENUM:
3679     case TYPE_CODE_RANGE:
3680       switch (TYPE_CODE (atype))
3681         {
3682         case TYPE_CODE_INT:
3683         case TYPE_CODE_ENUM:
3684         case TYPE_CODE_RANGE:
3685           return 1;
3686         default:
3687           return 0;
3688         }
3689
3690     case TYPE_CODE_ARRAY:
3691       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3692               || ada_is_array_descriptor_type (atype));
3693
3694     case TYPE_CODE_STRUCT:
3695       if (ada_is_array_descriptor_type (ftype))
3696         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3697                 || ada_is_array_descriptor_type (atype));
3698       else
3699         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3700                 && !ada_is_array_descriptor_type (atype));
3701
3702     case TYPE_CODE_UNION:
3703     case TYPE_CODE_FLT:
3704       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3705     }
3706 }
3707
3708 /* Return non-zero if the formals of FUNC "sufficiently match" the
3709    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3710    may also be an enumeral, in which case it is treated as a 0-
3711    argument function.  */
3712
3713 static int
3714 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3715 {
3716   int i;
3717   struct type *func_type = SYMBOL_TYPE (func);
3718
3719   if (SYMBOL_CLASS (func) == LOC_CONST
3720       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3721     return (n_actuals == 0);
3722   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3723     return 0;
3724
3725   if (TYPE_NFIELDS (func_type) != n_actuals)
3726     return 0;
3727
3728   for (i = 0; i < n_actuals; i += 1)
3729     {
3730       if (actuals[i] == NULL)
3731         return 0;
3732       else
3733         {
3734           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3735                                                                    i));
3736           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3737
3738           if (!ada_type_match (ftype, atype, 1))
3739             return 0;
3740         }
3741     }
3742   return 1;
3743 }
3744
3745 /* False iff function type FUNC_TYPE definitely does not produce a value
3746    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3747    FUNC_TYPE is not a valid function type with a non-null return type
3748    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3749
3750 static int
3751 return_match (struct type *func_type, struct type *context_type)
3752 {
3753   struct type *return_type;
3754
3755   if (func_type == NULL)
3756     return 1;
3757
3758   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3759     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3760   else
3761     return_type = get_base_type (func_type);
3762   if (return_type == NULL)
3763     return 1;
3764
3765   context_type = get_base_type (context_type);
3766
3767   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3768     return context_type == NULL || return_type == context_type;
3769   else if (context_type == NULL)
3770     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3771   else
3772     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3773 }
3774
3775
3776 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3777    function (if any) that matches the types of the NARGS arguments in
3778    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3779    that returns that type, then eliminate matches that don't.  If
3780    CONTEXT_TYPE is void and there is at least one match that does not
3781    return void, eliminate all matches that do.
3782
3783    Asks the user if there is more than one match remaining.  Returns -1
3784    if there is no such symbol or none is selected.  NAME is used
3785    solely for messages.  May re-arrange and modify SYMS in
3786    the process; the index returned is for the modified vector.  */
3787
3788 static int
3789 ada_resolve_function (struct block_symbol syms[],
3790                       int nsyms, struct value **args, int nargs,
3791                       const char *name, struct type *context_type)
3792 {
3793   int fallback;
3794   int k;
3795   int m;                        /* Number of hits */
3796
3797   m = 0;
3798   /* In the first pass of the loop, we only accept functions matching
3799      context_type.  If none are found, we add a second pass of the loop
3800      where every function is accepted.  */
3801   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3802     {
3803       for (k = 0; k < nsyms; k += 1)
3804         {
3805           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3806
3807           if (ada_args_match (syms[k].symbol, args, nargs)
3808               && (fallback || return_match (type, context_type)))
3809             {
3810               syms[m] = syms[k];
3811               m += 1;
3812             }
3813         }
3814     }
3815
3816   /* If we got multiple matches, ask the user which one to use.  Don't do this
3817      interactive thing during completion, though, as the purpose of the
3818      completion is providing a list of all possible matches.  Prompting the
3819      user to filter it down would be completely unexpected in this case.  */
3820   if (m == 0)
3821     return -1;
3822   else if (m > 1 && !parse_completion)
3823     {
3824       printf_filtered (_("Multiple matches for %s\n"), name);
3825       user_select_syms (syms, m, 1);
3826       return 0;
3827     }
3828   return 0;
3829 }
3830
3831 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3832    in a listing of choices during disambiguation (see sort_choices, below).
3833    The idea is that overloadings of a subprogram name from the
3834    same package should sort in their source order.  We settle for ordering
3835    such symbols by their trailing number (__N  or $N).  */
3836
3837 static int
3838 encoded_ordered_before (const char *N0, const char *N1)
3839 {
3840   if (N1 == NULL)
3841     return 0;
3842   else if (N0 == NULL)
3843     return 1;
3844   else
3845     {
3846       int k0, k1;
3847
3848       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3849         ;
3850       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3851         ;
3852       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3853           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3854         {
3855           int n0, n1;
3856
3857           n0 = k0;
3858           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3859             n0 -= 1;
3860           n1 = k1;
3861           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3862             n1 -= 1;
3863           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3864             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3865         }
3866       return (strcmp (N0, N1) < 0);
3867     }
3868 }
3869
3870 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3871    encoded names.  */
3872
3873 static void
3874 sort_choices (struct block_symbol syms[], int nsyms)
3875 {
3876   int i;
3877
3878   for (i = 1; i < nsyms; i += 1)
3879     {
3880       struct block_symbol sym = syms[i];
3881       int j;
3882
3883       for (j = i - 1; j >= 0; j -= 1)
3884         {
3885           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3886                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3887             break;
3888           syms[j + 1] = syms[j];
3889         }
3890       syms[j + 1] = sym;
3891     }
3892 }
3893
3894 /* Whether GDB should display formals and return types for functions in the
3895    overloads selection menu.  */
3896 static int print_signatures = 1;
3897
3898 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3899    all but functions, the signature is just the name of the symbol.  For
3900    functions, this is the name of the function, the list of types for formals
3901    and the return type (if any).  */
3902
3903 static void
3904 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3905                             const struct type_print_options *flags)
3906 {
3907   struct type *type = SYMBOL_TYPE (sym);
3908
3909   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3910   if (!print_signatures
3911       || type == NULL
3912       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3913     return;
3914
3915   if (TYPE_NFIELDS (type) > 0)
3916     {
3917       int i;
3918
3919       fprintf_filtered (stream, " (");
3920       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3921         {
3922           if (i > 0)
3923             fprintf_filtered (stream, "; ");
3924           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3925                           flags);
3926         }
3927       fprintf_filtered (stream, ")");
3928     }
3929   if (TYPE_TARGET_TYPE (type) != NULL
3930       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3931     {
3932       fprintf_filtered (stream, " return ");
3933       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3934     }
3935 }
3936
3937 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3938    by asking the user (if necessary), returning the number selected, 
3939    and setting the first elements of SYMS items.  Error if no symbols
3940    selected.  */
3941
3942 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3943    to be re-integrated one of these days.  */
3944
3945 int
3946 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3947 {
3948   int i;
3949   int *chosen = XALLOCAVEC (int , nsyms);
3950   int n_chosen;
3951   int first_choice = (max_results == 1) ? 1 : 2;
3952   const char *select_mode = multiple_symbols_select_mode ();
3953
3954   if (max_results < 1)
3955     error (_("Request to select 0 symbols!"));
3956   if (nsyms <= 1)
3957     return nsyms;
3958
3959   if (select_mode == multiple_symbols_cancel)
3960     error (_("\
3961 canceled because the command is ambiguous\n\
3962 See set/show multiple-symbol."));
3963   
3964   /* If select_mode is "all", then return all possible symbols.
3965      Only do that if more than one symbol can be selected, of course.
3966      Otherwise, display the menu as usual.  */
3967   if (select_mode == multiple_symbols_all && max_results > 1)
3968     return nsyms;
3969
3970   printf_unfiltered (_("[0] cancel\n"));
3971   if (max_results > 1)
3972     printf_unfiltered (_("[1] all\n"));
3973
3974   sort_choices (syms, nsyms);
3975
3976   for (i = 0; i < nsyms; i += 1)
3977     {
3978       if (syms[i].symbol == NULL)
3979         continue;
3980
3981       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3982         {
3983           struct symtab_and_line sal =
3984             find_function_start_sal (syms[i].symbol, 1);
3985
3986           printf_unfiltered ("[%d] ", i + first_choice);
3987           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3988                                       &type_print_raw_options);
3989           if (sal.symtab == NULL)
3990             printf_unfiltered (_(" at <no source file available>:%d\n"),
3991                                sal.line);
3992           else
3993             printf_unfiltered (_(" at %s:%d\n"),
3994                                symtab_to_filename_for_display (sal.symtab),
3995                                sal.line);
3996           continue;
3997         }
3998       else
3999         {
4000           int is_enumeral =
4001             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
4002              && SYMBOL_TYPE (syms[i].symbol) != NULL
4003              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
4004           struct symtab *symtab = NULL;
4005
4006           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
4007             symtab = symbol_symtab (syms[i].symbol);
4008
4009           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
4010             {
4011               printf_unfiltered ("[%d] ", i + first_choice);
4012               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4013                                           &type_print_raw_options);
4014               printf_unfiltered (_(" at %s:%d\n"),
4015                                  symtab_to_filename_for_display (symtab),
4016                                  SYMBOL_LINE (syms[i].symbol));
4017             }
4018           else if (is_enumeral
4019                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
4020             {
4021               printf_unfiltered (("[%d] "), i + first_choice);
4022               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
4023                               gdb_stdout, -1, 0, &type_print_raw_options);
4024               printf_unfiltered (_("'(%s) (enumeral)\n"),
4025                                  SYMBOL_PRINT_NAME (syms[i].symbol));
4026             }
4027           else
4028             {
4029               printf_unfiltered ("[%d] ", i + first_choice);
4030               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4031                                           &type_print_raw_options);
4032
4033               if (symtab != NULL)
4034                 printf_unfiltered (is_enumeral
4035                                    ? _(" in %s (enumeral)\n")
4036                                    : _(" at %s:?\n"),
4037                                    symtab_to_filename_for_display (symtab));
4038               else
4039                 printf_unfiltered (is_enumeral
4040                                    ? _(" (enumeral)\n")
4041                                    : _(" at ?\n"));
4042             }
4043         }
4044     }
4045
4046   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4047                              "overload-choice");
4048
4049   for (i = 0; i < n_chosen; i += 1)
4050     syms[i] = syms[chosen[i]];
4051
4052   return n_chosen;
4053 }
4054
4055 /* Read and validate a set of numeric choices from the user in the
4056    range 0 .. N_CHOICES-1.  Place the results in increasing
4057    order in CHOICES[0 .. N-1], and return N.
4058
4059    The user types choices as a sequence of numbers on one line
4060    separated by blanks, encoding them as follows:
4061
4062      + A choice of 0 means to cancel the selection, throwing an error.
4063      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4064      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4065
4066    The user is not allowed to choose more than MAX_RESULTS values.
4067
4068    ANNOTATION_SUFFIX, if present, is used to annotate the input
4069    prompts (for use with the -f switch).  */
4070
4071 int
4072 get_selections (int *choices, int n_choices, int max_results,
4073                 int is_all_choice, const char *annotation_suffix)
4074 {
4075   char *args;
4076   const char *prompt;
4077   int n_chosen;
4078   int first_choice = is_all_choice ? 2 : 1;
4079
4080   prompt = getenv ("PS2");
4081   if (prompt == NULL)
4082     prompt = "> ";
4083
4084   args = command_line_input (prompt, annotation_suffix);
4085
4086   if (args == NULL)
4087     error_no_arg (_("one or more choice numbers"));
4088
4089   n_chosen = 0;
4090
4091   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4092      order, as given in args.  Choices are validated.  */
4093   while (1)
4094     {
4095       char *args2;
4096       int choice, j;
4097
4098       args = skip_spaces (args);
4099       if (*args == '\0' && n_chosen == 0)
4100         error_no_arg (_("one or more choice numbers"));
4101       else if (*args == '\0')
4102         break;
4103
4104       choice = strtol (args, &args2, 10);
4105       if (args == args2 || choice < 0
4106           || choice > n_choices + first_choice - 1)
4107         error (_("Argument must be choice number"));
4108       args = args2;
4109
4110       if (choice == 0)
4111         error (_("cancelled"));
4112
4113       if (choice < first_choice)
4114         {
4115           n_chosen = n_choices;
4116           for (j = 0; j < n_choices; j += 1)
4117             choices[j] = j;
4118           break;
4119         }
4120       choice -= first_choice;
4121
4122       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4123         {
4124         }
4125
4126       if (j < 0 || choice != choices[j])
4127         {
4128           int k;
4129
4130           for (k = n_chosen - 1; k > j; k -= 1)
4131             choices[k + 1] = choices[k];
4132           choices[j + 1] = choice;
4133           n_chosen += 1;
4134         }
4135     }
4136
4137   if (n_chosen > max_results)
4138     error (_("Select no more than %d of the above"), max_results);
4139
4140   return n_chosen;
4141 }
4142
4143 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4144    on the function identified by SYM and BLOCK, and taking NARGS
4145    arguments.  Update *EXPP as needed to hold more space.  */
4146
4147 static void
4148 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4149                             int oplen, struct symbol *sym,
4150                             const struct block *block)
4151 {
4152   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4153      symbol, -oplen for operator being replaced).  */
4154   struct expression *newexp = (struct expression *)
4155     xzalloc (sizeof (struct expression)
4156              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4157   struct expression *exp = expp->get ();
4158
4159   newexp->nelts = exp->nelts + 7 - oplen;
4160   newexp->language_defn = exp->language_defn;
4161   newexp->gdbarch = exp->gdbarch;
4162   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4163   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4164           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4165
4166   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4167   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4168
4169   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4170   newexp->elts[pc + 4].block = block;
4171   newexp->elts[pc + 5].symbol = sym;
4172
4173   expp->reset (newexp);
4174 }
4175
4176 /* Type-class predicates */
4177
4178 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4179    or FLOAT).  */
4180
4181 static int
4182 numeric_type_p (struct type *type)
4183 {
4184   if (type == NULL)
4185     return 0;
4186   else
4187     {
4188       switch (TYPE_CODE (type))
4189         {
4190         case TYPE_CODE_INT:
4191         case TYPE_CODE_FLT:
4192           return 1;
4193         case TYPE_CODE_RANGE:
4194           return (type == TYPE_TARGET_TYPE (type)
4195                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4196         default:
4197           return 0;
4198         }
4199     }
4200 }
4201
4202 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4203
4204 static int
4205 integer_type_p (struct type *type)
4206 {
4207   if (type == NULL)
4208     return 0;
4209   else
4210     {
4211       switch (TYPE_CODE (type))
4212         {
4213         case TYPE_CODE_INT:
4214           return 1;
4215         case TYPE_CODE_RANGE:
4216           return (type == TYPE_TARGET_TYPE (type)
4217                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4218         default:
4219           return 0;
4220         }
4221     }
4222 }
4223
4224 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4225
4226 static int
4227 scalar_type_p (struct type *type)
4228 {
4229   if (type == NULL)
4230     return 0;
4231   else
4232     {
4233       switch (TYPE_CODE (type))
4234         {
4235         case TYPE_CODE_INT:
4236         case TYPE_CODE_RANGE:
4237         case TYPE_CODE_ENUM:
4238         case TYPE_CODE_FLT:
4239           return 1;
4240         default:
4241           return 0;
4242         }
4243     }
4244 }
4245
4246 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4247
4248 static int
4249 discrete_type_p (struct type *type)
4250 {
4251   if (type == NULL)
4252     return 0;
4253   else
4254     {
4255       switch (TYPE_CODE (type))
4256         {
4257         case TYPE_CODE_INT:
4258         case TYPE_CODE_RANGE:
4259         case TYPE_CODE_ENUM:
4260         case TYPE_CODE_BOOL:
4261           return 1;
4262         default:
4263           return 0;
4264         }
4265     }
4266 }
4267
4268 /* Returns non-zero if OP with operands in the vector ARGS could be
4269    a user-defined function.  Errs on the side of pre-defined operators
4270    (i.e., result 0).  */
4271
4272 static int
4273 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4274 {
4275   struct type *type0 =
4276     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4277   struct type *type1 =
4278     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4279
4280   if (type0 == NULL)
4281     return 0;
4282
4283   switch (op)
4284     {
4285     default:
4286       return 0;
4287
4288     case BINOP_ADD:
4289     case BINOP_SUB:
4290     case BINOP_MUL:
4291     case BINOP_DIV:
4292       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4293
4294     case BINOP_REM:
4295     case BINOP_MOD:
4296     case BINOP_BITWISE_AND:
4297     case BINOP_BITWISE_IOR:
4298     case BINOP_BITWISE_XOR:
4299       return (!(integer_type_p (type0) && integer_type_p (type1)));
4300
4301     case BINOP_EQUAL:
4302     case BINOP_NOTEQUAL:
4303     case BINOP_LESS:
4304     case BINOP_GTR:
4305     case BINOP_LEQ:
4306     case BINOP_GEQ:
4307       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4308
4309     case BINOP_CONCAT:
4310       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4311
4312     case BINOP_EXP:
4313       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4314
4315     case UNOP_NEG:
4316     case UNOP_PLUS:
4317     case UNOP_LOGICAL_NOT:
4318     case UNOP_ABS:
4319       return (!numeric_type_p (type0));
4320
4321     }
4322 }
4323 \f
4324                                 /* Renaming */
4325
4326 /* NOTES: 
4327
4328    1. In the following, we assume that a renaming type's name may
4329       have an ___XD suffix.  It would be nice if this went away at some
4330       point.
4331    2. We handle both the (old) purely type-based representation of 
4332       renamings and the (new) variable-based encoding.  At some point,
4333       it is devoutly to be hoped that the former goes away 
4334       (FIXME: hilfinger-2007-07-09).
4335    3. Subprogram renamings are not implemented, although the XRS
4336       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4337
4338 /* If SYM encodes a renaming, 
4339
4340        <renaming> renames <renamed entity>,
4341
4342    sets *LEN to the length of the renamed entity's name,
4343    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4344    the string describing the subcomponent selected from the renamed
4345    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4346    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4347    are undefined).  Otherwise, returns a value indicating the category
4348    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4349    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4350    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4351    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4352    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4353    may be NULL, in which case they are not assigned.
4354
4355    [Currently, however, GCC does not generate subprogram renamings.]  */
4356
4357 enum ada_renaming_category
4358 ada_parse_renaming (struct symbol *sym,
4359                     const char **renamed_entity, int *len, 
4360                     const char **renaming_expr)
4361 {
4362   enum ada_renaming_category kind;
4363   const char *info;
4364   const char *suffix;
4365
4366   if (sym == NULL)
4367     return ADA_NOT_RENAMING;
4368   switch (SYMBOL_CLASS (sym)) 
4369     {
4370     default:
4371       return ADA_NOT_RENAMING;
4372     case LOC_TYPEDEF:
4373       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4374                                        renamed_entity, len, renaming_expr);
4375     case LOC_LOCAL:
4376     case LOC_STATIC:
4377     case LOC_COMPUTED:
4378     case LOC_OPTIMIZED_OUT:
4379       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4380       if (info == NULL)
4381         return ADA_NOT_RENAMING;
4382       switch (info[5])
4383         {
4384         case '_':
4385           kind = ADA_OBJECT_RENAMING;
4386           info += 6;
4387           break;
4388         case 'E':
4389           kind = ADA_EXCEPTION_RENAMING;
4390           info += 7;
4391           break;
4392         case 'P':
4393           kind = ADA_PACKAGE_RENAMING;
4394           info += 7;
4395           break;
4396         case 'S':
4397           kind = ADA_SUBPROGRAM_RENAMING;
4398           info += 7;
4399           break;
4400         default:
4401           return ADA_NOT_RENAMING;
4402         }
4403     }
4404
4405   if (renamed_entity != NULL)
4406     *renamed_entity = info;
4407   suffix = strstr (info, "___XE");
4408   if (suffix == NULL || suffix == info)
4409     return ADA_NOT_RENAMING;
4410   if (len != NULL)
4411     *len = strlen (info) - strlen (suffix);
4412   suffix += 5;
4413   if (renaming_expr != NULL)
4414     *renaming_expr = suffix;
4415   return kind;
4416 }
4417
4418 /* Assuming TYPE encodes a renaming according to the old encoding in
4419    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4420    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4421    ADA_NOT_RENAMING otherwise.  */
4422 static enum ada_renaming_category
4423 parse_old_style_renaming (struct type *type,
4424                           const char **renamed_entity, int *len, 
4425                           const char **renaming_expr)
4426 {
4427   enum ada_renaming_category kind;
4428   const char *name;
4429   const char *info;
4430   const char *suffix;
4431
4432   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4433       || TYPE_NFIELDS (type) != 1)
4434     return ADA_NOT_RENAMING;
4435
4436   name = TYPE_NAME (type);
4437   if (name == NULL)
4438     return ADA_NOT_RENAMING;
4439   
4440   name = strstr (name, "___XR");
4441   if (name == NULL)
4442     return ADA_NOT_RENAMING;
4443   switch (name[5])
4444     {
4445     case '\0':
4446     case '_':
4447       kind = ADA_OBJECT_RENAMING;
4448       break;
4449     case 'E':
4450       kind = ADA_EXCEPTION_RENAMING;
4451       break;
4452     case 'P':
4453       kind = ADA_PACKAGE_RENAMING;
4454       break;
4455     case 'S':
4456       kind = ADA_SUBPROGRAM_RENAMING;
4457       break;
4458     default:
4459       return ADA_NOT_RENAMING;
4460     }
4461
4462   info = TYPE_FIELD_NAME (type, 0);
4463   if (info == NULL)
4464     return ADA_NOT_RENAMING;
4465   if (renamed_entity != NULL)
4466     *renamed_entity = info;
4467   suffix = strstr (info, "___XE");
4468   if (renaming_expr != NULL)
4469     *renaming_expr = suffix + 5;
4470   if (suffix == NULL || suffix == info)
4471     return ADA_NOT_RENAMING;
4472   if (len != NULL)
4473     *len = suffix - info;
4474   return kind;
4475 }
4476
4477 /* Compute the value of the given RENAMING_SYM, which is expected to
4478    be a symbol encoding a renaming expression.  BLOCK is the block
4479    used to evaluate the renaming.  */
4480
4481 static struct value *
4482 ada_read_renaming_var_value (struct symbol *renaming_sym,
4483                              const struct block *block)
4484 {
4485   const char *sym_name;
4486
4487   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4488   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4489   return evaluate_expression (expr.get ());
4490 }
4491 \f
4492
4493                                 /* Evaluation: Function Calls */
4494
4495 /* Return an lvalue containing the value VAL.  This is the identity on
4496    lvalues, and otherwise has the side-effect of allocating memory
4497    in the inferior where a copy of the value contents is copied.  */
4498
4499 static struct value *
4500 ensure_lval (struct value *val)
4501 {
4502   if (VALUE_LVAL (val) == not_lval
4503       || VALUE_LVAL (val) == lval_internalvar)
4504     {
4505       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4506       const CORE_ADDR addr =
4507         value_as_long (value_allocate_space_in_inferior (len));
4508
4509       VALUE_LVAL (val) = lval_memory;
4510       set_value_address (val, addr);
4511       write_memory (addr, value_contents (val), len);
4512     }
4513
4514   return val;
4515 }
4516
4517 /* Return the value ACTUAL, converted to be an appropriate value for a
4518    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4519    allocating any necessary descriptors (fat pointers), or copies of
4520    values not residing in memory, updating it as needed.  */
4521
4522 struct value *
4523 ada_convert_actual (struct value *actual, struct type *formal_type0)
4524 {
4525   struct type *actual_type = ada_check_typedef (value_type (actual));
4526   struct type *formal_type = ada_check_typedef (formal_type0);
4527   struct type *formal_target =
4528     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4529     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4530   struct type *actual_target =
4531     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4532     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4533
4534   if (ada_is_array_descriptor_type (formal_target)
4535       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4536     return make_array_descriptor (formal_type, actual);
4537   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4538            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4539     {
4540       struct value *result;
4541
4542       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4543           && ada_is_array_descriptor_type (actual_target))
4544         result = desc_data (actual);
4545       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4546         {
4547           if (VALUE_LVAL (actual) != lval_memory)
4548             {
4549               struct value *val;
4550
4551               actual_type = ada_check_typedef (value_type (actual));
4552               val = allocate_value (actual_type);
4553               memcpy ((char *) value_contents_raw (val),
4554                       (char *) value_contents (actual),
4555                       TYPE_LENGTH (actual_type));
4556               actual = ensure_lval (val);
4557             }
4558           result = value_addr (actual);
4559         }
4560       else
4561         return actual;
4562       return value_cast_pointers (formal_type, result, 0);
4563     }
4564   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4565     return ada_value_ind (actual);
4566   else if (ada_is_aligner_type (formal_type))
4567     {
4568       /* We need to turn this parameter into an aligner type
4569          as well.  */
4570       struct value *aligner = allocate_value (formal_type);
4571       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4572
4573       value_assign_to_component (aligner, component, actual);
4574       return aligner;
4575     }
4576
4577   return actual;
4578 }
4579
4580 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4581    type TYPE.  This is usually an inefficient no-op except on some targets
4582    (such as AVR) where the representation of a pointer and an address
4583    differs.  */
4584
4585 static CORE_ADDR
4586 value_pointer (struct value *value, struct type *type)
4587 {
4588   struct gdbarch *gdbarch = get_type_arch (type);
4589   unsigned len = TYPE_LENGTH (type);
4590   gdb_byte *buf = (gdb_byte *) alloca (len);
4591   CORE_ADDR addr;
4592
4593   addr = value_address (value);
4594   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4595   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4596   return addr;
4597 }
4598
4599
4600 /* Push a descriptor of type TYPE for array value ARR on the stack at
4601    *SP, updating *SP to reflect the new descriptor.  Return either
4602    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4603    to-descriptor type rather than a descriptor type), a struct value *
4604    representing a pointer to this descriptor.  */
4605
4606 static struct value *
4607 make_array_descriptor (struct type *type, struct value *arr)
4608 {
4609   struct type *bounds_type = desc_bounds_type (type);
4610   struct type *desc_type = desc_base_type (type);
4611   struct value *descriptor = allocate_value (desc_type);
4612   struct value *bounds = allocate_value (bounds_type);
4613   int i;
4614
4615   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4616        i > 0; i -= 1)
4617     {
4618       modify_field (value_type (bounds), value_contents_writeable (bounds),
4619                     ada_array_bound (arr, i, 0),
4620                     desc_bound_bitpos (bounds_type, i, 0),
4621                     desc_bound_bitsize (bounds_type, i, 0));
4622       modify_field (value_type (bounds), value_contents_writeable (bounds),
4623                     ada_array_bound (arr, i, 1),
4624                     desc_bound_bitpos (bounds_type, i, 1),
4625                     desc_bound_bitsize (bounds_type, i, 1));
4626     }
4627
4628   bounds = ensure_lval (bounds);
4629
4630   modify_field (value_type (descriptor),
4631                 value_contents_writeable (descriptor),
4632                 value_pointer (ensure_lval (arr),
4633                                TYPE_FIELD_TYPE (desc_type, 0)),
4634                 fat_pntr_data_bitpos (desc_type),
4635                 fat_pntr_data_bitsize (desc_type));
4636
4637   modify_field (value_type (descriptor),
4638                 value_contents_writeable (descriptor),
4639                 value_pointer (bounds,
4640                                TYPE_FIELD_TYPE (desc_type, 1)),
4641                 fat_pntr_bounds_bitpos (desc_type),
4642                 fat_pntr_bounds_bitsize (desc_type));
4643
4644   descriptor = ensure_lval (descriptor);
4645
4646   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4647     return value_addr (descriptor);
4648   else
4649     return descriptor;
4650 }
4651 \f
4652                                 /* Symbol Cache Module */
4653
4654 /* Performance measurements made as of 2010-01-15 indicate that
4655    this cache does bring some noticeable improvements.  Depending
4656    on the type of entity being printed, the cache can make it as much
4657    as an order of magnitude faster than without it.
4658
4659    The descriptive type DWARF extension has significantly reduced
4660    the need for this cache, at least when DWARF is being used.  However,
4661    even in this case, some expensive name-based symbol searches are still
4662    sometimes necessary - to find an XVZ variable, mostly.  */
4663
4664 /* Initialize the contents of SYM_CACHE.  */
4665
4666 static void
4667 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4668 {
4669   obstack_init (&sym_cache->cache_space);
4670   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4671 }
4672
4673 /* Free the memory used by SYM_CACHE.  */
4674
4675 static void
4676 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4677 {
4678   obstack_free (&sym_cache->cache_space, NULL);
4679   xfree (sym_cache);
4680 }
4681
4682 /* Return the symbol cache associated to the given program space PSPACE.
4683    If not allocated for this PSPACE yet, allocate and initialize one.  */
4684
4685 static struct ada_symbol_cache *
4686 ada_get_symbol_cache (struct program_space *pspace)
4687 {
4688   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4689
4690   if (pspace_data->sym_cache == NULL)
4691     {
4692       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4693       ada_init_symbol_cache (pspace_data->sym_cache);
4694     }
4695
4696   return pspace_data->sym_cache;
4697 }
4698
4699 /* Clear all entries from the symbol cache.  */
4700
4701 static void
4702 ada_clear_symbol_cache (void)
4703 {
4704   struct ada_symbol_cache *sym_cache
4705     = ada_get_symbol_cache (current_program_space);
4706
4707   obstack_free (&sym_cache->cache_space, NULL);
4708   ada_init_symbol_cache (sym_cache);
4709 }
4710
4711 /* Search our cache for an entry matching NAME and DOMAIN.
4712    Return it if found, or NULL otherwise.  */
4713
4714 static struct cache_entry **
4715 find_entry (const char *name, domain_enum domain)
4716 {
4717   struct ada_symbol_cache *sym_cache
4718     = ada_get_symbol_cache (current_program_space);
4719   int h = msymbol_hash (name) % HASH_SIZE;
4720   struct cache_entry **e;
4721
4722   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4723     {
4724       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4725         return e;
4726     }
4727   return NULL;
4728 }
4729
4730 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4731    Return 1 if found, 0 otherwise.
4732
4733    If an entry was found and SYM is not NULL, set *SYM to the entry's
4734    SYM.  Same principle for BLOCK if not NULL.  */
4735
4736 static int
4737 lookup_cached_symbol (const char *name, domain_enum domain,
4738                       struct symbol **sym, const struct block **block)
4739 {
4740   struct cache_entry **e = find_entry (name, domain);
4741
4742   if (e == NULL)
4743     return 0;
4744   if (sym != NULL)
4745     *sym = (*e)->sym;
4746   if (block != NULL)
4747     *block = (*e)->block;
4748   return 1;
4749 }
4750
4751 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4752    in domain DOMAIN, save this result in our symbol cache.  */
4753
4754 static void
4755 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4756               const struct block *block)
4757 {
4758   struct ada_symbol_cache *sym_cache
4759     = ada_get_symbol_cache (current_program_space);
4760   int h;
4761   char *copy;
4762   struct cache_entry *e;
4763
4764   /* Symbols for builtin types don't have a block.
4765      For now don't cache such symbols.  */
4766   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4767     return;
4768
4769   /* If the symbol is a local symbol, then do not cache it, as a search
4770      for that symbol depends on the context.  To determine whether
4771      the symbol is local or not, we check the block where we found it
4772      against the global and static blocks of its associated symtab.  */
4773   if (sym
4774       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4775                             GLOBAL_BLOCK) != block
4776       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4777                             STATIC_BLOCK) != block)
4778     return;
4779
4780   h = msymbol_hash (name) % HASH_SIZE;
4781   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4782   e->next = sym_cache->root[h];
4783   sym_cache->root[h] = e;
4784   e->name = copy
4785     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4786   strcpy (copy, name);
4787   e->sym = sym;
4788   e->domain = domain;
4789   e->block = block;
4790 }
4791 \f
4792                                 /* Symbol Lookup */
4793
4794 /* Return the symbol name match type that should be used used when
4795    searching for all symbols matching LOOKUP_NAME.
4796
4797    LOOKUP_NAME is expected to be a symbol name after transformation
4798    for Ada lookups.  */
4799
4800 static symbol_name_match_type
4801 name_match_type_from_name (const char *lookup_name)
4802 {
4803   return (strstr (lookup_name, "__") == NULL
4804           ? symbol_name_match_type::WILD
4805           : symbol_name_match_type::FULL);
4806 }
4807
4808 /* Return the result of a standard (literal, C-like) lookup of NAME in
4809    given DOMAIN, visible from lexical block BLOCK.  */
4810
4811 static struct symbol *
4812 standard_lookup (const char *name, const struct block *block,
4813                  domain_enum domain)
4814 {
4815   /* Initialize it just to avoid a GCC false warning.  */
4816   struct block_symbol sym = {NULL, NULL};
4817
4818   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4819     return sym.symbol;
4820   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4821   cache_symbol (name, domain, sym.symbol, sym.block);
4822   return sym.symbol;
4823 }
4824
4825
4826 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4827    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4828    since they contend in overloading in the same way.  */
4829 static int
4830 is_nonfunction (struct block_symbol syms[], int n)
4831 {
4832   int i;
4833
4834   for (i = 0; i < n; i += 1)
4835     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4836         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4837             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4838       return 1;
4839
4840   return 0;
4841 }
4842
4843 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4844    struct types.  Otherwise, they may not.  */
4845
4846 static int
4847 equiv_types (struct type *type0, struct type *type1)
4848 {
4849   if (type0 == type1)
4850     return 1;
4851   if (type0 == NULL || type1 == NULL
4852       || TYPE_CODE (type0) != TYPE_CODE (type1))
4853     return 0;
4854   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4855        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4856       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4857       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4858     return 1;
4859
4860   return 0;
4861 }
4862
4863 /* True iff SYM0 represents the same entity as SYM1, or one that is
4864    no more defined than that of SYM1.  */
4865
4866 static int
4867 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4868 {
4869   if (sym0 == sym1)
4870     return 1;
4871   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4872       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4873     return 0;
4874
4875   switch (SYMBOL_CLASS (sym0))
4876     {
4877     case LOC_UNDEF:
4878       return 1;
4879     case LOC_TYPEDEF:
4880       {
4881         struct type *type0 = SYMBOL_TYPE (sym0);
4882         struct type *type1 = SYMBOL_TYPE (sym1);
4883         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4884         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4885         int len0 = strlen (name0);
4886
4887         return
4888           TYPE_CODE (type0) == TYPE_CODE (type1)
4889           && (equiv_types (type0, type1)
4890               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4891                   && startswith (name1 + len0, "___XV")));
4892       }
4893     case LOC_CONST:
4894       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4895         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4896     default:
4897       return 0;
4898     }
4899 }
4900
4901 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4902    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4903
4904 static void
4905 add_defn_to_vec (struct obstack *obstackp,
4906                  struct symbol *sym,
4907                  const struct block *block)
4908 {
4909   int i;
4910   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4911
4912   /* Do not try to complete stub types, as the debugger is probably
4913      already scanning all symbols matching a certain name at the
4914      time when this function is called.  Trying to replace the stub
4915      type by its associated full type will cause us to restart a scan
4916      which may lead to an infinite recursion.  Instead, the client
4917      collecting the matching symbols will end up collecting several
4918      matches, with at least one of them complete.  It can then filter
4919      out the stub ones if needed.  */
4920
4921   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4922     {
4923       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4924         return;
4925       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4926         {
4927           prevDefns[i].symbol = sym;
4928           prevDefns[i].block = block;
4929           return;
4930         }
4931     }
4932
4933   {
4934     struct block_symbol info;
4935
4936     info.symbol = sym;
4937     info.block = block;
4938     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4939   }
4940 }
4941
4942 /* Number of block_symbol structures currently collected in current vector in
4943    OBSTACKP.  */
4944
4945 static int
4946 num_defns_collected (struct obstack *obstackp)
4947 {
4948   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4949 }
4950
4951 /* Vector of block_symbol structures currently collected in current vector in
4952    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4953
4954 static struct block_symbol *
4955 defns_collected (struct obstack *obstackp, int finish)
4956 {
4957   if (finish)
4958     return (struct block_symbol *) obstack_finish (obstackp);
4959   else
4960     return (struct block_symbol *) obstack_base (obstackp);
4961 }
4962
4963 /* Return a bound minimal symbol matching NAME according to Ada
4964    decoding rules.  Returns an invalid symbol if there is no such
4965    minimal symbol.  Names prefixed with "standard__" are handled
4966    specially: "standard__" is first stripped off, and only static and
4967    global symbols are searched.  */
4968
4969 struct bound_minimal_symbol
4970 ada_lookup_simple_minsym (const char *name)
4971 {
4972   struct bound_minimal_symbol result;
4973   struct objfile *objfile;
4974   struct minimal_symbol *msymbol;
4975
4976   memset (&result, 0, sizeof (result));
4977
4978   symbol_name_match_type match_type = name_match_type_from_name (name);
4979   lookup_name_info lookup_name (name, match_type);
4980
4981   symbol_name_matcher_ftype *match_name
4982     = ada_get_symbol_name_matcher (lookup_name);
4983
4984   ALL_MSYMBOLS (objfile, msymbol)
4985   {
4986     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4987         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4988       {
4989         result.minsym = msymbol;
4990         result.objfile = objfile;
4991         break;
4992       }
4993   }
4994
4995   return result;
4996 }
4997
4998 /* For all subprograms that statically enclose the subprogram of the
4999    selected frame, add symbols matching identifier NAME in DOMAIN
5000    and their blocks to the list of data in OBSTACKP, as for
5001    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
5002    with a wildcard prefix.  */
5003
5004 static void
5005 add_symbols_from_enclosing_procs (struct obstack *obstackp,
5006                                   const lookup_name_info &lookup_name,
5007                                   domain_enum domain)
5008 {
5009 }
5010
5011 /* True if TYPE is definitely an artificial type supplied to a symbol
5012    for which no debugging information was given in the symbol file.  */
5013
5014 static int
5015 is_nondebugging_type (struct type *type)
5016 {
5017   const char *name = ada_type_name (type);
5018
5019   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
5020 }
5021
5022 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
5023    that are deemed "identical" for practical purposes.
5024
5025    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5026    types and that their number of enumerals is identical (in other
5027    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5028
5029 static int
5030 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5031 {
5032   int i;
5033
5034   /* The heuristic we use here is fairly conservative.  We consider
5035      that 2 enumerate types are identical if they have the same
5036      number of enumerals and that all enumerals have the same
5037      underlying value and name.  */
5038
5039   /* All enums in the type should have an identical underlying value.  */
5040   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5041     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5042       return 0;
5043
5044   /* All enumerals should also have the same name (modulo any numerical
5045      suffix).  */
5046   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5047     {
5048       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5049       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5050       int len_1 = strlen (name_1);
5051       int len_2 = strlen (name_2);
5052
5053       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5054       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5055       if (len_1 != len_2
5056           || strncmp (TYPE_FIELD_NAME (type1, i),
5057                       TYPE_FIELD_NAME (type2, i),
5058                       len_1) != 0)
5059         return 0;
5060     }
5061
5062   return 1;
5063 }
5064
5065 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5066    that are deemed "identical" for practical purposes.  Sometimes,
5067    enumerals are not strictly identical, but their types are so similar
5068    that they can be considered identical.
5069
5070    For instance, consider the following code:
5071
5072       type Color is (Black, Red, Green, Blue, White);
5073       type RGB_Color is new Color range Red .. Blue;
5074
5075    Type RGB_Color is a subrange of an implicit type which is a copy
5076    of type Color. If we call that implicit type RGB_ColorB ("B" is
5077    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5078    As a result, when an expression references any of the enumeral
5079    by name (Eg. "print green"), the expression is technically
5080    ambiguous and the user should be asked to disambiguate. But
5081    doing so would only hinder the user, since it wouldn't matter
5082    what choice he makes, the outcome would always be the same.
5083    So, for practical purposes, we consider them as the same.  */
5084
5085 static int
5086 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5087 {
5088   int i;
5089
5090   /* Before performing a thorough comparison check of each type,
5091      we perform a series of inexpensive checks.  We expect that these
5092      checks will quickly fail in the vast majority of cases, and thus
5093      help prevent the unnecessary use of a more expensive comparison.
5094      Said comparison also expects us to make some of these checks
5095      (see ada_identical_enum_types_p).  */
5096
5097   /* Quick check: All symbols should have an enum type.  */
5098   for (i = 0; i < syms.size (); i++)
5099     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5100       return 0;
5101
5102   /* Quick check: They should all have the same value.  */
5103   for (i = 1; i < syms.size (); i++)
5104     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5105       return 0;
5106
5107   /* Quick check: They should all have the same number of enumerals.  */
5108   for (i = 1; i < syms.size (); i++)
5109     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5110         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5111       return 0;
5112
5113   /* All the sanity checks passed, so we might have a set of
5114      identical enumeration types.  Perform a more complete
5115      comparison of the type of each symbol.  */
5116   for (i = 1; i < syms.size (); i++)
5117     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5118                                      SYMBOL_TYPE (syms[0].symbol)))
5119       return 0;
5120
5121   return 1;
5122 }
5123
5124 /* Remove any non-debugging symbols in SYMS that definitely
5125    duplicate other symbols in the list (The only case I know of where
5126    this happens is when object files containing stabs-in-ecoff are
5127    linked with files containing ordinary ecoff debugging symbols (or no
5128    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5129    Returns the number of items in the modified list.  */
5130
5131 static int
5132 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5133 {
5134   int i, j;
5135
5136   /* We should never be called with less than 2 symbols, as there
5137      cannot be any extra symbol in that case.  But it's easy to
5138      handle, since we have nothing to do in that case.  */
5139   if (syms->size () < 2)
5140     return syms->size ();
5141
5142   i = 0;
5143   while (i < syms->size ())
5144     {
5145       int remove_p = 0;
5146
5147       /* If two symbols have the same name and one of them is a stub type,
5148          the get rid of the stub.  */
5149
5150       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5151           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5152         {
5153           for (j = 0; j < syms->size (); j++)
5154             {
5155               if (j != i
5156                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5157                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5158                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5159                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5160                 remove_p = 1;
5161             }
5162         }
5163
5164       /* Two symbols with the same name, same class and same address
5165          should be identical.  */
5166
5167       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5168           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5169           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5170         {
5171           for (j = 0; j < syms->size (); j += 1)
5172             {
5173               if (i != j
5174                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5175                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5176                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5177                   && SYMBOL_CLASS ((*syms)[i].symbol)
5178                        == SYMBOL_CLASS ((*syms)[j].symbol)
5179                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5180                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5181                 remove_p = 1;
5182             }
5183         }
5184       
5185       if (remove_p)
5186         syms->erase (syms->begin () + i);
5187
5188       i += 1;
5189     }
5190
5191   /* If all the remaining symbols are identical enumerals, then
5192      just keep the first one and discard the rest.
5193
5194      Unlike what we did previously, we do not discard any entry
5195      unless they are ALL identical.  This is because the symbol
5196      comparison is not a strict comparison, but rather a practical
5197      comparison.  If all symbols are considered identical, then
5198      we can just go ahead and use the first one and discard the rest.
5199      But if we cannot reduce the list to a single element, we have
5200      to ask the user to disambiguate anyways.  And if we have to
5201      present a multiple-choice menu, it's less confusing if the list
5202      isn't missing some choices that were identical and yet distinct.  */
5203   if (symbols_are_identical_enums (*syms))
5204     syms->resize (1);
5205
5206   return syms->size ();
5207 }
5208
5209 /* Given a type that corresponds to a renaming entity, use the type name
5210    to extract the scope (package name or function name, fully qualified,
5211    and following the GNAT encoding convention) where this renaming has been
5212    defined.  */
5213
5214 static std::string
5215 xget_renaming_scope (struct type *renaming_type)
5216 {
5217   /* The renaming types adhere to the following convention:
5218      <scope>__<rename>___<XR extension>.
5219      So, to extract the scope, we search for the "___XR" extension,
5220      and then backtrack until we find the first "__".  */
5221
5222   const char *name = TYPE_NAME (renaming_type);
5223   const char *suffix = strstr (name, "___XR");
5224   const char *last;
5225
5226   /* Now, backtrack a bit until we find the first "__".  Start looking
5227      at suffix - 3, as the <rename> part is at least one character long.  */
5228
5229   for (last = suffix - 3; last > name; last--)
5230     if (last[0] == '_' && last[1] == '_')
5231       break;
5232
5233   /* Make a copy of scope and return it.  */
5234   return std::string (name, last);
5235 }
5236
5237 /* Return nonzero if NAME corresponds to a package name.  */
5238
5239 static int
5240 is_package_name (const char *name)
5241 {
5242   /* Here, We take advantage of the fact that no symbols are generated
5243      for packages, while symbols are generated for each function.
5244      So the condition for NAME represent a package becomes equivalent
5245      to NAME not existing in our list of symbols.  There is only one
5246      small complication with library-level functions (see below).  */
5247
5248   /* If it is a function that has not been defined at library level,
5249      then we should be able to look it up in the symbols.  */
5250   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5251     return 0;
5252
5253   /* Library-level function names start with "_ada_".  See if function
5254      "_ada_" followed by NAME can be found.  */
5255
5256   /* Do a quick check that NAME does not contain "__", since library-level
5257      functions names cannot contain "__" in them.  */
5258   if (strstr (name, "__") != NULL)
5259     return 0;
5260
5261   std::string fun_name = string_printf ("_ada_%s", name);
5262
5263   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5264 }
5265
5266 /* Return nonzero if SYM corresponds to a renaming entity that is
5267    not visible from FUNCTION_NAME.  */
5268
5269 static int
5270 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5271 {
5272   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5273     return 0;
5274
5275   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5276
5277   /* If the rename has been defined in a package, then it is visible.  */
5278   if (is_package_name (scope.c_str ()))
5279     return 0;
5280
5281   /* Check that the rename is in the current function scope by checking
5282      that its name starts with SCOPE.  */
5283
5284   /* If the function name starts with "_ada_", it means that it is
5285      a library-level function.  Strip this prefix before doing the
5286      comparison, as the encoding for the renaming does not contain
5287      this prefix.  */
5288   if (startswith (function_name, "_ada_"))
5289     function_name += 5;
5290
5291   return !startswith (function_name, scope.c_str ());
5292 }
5293
5294 /* Remove entries from SYMS that corresponds to a renaming entity that
5295    is not visible from the function associated with CURRENT_BLOCK or
5296    that is superfluous due to the presence of more specific renaming
5297    information.  Places surviving symbols in the initial entries of
5298    SYMS and returns the number of surviving symbols.
5299    
5300    Rationale:
5301    First, in cases where an object renaming is implemented as a
5302    reference variable, GNAT may produce both the actual reference
5303    variable and the renaming encoding.  In this case, we discard the
5304    latter.
5305
5306    Second, GNAT emits a type following a specified encoding for each renaming
5307    entity.  Unfortunately, STABS currently does not support the definition
5308    of types that are local to a given lexical block, so all renamings types
5309    are emitted at library level.  As a consequence, if an application
5310    contains two renaming entities using the same name, and a user tries to
5311    print the value of one of these entities, the result of the ada symbol
5312    lookup will also contain the wrong renaming type.
5313
5314    This function partially covers for this limitation by attempting to
5315    remove from the SYMS list renaming symbols that should be visible
5316    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5317    method with the current information available.  The implementation
5318    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5319    
5320       - When the user tries to print a rename in a function while there
5321         is another rename entity defined in a package:  Normally, the
5322         rename in the function has precedence over the rename in the
5323         package, so the latter should be removed from the list.  This is
5324         currently not the case.
5325         
5326       - This function will incorrectly remove valid renames if
5327         the CURRENT_BLOCK corresponds to a function which symbol name
5328         has been changed by an "Export" pragma.  As a consequence,
5329         the user will be unable to print such rename entities.  */
5330
5331 static int
5332 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5333                              const struct block *current_block)
5334 {
5335   struct symbol *current_function;
5336   const char *current_function_name;
5337   int i;
5338   int is_new_style_renaming;
5339
5340   /* If there is both a renaming foo___XR... encoded as a variable and
5341      a simple variable foo in the same block, discard the latter.
5342      First, zero out such symbols, then compress.  */
5343   is_new_style_renaming = 0;
5344   for (i = 0; i < syms->size (); i += 1)
5345     {
5346       struct symbol *sym = (*syms)[i].symbol;
5347       const struct block *block = (*syms)[i].block;
5348       const char *name;
5349       const char *suffix;
5350
5351       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5352         continue;
5353       name = SYMBOL_LINKAGE_NAME (sym);
5354       suffix = strstr (name, "___XR");
5355
5356       if (suffix != NULL)
5357         {
5358           int name_len = suffix - name;
5359           int j;
5360
5361           is_new_style_renaming = 1;
5362           for (j = 0; j < syms->size (); j += 1)
5363             if (i != j && (*syms)[j].symbol != NULL
5364                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5365                             name_len) == 0
5366                 && block == (*syms)[j].block)
5367               (*syms)[j].symbol = NULL;
5368         }
5369     }
5370   if (is_new_style_renaming)
5371     {
5372       int j, k;
5373
5374       for (j = k = 0; j < syms->size (); j += 1)
5375         if ((*syms)[j].symbol != NULL)
5376             {
5377               (*syms)[k] = (*syms)[j];
5378               k += 1;
5379             }
5380       return k;
5381     }
5382
5383   /* Extract the function name associated to CURRENT_BLOCK.
5384      Abort if unable to do so.  */
5385
5386   if (current_block == NULL)
5387     return syms->size ();
5388
5389   current_function = block_linkage_function (current_block);
5390   if (current_function == NULL)
5391     return syms->size ();
5392
5393   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5394   if (current_function_name == NULL)
5395     return syms->size ();
5396
5397   /* Check each of the symbols, and remove it from the list if it is
5398      a type corresponding to a renaming that is out of the scope of
5399      the current block.  */
5400
5401   i = 0;
5402   while (i < syms->size ())
5403     {
5404       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5405           == ADA_OBJECT_RENAMING
5406           && old_renaming_is_invisible ((*syms)[i].symbol,
5407                                         current_function_name))
5408         syms->erase (syms->begin () + i);
5409       else
5410         i += 1;
5411     }
5412
5413   return syms->size ();
5414 }
5415
5416 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5417    whose name and domain match NAME and DOMAIN respectively.
5418    If no match was found, then extend the search to "enclosing"
5419    routines (in other words, if we're inside a nested function,
5420    search the symbols defined inside the enclosing functions).
5421    If WILD_MATCH_P is nonzero, perform the naming matching in
5422    "wild" mode (see function "wild_match" for more info).
5423
5424    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5425
5426 static void
5427 ada_add_local_symbols (struct obstack *obstackp,
5428                        const lookup_name_info &lookup_name,
5429                        const struct block *block, domain_enum domain)
5430 {
5431   int block_depth = 0;
5432
5433   while (block != NULL)
5434     {
5435       block_depth += 1;
5436       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5437
5438       /* If we found a non-function match, assume that's the one.  */
5439       if (is_nonfunction (defns_collected (obstackp, 0),
5440                           num_defns_collected (obstackp)))
5441         return;
5442
5443       block = BLOCK_SUPERBLOCK (block);
5444     }
5445
5446   /* If no luck so far, try to find NAME as a local symbol in some lexically
5447      enclosing subprogram.  */
5448   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5449     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5450 }
5451
5452 /* An object of this type is used as the user_data argument when
5453    calling the map_matching_symbols method.  */
5454
5455 struct match_data
5456 {
5457   struct objfile *objfile;
5458   struct obstack *obstackp;
5459   struct symbol *arg_sym;
5460   int found_sym;
5461 };
5462
5463 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5464    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5465    containing the obstack that collects the symbol list, the file that SYM
5466    must come from, a flag indicating whether a non-argument symbol has
5467    been found in the current block, and the last argument symbol
5468    passed in SYM within the current block (if any).  When SYM is null,
5469    marking the end of a block, the argument symbol is added if no
5470    other has been found.  */
5471
5472 static int
5473 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5474 {
5475   struct match_data *data = (struct match_data *) data0;
5476   
5477   if (sym == NULL)
5478     {
5479       if (!data->found_sym && data->arg_sym != NULL) 
5480         add_defn_to_vec (data->obstackp,
5481                          fixup_symbol_section (data->arg_sym, data->objfile),
5482                          block);
5483       data->found_sym = 0;
5484       data->arg_sym = NULL;
5485     }
5486   else 
5487     {
5488       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5489         return 0;
5490       else if (SYMBOL_IS_ARGUMENT (sym))
5491         data->arg_sym = sym;
5492       else
5493         {
5494           data->found_sym = 1;
5495           add_defn_to_vec (data->obstackp,
5496                            fixup_symbol_section (sym, data->objfile),
5497                            block);
5498         }
5499     }
5500   return 0;
5501 }
5502
5503 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5504    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5505    symbols to OBSTACKP.  Return whether we found such symbols.  */
5506
5507 static int
5508 ada_add_block_renamings (struct obstack *obstackp,
5509                          const struct block *block,
5510                          const lookup_name_info &lookup_name,
5511                          domain_enum domain)
5512 {
5513   struct using_direct *renaming;
5514   int defns_mark = num_defns_collected (obstackp);
5515
5516   symbol_name_matcher_ftype *name_match
5517     = ada_get_symbol_name_matcher (lookup_name);
5518
5519   for (renaming = block_using (block);
5520        renaming != NULL;
5521        renaming = renaming->next)
5522     {
5523       const char *r_name;
5524
5525       /* Avoid infinite recursions: skip this renaming if we are actually
5526          already traversing it.
5527
5528          Currently, symbol lookup in Ada don't use the namespace machinery from
5529          C++/Fortran support: skip namespace imports that use them.  */
5530       if (renaming->searched
5531           || (renaming->import_src != NULL
5532               && renaming->import_src[0] != '\0')
5533           || (renaming->import_dest != NULL
5534               && renaming->import_dest[0] != '\0'))
5535         continue;
5536       renaming->searched = 1;
5537
5538       /* TODO: here, we perform another name-based symbol lookup, which can
5539          pull its own multiple overloads.  In theory, we should be able to do
5540          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5541          not a simple name.  But in order to do this, we would need to enhance
5542          the DWARF reader to associate a symbol to this renaming, instead of a
5543          name.  So, for now, we do something simpler: re-use the C++/Fortran
5544          namespace machinery.  */
5545       r_name = (renaming->alias != NULL
5546                 ? renaming->alias
5547                 : renaming->declaration);
5548       if (name_match (r_name, lookup_name, NULL))
5549         {
5550           lookup_name_info decl_lookup_name (renaming->declaration,
5551                                              lookup_name.match_type ());
5552           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5553                                1, NULL);
5554         }
5555       renaming->searched = 0;
5556     }
5557   return num_defns_collected (obstackp) != defns_mark;
5558 }
5559
5560 /* Implements compare_names, but only applying the comparision using
5561    the given CASING.  */
5562
5563 static int
5564 compare_names_with_case (const char *string1, const char *string2,
5565                          enum case_sensitivity casing)
5566 {
5567   while (*string1 != '\0' && *string2 != '\0')
5568     {
5569       char c1, c2;
5570
5571       if (isspace (*string1) || isspace (*string2))
5572         return strcmp_iw_ordered (string1, string2);
5573
5574       if (casing == case_sensitive_off)
5575         {
5576           c1 = tolower (*string1);
5577           c2 = tolower (*string2);
5578         }
5579       else
5580         {
5581           c1 = *string1;
5582           c2 = *string2;
5583         }
5584       if (c1 != c2)
5585         break;
5586
5587       string1 += 1;
5588       string2 += 1;
5589     }
5590
5591   switch (*string1)
5592     {
5593     case '(':
5594       return strcmp_iw_ordered (string1, string2);
5595     case '_':
5596       if (*string2 == '\0')
5597         {
5598           if (is_name_suffix (string1))
5599             return 0;
5600           else
5601             return 1;
5602         }
5603       /* FALLTHROUGH */
5604     default:
5605       if (*string2 == '(')
5606         return strcmp_iw_ordered (string1, string2);
5607       else
5608         {
5609           if (casing == case_sensitive_off)
5610             return tolower (*string1) - tolower (*string2);
5611           else
5612             return *string1 - *string2;
5613         }
5614     }
5615 }
5616
5617 /* Compare STRING1 to STRING2, with results as for strcmp.
5618    Compatible with strcmp_iw_ordered in that...
5619
5620        strcmp_iw_ordered (STRING1, STRING2) <= 0
5621
5622    ... implies...
5623
5624        compare_names (STRING1, STRING2) <= 0
5625
5626    (they may differ as to what symbols compare equal).  */
5627
5628 static int
5629 compare_names (const char *string1, const char *string2)
5630 {
5631   int result;
5632
5633   /* Similar to what strcmp_iw_ordered does, we need to perform
5634      a case-insensitive comparison first, and only resort to
5635      a second, case-sensitive, comparison if the first one was
5636      not sufficient to differentiate the two strings.  */
5637
5638   result = compare_names_with_case (string1, string2, case_sensitive_off);
5639   if (result == 0)
5640     result = compare_names_with_case (string1, string2, case_sensitive_on);
5641
5642   return result;
5643 }
5644
5645 /* Convenience function to get at the Ada encoded lookup name for
5646    LOOKUP_NAME, as a C string.  */
5647
5648 static const char *
5649 ada_lookup_name (const lookup_name_info &lookup_name)
5650 {
5651   return lookup_name.ada ().lookup_name ().c_str ();
5652 }
5653
5654 /* Add to OBSTACKP all non-local symbols whose name and domain match
5655    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5656    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5657    symbols otherwise.  */
5658
5659 static void
5660 add_nonlocal_symbols (struct obstack *obstackp,
5661                       const lookup_name_info &lookup_name,
5662                       domain_enum domain, int global)
5663 {
5664   struct objfile *objfile;
5665   struct compunit_symtab *cu;
5666   struct match_data data;
5667
5668   memset (&data, 0, sizeof data);
5669   data.obstackp = obstackp;
5670
5671   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5672
5673   ALL_OBJFILES (objfile)
5674     {
5675       data.objfile = objfile;
5676
5677       if (is_wild_match)
5678         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5679                                                domain, global,
5680                                                aux_add_nonlocal_symbols, &data,
5681                                                symbol_name_match_type::WILD,
5682                                                NULL);
5683       else
5684         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5685                                                domain, global,
5686                                                aux_add_nonlocal_symbols, &data,
5687                                                symbol_name_match_type::FULL,
5688                                                compare_names);
5689
5690       ALL_OBJFILE_COMPUNITS (objfile, cu)
5691         {
5692           const struct block *global_block
5693             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5694
5695           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5696                                        domain))
5697             data.found_sym = 1;
5698         }
5699     }
5700
5701   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5702     {
5703       const char *name = ada_lookup_name (lookup_name);
5704       std::string name1 = std::string ("<_ada_") + name + '>';
5705
5706       ALL_OBJFILES (objfile)
5707         {
5708           data.objfile = objfile;
5709           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5710                                                  domain, global,
5711                                                  aux_add_nonlocal_symbols,
5712                                                  &data,
5713                                                  symbol_name_match_type::FULL,
5714                                                  compare_names);
5715         }
5716     }           
5717 }
5718
5719 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5720    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5721    returning the number of matches.  Add these to OBSTACKP.
5722
5723    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5724    symbol match within the nest of blocks whose innermost member is BLOCK,
5725    is the one match returned (no other matches in that or
5726    enclosing blocks is returned).  If there are any matches in or
5727    surrounding BLOCK, then these alone are returned.
5728
5729    Names prefixed with "standard__" are handled specially:
5730    "standard__" is first stripped off (by the lookup_name
5731    constructor), and only static and global symbols are searched.
5732
5733    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5734    to lookup global symbols.  */
5735
5736 static void
5737 ada_add_all_symbols (struct obstack *obstackp,
5738                      const struct block *block,
5739                      const lookup_name_info &lookup_name,
5740                      domain_enum domain,
5741                      int full_search,
5742                      int *made_global_lookup_p)
5743 {
5744   struct symbol *sym;
5745
5746   if (made_global_lookup_p)
5747     *made_global_lookup_p = 0;
5748
5749   /* Special case: If the user specifies a symbol name inside package
5750      Standard, do a non-wild matching of the symbol name without
5751      the "standard__" prefix.  This was primarily introduced in order
5752      to allow the user to specifically access the standard exceptions
5753      using, for instance, Standard.Constraint_Error when Constraint_Error
5754      is ambiguous (due to the user defining its own Constraint_Error
5755      entity inside its program).  */
5756   if (lookup_name.ada ().standard_p ())
5757     block = NULL;
5758
5759   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5760
5761   if (block != NULL)
5762     {
5763       if (full_search)
5764         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5765       else
5766         {
5767           /* In the !full_search case we're are being called by
5768              ada_iterate_over_symbols, and we don't want to search
5769              superblocks.  */
5770           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5771         }
5772       if (num_defns_collected (obstackp) > 0 || !full_search)
5773         return;
5774     }
5775
5776   /* No non-global symbols found.  Check our cache to see if we have
5777      already performed this search before.  If we have, then return
5778      the same result.  */
5779
5780   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5781                             domain, &sym, &block))
5782     {
5783       if (sym != NULL)
5784         add_defn_to_vec (obstackp, sym, block);
5785       return;
5786     }
5787
5788   if (made_global_lookup_p)
5789     *made_global_lookup_p = 1;
5790
5791   /* Search symbols from all global blocks.  */
5792  
5793   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5794
5795   /* Now add symbols from all per-file blocks if we've gotten no hits
5796      (not strictly correct, but perhaps better than an error).  */
5797
5798   if (num_defns_collected (obstackp) == 0)
5799     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5800 }
5801
5802 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5803    is non-zero, enclosing scope and in global scopes, returning the number of
5804    matches.
5805    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5806    found and the blocks and symbol tables (if any) in which they were
5807    found.
5808
5809    When full_search is non-zero, any non-function/non-enumeral
5810    symbol match within the nest of blocks whose innermost member is BLOCK,
5811    is the one match returned (no other matches in that or
5812    enclosing blocks is returned).  If there are any matches in or
5813    surrounding BLOCK, then these alone are returned.
5814
5815    Names prefixed with "standard__" are handled specially: "standard__"
5816    is first stripped off, and only static and global symbols are searched.  */
5817
5818 static int
5819 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5820                                const struct block *block,
5821                                domain_enum domain,
5822                                std::vector<struct block_symbol> *results,
5823                                int full_search)
5824 {
5825   int syms_from_global_search;
5826   int ndefns;
5827   auto_obstack obstack;
5828
5829   ada_add_all_symbols (&obstack, block, lookup_name,
5830                        domain, full_search, &syms_from_global_search);
5831
5832   ndefns = num_defns_collected (&obstack);
5833
5834   struct block_symbol *base = defns_collected (&obstack, 1);
5835   for (int i = 0; i < ndefns; ++i)
5836     results->push_back (base[i]);
5837
5838   ndefns = remove_extra_symbols (results);
5839
5840   if (ndefns == 0 && full_search && syms_from_global_search)
5841     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5842
5843   if (ndefns == 1 && full_search && syms_from_global_search)
5844     cache_symbol (ada_lookup_name (lookup_name), domain,
5845                   (*results)[0].symbol, (*results)[0].block);
5846
5847   ndefns = remove_irrelevant_renamings (results, block);
5848
5849   return ndefns;
5850 }
5851
5852 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5853    in global scopes, returning the number of matches, and filling *RESULTS
5854    with (SYM,BLOCK) tuples.
5855
5856    See ada_lookup_symbol_list_worker for further details.  */
5857
5858 int
5859 ada_lookup_symbol_list (const char *name, const struct block *block,
5860                         domain_enum domain,
5861                         std::vector<struct block_symbol> *results)
5862 {
5863   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5864   lookup_name_info lookup_name (name, name_match_type);
5865
5866   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5867 }
5868
5869 /* Implementation of the la_iterate_over_symbols method.  */
5870
5871 static void
5872 ada_iterate_over_symbols
5873   (const struct block *block, const lookup_name_info &name,
5874    domain_enum domain,
5875    gdb::function_view<symbol_found_callback_ftype> callback)
5876 {
5877   int ndefs, i;
5878   std::vector<struct block_symbol> results;
5879
5880   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5881
5882   for (i = 0; i < ndefs; ++i)
5883     {
5884       if (!callback (&results[i]))
5885         break;
5886     }
5887 }
5888
5889 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5890    to 1, but choosing the first symbol found if there are multiple
5891    choices.
5892
5893    The result is stored in *INFO, which must be non-NULL.
5894    If no match is found, INFO->SYM is set to NULL.  */
5895
5896 void
5897 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5898                            domain_enum domain,
5899                            struct block_symbol *info)
5900 {
5901   /* Since we already have an encoded name, wrap it in '<>' to force a
5902      verbatim match.  Otherwise, if the name happens to not look like
5903      an encoded name (because it doesn't include a "__"),
5904      ada_lookup_name_info would re-encode/fold it again, and that
5905      would e.g., incorrectly lowercase object renaming names like
5906      "R28b" -> "r28b".  */
5907   std::string verbatim = std::string ("<") + name + '>';
5908
5909   gdb_assert (info != NULL);
5910   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5911 }
5912
5913 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5914    scope and in global scopes, or NULL if none.  NAME is folded and
5915    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5916    choosing the first symbol if there are multiple choices.
5917    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5918
5919 struct block_symbol
5920 ada_lookup_symbol (const char *name, const struct block *block0,
5921                    domain_enum domain, int *is_a_field_of_this)
5922 {
5923   if (is_a_field_of_this != NULL)
5924     *is_a_field_of_this = 0;
5925
5926   std::vector<struct block_symbol> candidates;
5927   int n_candidates;
5928
5929   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5930
5931   if (n_candidates == 0)
5932     return {};
5933
5934   block_symbol info = candidates[0];
5935   info.symbol = fixup_symbol_section (info.symbol, NULL);
5936   return info;
5937 }
5938
5939 static struct block_symbol
5940 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5941                             const char *name,
5942                             const struct block *block,
5943                             const domain_enum domain)
5944 {
5945   struct block_symbol sym;
5946
5947   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5948   if (sym.symbol != NULL)
5949     return sym;
5950
5951   /* If we haven't found a match at this point, try the primitive
5952      types.  In other languages, this search is performed before
5953      searching for global symbols in order to short-circuit that
5954      global-symbol search if it happens that the name corresponds
5955      to a primitive type.  But we cannot do the same in Ada, because
5956      it is perfectly legitimate for a program to declare a type which
5957      has the same name as a standard type.  If looking up a type in
5958      that situation, we have traditionally ignored the primitive type
5959      in favor of user-defined types.  This is why, unlike most other
5960      languages, we search the primitive types this late and only after
5961      having searched the global symbols without success.  */
5962
5963   if (domain == VAR_DOMAIN)
5964     {
5965       struct gdbarch *gdbarch;
5966
5967       if (block == NULL)
5968         gdbarch = target_gdbarch ();
5969       else
5970         gdbarch = block_gdbarch (block);
5971       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5972       if (sym.symbol != NULL)
5973         return sym;
5974     }
5975
5976   return (struct block_symbol) {NULL, NULL};
5977 }
5978
5979
5980 /* True iff STR is a possible encoded suffix of a normal Ada name
5981    that is to be ignored for matching purposes.  Suffixes of parallel
5982    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5983    are given by any of the regular expressions:
5984
5985    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5986    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5987    TKB              [subprogram suffix for task bodies]
5988    _E[0-9]+[bs]$    [protected object entry suffixes]
5989    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5990
5991    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5992    match is performed.  This sequence is used to differentiate homonyms,
5993    is an optional part of a valid name suffix.  */
5994
5995 static int
5996 is_name_suffix (const char *str)
5997 {
5998   int k;
5999   const char *matching;
6000   const int len = strlen (str);
6001
6002   /* Skip optional leading __[0-9]+.  */
6003
6004   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
6005     {
6006       str += 3;
6007       while (isdigit (str[0]))
6008         str += 1;
6009     }
6010   
6011   /* [.$][0-9]+ */
6012
6013   if (str[0] == '.' || str[0] == '$')
6014     {
6015       matching = str + 1;
6016       while (isdigit (matching[0]))
6017         matching += 1;
6018       if (matching[0] == '\0')
6019         return 1;
6020     }
6021
6022   /* ___[0-9]+ */
6023
6024   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6025     {
6026       matching = str + 3;
6027       while (isdigit (matching[0]))
6028         matching += 1;
6029       if (matching[0] == '\0')
6030         return 1;
6031     }
6032
6033   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6034
6035   if (strcmp (str, "TKB") == 0)
6036     return 1;
6037
6038 #if 0
6039   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6040      with a N at the end.  Unfortunately, the compiler uses the same
6041      convention for other internal types it creates.  So treating
6042      all entity names that end with an "N" as a name suffix causes
6043      some regressions.  For instance, consider the case of an enumerated
6044      type.  To support the 'Image attribute, it creates an array whose
6045      name ends with N.
6046      Having a single character like this as a suffix carrying some
6047      information is a bit risky.  Perhaps we should change the encoding
6048      to be something like "_N" instead.  In the meantime, do not do
6049      the following check.  */
6050   /* Protected Object Subprograms */
6051   if (len == 1 && str [0] == 'N')
6052     return 1;
6053 #endif
6054
6055   /* _E[0-9]+[bs]$ */
6056   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6057     {
6058       matching = str + 3;
6059       while (isdigit (matching[0]))
6060         matching += 1;
6061       if ((matching[0] == 'b' || matching[0] == 's')
6062           && matching [1] == '\0')
6063         return 1;
6064     }
6065
6066   /* ??? We should not modify STR directly, as we are doing below.  This
6067      is fine in this case, but may become problematic later if we find
6068      that this alternative did not work, and want to try matching
6069      another one from the begining of STR.  Since we modified it, we
6070      won't be able to find the begining of the string anymore!  */
6071   if (str[0] == 'X')
6072     {
6073       str += 1;
6074       while (str[0] != '_' && str[0] != '\0')
6075         {
6076           if (str[0] != 'n' && str[0] != 'b')
6077             return 0;
6078           str += 1;
6079         }
6080     }
6081
6082   if (str[0] == '\000')
6083     return 1;
6084
6085   if (str[0] == '_')
6086     {
6087       if (str[1] != '_' || str[2] == '\000')
6088         return 0;
6089       if (str[2] == '_')
6090         {
6091           if (strcmp (str + 3, "JM") == 0)
6092             return 1;
6093           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6094              the LJM suffix in favor of the JM one.  But we will
6095              still accept LJM as a valid suffix for a reasonable
6096              amount of time, just to allow ourselves to debug programs
6097              compiled using an older version of GNAT.  */
6098           if (strcmp (str + 3, "LJM") == 0)
6099             return 1;
6100           if (str[3] != 'X')
6101             return 0;
6102           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6103               || str[4] == 'U' || str[4] == 'P')
6104             return 1;
6105           if (str[4] == 'R' && str[5] != 'T')
6106             return 1;
6107           return 0;
6108         }
6109       if (!isdigit (str[2]))
6110         return 0;
6111       for (k = 3; str[k] != '\0'; k += 1)
6112         if (!isdigit (str[k]) && str[k] != '_')
6113           return 0;
6114       return 1;
6115     }
6116   if (str[0] == '$' && isdigit (str[1]))
6117     {
6118       for (k = 2; str[k] != '\0'; k += 1)
6119         if (!isdigit (str[k]) && str[k] != '_')
6120           return 0;
6121       return 1;
6122     }
6123   return 0;
6124 }
6125
6126 /* Return non-zero if the string starting at NAME and ending before
6127    NAME_END contains no capital letters.  */
6128
6129 static int
6130 is_valid_name_for_wild_match (const char *name0)
6131 {
6132   const char *decoded_name = ada_decode (name0);
6133   int i;
6134
6135   /* If the decoded name starts with an angle bracket, it means that
6136      NAME0 does not follow the GNAT encoding format.  It should then
6137      not be allowed as a possible wild match.  */
6138   if (decoded_name[0] == '<')
6139     return 0;
6140
6141   for (i=0; decoded_name[i] != '\0'; i++)
6142     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6143       return 0;
6144
6145   return 1;
6146 }
6147
6148 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6149    that could start a simple name.  Assumes that *NAMEP points into
6150    the string beginning at NAME0.  */
6151
6152 static int
6153 advance_wild_match (const char **namep, const char *name0, int target0)
6154 {
6155   const char *name = *namep;
6156
6157   while (1)
6158     {
6159       int t0, t1;
6160
6161       t0 = *name;
6162       if (t0 == '_')
6163         {
6164           t1 = name[1];
6165           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6166             {
6167               name += 1;
6168               if (name == name0 + 5 && startswith (name0, "_ada"))
6169                 break;
6170               else
6171                 name += 1;
6172             }
6173           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6174                                  || name[2] == target0))
6175             {
6176               name += 2;
6177               break;
6178             }
6179           else
6180             return 0;
6181         }
6182       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6183         name += 1;
6184       else
6185         return 0;
6186     }
6187
6188   *namep = name;
6189   return 1;
6190 }
6191
6192 /* Return true iff NAME encodes a name of the form prefix.PATN.
6193    Ignores any informational suffixes of NAME (i.e., for which
6194    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6195    simple name.  */
6196
6197 static bool
6198 wild_match (const char *name, const char *patn)
6199 {
6200   const char *p;
6201   const char *name0 = name;
6202
6203   while (1)
6204     {
6205       const char *match = name;
6206
6207       if (*name == *patn)
6208         {
6209           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6210             if (*p != *name)
6211               break;
6212           if (*p == '\0' && is_name_suffix (name))
6213             return match == name0 || is_valid_name_for_wild_match (name0);
6214
6215           if (name[-1] == '_')
6216             name -= 1;
6217         }
6218       if (!advance_wild_match (&name, name0, *patn))
6219         return false;
6220     }
6221 }
6222
6223 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6224    any trailing suffixes that encode debugging information or leading
6225    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6226    information that is ignored).  */
6227
6228 static bool
6229 full_match (const char *sym_name, const char *search_name)
6230 {
6231   size_t search_name_len = strlen (search_name);
6232
6233   if (strncmp (sym_name, search_name, search_name_len) == 0
6234       && is_name_suffix (sym_name + search_name_len))
6235     return true;
6236
6237   if (startswith (sym_name, "_ada_")
6238       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6239       && is_name_suffix (sym_name + search_name_len + 5))
6240     return true;
6241
6242   return false;
6243 }
6244
6245 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6246    *defn_symbols, updating the list of symbols in OBSTACKP (if
6247    necessary).  OBJFILE is the section containing BLOCK.  */
6248
6249 static void
6250 ada_add_block_symbols (struct obstack *obstackp,
6251                        const struct block *block,
6252                        const lookup_name_info &lookup_name,
6253                        domain_enum domain, struct objfile *objfile)
6254 {
6255   struct block_iterator iter;
6256   /* A matching argument symbol, if any.  */
6257   struct symbol *arg_sym;
6258   /* Set true when we find a matching non-argument symbol.  */
6259   int found_sym;
6260   struct symbol *sym;
6261
6262   arg_sym = NULL;
6263   found_sym = 0;
6264   for (sym = block_iter_match_first (block, lookup_name, &iter);
6265        sym != NULL;
6266        sym = block_iter_match_next (lookup_name, &iter))
6267     {
6268       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6269                                  SYMBOL_DOMAIN (sym), domain))
6270         {
6271           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6272             {
6273               if (SYMBOL_IS_ARGUMENT (sym))
6274                 arg_sym = sym;
6275               else
6276                 {
6277                   found_sym = 1;
6278                   add_defn_to_vec (obstackp,
6279                                    fixup_symbol_section (sym, objfile),
6280                                    block);
6281                 }
6282             }
6283         }
6284     }
6285
6286   /* Handle renamings.  */
6287
6288   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6289     found_sym = 1;
6290
6291   if (!found_sym && arg_sym != NULL)
6292     {
6293       add_defn_to_vec (obstackp,
6294                        fixup_symbol_section (arg_sym, objfile),
6295                        block);
6296     }
6297
6298   if (!lookup_name.ada ().wild_match_p ())
6299     {
6300       arg_sym = NULL;
6301       found_sym = 0;
6302       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6303       const char *name = ada_lookup_name.c_str ();
6304       size_t name_len = ada_lookup_name.size ();
6305
6306       ALL_BLOCK_SYMBOLS (block, iter, sym)
6307       {
6308         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6309                                    SYMBOL_DOMAIN (sym), domain))
6310           {
6311             int cmp;
6312
6313             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6314             if (cmp == 0)
6315               {
6316                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6317                 if (cmp == 0)
6318                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6319                                  name_len);
6320               }
6321
6322             if (cmp == 0
6323                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6324               {
6325                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6326                   {
6327                     if (SYMBOL_IS_ARGUMENT (sym))
6328                       arg_sym = sym;
6329                     else
6330                       {
6331                         found_sym = 1;
6332                         add_defn_to_vec (obstackp,
6333                                          fixup_symbol_section (sym, objfile),
6334                                          block);
6335                       }
6336                   }
6337               }
6338           }
6339       }
6340
6341       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6342          They aren't parameters, right?  */
6343       if (!found_sym && arg_sym != NULL)
6344         {
6345           add_defn_to_vec (obstackp,
6346                            fixup_symbol_section (arg_sym, objfile),
6347                            block);
6348         }
6349     }
6350 }
6351 \f
6352
6353                                 /* Symbol Completion */
6354
6355 /* See symtab.h.  */
6356
6357 bool
6358 ada_lookup_name_info::matches
6359   (const char *sym_name,
6360    symbol_name_match_type match_type,
6361    completion_match_result *comp_match_res) const
6362 {
6363   bool match = false;
6364   const char *text = m_encoded_name.c_str ();
6365   size_t text_len = m_encoded_name.size ();
6366
6367   /* First, test against the fully qualified name of the symbol.  */
6368
6369   if (strncmp (sym_name, text, text_len) == 0)
6370     match = true;
6371
6372   if (match && !m_encoded_p)
6373     {
6374       /* One needed check before declaring a positive match is to verify
6375          that iff we are doing a verbatim match, the decoded version
6376          of the symbol name starts with '<'.  Otherwise, this symbol name
6377          is not a suitable completion.  */
6378       const char *sym_name_copy = sym_name;
6379       bool has_angle_bracket;
6380
6381       sym_name = ada_decode (sym_name);
6382       has_angle_bracket = (sym_name[0] == '<');
6383       match = (has_angle_bracket == m_verbatim_p);
6384       sym_name = sym_name_copy;
6385     }
6386
6387   if (match && !m_verbatim_p)
6388     {
6389       /* When doing non-verbatim match, another check that needs to
6390          be done is to verify that the potentially matching symbol name
6391          does not include capital letters, because the ada-mode would
6392          not be able to understand these symbol names without the
6393          angle bracket notation.  */
6394       const char *tmp;
6395
6396       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6397       if (*tmp != '\0')
6398         match = false;
6399     }
6400
6401   /* Second: Try wild matching...  */
6402
6403   if (!match && m_wild_match_p)
6404     {
6405       /* Since we are doing wild matching, this means that TEXT
6406          may represent an unqualified symbol name.  We therefore must
6407          also compare TEXT against the unqualified name of the symbol.  */
6408       sym_name = ada_unqualified_name (ada_decode (sym_name));
6409
6410       if (strncmp (sym_name, text, text_len) == 0)
6411         match = true;
6412     }
6413
6414   /* Finally: If we found a match, prepare the result to return.  */
6415
6416   if (!match)
6417     return false;
6418
6419   if (comp_match_res != NULL)
6420     {
6421       std::string &match_str = comp_match_res->match.storage ();
6422
6423       if (!m_encoded_p)
6424         match_str = ada_decode (sym_name);
6425       else
6426         {
6427           if (m_verbatim_p)
6428             match_str = add_angle_brackets (sym_name);
6429           else
6430             match_str = sym_name;
6431
6432         }
6433
6434       comp_match_res->set_match (match_str.c_str ());
6435     }
6436
6437   return true;
6438 }
6439
6440 /* Add the list of possible symbol names completing TEXT to TRACKER.
6441    WORD is the entire command on which completion is made.  */
6442
6443 static void
6444 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6445                                        complete_symbol_mode mode,
6446                                        symbol_name_match_type name_match_type,
6447                                        const char *text, const char *word,
6448                                        enum type_code code)
6449 {
6450   struct symbol *sym;
6451   struct compunit_symtab *s;
6452   struct minimal_symbol *msymbol;
6453   struct objfile *objfile;
6454   const struct block *b, *surrounding_static_block = 0;
6455   struct block_iterator iter;
6456
6457   gdb_assert (code == TYPE_CODE_UNDEF);
6458
6459   lookup_name_info lookup_name (text, name_match_type, true);
6460
6461   /* First, look at the partial symtab symbols.  */
6462   expand_symtabs_matching (NULL,
6463                            lookup_name,
6464                            NULL,
6465                            NULL,
6466                            ALL_DOMAIN);
6467
6468   /* At this point scan through the misc symbol vectors and add each
6469      symbol you find to the list.  Eventually we want to ignore
6470      anything that isn't a text symbol (everything else will be
6471      handled by the psymtab code above).  */
6472
6473   ALL_MSYMBOLS (objfile, msymbol)
6474   {
6475     QUIT;
6476
6477     if (completion_skip_symbol (mode, msymbol))
6478       continue;
6479
6480     language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6481
6482     /* Ada minimal symbols won't have their language set to Ada.  If
6483        we let completion_list_add_name compare using the
6484        default/C-like matcher, then when completing e.g., symbols in a
6485        package named "pck", we'd match internal Ada symbols like
6486        "pckS", which are invalid in an Ada expression, unless you wrap
6487        them in '<' '>' to request a verbatim match.
6488
6489        Unfortunately, some Ada encoded names successfully demangle as
6490        C++ symbols (using an old mangling scheme), such as "name__2Xn"
6491        -> "Xn::name(void)" and thus some Ada minimal symbols end up
6492        with the wrong language set.  Paper over that issue here.  */
6493     if (symbol_language == language_auto
6494         || symbol_language == language_cplus)
6495       symbol_language = language_ada;
6496
6497     completion_list_add_name (tracker,
6498                               symbol_language,
6499                               MSYMBOL_LINKAGE_NAME (msymbol),
6500                               lookup_name, text, word);
6501   }
6502
6503   /* Search upwards from currently selected frame (so that we can
6504      complete on local vars.  */
6505
6506   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6507     {
6508       if (!BLOCK_SUPERBLOCK (b))
6509         surrounding_static_block = b;   /* For elmin of dups */
6510
6511       ALL_BLOCK_SYMBOLS (b, iter, sym)
6512       {
6513         if (completion_skip_symbol (mode, sym))
6514           continue;
6515
6516         completion_list_add_name (tracker,
6517                                   SYMBOL_LANGUAGE (sym),
6518                                   SYMBOL_LINKAGE_NAME (sym),
6519                                   lookup_name, text, word);
6520       }
6521     }
6522
6523   /* Go through the symtabs and check the externs and statics for
6524      symbols which match.  */
6525
6526   ALL_COMPUNITS (objfile, s)
6527   {
6528     QUIT;
6529     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6530     ALL_BLOCK_SYMBOLS (b, iter, sym)
6531     {
6532       if (completion_skip_symbol (mode, sym))
6533         continue;
6534
6535       completion_list_add_name (tracker,
6536                                 SYMBOL_LANGUAGE (sym),
6537                                 SYMBOL_LINKAGE_NAME (sym),
6538                                 lookup_name, text, word);
6539     }
6540   }
6541
6542   ALL_COMPUNITS (objfile, s)
6543   {
6544     QUIT;
6545     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6546     /* Don't do this block twice.  */
6547     if (b == surrounding_static_block)
6548       continue;
6549     ALL_BLOCK_SYMBOLS (b, iter, sym)
6550     {
6551       if (completion_skip_symbol (mode, sym))
6552         continue;
6553
6554       completion_list_add_name (tracker,
6555                                 SYMBOL_LANGUAGE (sym),
6556                                 SYMBOL_LINKAGE_NAME (sym),
6557                                 lookup_name, text, word);
6558     }
6559   }
6560 }
6561
6562                                 /* Field Access */
6563
6564 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6565    for tagged types.  */
6566
6567 static int
6568 ada_is_dispatch_table_ptr_type (struct type *type)
6569 {
6570   const char *name;
6571
6572   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6573     return 0;
6574
6575   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6576   if (name == NULL)
6577     return 0;
6578
6579   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6580 }
6581
6582 /* Return non-zero if TYPE is an interface tag.  */
6583
6584 static int
6585 ada_is_interface_tag (struct type *type)
6586 {
6587   const char *name = TYPE_NAME (type);
6588
6589   if (name == NULL)
6590     return 0;
6591
6592   return (strcmp (name, "ada__tags__interface_tag") == 0);
6593 }
6594
6595 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6596    to be invisible to users.  */
6597
6598 int
6599 ada_is_ignored_field (struct type *type, int field_num)
6600 {
6601   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6602     return 1;
6603
6604   /* Check the name of that field.  */
6605   {
6606     const char *name = TYPE_FIELD_NAME (type, field_num);
6607
6608     /* Anonymous field names should not be printed.
6609        brobecker/2007-02-20: I don't think this can actually happen
6610        but we don't want to print the value of annonymous fields anyway.  */
6611     if (name == NULL)
6612       return 1;
6613
6614     /* Normally, fields whose name start with an underscore ("_")
6615        are fields that have been internally generated by the compiler,
6616        and thus should not be printed.  The "_parent" field is special,
6617        however: This is a field internally generated by the compiler
6618        for tagged types, and it contains the components inherited from
6619        the parent type.  This field should not be printed as is, but
6620        should not be ignored either.  */
6621     if (name[0] == '_' && !startswith (name, "_parent"))
6622       return 1;
6623   }
6624
6625   /* If this is the dispatch table of a tagged type or an interface tag,
6626      then ignore.  */
6627   if (ada_is_tagged_type (type, 1)
6628       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6629           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6630     return 1;
6631
6632   /* Not a special field, so it should not be ignored.  */
6633   return 0;
6634 }
6635
6636 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6637    pointer or reference type whose ultimate target has a tag field.  */
6638
6639 int
6640 ada_is_tagged_type (struct type *type, int refok)
6641 {
6642   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6643 }
6644
6645 /* True iff TYPE represents the type of X'Tag */
6646
6647 int
6648 ada_is_tag_type (struct type *type)
6649 {
6650   type = ada_check_typedef (type);
6651
6652   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6653     return 0;
6654   else
6655     {
6656       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6657
6658       return (name != NULL
6659               && strcmp (name, "ada__tags__dispatch_table") == 0);
6660     }
6661 }
6662
6663 /* The type of the tag on VAL.  */
6664
6665 struct type *
6666 ada_tag_type (struct value *val)
6667 {
6668   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6669 }
6670
6671 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6672    retired at Ada 05).  */
6673
6674 static int
6675 is_ada95_tag (struct value *tag)
6676 {
6677   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6678 }
6679
6680 /* The value of the tag on VAL.  */
6681
6682 struct value *
6683 ada_value_tag (struct value *val)
6684 {
6685   return ada_value_struct_elt (val, "_tag", 0);
6686 }
6687
6688 /* The value of the tag on the object of type TYPE whose contents are
6689    saved at VALADDR, if it is non-null, or is at memory address
6690    ADDRESS.  */
6691
6692 static struct value *
6693 value_tag_from_contents_and_address (struct type *type,
6694                                      const gdb_byte *valaddr,
6695                                      CORE_ADDR address)
6696 {
6697   int tag_byte_offset;
6698   struct type *tag_type;
6699
6700   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6701                          NULL, NULL, NULL))
6702     {
6703       const gdb_byte *valaddr1 = ((valaddr == NULL)
6704                                   ? NULL
6705                                   : valaddr + tag_byte_offset);
6706       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6707
6708       return value_from_contents_and_address (tag_type, valaddr1, address1);
6709     }
6710   return NULL;
6711 }
6712
6713 static struct type *
6714 type_from_tag (struct value *tag)
6715 {
6716   const char *type_name = ada_tag_name (tag);
6717
6718   if (type_name != NULL)
6719     return ada_find_any_type (ada_encode (type_name));
6720   return NULL;
6721 }
6722
6723 /* Given a value OBJ of a tagged type, return a value of this
6724    type at the base address of the object.  The base address, as
6725    defined in Ada.Tags, it is the address of the primary tag of
6726    the object, and therefore where the field values of its full
6727    view can be fetched.  */
6728
6729 struct value *
6730 ada_tag_value_at_base_address (struct value *obj)
6731 {
6732   struct value *val;
6733   LONGEST offset_to_top = 0;
6734   struct type *ptr_type, *obj_type;
6735   struct value *tag;
6736   CORE_ADDR base_address;
6737
6738   obj_type = value_type (obj);
6739
6740   /* It is the responsability of the caller to deref pointers.  */
6741
6742   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6743       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6744     return obj;
6745
6746   tag = ada_value_tag (obj);
6747   if (!tag)
6748     return obj;
6749
6750   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6751
6752   if (is_ada95_tag (tag))
6753     return obj;
6754
6755   ptr_type = language_lookup_primitive_type
6756     (language_def (language_ada), target_gdbarch(), "storage_offset");
6757   ptr_type = lookup_pointer_type (ptr_type);
6758   val = value_cast (ptr_type, tag);
6759   if (!val)
6760     return obj;
6761
6762   /* It is perfectly possible that an exception be raised while
6763      trying to determine the base address, just like for the tag;
6764      see ada_tag_name for more details.  We do not print the error
6765      message for the same reason.  */
6766
6767   TRY
6768     {
6769       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6770     }
6771
6772   CATCH (e, RETURN_MASK_ERROR)
6773     {
6774       return obj;
6775     }
6776   END_CATCH
6777
6778   /* If offset is null, nothing to do.  */
6779
6780   if (offset_to_top == 0)
6781     return obj;
6782
6783   /* -1 is a special case in Ada.Tags; however, what should be done
6784      is not quite clear from the documentation.  So do nothing for
6785      now.  */
6786
6787   if (offset_to_top == -1)
6788     return obj;
6789
6790   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6791      from the base address.  This was however incompatible with
6792      C++ dispatch table: C++ uses a *negative* value to *add*
6793      to the base address.  Ada's convention has therefore been
6794      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6795      use the same convention.  Here, we support both cases by
6796      checking the sign of OFFSET_TO_TOP.  */
6797
6798   if (offset_to_top > 0)
6799     offset_to_top = -offset_to_top;
6800
6801   base_address = value_address (obj) + offset_to_top;
6802   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6803
6804   /* Make sure that we have a proper tag at the new address.
6805      Otherwise, offset_to_top is bogus (which can happen when
6806      the object is not initialized yet).  */
6807
6808   if (!tag)
6809     return obj;
6810
6811   obj_type = type_from_tag (tag);
6812
6813   if (!obj_type)
6814     return obj;
6815
6816   return value_from_contents_and_address (obj_type, NULL, base_address);
6817 }
6818
6819 /* Return the "ada__tags__type_specific_data" type.  */
6820
6821 static struct type *
6822 ada_get_tsd_type (struct inferior *inf)
6823 {
6824   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6825
6826   if (data->tsd_type == 0)
6827     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6828   return data->tsd_type;
6829 }
6830
6831 /* Return the TSD (type-specific data) associated to the given TAG.
6832    TAG is assumed to be the tag of a tagged-type entity.
6833
6834    May return NULL if we are unable to get the TSD.  */
6835
6836 static struct value *
6837 ada_get_tsd_from_tag (struct value *tag)
6838 {
6839   struct value *val;
6840   struct type *type;
6841
6842   /* First option: The TSD is simply stored as a field of our TAG.
6843      Only older versions of GNAT would use this format, but we have
6844      to test it first, because there are no visible markers for
6845      the current approach except the absence of that field.  */
6846
6847   val = ada_value_struct_elt (tag, "tsd", 1);
6848   if (val)
6849     return val;
6850
6851   /* Try the second representation for the dispatch table (in which
6852      there is no explicit 'tsd' field in the referent of the tag pointer,
6853      and instead the tsd pointer is stored just before the dispatch
6854      table.  */
6855
6856   type = ada_get_tsd_type (current_inferior());
6857   if (type == NULL)
6858     return NULL;
6859   type = lookup_pointer_type (lookup_pointer_type (type));
6860   val = value_cast (type, tag);
6861   if (val == NULL)
6862     return NULL;
6863   return value_ind (value_ptradd (val, -1));
6864 }
6865
6866 /* Given the TSD of a tag (type-specific data), return a string
6867    containing the name of the associated type.
6868
6869    The returned value is good until the next call.  May return NULL
6870    if we are unable to determine the tag name.  */
6871
6872 static char *
6873 ada_tag_name_from_tsd (struct value *tsd)
6874 {
6875   static char name[1024];
6876   char *p;
6877   struct value *val;
6878
6879   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6880   if (val == NULL)
6881     return NULL;
6882   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6883   for (p = name; *p != '\0'; p += 1)
6884     if (isalpha (*p))
6885       *p = tolower (*p);
6886   return name;
6887 }
6888
6889 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6890    a C string.
6891
6892    Return NULL if the TAG is not an Ada tag, or if we were unable to
6893    determine the name of that tag.  The result is good until the next
6894    call.  */
6895
6896 const char *
6897 ada_tag_name (struct value *tag)
6898 {
6899   char *name = NULL;
6900
6901   if (!ada_is_tag_type (value_type (tag)))
6902     return NULL;
6903
6904   /* It is perfectly possible that an exception be raised while trying
6905      to determine the TAG's name, even under normal circumstances:
6906      The associated variable may be uninitialized or corrupted, for
6907      instance. We do not let any exception propagate past this point.
6908      instead we return NULL.
6909
6910      We also do not print the error message either (which often is very
6911      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6912      the caller print a more meaningful message if necessary.  */
6913   TRY
6914     {
6915       struct value *tsd = ada_get_tsd_from_tag (tag);
6916
6917       if (tsd != NULL)
6918         name = ada_tag_name_from_tsd (tsd);
6919     }
6920   CATCH (e, RETURN_MASK_ERROR)
6921     {
6922     }
6923   END_CATCH
6924
6925   return name;
6926 }
6927
6928 /* The parent type of TYPE, or NULL if none.  */
6929
6930 struct type *
6931 ada_parent_type (struct type *type)
6932 {
6933   int i;
6934
6935   type = ada_check_typedef (type);
6936
6937   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6938     return NULL;
6939
6940   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6941     if (ada_is_parent_field (type, i))
6942       {
6943         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6944
6945         /* If the _parent field is a pointer, then dereference it.  */
6946         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6947           parent_type = TYPE_TARGET_TYPE (parent_type);
6948         /* If there is a parallel XVS type, get the actual base type.  */
6949         parent_type = ada_get_base_type (parent_type);
6950
6951         return ada_check_typedef (parent_type);
6952       }
6953
6954   return NULL;
6955 }
6956
6957 /* True iff field number FIELD_NUM of structure type TYPE contains the
6958    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6959    a structure type with at least FIELD_NUM+1 fields.  */
6960
6961 int
6962 ada_is_parent_field (struct type *type, int field_num)
6963 {
6964   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6965
6966   return (name != NULL
6967           && (startswith (name, "PARENT")
6968               || startswith (name, "_parent")));
6969 }
6970
6971 /* True iff field number FIELD_NUM of structure type TYPE is a
6972    transparent wrapper field (which should be silently traversed when doing
6973    field selection and flattened when printing).  Assumes TYPE is a
6974    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6975    structures.  */
6976
6977 int
6978 ada_is_wrapper_field (struct type *type, int field_num)
6979 {
6980   const char *name = TYPE_FIELD_NAME (type, field_num);
6981
6982   if (name != NULL && strcmp (name, "RETVAL") == 0)
6983     {
6984       /* This happens in functions with "out" or "in out" parameters
6985          which are passed by copy.  For such functions, GNAT describes
6986          the function's return type as being a struct where the return
6987          value is in a field called RETVAL, and where the other "out"
6988          or "in out" parameters are fields of that struct.  This is not
6989          a wrapper.  */
6990       return 0;
6991     }
6992
6993   return (name != NULL
6994           && (startswith (name, "PARENT")
6995               || strcmp (name, "REP") == 0
6996               || startswith (name, "_parent")
6997               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6998 }
6999
7000 /* True iff field number FIELD_NUM of structure or union type TYPE
7001    is a variant wrapper.  Assumes TYPE is a structure type with at least
7002    FIELD_NUM+1 fields.  */
7003
7004 int
7005 ada_is_variant_part (struct type *type, int field_num)
7006 {
7007   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7008
7009   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7010           || (is_dynamic_field (type, field_num)
7011               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7012                   == TYPE_CODE_UNION)));
7013 }
7014
7015 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7016    whose discriminants are contained in the record type OUTER_TYPE,
7017    returns the type of the controlling discriminant for the variant.
7018    May return NULL if the type could not be found.  */
7019
7020 struct type *
7021 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7022 {
7023   const char *name = ada_variant_discrim_name (var_type);
7024
7025   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7026 }
7027
7028 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7029    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7030    represents a 'when others' clause; otherwise 0.  */
7031
7032 int
7033 ada_is_others_clause (struct type *type, int field_num)
7034 {
7035   const char *name = TYPE_FIELD_NAME (type, field_num);
7036
7037   return (name != NULL && name[0] == 'O');
7038 }
7039
7040 /* Assuming that TYPE0 is the type of the variant part of a record,
7041    returns the name of the discriminant controlling the variant.
7042    The value is valid until the next call to ada_variant_discrim_name.  */
7043
7044 const char *
7045 ada_variant_discrim_name (struct type *type0)
7046 {
7047   static char *result = NULL;
7048   static size_t result_len = 0;
7049   struct type *type;
7050   const char *name;
7051   const char *discrim_end;
7052   const char *discrim_start;
7053
7054   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7055     type = TYPE_TARGET_TYPE (type0);
7056   else
7057     type = type0;
7058
7059   name = ada_type_name (type);
7060
7061   if (name == NULL || name[0] == '\000')
7062     return "";
7063
7064   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7065        discrim_end -= 1)
7066     {
7067       if (startswith (discrim_end, "___XVN"))
7068         break;
7069     }
7070   if (discrim_end == name)
7071     return "";
7072
7073   for (discrim_start = discrim_end; discrim_start != name + 3;
7074        discrim_start -= 1)
7075     {
7076       if (discrim_start == name + 1)
7077         return "";
7078       if ((discrim_start > name + 3
7079            && startswith (discrim_start - 3, "___"))
7080           || discrim_start[-1] == '.')
7081         break;
7082     }
7083
7084   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7085   strncpy (result, discrim_start, discrim_end - discrim_start);
7086   result[discrim_end - discrim_start] = '\0';
7087   return result;
7088 }
7089
7090 /* Scan STR for a subtype-encoded number, beginning at position K.
7091    Put the position of the character just past the number scanned in
7092    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7093    Return 1 if there was a valid number at the given position, and 0
7094    otherwise.  A "subtype-encoded" number consists of the absolute value
7095    in decimal, followed by the letter 'm' to indicate a negative number.
7096    Assumes 0m does not occur.  */
7097
7098 int
7099 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7100 {
7101   ULONGEST RU;
7102
7103   if (!isdigit (str[k]))
7104     return 0;
7105
7106   /* Do it the hard way so as not to make any assumption about
7107      the relationship of unsigned long (%lu scan format code) and
7108      LONGEST.  */
7109   RU = 0;
7110   while (isdigit (str[k]))
7111     {
7112       RU = RU * 10 + (str[k] - '0');
7113       k += 1;
7114     }
7115
7116   if (str[k] == 'm')
7117     {
7118       if (R != NULL)
7119         *R = (-(LONGEST) (RU - 1)) - 1;
7120       k += 1;
7121     }
7122   else if (R != NULL)
7123     *R = (LONGEST) RU;
7124
7125   /* NOTE on the above: Technically, C does not say what the results of
7126      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7127      number representable as a LONGEST (although either would probably work
7128      in most implementations).  When RU>0, the locution in the then branch
7129      above is always equivalent to the negative of RU.  */
7130
7131   if (new_k != NULL)
7132     *new_k = k;
7133   return 1;
7134 }
7135
7136 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7137    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7138    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7139
7140 int
7141 ada_in_variant (LONGEST val, struct type *type, int field_num)
7142 {
7143   const char *name = TYPE_FIELD_NAME (type, field_num);
7144   int p;
7145
7146   p = 0;
7147   while (1)
7148     {
7149       switch (name[p])
7150         {
7151         case '\0':
7152           return 0;
7153         case 'S':
7154           {
7155             LONGEST W;
7156
7157             if (!ada_scan_number (name, p + 1, &W, &p))
7158               return 0;
7159             if (val == W)
7160               return 1;
7161             break;
7162           }
7163         case 'R':
7164           {
7165             LONGEST L, U;
7166
7167             if (!ada_scan_number (name, p + 1, &L, &p)
7168                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7169               return 0;
7170             if (val >= L && val <= U)
7171               return 1;
7172             break;
7173           }
7174         case 'O':
7175           return 1;
7176         default:
7177           return 0;
7178         }
7179     }
7180 }
7181
7182 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7183
7184 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7185    ARG_TYPE, extract and return the value of one of its (non-static)
7186    fields.  FIELDNO says which field.   Differs from value_primitive_field
7187    only in that it can handle packed values of arbitrary type.  */
7188
7189 static struct value *
7190 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7191                            struct type *arg_type)
7192 {
7193   struct type *type;
7194
7195   arg_type = ada_check_typedef (arg_type);
7196   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7197
7198   /* Handle packed fields.  */
7199
7200   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7201     {
7202       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7203       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7204
7205       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7206                                              offset + bit_pos / 8,
7207                                              bit_pos % 8, bit_size, type);
7208     }
7209   else
7210     return value_primitive_field (arg1, offset, fieldno, arg_type);
7211 }
7212
7213 /* Find field with name NAME in object of type TYPE.  If found, 
7214    set the following for each argument that is non-null:
7215     - *FIELD_TYPE_P to the field's type; 
7216     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7217       an object of that type;
7218     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7219     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7220       0 otherwise;
7221    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7222    fields up to but not including the desired field, or by the total
7223    number of fields if not found.   A NULL value of NAME never
7224    matches; the function just counts visible fields in this case.
7225    
7226    Notice that we need to handle when a tagged record hierarchy
7227    has some components with the same name, like in this scenario:
7228
7229       type Top_T is tagged record
7230          N : Integer := 1;
7231          U : Integer := 974;
7232          A : Integer := 48;
7233       end record;
7234
7235       type Middle_T is new Top.Top_T with record
7236          N : Character := 'a';
7237          C : Integer := 3;
7238       end record;
7239
7240      type Bottom_T is new Middle.Middle_T with record
7241         N : Float := 4.0;
7242         C : Character := '5';
7243         X : Integer := 6;
7244         A : Character := 'J';
7245      end record;
7246
7247    Let's say we now have a variable declared and initialized as follow:
7248
7249      TC : Top_A := new Bottom_T;
7250
7251    And then we use this variable to call this function
7252
7253      procedure Assign (Obj: in out Top_T; TV : Integer);
7254
7255    as follow:
7256
7257       Assign (Top_T (B), 12);
7258
7259    Now, we're in the debugger, and we're inside that procedure
7260    then and we want to print the value of obj.c:
7261
7262    Usually, the tagged record or one of the parent type owns the
7263    component to print and there's no issue but in this particular
7264    case, what does it mean to ask for Obj.C? Since the actual
7265    type for object is type Bottom_T, it could mean two things: type
7266    component C from the Middle_T view, but also component C from
7267    Bottom_T.  So in that "undefined" case, when the component is
7268    not found in the non-resolved type (which includes all the
7269    components of the parent type), then resolve it and see if we
7270    get better luck once expanded.
7271
7272    In the case of homonyms in the derived tagged type, we don't
7273    guaranty anything, and pick the one that's easiest for us
7274    to program.
7275
7276    Returns 1 if found, 0 otherwise.  */
7277
7278 static int
7279 find_struct_field (const char *name, struct type *type, int offset,
7280                    struct type **field_type_p,
7281                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7282                    int *index_p)
7283 {
7284   int i;
7285   int parent_offset = -1;
7286
7287   type = ada_check_typedef (type);
7288
7289   if (field_type_p != NULL)
7290     *field_type_p = NULL;
7291   if (byte_offset_p != NULL)
7292     *byte_offset_p = 0;
7293   if (bit_offset_p != NULL)
7294     *bit_offset_p = 0;
7295   if (bit_size_p != NULL)
7296     *bit_size_p = 0;
7297
7298   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7299     {
7300       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7301       int fld_offset = offset + bit_pos / 8;
7302       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7303
7304       if (t_field_name == NULL)
7305         continue;
7306
7307       else if (ada_is_parent_field (type, i))
7308         {
7309           /* This is a field pointing us to the parent type of a tagged
7310              type.  As hinted in this function's documentation, we give
7311              preference to fields in the current record first, so what
7312              we do here is just record the index of this field before
7313              we skip it.  If it turns out we couldn't find our field
7314              in the current record, then we'll get back to it and search
7315              inside it whether the field might exist in the parent.  */
7316
7317           parent_offset = i;
7318           continue;
7319         }
7320
7321       else if (name != NULL && field_name_match (t_field_name, name))
7322         {
7323           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7324
7325           if (field_type_p != NULL)
7326             *field_type_p = TYPE_FIELD_TYPE (type, i);
7327           if (byte_offset_p != NULL)
7328             *byte_offset_p = fld_offset;
7329           if (bit_offset_p != NULL)
7330             *bit_offset_p = bit_pos % 8;
7331           if (bit_size_p != NULL)
7332             *bit_size_p = bit_size;
7333           return 1;
7334         }
7335       else if (ada_is_wrapper_field (type, i))
7336         {
7337           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7338                                  field_type_p, byte_offset_p, bit_offset_p,
7339                                  bit_size_p, index_p))
7340             return 1;
7341         }
7342       else if (ada_is_variant_part (type, i))
7343         {
7344           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7345              fixed type?? */
7346           int j;
7347           struct type *field_type
7348             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7349
7350           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7351             {
7352               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7353                                      fld_offset
7354                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7355                                      field_type_p, byte_offset_p,
7356                                      bit_offset_p, bit_size_p, index_p))
7357                 return 1;
7358             }
7359         }
7360       else if (index_p != NULL)
7361         *index_p += 1;
7362     }
7363
7364   /* Field not found so far.  If this is a tagged type which
7365      has a parent, try finding that field in the parent now.  */
7366
7367   if (parent_offset != -1)
7368     {
7369       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7370       int fld_offset = offset + bit_pos / 8;
7371
7372       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7373                              fld_offset, field_type_p, byte_offset_p,
7374                              bit_offset_p, bit_size_p, index_p))
7375         return 1;
7376     }
7377
7378   return 0;
7379 }
7380
7381 /* Number of user-visible fields in record type TYPE.  */
7382
7383 static int
7384 num_visible_fields (struct type *type)
7385 {
7386   int n;
7387
7388   n = 0;
7389   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7390   return n;
7391 }
7392
7393 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7394    and search in it assuming it has (class) type TYPE.
7395    If found, return value, else return NULL.
7396
7397    Searches recursively through wrapper fields (e.g., '_parent').
7398
7399    In the case of homonyms in the tagged types, please refer to the
7400    long explanation in find_struct_field's function documentation.  */
7401
7402 static struct value *
7403 ada_search_struct_field (const char *name, struct value *arg, int offset,
7404                          struct type *type)
7405 {
7406   int i;
7407   int parent_offset = -1;
7408
7409   type = ada_check_typedef (type);
7410   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7411     {
7412       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7413
7414       if (t_field_name == NULL)
7415         continue;
7416
7417       else if (ada_is_parent_field (type, i))
7418         {
7419           /* This is a field pointing us to the parent type of a tagged
7420              type.  As hinted in this function's documentation, we give
7421              preference to fields in the current record first, so what
7422              we do here is just record the index of this field before
7423              we skip it.  If it turns out we couldn't find our field
7424              in the current record, then we'll get back to it and search
7425              inside it whether the field might exist in the parent.  */
7426
7427           parent_offset = i;
7428           continue;
7429         }
7430
7431       else if (field_name_match (t_field_name, name))
7432         return ada_value_primitive_field (arg, offset, i, type);
7433
7434       else if (ada_is_wrapper_field (type, i))
7435         {
7436           struct value *v =     /* Do not let indent join lines here.  */
7437             ada_search_struct_field (name, arg,
7438                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7439                                      TYPE_FIELD_TYPE (type, i));
7440
7441           if (v != NULL)
7442             return v;
7443         }
7444
7445       else if (ada_is_variant_part (type, i))
7446         {
7447           /* PNH: Do we ever get here?  See find_struct_field.  */
7448           int j;
7449           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7450                                                                         i));
7451           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7452
7453           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7454             {
7455               struct value *v = ada_search_struct_field /* Force line
7456                                                            break.  */
7457                 (name, arg,
7458                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7459                  TYPE_FIELD_TYPE (field_type, j));
7460
7461               if (v != NULL)
7462                 return v;
7463             }
7464         }
7465     }
7466
7467   /* Field not found so far.  If this is a tagged type which
7468      has a parent, try finding that field in the parent now.  */
7469
7470   if (parent_offset != -1)
7471     {
7472       struct value *v = ada_search_struct_field (
7473         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7474         TYPE_FIELD_TYPE (type, parent_offset));
7475
7476       if (v != NULL)
7477         return v;
7478     }
7479
7480   return NULL;
7481 }
7482
7483 static struct value *ada_index_struct_field_1 (int *, struct value *,
7484                                                int, struct type *);
7485
7486
7487 /* Return field #INDEX in ARG, where the index is that returned by
7488  * find_struct_field through its INDEX_P argument.  Adjust the address
7489  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7490  * If found, return value, else return NULL.  */
7491
7492 static struct value *
7493 ada_index_struct_field (int index, struct value *arg, int offset,
7494                         struct type *type)
7495 {
7496   return ada_index_struct_field_1 (&index, arg, offset, type);
7497 }
7498
7499
7500 /* Auxiliary function for ada_index_struct_field.  Like
7501  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7502  * *INDEX_P.  */
7503
7504 static struct value *
7505 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7506                           struct type *type)
7507 {
7508   int i;
7509   type = ada_check_typedef (type);
7510
7511   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7512     {
7513       if (TYPE_FIELD_NAME (type, i) == NULL)
7514         continue;
7515       else if (ada_is_wrapper_field (type, i))
7516         {
7517           struct value *v =     /* Do not let indent join lines here.  */
7518             ada_index_struct_field_1 (index_p, arg,
7519                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7520                                       TYPE_FIELD_TYPE (type, i));
7521
7522           if (v != NULL)
7523             return v;
7524         }
7525
7526       else if (ada_is_variant_part (type, i))
7527         {
7528           /* PNH: Do we ever get here?  See ada_search_struct_field,
7529              find_struct_field.  */
7530           error (_("Cannot assign this kind of variant record"));
7531         }
7532       else if (*index_p == 0)
7533         return ada_value_primitive_field (arg, offset, i, type);
7534       else
7535         *index_p -= 1;
7536     }
7537   return NULL;
7538 }
7539
7540 /* Given ARG, a value of type (pointer or reference to a)*
7541    structure/union, extract the component named NAME from the ultimate
7542    target structure/union and return it as a value with its
7543    appropriate type.
7544
7545    The routine searches for NAME among all members of the structure itself
7546    and (recursively) among all members of any wrapper members
7547    (e.g., '_parent').
7548
7549    If NO_ERR, then simply return NULL in case of error, rather than 
7550    calling error.  */
7551
7552 struct value *
7553 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7554 {
7555   struct type *t, *t1;
7556   struct value *v;
7557   int check_tag;
7558
7559   v = NULL;
7560   t1 = t = ada_check_typedef (value_type (arg));
7561   if (TYPE_CODE (t) == TYPE_CODE_REF)
7562     {
7563       t1 = TYPE_TARGET_TYPE (t);
7564       if (t1 == NULL)
7565         goto BadValue;
7566       t1 = ada_check_typedef (t1);
7567       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7568         {
7569           arg = coerce_ref (arg);
7570           t = t1;
7571         }
7572     }
7573
7574   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7575     {
7576       t1 = TYPE_TARGET_TYPE (t);
7577       if (t1 == NULL)
7578         goto BadValue;
7579       t1 = ada_check_typedef (t1);
7580       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7581         {
7582           arg = value_ind (arg);
7583           t = t1;
7584         }
7585       else
7586         break;
7587     }
7588
7589   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7590     goto BadValue;
7591
7592   if (t1 == t)
7593     v = ada_search_struct_field (name, arg, 0, t);
7594   else
7595     {
7596       int bit_offset, bit_size, byte_offset;
7597       struct type *field_type;
7598       CORE_ADDR address;
7599
7600       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7601         address = value_address (ada_value_ind (arg));
7602       else
7603         address = value_address (ada_coerce_ref (arg));
7604
7605       /* Check to see if this is a tagged type.  We also need to handle
7606          the case where the type is a reference to a tagged type, but
7607          we have to be careful to exclude pointers to tagged types.
7608          The latter should be shown as usual (as a pointer), whereas
7609          a reference should mostly be transparent to the user.  */
7610
7611       if (ada_is_tagged_type (t1, 0)
7612           || (TYPE_CODE (t1) == TYPE_CODE_REF
7613               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7614         {
7615           /* We first try to find the searched field in the current type.
7616              If not found then let's look in the fixed type.  */
7617
7618           if (!find_struct_field (name, t1, 0,
7619                                   &field_type, &byte_offset, &bit_offset,
7620                                   &bit_size, NULL))
7621             check_tag = 1;
7622           else
7623             check_tag = 0;
7624         }
7625       else
7626         check_tag = 0;
7627
7628       /* Convert to fixed type in all cases, so that we have proper
7629          offsets to each field in unconstrained record types.  */
7630       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7631                               address, NULL, check_tag);
7632
7633       if (find_struct_field (name, t1, 0,
7634                              &field_type, &byte_offset, &bit_offset,
7635                              &bit_size, NULL))
7636         {
7637           if (bit_size != 0)
7638             {
7639               if (TYPE_CODE (t) == TYPE_CODE_REF)
7640                 arg = ada_coerce_ref (arg);
7641               else
7642                 arg = ada_value_ind (arg);
7643               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7644                                                   bit_offset, bit_size,
7645                                                   field_type);
7646             }
7647           else
7648             v = value_at_lazy (field_type, address + byte_offset);
7649         }
7650     }
7651
7652   if (v != NULL || no_err)
7653     return v;
7654   else
7655     error (_("There is no member named %s."), name);
7656
7657  BadValue:
7658   if (no_err)
7659     return NULL;
7660   else
7661     error (_("Attempt to extract a component of "
7662              "a value that is not a record."));
7663 }
7664
7665 /* Return a string representation of type TYPE.  */
7666
7667 static std::string
7668 type_as_string (struct type *type)
7669 {
7670   string_file tmp_stream;
7671
7672   type_print (type, "", &tmp_stream, -1);
7673
7674   return std::move (tmp_stream.string ());
7675 }
7676
7677 /* Given a type TYPE, look up the type of the component of type named NAME.
7678    If DISPP is non-null, add its byte displacement from the beginning of a
7679    structure (pointed to by a value) of type TYPE to *DISPP (does not
7680    work for packed fields).
7681
7682    Matches any field whose name has NAME as a prefix, possibly
7683    followed by "___".
7684
7685    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7686    be a (pointer or reference)+ to a struct or union, and the
7687    ultimate target type will be searched.
7688
7689    Looks recursively into variant clauses and parent types.
7690
7691    In the case of homonyms in the tagged types, please refer to the
7692    long explanation in find_struct_field's function documentation.
7693
7694    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7695    TYPE is not a type of the right kind.  */
7696
7697 static struct type *
7698 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7699                             int noerr)
7700 {
7701   int i;
7702   int parent_offset = -1;
7703
7704   if (name == NULL)
7705     goto BadName;
7706
7707   if (refok && type != NULL)
7708     while (1)
7709       {
7710         type = ada_check_typedef (type);
7711         if (TYPE_CODE (type) != TYPE_CODE_PTR
7712             && TYPE_CODE (type) != TYPE_CODE_REF)
7713           break;
7714         type = TYPE_TARGET_TYPE (type);
7715       }
7716
7717   if (type == NULL
7718       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7719           && TYPE_CODE (type) != TYPE_CODE_UNION))
7720     {
7721       if (noerr)
7722         return NULL;
7723
7724       error (_("Type %s is not a structure or union type"),
7725              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7726     }
7727
7728   type = to_static_fixed_type (type);
7729
7730   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7731     {
7732       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7733       struct type *t;
7734
7735       if (t_field_name == NULL)
7736         continue;
7737
7738       else if (ada_is_parent_field (type, i))
7739         {
7740           /* This is a field pointing us to the parent type of a tagged
7741              type.  As hinted in this function's documentation, we give
7742              preference to fields in the current record first, so what
7743              we do here is just record the index of this field before
7744              we skip it.  If it turns out we couldn't find our field
7745              in the current record, then we'll get back to it and search
7746              inside it whether the field might exist in the parent.  */
7747
7748           parent_offset = i;
7749           continue;
7750         }
7751
7752       else if (field_name_match (t_field_name, name))
7753         return TYPE_FIELD_TYPE (type, i);
7754
7755       else if (ada_is_wrapper_field (type, i))
7756         {
7757           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7758                                           0, 1);
7759           if (t != NULL)
7760             return t;
7761         }
7762
7763       else if (ada_is_variant_part (type, i))
7764         {
7765           int j;
7766           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7767                                                                         i));
7768
7769           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7770             {
7771               /* FIXME pnh 2008/01/26: We check for a field that is
7772                  NOT wrapped in a struct, since the compiler sometimes
7773                  generates these for unchecked variant types.  Revisit
7774                  if the compiler changes this practice.  */
7775               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7776
7777               if (v_field_name != NULL 
7778                   && field_name_match (v_field_name, name))
7779                 t = TYPE_FIELD_TYPE (field_type, j);
7780               else
7781                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7782                                                                  j),
7783                                                 name, 0, 1);
7784
7785               if (t != NULL)
7786                 return t;
7787             }
7788         }
7789
7790     }
7791
7792     /* Field not found so far.  If this is a tagged type which
7793        has a parent, try finding that field in the parent now.  */
7794
7795     if (parent_offset != -1)
7796       {
7797         struct type *t;
7798
7799         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7800                                         name, 0, 1);
7801         if (t != NULL)
7802           return t;
7803       }
7804
7805 BadName:
7806   if (!noerr)
7807     {
7808       const char *name_str = name != NULL ? name : _("<null>");
7809
7810       error (_("Type %s has no component named %s"),
7811              type_as_string (type).c_str (), name_str);
7812     }
7813
7814   return NULL;
7815 }
7816
7817 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7818    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7819    represents an unchecked union (that is, the variant part of a
7820    record that is named in an Unchecked_Union pragma).  */
7821
7822 static int
7823 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7824 {
7825   const char *discrim_name = ada_variant_discrim_name (var_type);
7826
7827   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7828 }
7829
7830
7831 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7832    within a value of type OUTER_TYPE that is stored in GDB at
7833    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7834    numbering from 0) is applicable.  Returns -1 if none are.  */
7835
7836 int
7837 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7838                            const gdb_byte *outer_valaddr)
7839 {
7840   int others_clause;
7841   int i;
7842   const char *discrim_name = ada_variant_discrim_name (var_type);
7843   struct value *outer;
7844   struct value *discrim;
7845   LONGEST discrim_val;
7846
7847   /* Using plain value_from_contents_and_address here causes problems
7848      because we will end up trying to resolve a type that is currently
7849      being constructed.  */
7850   outer = value_from_contents_and_address_unresolved (outer_type,
7851                                                       outer_valaddr, 0);
7852   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7853   if (discrim == NULL)
7854     return -1;
7855   discrim_val = value_as_long (discrim);
7856
7857   others_clause = -1;
7858   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7859     {
7860       if (ada_is_others_clause (var_type, i))
7861         others_clause = i;
7862       else if (ada_in_variant (discrim_val, var_type, i))
7863         return i;
7864     }
7865
7866   return others_clause;
7867 }
7868 \f
7869
7870
7871                                 /* Dynamic-Sized Records */
7872
7873 /* Strategy: The type ostensibly attached to a value with dynamic size
7874    (i.e., a size that is not statically recorded in the debugging
7875    data) does not accurately reflect the size or layout of the value.
7876    Our strategy is to convert these values to values with accurate,
7877    conventional types that are constructed on the fly.  */
7878
7879 /* There is a subtle and tricky problem here.  In general, we cannot
7880    determine the size of dynamic records without its data.  However,
7881    the 'struct value' data structure, which GDB uses to represent
7882    quantities in the inferior process (the target), requires the size
7883    of the type at the time of its allocation in order to reserve space
7884    for GDB's internal copy of the data.  That's why the
7885    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7886    rather than struct value*s.
7887
7888    However, GDB's internal history variables ($1, $2, etc.) are
7889    struct value*s containing internal copies of the data that are not, in
7890    general, the same as the data at their corresponding addresses in
7891    the target.  Fortunately, the types we give to these values are all
7892    conventional, fixed-size types (as per the strategy described
7893    above), so that we don't usually have to perform the
7894    'to_fixed_xxx_type' conversions to look at their values.
7895    Unfortunately, there is one exception: if one of the internal
7896    history variables is an array whose elements are unconstrained
7897    records, then we will need to create distinct fixed types for each
7898    element selected.  */
7899
7900 /* The upshot of all of this is that many routines take a (type, host
7901    address, target address) triple as arguments to represent a value.
7902    The host address, if non-null, is supposed to contain an internal
7903    copy of the relevant data; otherwise, the program is to consult the
7904    target at the target address.  */
7905
7906 /* Assuming that VAL0 represents a pointer value, the result of
7907    dereferencing it.  Differs from value_ind in its treatment of
7908    dynamic-sized types.  */
7909
7910 struct value *
7911 ada_value_ind (struct value *val0)
7912 {
7913   struct value *val = value_ind (val0);
7914
7915   if (ada_is_tagged_type (value_type (val), 0))
7916     val = ada_tag_value_at_base_address (val);
7917
7918   return ada_to_fixed_value (val);
7919 }
7920
7921 /* The value resulting from dereferencing any "reference to"
7922    qualifiers on VAL0.  */
7923
7924 static struct value *
7925 ada_coerce_ref (struct value *val0)
7926 {
7927   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7928     {
7929       struct value *val = val0;
7930
7931       val = coerce_ref (val);
7932
7933       if (ada_is_tagged_type (value_type (val), 0))
7934         val = ada_tag_value_at_base_address (val);
7935
7936       return ada_to_fixed_value (val);
7937     }
7938   else
7939     return val0;
7940 }
7941
7942 /* Return OFF rounded upward if necessary to a multiple of
7943    ALIGNMENT (a power of 2).  */
7944
7945 static unsigned int
7946 align_value (unsigned int off, unsigned int alignment)
7947 {
7948   return (off + alignment - 1) & ~(alignment - 1);
7949 }
7950
7951 /* Return the bit alignment required for field #F of template type TYPE.  */
7952
7953 static unsigned int
7954 field_alignment (struct type *type, int f)
7955 {
7956   const char *name = TYPE_FIELD_NAME (type, f);
7957   int len;
7958   int align_offset;
7959
7960   /* The field name should never be null, unless the debugging information
7961      is somehow malformed.  In this case, we assume the field does not
7962      require any alignment.  */
7963   if (name == NULL)
7964     return 1;
7965
7966   len = strlen (name);
7967
7968   if (!isdigit (name[len - 1]))
7969     return 1;
7970
7971   if (isdigit (name[len - 2]))
7972     align_offset = len - 2;
7973   else
7974     align_offset = len - 1;
7975
7976   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7977     return TARGET_CHAR_BIT;
7978
7979   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7980 }
7981
7982 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7983
7984 static struct symbol *
7985 ada_find_any_type_symbol (const char *name)
7986 {
7987   struct symbol *sym;
7988
7989   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7990   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7991     return sym;
7992
7993   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7994   return sym;
7995 }
7996
7997 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7998    solely for types defined by debug info, it will not search the GDB
7999    primitive types.  */
8000
8001 static struct type *
8002 ada_find_any_type (const char *name)
8003 {
8004   struct symbol *sym = ada_find_any_type_symbol (name);
8005
8006   if (sym != NULL)
8007     return SYMBOL_TYPE (sym);
8008
8009   return NULL;
8010 }
8011
8012 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8013    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8014    symbol, in which case it is returned.  Otherwise, this looks for
8015    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8016    Return symbol if found, and NULL otherwise.  */
8017
8018 struct symbol *
8019 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8020 {
8021   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8022   struct symbol *sym;
8023
8024   if (strstr (name, "___XR") != NULL)
8025      return name_sym;
8026
8027   sym = find_old_style_renaming_symbol (name, block);
8028
8029   if (sym != NULL)
8030     return sym;
8031
8032   /* Not right yet.  FIXME pnh 7/20/2007.  */
8033   sym = ada_find_any_type_symbol (name);
8034   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8035     return sym;
8036   else
8037     return NULL;
8038 }
8039
8040 static struct symbol *
8041 find_old_style_renaming_symbol (const char *name, const struct block *block)
8042 {
8043   const struct symbol *function_sym = block_linkage_function (block);
8044   char *rename;
8045
8046   if (function_sym != NULL)
8047     {
8048       /* If the symbol is defined inside a function, NAME is not fully
8049          qualified.  This means we need to prepend the function name
8050          as well as adding the ``___XR'' suffix to build the name of
8051          the associated renaming symbol.  */
8052       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8053       /* Function names sometimes contain suffixes used
8054          for instance to qualify nested subprograms.  When building
8055          the XR type name, we need to make sure that this suffix is
8056          not included.  So do not include any suffix in the function
8057          name length below.  */
8058       int function_name_len = ada_name_prefix_len (function_name);
8059       const int rename_len = function_name_len + 2      /*  "__" */
8060         + strlen (name) + 6 /* "___XR\0" */ ;
8061
8062       /* Strip the suffix if necessary.  */
8063       ada_remove_trailing_digits (function_name, &function_name_len);
8064       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8065       ada_remove_Xbn_suffix (function_name, &function_name_len);
8066
8067       /* Library-level functions are a special case, as GNAT adds
8068          a ``_ada_'' prefix to the function name to avoid namespace
8069          pollution.  However, the renaming symbols themselves do not
8070          have this prefix, so we need to skip this prefix if present.  */
8071       if (function_name_len > 5 /* "_ada_" */
8072           && strstr (function_name, "_ada_") == function_name)
8073         {
8074           function_name += 5;
8075           function_name_len -= 5;
8076         }
8077
8078       rename = (char *) alloca (rename_len * sizeof (char));
8079       strncpy (rename, function_name, function_name_len);
8080       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8081                  "__%s___XR", name);
8082     }
8083   else
8084     {
8085       const int rename_len = strlen (name) + 6;
8086
8087       rename = (char *) alloca (rename_len * sizeof (char));
8088       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8089     }
8090
8091   return ada_find_any_type_symbol (rename);
8092 }
8093
8094 /* Because of GNAT encoding conventions, several GDB symbols may match a
8095    given type name.  If the type denoted by TYPE0 is to be preferred to
8096    that of TYPE1 for purposes of type printing, return non-zero;
8097    otherwise return 0.  */
8098
8099 int
8100 ada_prefer_type (struct type *type0, struct type *type1)
8101 {
8102   if (type1 == NULL)
8103     return 1;
8104   else if (type0 == NULL)
8105     return 0;
8106   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8107     return 1;
8108   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8109     return 0;
8110   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8111     return 1;
8112   else if (ada_is_constrained_packed_array_type (type0))
8113     return 1;
8114   else if (ada_is_array_descriptor_type (type0)
8115            && !ada_is_array_descriptor_type (type1))
8116     return 1;
8117   else
8118     {
8119       const char *type0_name = TYPE_NAME (type0);
8120       const char *type1_name = TYPE_NAME (type1);
8121
8122       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8123           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8124         return 1;
8125     }
8126   return 0;
8127 }
8128
8129 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8130    null.  */
8131
8132 const char *
8133 ada_type_name (struct type *type)
8134 {
8135   if (type == NULL)
8136     return NULL;
8137   return TYPE_NAME (type);
8138 }
8139
8140 /* Search the list of "descriptive" types associated to TYPE for a type
8141    whose name is NAME.  */
8142
8143 static struct type *
8144 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8145 {
8146   struct type *result, *tmp;
8147
8148   if (ada_ignore_descriptive_types_p)
8149     return NULL;
8150
8151   /* If there no descriptive-type info, then there is no parallel type
8152      to be found.  */
8153   if (!HAVE_GNAT_AUX_INFO (type))
8154     return NULL;
8155
8156   result = TYPE_DESCRIPTIVE_TYPE (type);
8157   while (result != NULL)
8158     {
8159       const char *result_name = ada_type_name (result);
8160
8161       if (result_name == NULL)
8162         {
8163           warning (_("unexpected null name on descriptive type"));
8164           return NULL;
8165         }
8166
8167       /* If the names match, stop.  */
8168       if (strcmp (result_name, name) == 0)
8169         break;
8170
8171       /* Otherwise, look at the next item on the list, if any.  */
8172       if (HAVE_GNAT_AUX_INFO (result))
8173         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8174       else
8175         tmp = NULL;
8176
8177       /* If not found either, try after having resolved the typedef.  */
8178       if (tmp != NULL)
8179         result = tmp;
8180       else
8181         {
8182           result = check_typedef (result);
8183           if (HAVE_GNAT_AUX_INFO (result))
8184             result = TYPE_DESCRIPTIVE_TYPE (result);
8185           else
8186             result = NULL;
8187         }
8188     }
8189
8190   /* If we didn't find a match, see whether this is a packed array.  With
8191      older compilers, the descriptive type information is either absent or
8192      irrelevant when it comes to packed arrays so the above lookup fails.
8193      Fall back to using a parallel lookup by name in this case.  */
8194   if (result == NULL && ada_is_constrained_packed_array_type (type))
8195     return ada_find_any_type (name);
8196
8197   return result;
8198 }
8199
8200 /* Find a parallel type to TYPE with the specified NAME, using the
8201    descriptive type taken from the debugging information, if available,
8202    and otherwise using the (slower) name-based method.  */
8203
8204 static struct type *
8205 ada_find_parallel_type_with_name (struct type *type, const char *name)
8206 {
8207   struct type *result = NULL;
8208
8209   if (HAVE_GNAT_AUX_INFO (type))
8210     result = find_parallel_type_by_descriptive_type (type, name);
8211   else
8212     result = ada_find_any_type (name);
8213
8214   return result;
8215 }
8216
8217 /* Same as above, but specify the name of the parallel type by appending
8218    SUFFIX to the name of TYPE.  */
8219
8220 struct type *
8221 ada_find_parallel_type (struct type *type, const char *suffix)
8222 {
8223   char *name;
8224   const char *type_name = ada_type_name (type);
8225   int len;
8226
8227   if (type_name == NULL)
8228     return NULL;
8229
8230   len = strlen (type_name);
8231
8232   name = (char *) alloca (len + strlen (suffix) + 1);
8233
8234   strcpy (name, type_name);
8235   strcpy (name + len, suffix);
8236
8237   return ada_find_parallel_type_with_name (type, name);
8238 }
8239
8240 /* If TYPE is a variable-size record type, return the corresponding template
8241    type describing its fields.  Otherwise, return NULL.  */
8242
8243 static struct type *
8244 dynamic_template_type (struct type *type)
8245 {
8246   type = ada_check_typedef (type);
8247
8248   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8249       || ada_type_name (type) == NULL)
8250     return NULL;
8251   else
8252     {
8253       int len = strlen (ada_type_name (type));
8254
8255       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8256         return type;
8257       else
8258         return ada_find_parallel_type (type, "___XVE");
8259     }
8260 }
8261
8262 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8263    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8264
8265 static int
8266 is_dynamic_field (struct type *templ_type, int field_num)
8267 {
8268   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8269
8270   return name != NULL
8271     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8272     && strstr (name, "___XVL") != NULL;
8273 }
8274
8275 /* The index of the variant field of TYPE, or -1 if TYPE does not
8276    represent a variant record type.  */
8277
8278 static int
8279 variant_field_index (struct type *type)
8280 {
8281   int f;
8282
8283   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8284     return -1;
8285
8286   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8287     {
8288       if (ada_is_variant_part (type, f))
8289         return f;
8290     }
8291   return -1;
8292 }
8293
8294 /* A record type with no fields.  */
8295
8296 static struct type *
8297 empty_record (struct type *templ)
8298 {
8299   struct type *type = alloc_type_copy (templ);
8300
8301   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8302   TYPE_NFIELDS (type) = 0;
8303   TYPE_FIELDS (type) = NULL;
8304   INIT_CPLUS_SPECIFIC (type);
8305   TYPE_NAME (type) = "<empty>";
8306   TYPE_LENGTH (type) = 0;
8307   return type;
8308 }
8309
8310 /* An ordinary record type (with fixed-length fields) that describes
8311    the value of type TYPE at VALADDR or ADDRESS (see comments at
8312    the beginning of this section) VAL according to GNAT conventions.
8313    DVAL0 should describe the (portion of a) record that contains any
8314    necessary discriminants.  It should be NULL if value_type (VAL) is
8315    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8316    variant field (unless unchecked) is replaced by a particular branch
8317    of the variant.
8318
8319    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8320    length are not statically known are discarded.  As a consequence,
8321    VALADDR, ADDRESS and DVAL0 are ignored.
8322
8323    NOTE: Limitations: For now, we assume that dynamic fields and
8324    variants occupy whole numbers of bytes.  However, they need not be
8325    byte-aligned.  */
8326
8327 struct type *
8328 ada_template_to_fixed_record_type_1 (struct type *type,
8329                                      const gdb_byte *valaddr,
8330                                      CORE_ADDR address, struct value *dval0,
8331                                      int keep_dynamic_fields)
8332 {
8333   struct value *mark = value_mark ();
8334   struct value *dval;
8335   struct type *rtype;
8336   int nfields, bit_len;
8337   int variant_field;
8338   long off;
8339   int fld_bit_len;
8340   int f;
8341
8342   /* Compute the number of fields in this record type that are going
8343      to be processed: unless keep_dynamic_fields, this includes only
8344      fields whose position and length are static will be processed.  */
8345   if (keep_dynamic_fields)
8346     nfields = TYPE_NFIELDS (type);
8347   else
8348     {
8349       nfields = 0;
8350       while (nfields < TYPE_NFIELDS (type)
8351              && !ada_is_variant_part (type, nfields)
8352              && !is_dynamic_field (type, nfields))
8353         nfields++;
8354     }
8355
8356   rtype = alloc_type_copy (type);
8357   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8358   INIT_CPLUS_SPECIFIC (rtype);
8359   TYPE_NFIELDS (rtype) = nfields;
8360   TYPE_FIELDS (rtype) = (struct field *)
8361     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8362   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8363   TYPE_NAME (rtype) = ada_type_name (type);
8364   TYPE_FIXED_INSTANCE (rtype) = 1;
8365
8366   off = 0;
8367   bit_len = 0;
8368   variant_field = -1;
8369
8370   for (f = 0; f < nfields; f += 1)
8371     {
8372       off = align_value (off, field_alignment (type, f))
8373         + TYPE_FIELD_BITPOS (type, f);
8374       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8375       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8376
8377       if (ada_is_variant_part (type, f))
8378         {
8379           variant_field = f;
8380           fld_bit_len = 0;
8381         }
8382       else if (is_dynamic_field (type, f))
8383         {
8384           const gdb_byte *field_valaddr = valaddr;
8385           CORE_ADDR field_address = address;
8386           struct type *field_type =
8387             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8388
8389           if (dval0 == NULL)
8390             {
8391               /* rtype's length is computed based on the run-time
8392                  value of discriminants.  If the discriminants are not
8393                  initialized, the type size may be completely bogus and
8394                  GDB may fail to allocate a value for it.  So check the
8395                  size first before creating the value.  */
8396               ada_ensure_varsize_limit (rtype);
8397               /* Using plain value_from_contents_and_address here
8398                  causes problems because we will end up trying to
8399                  resolve a type that is currently being
8400                  constructed.  */
8401               dval = value_from_contents_and_address_unresolved (rtype,
8402                                                                  valaddr,
8403                                                                  address);
8404               rtype = value_type (dval);
8405             }
8406           else
8407             dval = dval0;
8408
8409           /* If the type referenced by this field is an aligner type, we need
8410              to unwrap that aligner type, because its size might not be set.
8411              Keeping the aligner type would cause us to compute the wrong
8412              size for this field, impacting the offset of the all the fields
8413              that follow this one.  */
8414           if (ada_is_aligner_type (field_type))
8415             {
8416               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8417
8418               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8419               field_address = cond_offset_target (field_address, field_offset);
8420               field_type = ada_aligned_type (field_type);
8421             }
8422
8423           field_valaddr = cond_offset_host (field_valaddr,
8424                                             off / TARGET_CHAR_BIT);
8425           field_address = cond_offset_target (field_address,
8426                                               off / TARGET_CHAR_BIT);
8427
8428           /* Get the fixed type of the field.  Note that, in this case,
8429              we do not want to get the real type out of the tag: if
8430              the current field is the parent part of a tagged record,
8431              we will get the tag of the object.  Clearly wrong: the real
8432              type of the parent is not the real type of the child.  We
8433              would end up in an infinite loop.  */
8434           field_type = ada_get_base_type (field_type);
8435           field_type = ada_to_fixed_type (field_type, field_valaddr,
8436                                           field_address, dval, 0);
8437           /* If the field size is already larger than the maximum
8438              object size, then the record itself will necessarily
8439              be larger than the maximum object size.  We need to make
8440              this check now, because the size might be so ridiculously
8441              large (due to an uninitialized variable in the inferior)
8442              that it would cause an overflow when adding it to the
8443              record size.  */
8444           ada_ensure_varsize_limit (field_type);
8445
8446           TYPE_FIELD_TYPE (rtype, f) = field_type;
8447           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8448           /* The multiplication can potentially overflow.  But because
8449              the field length has been size-checked just above, and
8450              assuming that the maximum size is a reasonable value,
8451              an overflow should not happen in practice.  So rather than
8452              adding overflow recovery code to this already complex code,
8453              we just assume that it's not going to happen.  */
8454           fld_bit_len =
8455             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8456         }
8457       else
8458         {
8459           /* Note: If this field's type is a typedef, it is important
8460              to preserve the typedef layer.
8461
8462              Otherwise, we might be transforming a typedef to a fat
8463              pointer (encoding a pointer to an unconstrained array),
8464              into a basic fat pointer (encoding an unconstrained
8465              array).  As both types are implemented using the same
8466              structure, the typedef is the only clue which allows us
8467              to distinguish between the two options.  Stripping it
8468              would prevent us from printing this field appropriately.  */
8469           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8470           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8471           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8472             fld_bit_len =
8473               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8474           else
8475             {
8476               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8477
8478               /* We need to be careful of typedefs when computing
8479                  the length of our field.  If this is a typedef,
8480                  get the length of the target type, not the length
8481                  of the typedef.  */
8482               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8483                 field_type = ada_typedef_target_type (field_type);
8484
8485               fld_bit_len =
8486                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8487             }
8488         }
8489       if (off + fld_bit_len > bit_len)
8490         bit_len = off + fld_bit_len;
8491       off += fld_bit_len;
8492       TYPE_LENGTH (rtype) =
8493         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8494     }
8495
8496   /* We handle the variant part, if any, at the end because of certain
8497      odd cases in which it is re-ordered so as NOT to be the last field of
8498      the record.  This can happen in the presence of representation
8499      clauses.  */
8500   if (variant_field >= 0)
8501     {
8502       struct type *branch_type;
8503
8504       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8505
8506       if (dval0 == NULL)
8507         {
8508           /* Using plain value_from_contents_and_address here causes
8509              problems because we will end up trying to resolve a type
8510              that is currently being constructed.  */
8511           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8512                                                              address);
8513           rtype = value_type (dval);
8514         }
8515       else
8516         dval = dval0;
8517
8518       branch_type =
8519         to_fixed_variant_branch_type
8520         (TYPE_FIELD_TYPE (type, variant_field),
8521          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8522          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8523       if (branch_type == NULL)
8524         {
8525           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8526             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8527           TYPE_NFIELDS (rtype) -= 1;
8528         }
8529       else
8530         {
8531           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8532           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8533           fld_bit_len =
8534             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8535             TARGET_CHAR_BIT;
8536           if (off + fld_bit_len > bit_len)
8537             bit_len = off + fld_bit_len;
8538           TYPE_LENGTH (rtype) =
8539             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8540         }
8541     }
8542
8543   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8544      should contain the alignment of that record, which should be a strictly
8545      positive value.  If null or negative, then something is wrong, most
8546      probably in the debug info.  In that case, we don't round up the size
8547      of the resulting type.  If this record is not part of another structure,
8548      the current RTYPE length might be good enough for our purposes.  */
8549   if (TYPE_LENGTH (type) <= 0)
8550     {
8551       if (TYPE_NAME (rtype))
8552         warning (_("Invalid type size for `%s' detected: %d."),
8553                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8554       else
8555         warning (_("Invalid type size for <unnamed> detected: %d."),
8556                  TYPE_LENGTH (type));
8557     }
8558   else
8559     {
8560       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8561                                          TYPE_LENGTH (type));
8562     }
8563
8564   value_free_to_mark (mark);
8565   if (TYPE_LENGTH (rtype) > varsize_limit)
8566     error (_("record type with dynamic size is larger than varsize-limit"));
8567   return rtype;
8568 }
8569
8570 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8571    of 1.  */
8572
8573 static struct type *
8574 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8575                                CORE_ADDR address, struct value *dval0)
8576 {
8577   return ada_template_to_fixed_record_type_1 (type, valaddr,
8578                                               address, dval0, 1);
8579 }
8580
8581 /* An ordinary record type in which ___XVL-convention fields and
8582    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8583    static approximations, containing all possible fields.  Uses
8584    no runtime values.  Useless for use in values, but that's OK,
8585    since the results are used only for type determinations.   Works on both
8586    structs and unions.  Representation note: to save space, we memorize
8587    the result of this function in the TYPE_TARGET_TYPE of the
8588    template type.  */
8589
8590 static struct type *
8591 template_to_static_fixed_type (struct type *type0)
8592 {
8593   struct type *type;
8594   int nfields;
8595   int f;
8596
8597   /* No need no do anything if the input type is already fixed.  */
8598   if (TYPE_FIXED_INSTANCE (type0))
8599     return type0;
8600
8601   /* Likewise if we already have computed the static approximation.  */
8602   if (TYPE_TARGET_TYPE (type0) != NULL)
8603     return TYPE_TARGET_TYPE (type0);
8604
8605   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8606   type = type0;
8607   nfields = TYPE_NFIELDS (type0);
8608
8609   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8610      recompute all over next time.  */
8611   TYPE_TARGET_TYPE (type0) = type;
8612
8613   for (f = 0; f < nfields; f += 1)
8614     {
8615       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8616       struct type *new_type;
8617
8618       if (is_dynamic_field (type0, f))
8619         {
8620           field_type = ada_check_typedef (field_type);
8621           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8622         }
8623       else
8624         new_type = static_unwrap_type (field_type);
8625
8626       if (new_type != field_type)
8627         {
8628           /* Clone TYPE0 only the first time we get a new field type.  */
8629           if (type == type0)
8630             {
8631               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8632               TYPE_CODE (type) = TYPE_CODE (type0);
8633               INIT_CPLUS_SPECIFIC (type);
8634               TYPE_NFIELDS (type) = nfields;
8635               TYPE_FIELDS (type) = (struct field *)
8636                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8637               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8638                       sizeof (struct field) * nfields);
8639               TYPE_NAME (type) = ada_type_name (type0);
8640               TYPE_FIXED_INSTANCE (type) = 1;
8641               TYPE_LENGTH (type) = 0;
8642             }
8643           TYPE_FIELD_TYPE (type, f) = new_type;
8644           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8645         }
8646     }
8647
8648   return type;
8649 }
8650
8651 /* Given an object of type TYPE whose contents are at VALADDR and
8652    whose address in memory is ADDRESS, returns a revision of TYPE,
8653    which should be a non-dynamic-sized record, in which the variant
8654    part, if any, is replaced with the appropriate branch.  Looks
8655    for discriminant values in DVAL0, which can be NULL if the record
8656    contains the necessary discriminant values.  */
8657
8658 static struct type *
8659 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8660                                    CORE_ADDR address, struct value *dval0)
8661 {
8662   struct value *mark = value_mark ();
8663   struct value *dval;
8664   struct type *rtype;
8665   struct type *branch_type;
8666   int nfields = TYPE_NFIELDS (type);
8667   int variant_field = variant_field_index (type);
8668
8669   if (variant_field == -1)
8670     return type;
8671
8672   if (dval0 == NULL)
8673     {
8674       dval = value_from_contents_and_address (type, valaddr, address);
8675       type = value_type (dval);
8676     }
8677   else
8678     dval = dval0;
8679
8680   rtype = alloc_type_copy (type);
8681   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8682   INIT_CPLUS_SPECIFIC (rtype);
8683   TYPE_NFIELDS (rtype) = nfields;
8684   TYPE_FIELDS (rtype) =
8685     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8686   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8687           sizeof (struct field) * nfields);
8688   TYPE_NAME (rtype) = ada_type_name (type);
8689   TYPE_FIXED_INSTANCE (rtype) = 1;
8690   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8691
8692   branch_type = to_fixed_variant_branch_type
8693     (TYPE_FIELD_TYPE (type, variant_field),
8694      cond_offset_host (valaddr,
8695                        TYPE_FIELD_BITPOS (type, variant_field)
8696                        / TARGET_CHAR_BIT),
8697      cond_offset_target (address,
8698                          TYPE_FIELD_BITPOS (type, variant_field)
8699                          / TARGET_CHAR_BIT), dval);
8700   if (branch_type == NULL)
8701     {
8702       int f;
8703
8704       for (f = variant_field + 1; f < nfields; f += 1)
8705         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8706       TYPE_NFIELDS (rtype) -= 1;
8707     }
8708   else
8709     {
8710       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8711       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8712       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8713       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8714     }
8715   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8716
8717   value_free_to_mark (mark);
8718   return rtype;
8719 }
8720
8721 /* An ordinary record type (with fixed-length fields) that describes
8722    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8723    beginning of this section].   Any necessary discriminants' values
8724    should be in DVAL, a record value; it may be NULL if the object
8725    at ADDR itself contains any necessary discriminant values.
8726    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8727    values from the record are needed.  Except in the case that DVAL,
8728    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8729    unchecked) is replaced by a particular branch of the variant.
8730
8731    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8732    is questionable and may be removed.  It can arise during the
8733    processing of an unconstrained-array-of-record type where all the
8734    variant branches have exactly the same size.  This is because in
8735    such cases, the compiler does not bother to use the XVS convention
8736    when encoding the record.  I am currently dubious of this
8737    shortcut and suspect the compiler should be altered.  FIXME.  */
8738
8739 static struct type *
8740 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8741                       CORE_ADDR address, struct value *dval)
8742 {
8743   struct type *templ_type;
8744
8745   if (TYPE_FIXED_INSTANCE (type0))
8746     return type0;
8747
8748   templ_type = dynamic_template_type (type0);
8749
8750   if (templ_type != NULL)
8751     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8752   else if (variant_field_index (type0) >= 0)
8753     {
8754       if (dval == NULL && valaddr == NULL && address == 0)
8755         return type0;
8756       return to_record_with_fixed_variant_part (type0, valaddr, address,
8757                                                 dval);
8758     }
8759   else
8760     {
8761       TYPE_FIXED_INSTANCE (type0) = 1;
8762       return type0;
8763     }
8764
8765 }
8766
8767 /* An ordinary record type (with fixed-length fields) that describes
8768    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8769    union type.  Any necessary discriminants' values should be in DVAL,
8770    a record value.  That is, this routine selects the appropriate
8771    branch of the union at ADDR according to the discriminant value
8772    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8773    it represents a variant subject to a pragma Unchecked_Union.  */
8774
8775 static struct type *
8776 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8777                               CORE_ADDR address, struct value *dval)
8778 {
8779   int which;
8780   struct type *templ_type;
8781   struct type *var_type;
8782
8783   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8784     var_type = TYPE_TARGET_TYPE (var_type0);
8785   else
8786     var_type = var_type0;
8787
8788   templ_type = ada_find_parallel_type (var_type, "___XVU");
8789
8790   if (templ_type != NULL)
8791     var_type = templ_type;
8792
8793   if (is_unchecked_variant (var_type, value_type (dval)))
8794       return var_type0;
8795   which =
8796     ada_which_variant_applies (var_type,
8797                                value_type (dval), value_contents (dval));
8798
8799   if (which < 0)
8800     return empty_record (var_type);
8801   else if (is_dynamic_field (var_type, which))
8802     return to_fixed_record_type
8803       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8804        valaddr, address, dval);
8805   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8806     return
8807       to_fixed_record_type
8808       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8809   else
8810     return TYPE_FIELD_TYPE (var_type, which);
8811 }
8812
8813 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8814    ENCODING_TYPE, a type following the GNAT conventions for discrete
8815    type encodings, only carries redundant information.  */
8816
8817 static int
8818 ada_is_redundant_range_encoding (struct type *range_type,
8819                                  struct type *encoding_type)
8820 {
8821   const char *bounds_str;
8822   int n;
8823   LONGEST lo, hi;
8824
8825   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8826
8827   if (TYPE_CODE (get_base_type (range_type))
8828       != TYPE_CODE (get_base_type (encoding_type)))
8829     {
8830       /* The compiler probably used a simple base type to describe
8831          the range type instead of the range's actual base type,
8832          expecting us to get the real base type from the encoding
8833          anyway.  In this situation, the encoding cannot be ignored
8834          as redundant.  */
8835       return 0;
8836     }
8837
8838   if (is_dynamic_type (range_type))
8839     return 0;
8840
8841   if (TYPE_NAME (encoding_type) == NULL)
8842     return 0;
8843
8844   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8845   if (bounds_str == NULL)
8846     return 0;
8847
8848   n = 8; /* Skip "___XDLU_".  */
8849   if (!ada_scan_number (bounds_str, n, &lo, &n))
8850     return 0;
8851   if (TYPE_LOW_BOUND (range_type) != lo)
8852     return 0;
8853
8854   n += 2; /* Skip the "__" separator between the two bounds.  */
8855   if (!ada_scan_number (bounds_str, n, &hi, &n))
8856     return 0;
8857   if (TYPE_HIGH_BOUND (range_type) != hi)
8858     return 0;
8859
8860   return 1;
8861 }
8862
8863 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8864    a type following the GNAT encoding for describing array type
8865    indices, only carries redundant information.  */
8866
8867 static int
8868 ada_is_redundant_index_type_desc (struct type *array_type,
8869                                   struct type *desc_type)
8870 {
8871   struct type *this_layer = check_typedef (array_type);
8872   int i;
8873
8874   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8875     {
8876       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8877                                             TYPE_FIELD_TYPE (desc_type, i)))
8878         return 0;
8879       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8880     }
8881
8882   return 1;
8883 }
8884
8885 /* Assuming that TYPE0 is an array type describing the type of a value
8886    at ADDR, and that DVAL describes a record containing any
8887    discriminants used in TYPE0, returns a type for the value that
8888    contains no dynamic components (that is, no components whose sizes
8889    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8890    true, gives an error message if the resulting type's size is over
8891    varsize_limit.  */
8892
8893 static struct type *
8894 to_fixed_array_type (struct type *type0, struct value *dval,
8895                      int ignore_too_big)
8896 {
8897   struct type *index_type_desc;
8898   struct type *result;
8899   int constrained_packed_array_p;
8900   static const char *xa_suffix = "___XA";
8901
8902   type0 = ada_check_typedef (type0);
8903   if (TYPE_FIXED_INSTANCE (type0))
8904     return type0;
8905
8906   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8907   if (constrained_packed_array_p)
8908     type0 = decode_constrained_packed_array_type (type0);
8909
8910   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8911
8912   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8913      encoding suffixed with 'P' may still be generated.  If so,
8914      it should be used to find the XA type.  */
8915
8916   if (index_type_desc == NULL)
8917     {
8918       const char *type_name = ada_type_name (type0);
8919
8920       if (type_name != NULL)
8921         {
8922           const int len = strlen (type_name);
8923           char *name = (char *) alloca (len + strlen (xa_suffix));
8924
8925           if (type_name[len - 1] == 'P')
8926             {
8927               strcpy (name, type_name);
8928               strcpy (name + len - 1, xa_suffix);
8929               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8930             }
8931         }
8932     }
8933
8934   ada_fixup_array_indexes_type (index_type_desc);
8935   if (index_type_desc != NULL
8936       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8937     {
8938       /* Ignore this ___XA parallel type, as it does not bring any
8939          useful information.  This allows us to avoid creating fixed
8940          versions of the array's index types, which would be identical
8941          to the original ones.  This, in turn, can also help avoid
8942          the creation of fixed versions of the array itself.  */
8943       index_type_desc = NULL;
8944     }
8945
8946   if (index_type_desc == NULL)
8947     {
8948       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8949
8950       /* NOTE: elt_type---the fixed version of elt_type0---should never
8951          depend on the contents of the array in properly constructed
8952          debugging data.  */
8953       /* Create a fixed version of the array element type.
8954          We're not providing the address of an element here,
8955          and thus the actual object value cannot be inspected to do
8956          the conversion.  This should not be a problem, since arrays of
8957          unconstrained objects are not allowed.  In particular, all
8958          the elements of an array of a tagged type should all be of
8959          the same type specified in the debugging info.  No need to
8960          consult the object tag.  */
8961       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8962
8963       /* Make sure we always create a new array type when dealing with
8964          packed array types, since we're going to fix-up the array
8965          type length and element bitsize a little further down.  */
8966       if (elt_type0 == elt_type && !constrained_packed_array_p)
8967         result = type0;
8968       else
8969         result = create_array_type (alloc_type_copy (type0),
8970                                     elt_type, TYPE_INDEX_TYPE (type0));
8971     }
8972   else
8973     {
8974       int i;
8975       struct type *elt_type0;
8976
8977       elt_type0 = type0;
8978       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8979         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8980
8981       /* NOTE: result---the fixed version of elt_type0---should never
8982          depend on the contents of the array in properly constructed
8983          debugging data.  */
8984       /* Create a fixed version of the array element type.
8985          We're not providing the address of an element here,
8986          and thus the actual object value cannot be inspected to do
8987          the conversion.  This should not be a problem, since arrays of
8988          unconstrained objects are not allowed.  In particular, all
8989          the elements of an array of a tagged type should all be of
8990          the same type specified in the debugging info.  No need to
8991          consult the object tag.  */
8992       result =
8993         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8994
8995       elt_type0 = type0;
8996       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8997         {
8998           struct type *range_type =
8999             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
9000
9001           result = create_array_type (alloc_type_copy (elt_type0),
9002                                       result, range_type);
9003           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
9004         }
9005       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
9006         error (_("array type with dynamic size is larger than varsize-limit"));
9007     }
9008
9009   /* We want to preserve the type name.  This can be useful when
9010      trying to get the type name of a value that has already been
9011      printed (for instance, if the user did "print VAR; whatis $".  */
9012   TYPE_NAME (result) = TYPE_NAME (type0);
9013
9014   if (constrained_packed_array_p)
9015     {
9016       /* So far, the resulting type has been created as if the original
9017          type was a regular (non-packed) array type.  As a result, the
9018          bitsize of the array elements needs to be set again, and the array
9019          length needs to be recomputed based on that bitsize.  */
9020       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9021       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9022
9023       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9024       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9025       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9026         TYPE_LENGTH (result)++;
9027     }
9028
9029   TYPE_FIXED_INSTANCE (result) = 1;
9030   return result;
9031 }
9032
9033
9034 /* A standard type (containing no dynamically sized components)
9035    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9036    DVAL describes a record containing any discriminants used in TYPE0,
9037    and may be NULL if there are none, or if the object of type TYPE at
9038    ADDRESS or in VALADDR contains these discriminants.
9039    
9040    If CHECK_TAG is not null, in the case of tagged types, this function
9041    attempts to locate the object's tag and use it to compute the actual
9042    type.  However, when ADDRESS is null, we cannot use it to determine the
9043    location of the tag, and therefore compute the tagged type's actual type.
9044    So we return the tagged type without consulting the tag.  */
9045    
9046 static struct type *
9047 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9048                    CORE_ADDR address, struct value *dval, int check_tag)
9049 {
9050   type = ada_check_typedef (type);
9051   switch (TYPE_CODE (type))
9052     {
9053     default:
9054       return type;
9055     case TYPE_CODE_STRUCT:
9056       {
9057         struct type *static_type = to_static_fixed_type (type);
9058         struct type *fixed_record_type =
9059           to_fixed_record_type (type, valaddr, address, NULL);
9060
9061         /* If STATIC_TYPE is a tagged type and we know the object's address,
9062            then we can determine its tag, and compute the object's actual
9063            type from there.  Note that we have to use the fixed record
9064            type (the parent part of the record may have dynamic fields
9065            and the way the location of _tag is expressed may depend on
9066            them).  */
9067
9068         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9069           {
9070             struct value *tag =
9071               value_tag_from_contents_and_address
9072               (fixed_record_type,
9073                valaddr,
9074                address);
9075             struct type *real_type = type_from_tag (tag);
9076             struct value *obj =
9077               value_from_contents_and_address (fixed_record_type,
9078                                                valaddr,
9079                                                address);
9080             fixed_record_type = value_type (obj);
9081             if (real_type != NULL)
9082               return to_fixed_record_type
9083                 (real_type, NULL,
9084                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9085           }
9086
9087         /* Check to see if there is a parallel ___XVZ variable.
9088            If there is, then it provides the actual size of our type.  */
9089         else if (ada_type_name (fixed_record_type) != NULL)
9090           {
9091             const char *name = ada_type_name (fixed_record_type);
9092             char *xvz_name
9093               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9094             bool xvz_found = false;
9095             LONGEST size;
9096
9097             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9098             TRY
9099               {
9100                 xvz_found = get_int_var_value (xvz_name, size);
9101               }
9102             CATCH (except, RETURN_MASK_ERROR)
9103               {
9104                 /* We found the variable, but somehow failed to read
9105                    its value.  Rethrow the same error, but with a little
9106                    bit more information, to help the user understand
9107                    what went wrong (Eg: the variable might have been
9108                    optimized out).  */
9109                 throw_error (except.error,
9110                              _("unable to read value of %s (%s)"),
9111                              xvz_name, except.message);
9112               }
9113             END_CATCH
9114
9115             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9116               {
9117                 fixed_record_type = copy_type (fixed_record_type);
9118                 TYPE_LENGTH (fixed_record_type) = size;
9119
9120                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9121                    observed this when the debugging info is STABS, and
9122                    apparently it is something that is hard to fix.
9123
9124                    In practice, we don't need the actual type definition
9125                    at all, because the presence of the XVZ variable allows us
9126                    to assume that there must be a XVS type as well, which we
9127                    should be able to use later, when we need the actual type
9128                    definition.
9129
9130                    In the meantime, pretend that the "fixed" type we are
9131                    returning is NOT a stub, because this can cause trouble
9132                    when using this type to create new types targeting it.
9133                    Indeed, the associated creation routines often check
9134                    whether the target type is a stub and will try to replace
9135                    it, thus using a type with the wrong size.  This, in turn,
9136                    might cause the new type to have the wrong size too.
9137                    Consider the case of an array, for instance, where the size
9138                    of the array is computed from the number of elements in
9139                    our array multiplied by the size of its element.  */
9140                 TYPE_STUB (fixed_record_type) = 0;
9141               }
9142           }
9143         return fixed_record_type;
9144       }
9145     case TYPE_CODE_ARRAY:
9146       return to_fixed_array_type (type, dval, 1);
9147     case TYPE_CODE_UNION:
9148       if (dval == NULL)
9149         return type;
9150       else
9151         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9152     }
9153 }
9154
9155 /* The same as ada_to_fixed_type_1, except that it preserves the type
9156    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9157
9158    The typedef layer needs be preserved in order to differentiate between
9159    arrays and array pointers when both types are implemented using the same
9160    fat pointer.  In the array pointer case, the pointer is encoded as
9161    a typedef of the pointer type.  For instance, considering:
9162
9163           type String_Access is access String;
9164           S1 : String_Access := null;
9165
9166    To the debugger, S1 is defined as a typedef of type String.  But
9167    to the user, it is a pointer.  So if the user tries to print S1,
9168    we should not dereference the array, but print the array address
9169    instead.
9170
9171    If we didn't preserve the typedef layer, we would lose the fact that
9172    the type is to be presented as a pointer (needs de-reference before
9173    being printed).  And we would also use the source-level type name.  */
9174
9175 struct type *
9176 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9177                    CORE_ADDR address, struct value *dval, int check_tag)
9178
9179 {
9180   struct type *fixed_type =
9181     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9182
9183   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9184       then preserve the typedef layer.
9185
9186       Implementation note: We can only check the main-type portion of
9187       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9188       from TYPE now returns a type that has the same instance flags
9189       as TYPE.  For instance, if TYPE is a "typedef const", and its
9190       target type is a "struct", then the typedef elimination will return
9191       a "const" version of the target type.  See check_typedef for more
9192       details about how the typedef layer elimination is done.
9193
9194       brobecker/2010-11-19: It seems to me that the only case where it is
9195       useful to preserve the typedef layer is when dealing with fat pointers.
9196       Perhaps, we could add a check for that and preserve the typedef layer
9197       only in that situation.  But this seems unecessary so far, probably
9198       because we call check_typedef/ada_check_typedef pretty much everywhere.
9199       */
9200   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9201       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9202           == TYPE_MAIN_TYPE (fixed_type)))
9203     return type;
9204
9205   return fixed_type;
9206 }
9207
9208 /* A standard (static-sized) type corresponding as well as possible to
9209    TYPE0, but based on no runtime data.  */
9210
9211 static struct type *
9212 to_static_fixed_type (struct type *type0)
9213 {
9214   struct type *type;
9215
9216   if (type0 == NULL)
9217     return NULL;
9218
9219   if (TYPE_FIXED_INSTANCE (type0))
9220     return type0;
9221
9222   type0 = ada_check_typedef (type0);
9223
9224   switch (TYPE_CODE (type0))
9225     {
9226     default:
9227       return type0;
9228     case TYPE_CODE_STRUCT:
9229       type = dynamic_template_type (type0);
9230       if (type != NULL)
9231         return template_to_static_fixed_type (type);
9232       else
9233         return template_to_static_fixed_type (type0);
9234     case TYPE_CODE_UNION:
9235       type = ada_find_parallel_type (type0, "___XVU");
9236       if (type != NULL)
9237         return template_to_static_fixed_type (type);
9238       else
9239         return template_to_static_fixed_type (type0);
9240     }
9241 }
9242
9243 /* A static approximation of TYPE with all type wrappers removed.  */
9244
9245 static struct type *
9246 static_unwrap_type (struct type *type)
9247 {
9248   if (ada_is_aligner_type (type))
9249     {
9250       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9251       if (ada_type_name (type1) == NULL)
9252         TYPE_NAME (type1) = ada_type_name (type);
9253
9254       return static_unwrap_type (type1);
9255     }
9256   else
9257     {
9258       struct type *raw_real_type = ada_get_base_type (type);
9259
9260       if (raw_real_type == type)
9261         return type;
9262       else
9263         return to_static_fixed_type (raw_real_type);
9264     }
9265 }
9266
9267 /* In some cases, incomplete and private types require
9268    cross-references that are not resolved as records (for example,
9269       type Foo;
9270       type FooP is access Foo;
9271       V: FooP;
9272       type Foo is array ...;
9273    ).  In these cases, since there is no mechanism for producing
9274    cross-references to such types, we instead substitute for FooP a
9275    stub enumeration type that is nowhere resolved, and whose tag is
9276    the name of the actual type.  Call these types "non-record stubs".  */
9277
9278 /* A type equivalent to TYPE that is not a non-record stub, if one
9279    exists, otherwise TYPE.  */
9280
9281 struct type *
9282 ada_check_typedef (struct type *type)
9283 {
9284   if (type == NULL)
9285     return NULL;
9286
9287   /* If our type is an access to an unconstrained array, which is encoded
9288      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9289      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9290      what allows us to distinguish between fat pointers that represent
9291      array types, and fat pointers that represent array access types
9292      (in both cases, the compiler implements them as fat pointers).  */
9293   if (ada_is_access_to_unconstrained_array (type))
9294     return type;
9295
9296   type = check_typedef (type);
9297   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9298       || !TYPE_STUB (type)
9299       || TYPE_NAME (type) == NULL)
9300     return type;
9301   else
9302     {
9303       const char *name = TYPE_NAME (type);
9304       struct type *type1 = ada_find_any_type (name);
9305
9306       if (type1 == NULL)
9307         return type;
9308
9309       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9310          stubs pointing to arrays, as we don't create symbols for array
9311          types, only for the typedef-to-array types).  If that's the case,
9312          strip the typedef layer.  */
9313       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9314         type1 = ada_check_typedef (type1);
9315
9316       return type1;
9317     }
9318 }
9319
9320 /* A value representing the data at VALADDR/ADDRESS as described by
9321    type TYPE0, but with a standard (static-sized) type that correctly
9322    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9323    type, then return VAL0 [this feature is simply to avoid redundant
9324    creation of struct values].  */
9325
9326 static struct value *
9327 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9328                            struct value *val0)
9329 {
9330   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9331
9332   if (type == type0 && val0 != NULL)
9333     return val0;
9334
9335   if (VALUE_LVAL (val0) != lval_memory)
9336     {
9337       /* Our value does not live in memory; it could be a convenience
9338          variable, for instance.  Create a not_lval value using val0's
9339          contents.  */
9340       return value_from_contents (type, value_contents (val0));
9341     }
9342
9343   return value_from_contents_and_address (type, 0, address);
9344 }
9345
9346 /* A value representing VAL, but with a standard (static-sized) type
9347    that correctly describes it.  Does not necessarily create a new
9348    value.  */
9349
9350 struct value *
9351 ada_to_fixed_value (struct value *val)
9352 {
9353   val = unwrap_value (val);
9354   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9355   return val;
9356 }
9357 \f
9358
9359 /* Attributes */
9360
9361 /* Table mapping attribute numbers to names.
9362    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9363
9364 static const char *attribute_names[] = {
9365   "<?>",
9366
9367   "first",
9368   "last",
9369   "length",
9370   "image",
9371   "max",
9372   "min",
9373   "modulus",
9374   "pos",
9375   "size",
9376   "tag",
9377   "val",
9378   0
9379 };
9380
9381 const char *
9382 ada_attribute_name (enum exp_opcode n)
9383 {
9384   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9385     return attribute_names[n - OP_ATR_FIRST + 1];
9386   else
9387     return attribute_names[0];
9388 }
9389
9390 /* Evaluate the 'POS attribute applied to ARG.  */
9391
9392 static LONGEST
9393 pos_atr (struct value *arg)
9394 {
9395   struct value *val = coerce_ref (arg);
9396   struct type *type = value_type (val);
9397   LONGEST result;
9398
9399   if (!discrete_type_p (type))
9400     error (_("'POS only defined on discrete types"));
9401
9402   if (!discrete_position (type, value_as_long (val), &result))
9403     error (_("enumeration value is invalid: can't find 'POS"));
9404
9405   return result;
9406 }
9407
9408 static struct value *
9409 value_pos_atr (struct type *type, struct value *arg)
9410 {
9411   return value_from_longest (type, pos_atr (arg));
9412 }
9413
9414 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9415
9416 static struct value *
9417 value_val_atr (struct type *type, struct value *arg)
9418 {
9419   if (!discrete_type_p (type))
9420     error (_("'VAL only defined on discrete types"));
9421   if (!integer_type_p (value_type (arg)))
9422     error (_("'VAL requires integral argument"));
9423
9424   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9425     {
9426       long pos = value_as_long (arg);
9427
9428       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9429         error (_("argument to 'VAL out of range"));
9430       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9431     }
9432   else
9433     return value_from_longest (type, value_as_long (arg));
9434 }
9435 \f
9436
9437                                 /* Evaluation */
9438
9439 /* True if TYPE appears to be an Ada character type.
9440    [At the moment, this is true only for Character and Wide_Character;
9441    It is a heuristic test that could stand improvement].  */
9442
9443 int
9444 ada_is_character_type (struct type *type)
9445 {
9446   const char *name;
9447
9448   /* If the type code says it's a character, then assume it really is,
9449      and don't check any further.  */
9450   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9451     return 1;
9452   
9453   /* Otherwise, assume it's a character type iff it is a discrete type
9454      with a known character type name.  */
9455   name = ada_type_name (type);
9456   return (name != NULL
9457           && (TYPE_CODE (type) == TYPE_CODE_INT
9458               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9459           && (strcmp (name, "character") == 0
9460               || strcmp (name, "wide_character") == 0
9461               || strcmp (name, "wide_wide_character") == 0
9462               || strcmp (name, "unsigned char") == 0));
9463 }
9464
9465 /* True if TYPE appears to be an Ada string type.  */
9466
9467 int
9468 ada_is_string_type (struct type *type)
9469 {
9470   type = ada_check_typedef (type);
9471   if (type != NULL
9472       && TYPE_CODE (type) != TYPE_CODE_PTR
9473       && (ada_is_simple_array_type (type)
9474           || ada_is_array_descriptor_type (type))
9475       && ada_array_arity (type) == 1)
9476     {
9477       struct type *elttype = ada_array_element_type (type, 1);
9478
9479       return ada_is_character_type (elttype);
9480     }
9481   else
9482     return 0;
9483 }
9484
9485 /* The compiler sometimes provides a parallel XVS type for a given
9486    PAD type.  Normally, it is safe to follow the PAD type directly,
9487    but older versions of the compiler have a bug that causes the offset
9488    of its "F" field to be wrong.  Following that field in that case
9489    would lead to incorrect results, but this can be worked around
9490    by ignoring the PAD type and using the associated XVS type instead.
9491
9492    Set to True if the debugger should trust the contents of PAD types.
9493    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9494 static int trust_pad_over_xvs = 1;
9495
9496 /* True if TYPE is a struct type introduced by the compiler to force the
9497    alignment of a value.  Such types have a single field with a
9498    distinctive name.  */
9499
9500 int
9501 ada_is_aligner_type (struct type *type)
9502 {
9503   type = ada_check_typedef (type);
9504
9505   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9506     return 0;
9507
9508   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9509           && TYPE_NFIELDS (type) == 1
9510           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9511 }
9512
9513 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9514    the parallel type.  */
9515
9516 struct type *
9517 ada_get_base_type (struct type *raw_type)
9518 {
9519   struct type *real_type_namer;
9520   struct type *raw_real_type;
9521
9522   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9523     return raw_type;
9524
9525   if (ada_is_aligner_type (raw_type))
9526     /* The encoding specifies that we should always use the aligner type.
9527        So, even if this aligner type has an associated XVS type, we should
9528        simply ignore it.
9529
9530        According to the compiler gurus, an XVS type parallel to an aligner
9531        type may exist because of a stabs limitation.  In stabs, aligner
9532        types are empty because the field has a variable-sized type, and
9533        thus cannot actually be used as an aligner type.  As a result,
9534        we need the associated parallel XVS type to decode the type.
9535        Since the policy in the compiler is to not change the internal
9536        representation based on the debugging info format, we sometimes
9537        end up having a redundant XVS type parallel to the aligner type.  */
9538     return raw_type;
9539
9540   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9541   if (real_type_namer == NULL
9542       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9543       || TYPE_NFIELDS (real_type_namer) != 1)
9544     return raw_type;
9545
9546   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9547     {
9548       /* This is an older encoding form where the base type needs to be
9549          looked up by name.  We prefer the newer enconding because it is
9550          more efficient.  */
9551       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9552       if (raw_real_type == NULL)
9553         return raw_type;
9554       else
9555         return raw_real_type;
9556     }
9557
9558   /* The field in our XVS type is a reference to the base type.  */
9559   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9560 }
9561
9562 /* The type of value designated by TYPE, with all aligners removed.  */
9563
9564 struct type *
9565 ada_aligned_type (struct type *type)
9566 {
9567   if (ada_is_aligner_type (type))
9568     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9569   else
9570     return ada_get_base_type (type);
9571 }
9572
9573
9574 /* The address of the aligned value in an object at address VALADDR
9575    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9576
9577 const gdb_byte *
9578 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9579 {
9580   if (ada_is_aligner_type (type))
9581     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9582                                    valaddr +
9583                                    TYPE_FIELD_BITPOS (type,
9584                                                       0) / TARGET_CHAR_BIT);
9585   else
9586     return valaddr;
9587 }
9588
9589
9590
9591 /* The printed representation of an enumeration literal with encoded
9592    name NAME.  The value is good to the next call of ada_enum_name.  */
9593 const char *
9594 ada_enum_name (const char *name)
9595 {
9596   static char *result;
9597   static size_t result_len = 0;
9598   const char *tmp;
9599
9600   /* First, unqualify the enumeration name:
9601      1. Search for the last '.' character.  If we find one, then skip
9602      all the preceding characters, the unqualified name starts
9603      right after that dot.
9604      2. Otherwise, we may be debugging on a target where the compiler
9605      translates dots into "__".  Search forward for double underscores,
9606      but stop searching when we hit an overloading suffix, which is
9607      of the form "__" followed by digits.  */
9608
9609   tmp = strrchr (name, '.');
9610   if (tmp != NULL)
9611     name = tmp + 1;
9612   else
9613     {
9614       while ((tmp = strstr (name, "__")) != NULL)
9615         {
9616           if (isdigit (tmp[2]))
9617             break;
9618           else
9619             name = tmp + 2;
9620         }
9621     }
9622
9623   if (name[0] == 'Q')
9624     {
9625       int v;
9626
9627       if (name[1] == 'U' || name[1] == 'W')
9628         {
9629           if (sscanf (name + 2, "%x", &v) != 1)
9630             return name;
9631         }
9632       else
9633         return name;
9634
9635       GROW_VECT (result, result_len, 16);
9636       if (isascii (v) && isprint (v))
9637         xsnprintf (result, result_len, "'%c'", v);
9638       else if (name[1] == 'U')
9639         xsnprintf (result, result_len, "[\"%02x\"]", v);
9640       else
9641         xsnprintf (result, result_len, "[\"%04x\"]", v);
9642
9643       return result;
9644     }
9645   else
9646     {
9647       tmp = strstr (name, "__");
9648       if (tmp == NULL)
9649         tmp = strstr (name, "$");
9650       if (tmp != NULL)
9651         {
9652           GROW_VECT (result, result_len, tmp - name + 1);
9653           strncpy (result, name, tmp - name);
9654           result[tmp - name] = '\0';
9655           return result;
9656         }
9657
9658       return name;
9659     }
9660 }
9661
9662 /* Evaluate the subexpression of EXP starting at *POS as for
9663    evaluate_type, updating *POS to point just past the evaluated
9664    expression.  */
9665
9666 static struct value *
9667 evaluate_subexp_type (struct expression *exp, int *pos)
9668 {
9669   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9670 }
9671
9672 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9673    value it wraps.  */
9674
9675 static struct value *
9676 unwrap_value (struct value *val)
9677 {
9678   struct type *type = ada_check_typedef (value_type (val));
9679
9680   if (ada_is_aligner_type (type))
9681     {
9682       struct value *v = ada_value_struct_elt (val, "F", 0);
9683       struct type *val_type = ada_check_typedef (value_type (v));
9684
9685       if (ada_type_name (val_type) == NULL)
9686         TYPE_NAME (val_type) = ada_type_name (type);
9687
9688       return unwrap_value (v);
9689     }
9690   else
9691     {
9692       struct type *raw_real_type =
9693         ada_check_typedef (ada_get_base_type (type));
9694
9695       /* If there is no parallel XVS or XVE type, then the value is
9696          already unwrapped.  Return it without further modification.  */
9697       if ((type == raw_real_type)
9698           && ada_find_parallel_type (type, "___XVE") == NULL)
9699         return val;
9700
9701       return
9702         coerce_unspec_val_to_type
9703         (val, ada_to_fixed_type (raw_real_type, 0,
9704                                  value_address (val),
9705                                  NULL, 1));
9706     }
9707 }
9708
9709 static struct value *
9710 cast_from_fixed (struct type *type, struct value *arg)
9711 {
9712   struct value *scale = ada_scaling_factor (value_type (arg));
9713   arg = value_cast (value_type (scale), arg);
9714
9715   arg = value_binop (arg, scale, BINOP_MUL);
9716   return value_cast (type, arg);
9717 }
9718
9719 static struct value *
9720 cast_to_fixed (struct type *type, struct value *arg)
9721 {
9722   if (type == value_type (arg))
9723     return arg;
9724
9725   struct value *scale = ada_scaling_factor (type);
9726   if (ada_is_fixed_point_type (value_type (arg)))
9727     arg = cast_from_fixed (value_type (scale), arg);
9728   else
9729     arg = value_cast (value_type (scale), arg);
9730
9731   arg = value_binop (arg, scale, BINOP_DIV);
9732   return value_cast (type, arg);
9733 }
9734
9735 /* Given two array types T1 and T2, return nonzero iff both arrays
9736    contain the same number of elements.  */
9737
9738 static int
9739 ada_same_array_size_p (struct type *t1, struct type *t2)
9740 {
9741   LONGEST lo1, hi1, lo2, hi2;
9742
9743   /* Get the array bounds in order to verify that the size of
9744      the two arrays match.  */
9745   if (!get_array_bounds (t1, &lo1, &hi1)
9746       || !get_array_bounds (t2, &lo2, &hi2))
9747     error (_("unable to determine array bounds"));
9748
9749   /* To make things easier for size comparison, normalize a bit
9750      the case of empty arrays by making sure that the difference
9751      between upper bound and lower bound is always -1.  */
9752   if (lo1 > hi1)
9753     hi1 = lo1 - 1;
9754   if (lo2 > hi2)
9755     hi2 = lo2 - 1;
9756
9757   return (hi1 - lo1 == hi2 - lo2);
9758 }
9759
9760 /* Assuming that VAL is an array of integrals, and TYPE represents
9761    an array with the same number of elements, but with wider integral
9762    elements, return an array "casted" to TYPE.  In practice, this
9763    means that the returned array is built by casting each element
9764    of the original array into TYPE's (wider) element type.  */
9765
9766 static struct value *
9767 ada_promote_array_of_integrals (struct type *type, struct value *val)
9768 {
9769   struct type *elt_type = TYPE_TARGET_TYPE (type);
9770   LONGEST lo, hi;
9771   struct value *res;
9772   LONGEST i;
9773
9774   /* Verify that both val and type are arrays of scalars, and
9775      that the size of val's elements is smaller than the size
9776      of type's element.  */
9777   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9778   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9779   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9780   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9781   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9782               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9783
9784   if (!get_array_bounds (type, &lo, &hi))
9785     error (_("unable to determine array bounds"));
9786
9787   res = allocate_value (type);
9788
9789   /* Promote each array element.  */
9790   for (i = 0; i < hi - lo + 1; i++)
9791     {
9792       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9793
9794       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9795               value_contents_all (elt), TYPE_LENGTH (elt_type));
9796     }
9797
9798   return res;
9799 }
9800
9801 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9802    return the converted value.  */
9803
9804 static struct value *
9805 coerce_for_assign (struct type *type, struct value *val)
9806 {
9807   struct type *type2 = value_type (val);
9808
9809   if (type == type2)
9810     return val;
9811
9812   type2 = ada_check_typedef (type2);
9813   type = ada_check_typedef (type);
9814
9815   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9816       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9817     {
9818       val = ada_value_ind (val);
9819       type2 = value_type (val);
9820     }
9821
9822   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9823       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9824     {
9825       if (!ada_same_array_size_p (type, type2))
9826         error (_("cannot assign arrays of different length"));
9827
9828       if (is_integral_type (TYPE_TARGET_TYPE (type))
9829           && is_integral_type (TYPE_TARGET_TYPE (type2))
9830           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9831                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9832         {
9833           /* Allow implicit promotion of the array elements to
9834              a wider type.  */
9835           return ada_promote_array_of_integrals (type, val);
9836         }
9837
9838       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9839           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9840         error (_("Incompatible types in assignment"));
9841       deprecated_set_value_type (val, type);
9842     }
9843   return val;
9844 }
9845
9846 static struct value *
9847 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9848 {
9849   struct value *val;
9850   struct type *type1, *type2;
9851   LONGEST v, v1, v2;
9852
9853   arg1 = coerce_ref (arg1);
9854   arg2 = coerce_ref (arg2);
9855   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9856   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9857
9858   if (TYPE_CODE (type1) != TYPE_CODE_INT
9859       || TYPE_CODE (type2) != TYPE_CODE_INT)
9860     return value_binop (arg1, arg2, op);
9861
9862   switch (op)
9863     {
9864     case BINOP_MOD:
9865     case BINOP_DIV:
9866     case BINOP_REM:
9867       break;
9868     default:
9869       return value_binop (arg1, arg2, op);
9870     }
9871
9872   v2 = value_as_long (arg2);
9873   if (v2 == 0)
9874     error (_("second operand of %s must not be zero."), op_string (op));
9875
9876   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9877     return value_binop (arg1, arg2, op);
9878
9879   v1 = value_as_long (arg1);
9880   switch (op)
9881     {
9882     case BINOP_DIV:
9883       v = v1 / v2;
9884       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9885         v += v > 0 ? -1 : 1;
9886       break;
9887     case BINOP_REM:
9888       v = v1 % v2;
9889       if (v * v1 < 0)
9890         v -= v2;
9891       break;
9892     default:
9893       /* Should not reach this point.  */
9894       v = 0;
9895     }
9896
9897   val = allocate_value (type1);
9898   store_unsigned_integer (value_contents_raw (val),
9899                           TYPE_LENGTH (value_type (val)),
9900                           gdbarch_byte_order (get_type_arch (type1)), v);
9901   return val;
9902 }
9903
9904 static int
9905 ada_value_equal (struct value *arg1, struct value *arg2)
9906 {
9907   if (ada_is_direct_array_type (value_type (arg1))
9908       || ada_is_direct_array_type (value_type (arg2)))
9909     {
9910       struct type *arg1_type, *arg2_type;
9911
9912       /* Automatically dereference any array reference before
9913          we attempt to perform the comparison.  */
9914       arg1 = ada_coerce_ref (arg1);
9915       arg2 = ada_coerce_ref (arg2);
9916
9917       arg1 = ada_coerce_to_simple_array (arg1);
9918       arg2 = ada_coerce_to_simple_array (arg2);
9919
9920       arg1_type = ada_check_typedef (value_type (arg1));
9921       arg2_type = ada_check_typedef (value_type (arg2));
9922
9923       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9924           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9925         error (_("Attempt to compare array with non-array"));
9926       /* FIXME: The following works only for types whose
9927          representations use all bits (no padding or undefined bits)
9928          and do not have user-defined equality.  */
9929       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9930               && memcmp (value_contents (arg1), value_contents (arg2),
9931                          TYPE_LENGTH (arg1_type)) == 0);
9932     }
9933   return value_equal (arg1, arg2);
9934 }
9935
9936 /* Total number of component associations in the aggregate starting at
9937    index PC in EXP.  Assumes that index PC is the start of an
9938    OP_AGGREGATE.  */
9939
9940 static int
9941 num_component_specs (struct expression *exp, int pc)
9942 {
9943   int n, m, i;
9944
9945   m = exp->elts[pc + 1].longconst;
9946   pc += 3;
9947   n = 0;
9948   for (i = 0; i < m; i += 1)
9949     {
9950       switch (exp->elts[pc].opcode) 
9951         {
9952         default:
9953           n += 1;
9954           break;
9955         case OP_CHOICES:
9956           n += exp->elts[pc + 1].longconst;
9957           break;
9958         }
9959       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9960     }
9961   return n;
9962 }
9963
9964 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9965    component of LHS (a simple array or a record), updating *POS past
9966    the expression, assuming that LHS is contained in CONTAINER.  Does
9967    not modify the inferior's memory, nor does it modify LHS (unless
9968    LHS == CONTAINER).  */
9969
9970 static void
9971 assign_component (struct value *container, struct value *lhs, LONGEST index,
9972                   struct expression *exp, int *pos)
9973 {
9974   struct value *mark = value_mark ();
9975   struct value *elt;
9976   struct type *lhs_type = check_typedef (value_type (lhs));
9977
9978   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9979     {
9980       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9981       struct value *index_val = value_from_longest (index_type, index);
9982
9983       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9984     }
9985   else
9986     {
9987       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9988       elt = ada_to_fixed_value (elt);
9989     }
9990
9991   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9992     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9993   else
9994     value_assign_to_component (container, elt, 
9995                                ada_evaluate_subexp (NULL, exp, pos, 
9996                                                     EVAL_NORMAL));
9997
9998   value_free_to_mark (mark);
9999 }
10000
10001 /* Assuming that LHS represents an lvalue having a record or array
10002    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
10003    of that aggregate's value to LHS, advancing *POS past the
10004    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10005    lvalue containing LHS (possibly LHS itself).  Does not modify
10006    the inferior's memory, nor does it modify the contents of 
10007    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10008
10009 static struct value *
10010 assign_aggregate (struct value *container, 
10011                   struct value *lhs, struct expression *exp, 
10012                   int *pos, enum noside noside)
10013 {
10014   struct type *lhs_type;
10015   int n = exp->elts[*pos+1].longconst;
10016   LONGEST low_index, high_index;
10017   int num_specs;
10018   LONGEST *indices;
10019   int max_indices, num_indices;
10020   int i;
10021
10022   *pos += 3;
10023   if (noside != EVAL_NORMAL)
10024     {
10025       for (i = 0; i < n; i += 1)
10026         ada_evaluate_subexp (NULL, exp, pos, noside);
10027       return container;
10028     }
10029
10030   container = ada_coerce_ref (container);
10031   if (ada_is_direct_array_type (value_type (container)))
10032     container = ada_coerce_to_simple_array (container);
10033   lhs = ada_coerce_ref (lhs);
10034   if (!deprecated_value_modifiable (lhs))
10035     error (_("Left operand of assignment is not a modifiable lvalue."));
10036
10037   lhs_type = check_typedef (value_type (lhs));
10038   if (ada_is_direct_array_type (lhs_type))
10039     {
10040       lhs = ada_coerce_to_simple_array (lhs);
10041       lhs_type = check_typedef (value_type (lhs));
10042       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10043       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10044     }
10045   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10046     {
10047       low_index = 0;
10048       high_index = num_visible_fields (lhs_type) - 1;
10049     }
10050   else
10051     error (_("Left-hand side must be array or record."));
10052
10053   num_specs = num_component_specs (exp, *pos - 3);
10054   max_indices = 4 * num_specs + 4;
10055   indices = XALLOCAVEC (LONGEST, max_indices);
10056   indices[0] = indices[1] = low_index - 1;
10057   indices[2] = indices[3] = high_index + 1;
10058   num_indices = 4;
10059
10060   for (i = 0; i < n; i += 1)
10061     {
10062       switch (exp->elts[*pos].opcode)
10063         {
10064           case OP_CHOICES:
10065             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10066                                            &num_indices, max_indices,
10067                                            low_index, high_index);
10068             break;
10069           case OP_POSITIONAL:
10070             aggregate_assign_positional (container, lhs, exp, pos, indices,
10071                                          &num_indices, max_indices,
10072                                          low_index, high_index);
10073             break;
10074           case OP_OTHERS:
10075             if (i != n-1)
10076               error (_("Misplaced 'others' clause"));
10077             aggregate_assign_others (container, lhs, exp, pos, indices, 
10078                                      num_indices, low_index, high_index);
10079             break;
10080           default:
10081             error (_("Internal error: bad aggregate clause"));
10082         }
10083     }
10084
10085   return container;
10086 }
10087               
10088 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10089    construct at *POS, updating *POS past the construct, given that
10090    the positions are relative to lower bound LOW, where HIGH is the 
10091    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10092    updating *NUM_INDICES as needed.  CONTAINER is as for
10093    assign_aggregate.  */
10094 static void
10095 aggregate_assign_positional (struct value *container,
10096                              struct value *lhs, struct expression *exp,
10097                              int *pos, LONGEST *indices, int *num_indices,
10098                              int max_indices, LONGEST low, LONGEST high) 
10099 {
10100   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10101   
10102   if (ind - 1 == high)
10103     warning (_("Extra components in aggregate ignored."));
10104   if (ind <= high)
10105     {
10106       add_component_interval (ind, ind, indices, num_indices, max_indices);
10107       *pos += 3;
10108       assign_component (container, lhs, ind, exp, pos);
10109     }
10110   else
10111     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10112 }
10113
10114 /* Assign into the components of LHS indexed by the OP_CHOICES
10115    construct at *POS, updating *POS past the construct, given that
10116    the allowable indices are LOW..HIGH.  Record the indices assigned
10117    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10118    needed.  CONTAINER is as for assign_aggregate.  */
10119 static void
10120 aggregate_assign_from_choices (struct value *container,
10121                                struct value *lhs, struct expression *exp,
10122                                int *pos, LONGEST *indices, int *num_indices,
10123                                int max_indices, LONGEST low, LONGEST high) 
10124 {
10125   int j;
10126   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10127   int choice_pos, expr_pc;
10128   int is_array = ada_is_direct_array_type (value_type (lhs));
10129
10130   choice_pos = *pos += 3;
10131
10132   for (j = 0; j < n_choices; j += 1)
10133     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10134   expr_pc = *pos;
10135   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10136   
10137   for (j = 0; j < n_choices; j += 1)
10138     {
10139       LONGEST lower, upper;
10140       enum exp_opcode op = exp->elts[choice_pos].opcode;
10141
10142       if (op == OP_DISCRETE_RANGE)
10143         {
10144           choice_pos += 1;
10145           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10146                                                       EVAL_NORMAL));
10147           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10148                                                       EVAL_NORMAL));
10149         }
10150       else if (is_array)
10151         {
10152           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10153                                                       EVAL_NORMAL));
10154           upper = lower;
10155         }
10156       else
10157         {
10158           int ind;
10159           const char *name;
10160
10161           switch (op)
10162             {
10163             case OP_NAME:
10164               name = &exp->elts[choice_pos + 2].string;
10165               break;
10166             case OP_VAR_VALUE:
10167               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10168               break;
10169             default:
10170               error (_("Invalid record component association."));
10171             }
10172           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10173           ind = 0;
10174           if (! find_struct_field (name, value_type (lhs), 0, 
10175                                    NULL, NULL, NULL, NULL, &ind))
10176             error (_("Unknown component name: %s."), name);
10177           lower = upper = ind;
10178         }
10179
10180       if (lower <= upper && (lower < low || upper > high))
10181         error (_("Index in component association out of bounds."));
10182
10183       add_component_interval (lower, upper, indices, num_indices,
10184                               max_indices);
10185       while (lower <= upper)
10186         {
10187           int pos1;
10188
10189           pos1 = expr_pc;
10190           assign_component (container, lhs, lower, exp, &pos1);
10191           lower += 1;
10192         }
10193     }
10194 }
10195
10196 /* Assign the value of the expression in the OP_OTHERS construct in
10197    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10198    have not been previously assigned.  The index intervals already assigned
10199    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10200    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10201 static void
10202 aggregate_assign_others (struct value *container,
10203                          struct value *lhs, struct expression *exp,
10204                          int *pos, LONGEST *indices, int num_indices,
10205                          LONGEST low, LONGEST high) 
10206 {
10207   int i;
10208   int expr_pc = *pos + 1;
10209   
10210   for (i = 0; i < num_indices - 2; i += 2)
10211     {
10212       LONGEST ind;
10213
10214       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10215         {
10216           int localpos;
10217
10218           localpos = expr_pc;
10219           assign_component (container, lhs, ind, exp, &localpos);
10220         }
10221     }
10222   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10223 }
10224
10225 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10226    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10227    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10228    MAX_SIZE.  The resulting intervals do not overlap.  */
10229 static void
10230 add_component_interval (LONGEST low, LONGEST high, 
10231                         LONGEST* indices, int *size, int max_size)
10232 {
10233   int i, j;
10234
10235   for (i = 0; i < *size; i += 2) {
10236     if (high >= indices[i] && low <= indices[i + 1])
10237       {
10238         int kh;
10239
10240         for (kh = i + 2; kh < *size; kh += 2)
10241           if (high < indices[kh])
10242             break;
10243         if (low < indices[i])
10244           indices[i] = low;
10245         indices[i + 1] = indices[kh - 1];
10246         if (high > indices[i + 1])
10247           indices[i + 1] = high;
10248         memcpy (indices + i + 2, indices + kh, *size - kh);
10249         *size -= kh - i - 2;
10250         return;
10251       }
10252     else if (high < indices[i])
10253       break;
10254   }
10255         
10256   if (*size == max_size)
10257     error (_("Internal error: miscounted aggregate components."));
10258   *size += 2;
10259   for (j = *size-1; j >= i+2; j -= 1)
10260     indices[j] = indices[j - 2];
10261   indices[i] = low;
10262   indices[i + 1] = high;
10263 }
10264
10265 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10266    is different.  */
10267
10268 static struct value *
10269 ada_value_cast (struct type *type, struct value *arg2)
10270 {
10271   if (type == ada_check_typedef (value_type (arg2)))
10272     return arg2;
10273
10274   if (ada_is_fixed_point_type (type))
10275     return cast_to_fixed (type, arg2);
10276
10277   if (ada_is_fixed_point_type (value_type (arg2)))
10278     return cast_from_fixed (type, arg2);
10279
10280   return value_cast (type, arg2);
10281 }
10282
10283 /*  Evaluating Ada expressions, and printing their result.
10284     ------------------------------------------------------
10285
10286     1. Introduction:
10287     ----------------
10288
10289     We usually evaluate an Ada expression in order to print its value.
10290     We also evaluate an expression in order to print its type, which
10291     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10292     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10293     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10294     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10295     similar.
10296
10297     Evaluating expressions is a little more complicated for Ada entities
10298     than it is for entities in languages such as C.  The main reason for
10299     this is that Ada provides types whose definition might be dynamic.
10300     One example of such types is variant records.  Or another example
10301     would be an array whose bounds can only be known at run time.
10302
10303     The following description is a general guide as to what should be
10304     done (and what should NOT be done) in order to evaluate an expression
10305     involving such types, and when.  This does not cover how the semantic
10306     information is encoded by GNAT as this is covered separatly.  For the
10307     document used as the reference for the GNAT encoding, see exp_dbug.ads
10308     in the GNAT sources.
10309
10310     Ideally, we should embed each part of this description next to its
10311     associated code.  Unfortunately, the amount of code is so vast right
10312     now that it's hard to see whether the code handling a particular
10313     situation might be duplicated or not.  One day, when the code is
10314     cleaned up, this guide might become redundant with the comments
10315     inserted in the code, and we might want to remove it.
10316
10317     2. ``Fixing'' an Entity, the Simple Case:
10318     -----------------------------------------
10319
10320     When evaluating Ada expressions, the tricky issue is that they may
10321     reference entities whose type contents and size are not statically
10322     known.  Consider for instance a variant record:
10323
10324        type Rec (Empty : Boolean := True) is record
10325           case Empty is
10326              when True => null;
10327              when False => Value : Integer;
10328           end case;
10329        end record;
10330        Yes : Rec := (Empty => False, Value => 1);
10331        No  : Rec := (empty => True);
10332
10333     The size and contents of that record depends on the value of the
10334     descriminant (Rec.Empty).  At this point, neither the debugging
10335     information nor the associated type structure in GDB are able to
10336     express such dynamic types.  So what the debugger does is to create
10337     "fixed" versions of the type that applies to the specific object.
10338     We also informally refer to this opperation as "fixing" an object,
10339     which means creating its associated fixed type.
10340
10341     Example: when printing the value of variable "Yes" above, its fixed
10342     type would look like this:
10343
10344        type Rec is record
10345           Empty : Boolean;
10346           Value : Integer;
10347        end record;
10348
10349     On the other hand, if we printed the value of "No", its fixed type
10350     would become:
10351
10352        type Rec is record
10353           Empty : Boolean;
10354        end record;
10355
10356     Things become a little more complicated when trying to fix an entity
10357     with a dynamic type that directly contains another dynamic type,
10358     such as an array of variant records, for instance.  There are
10359     two possible cases: Arrays, and records.
10360
10361     3. ``Fixing'' Arrays:
10362     ---------------------
10363
10364     The type structure in GDB describes an array in terms of its bounds,
10365     and the type of its elements.  By design, all elements in the array
10366     have the same type and we cannot represent an array of variant elements
10367     using the current type structure in GDB.  When fixing an array,
10368     we cannot fix the array element, as we would potentially need one
10369     fixed type per element of the array.  As a result, the best we can do
10370     when fixing an array is to produce an array whose bounds and size
10371     are correct (allowing us to read it from memory), but without having
10372     touched its element type.  Fixing each element will be done later,
10373     when (if) necessary.
10374
10375     Arrays are a little simpler to handle than records, because the same
10376     amount of memory is allocated for each element of the array, even if
10377     the amount of space actually used by each element differs from element
10378     to element.  Consider for instance the following array of type Rec:
10379
10380        type Rec_Array is array (1 .. 2) of Rec;
10381
10382     The actual amount of memory occupied by each element might be different
10383     from element to element, depending on the value of their discriminant.
10384     But the amount of space reserved for each element in the array remains
10385     fixed regardless.  So we simply need to compute that size using
10386     the debugging information available, from which we can then determine
10387     the array size (we multiply the number of elements of the array by
10388     the size of each element).
10389
10390     The simplest case is when we have an array of a constrained element
10391     type. For instance, consider the following type declarations:
10392
10393         type Bounded_String (Max_Size : Integer) is
10394            Length : Integer;
10395            Buffer : String (1 .. Max_Size);
10396         end record;
10397         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10398
10399     In this case, the compiler describes the array as an array of
10400     variable-size elements (identified by its XVS suffix) for which
10401     the size can be read in the parallel XVZ variable.
10402
10403     In the case of an array of an unconstrained element type, the compiler
10404     wraps the array element inside a private PAD type.  This type should not
10405     be shown to the user, and must be "unwrap"'ed before printing.  Note
10406     that we also use the adjective "aligner" in our code to designate
10407     these wrapper types.
10408
10409     In some cases, the size allocated for each element is statically
10410     known.  In that case, the PAD type already has the correct size,
10411     and the array element should remain unfixed.
10412
10413     But there are cases when this size is not statically known.
10414     For instance, assuming that "Five" is an integer variable:
10415
10416         type Dynamic is array (1 .. Five) of Integer;
10417         type Wrapper (Has_Length : Boolean := False) is record
10418            Data : Dynamic;
10419            case Has_Length is
10420               when True => Length : Integer;
10421               when False => null;
10422            end case;
10423         end record;
10424         type Wrapper_Array is array (1 .. 2) of Wrapper;
10425
10426         Hello : Wrapper_Array := (others => (Has_Length => True,
10427                                              Data => (others => 17),
10428                                              Length => 1));
10429
10430
10431     The debugging info would describe variable Hello as being an
10432     array of a PAD type.  The size of that PAD type is not statically
10433     known, but can be determined using a parallel XVZ variable.
10434     In that case, a copy of the PAD type with the correct size should
10435     be used for the fixed array.
10436
10437     3. ``Fixing'' record type objects:
10438     ----------------------------------
10439
10440     Things are slightly different from arrays in the case of dynamic
10441     record types.  In this case, in order to compute the associated
10442     fixed type, we need to determine the size and offset of each of
10443     its components.  This, in turn, requires us to compute the fixed
10444     type of each of these components.
10445
10446     Consider for instance the example:
10447
10448         type Bounded_String (Max_Size : Natural) is record
10449            Str : String (1 .. Max_Size);
10450            Length : Natural;
10451         end record;
10452         My_String : Bounded_String (Max_Size => 10);
10453
10454     In that case, the position of field "Length" depends on the size
10455     of field Str, which itself depends on the value of the Max_Size
10456     discriminant.  In order to fix the type of variable My_String,
10457     we need to fix the type of field Str.  Therefore, fixing a variant
10458     record requires us to fix each of its components.
10459
10460     However, if a component does not have a dynamic size, the component
10461     should not be fixed.  In particular, fields that use a PAD type
10462     should not fixed.  Here is an example where this might happen
10463     (assuming type Rec above):
10464
10465        type Container (Big : Boolean) is record
10466           First : Rec;
10467           After : Integer;
10468           case Big is
10469              when True => Another : Integer;
10470              when False => null;
10471           end case;
10472        end record;
10473        My_Container : Container := (Big => False,
10474                                     First => (Empty => True),
10475                                     After => 42);
10476
10477     In that example, the compiler creates a PAD type for component First,
10478     whose size is constant, and then positions the component After just
10479     right after it.  The offset of component After is therefore constant
10480     in this case.
10481
10482     The debugger computes the position of each field based on an algorithm
10483     that uses, among other things, the actual position and size of the field
10484     preceding it.  Let's now imagine that the user is trying to print
10485     the value of My_Container.  If the type fixing was recursive, we would
10486     end up computing the offset of field After based on the size of the
10487     fixed version of field First.  And since in our example First has
10488     only one actual field, the size of the fixed type is actually smaller
10489     than the amount of space allocated to that field, and thus we would
10490     compute the wrong offset of field After.
10491
10492     To make things more complicated, we need to watch out for dynamic
10493     components of variant records (identified by the ___XVL suffix in
10494     the component name).  Even if the target type is a PAD type, the size
10495     of that type might not be statically known.  So the PAD type needs
10496     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10497     we might end up with the wrong size for our component.  This can be
10498     observed with the following type declarations:
10499
10500         type Octal is new Integer range 0 .. 7;
10501         type Octal_Array is array (Positive range <>) of Octal;
10502         pragma Pack (Octal_Array);
10503
10504         type Octal_Buffer (Size : Positive) is record
10505            Buffer : Octal_Array (1 .. Size);
10506            Length : Integer;
10507         end record;
10508
10509     In that case, Buffer is a PAD type whose size is unset and needs
10510     to be computed by fixing the unwrapped type.
10511
10512     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10513     ----------------------------------------------------------
10514
10515     Lastly, when should the sub-elements of an entity that remained unfixed
10516     thus far, be actually fixed?
10517
10518     The answer is: Only when referencing that element.  For instance
10519     when selecting one component of a record, this specific component
10520     should be fixed at that point in time.  Or when printing the value
10521     of a record, each component should be fixed before its value gets
10522     printed.  Similarly for arrays, the element of the array should be
10523     fixed when printing each element of the array, or when extracting
10524     one element out of that array.  On the other hand, fixing should
10525     not be performed on the elements when taking a slice of an array!
10526
10527     Note that one of the side effects of miscomputing the offset and
10528     size of each field is that we end up also miscomputing the size
10529     of the containing type.  This can have adverse results when computing
10530     the value of an entity.  GDB fetches the value of an entity based
10531     on the size of its type, and thus a wrong size causes GDB to fetch
10532     the wrong amount of memory.  In the case where the computed size is
10533     too small, GDB fetches too little data to print the value of our
10534     entity.  Results in this case are unpredictable, as we usually read
10535     past the buffer containing the data =:-o.  */
10536
10537 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10538    for that subexpression cast to TO_TYPE.  Advance *POS over the
10539    subexpression.  */
10540
10541 static value *
10542 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10543                               enum noside noside, struct type *to_type)
10544 {
10545   int pc = *pos;
10546
10547   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10548       || exp->elts[pc].opcode == OP_VAR_VALUE)
10549     {
10550       (*pos) += 4;
10551
10552       value *val;
10553       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10554         {
10555           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10556             return value_zero (to_type, not_lval);
10557
10558           val = evaluate_var_msym_value (noside,
10559                                          exp->elts[pc + 1].objfile,
10560                                          exp->elts[pc + 2].msymbol);
10561         }
10562       else
10563         val = evaluate_var_value (noside,
10564                                   exp->elts[pc + 1].block,
10565                                   exp->elts[pc + 2].symbol);
10566
10567       if (noside == EVAL_SKIP)
10568         return eval_skip_value (exp);
10569
10570       val = ada_value_cast (to_type, val);
10571
10572       /* Follow the Ada language semantics that do not allow taking
10573          an address of the result of a cast (view conversion in Ada).  */
10574       if (VALUE_LVAL (val) == lval_memory)
10575         {
10576           if (value_lazy (val))
10577             value_fetch_lazy (val);
10578           VALUE_LVAL (val) = not_lval;
10579         }
10580       return val;
10581     }
10582
10583   value *val = evaluate_subexp (to_type, exp, pos, noside);
10584   if (noside == EVAL_SKIP)
10585     return eval_skip_value (exp);
10586   return ada_value_cast (to_type, val);
10587 }
10588
10589 /* Implement the evaluate_exp routine in the exp_descriptor structure
10590    for the Ada language.  */
10591
10592 static struct value *
10593 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10594                      int *pos, enum noside noside)
10595 {
10596   enum exp_opcode op;
10597   int tem;
10598   int pc;
10599   int preeval_pos;
10600   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10601   struct type *type;
10602   int nargs, oplen;
10603   struct value **argvec;
10604
10605   pc = *pos;
10606   *pos += 1;
10607   op = exp->elts[pc].opcode;
10608
10609   switch (op)
10610     {
10611     default:
10612       *pos -= 1;
10613       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10614
10615       if (noside == EVAL_NORMAL)
10616         arg1 = unwrap_value (arg1);
10617
10618       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10619          then we need to perform the conversion manually, because
10620          evaluate_subexp_standard doesn't do it.  This conversion is
10621          necessary in Ada because the different kinds of float/fixed
10622          types in Ada have different representations.
10623
10624          Similarly, we need to perform the conversion from OP_LONG
10625          ourselves.  */
10626       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10627         arg1 = ada_value_cast (expect_type, arg1);
10628
10629       return arg1;
10630
10631     case OP_STRING:
10632       {
10633         struct value *result;
10634
10635         *pos -= 1;
10636         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10637         /* The result type will have code OP_STRING, bashed there from 
10638            OP_ARRAY.  Bash it back.  */
10639         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10640           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10641         return result;
10642       }
10643
10644     case UNOP_CAST:
10645       (*pos) += 2;
10646       type = exp->elts[pc + 1].type;
10647       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10648
10649     case UNOP_QUAL:
10650       (*pos) += 2;
10651       type = exp->elts[pc + 1].type;
10652       return ada_evaluate_subexp (type, exp, pos, noside);
10653
10654     case BINOP_ASSIGN:
10655       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10656       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10657         {
10658           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10659           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10660             return arg1;
10661           return ada_value_assign (arg1, arg1);
10662         }
10663       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10664          except if the lhs of our assignment is a convenience variable.
10665          In the case of assigning to a convenience variable, the lhs
10666          should be exactly the result of the evaluation of the rhs.  */
10667       type = value_type (arg1);
10668       if (VALUE_LVAL (arg1) == lval_internalvar)
10669          type = NULL;
10670       arg2 = evaluate_subexp (type, exp, pos, noside);
10671       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10672         return arg1;
10673       if (ada_is_fixed_point_type (value_type (arg1)))
10674         arg2 = cast_to_fixed (value_type (arg1), arg2);
10675       else if (ada_is_fixed_point_type (value_type (arg2)))
10676         error
10677           (_("Fixed-point values must be assigned to fixed-point variables"));
10678       else
10679         arg2 = coerce_for_assign (value_type (arg1), arg2);
10680       return ada_value_assign (arg1, arg2);
10681
10682     case BINOP_ADD:
10683       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10684       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10685       if (noside == EVAL_SKIP)
10686         goto nosideret;
10687       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10688         return (value_from_longest
10689                  (value_type (arg1),
10690                   value_as_long (arg1) + value_as_long (arg2)));
10691       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10692         return (value_from_longest
10693                  (value_type (arg2),
10694                   value_as_long (arg1) + value_as_long (arg2)));
10695       if ((ada_is_fixed_point_type (value_type (arg1))
10696            || ada_is_fixed_point_type (value_type (arg2)))
10697           && value_type (arg1) != value_type (arg2))
10698         error (_("Operands of fixed-point addition must have the same type"));
10699       /* Do the addition, and cast the result to the type of the first
10700          argument.  We cannot cast the result to a reference type, so if
10701          ARG1 is a reference type, find its underlying type.  */
10702       type = value_type (arg1);
10703       while (TYPE_CODE (type) == TYPE_CODE_REF)
10704         type = TYPE_TARGET_TYPE (type);
10705       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10706       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10707
10708     case BINOP_SUB:
10709       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10710       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10711       if (noside == EVAL_SKIP)
10712         goto nosideret;
10713       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10714         return (value_from_longest
10715                  (value_type (arg1),
10716                   value_as_long (arg1) - value_as_long (arg2)));
10717       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10718         return (value_from_longest
10719                  (value_type (arg2),
10720                   value_as_long (arg1) - value_as_long (arg2)));
10721       if ((ada_is_fixed_point_type (value_type (arg1))
10722            || ada_is_fixed_point_type (value_type (arg2)))
10723           && value_type (arg1) != value_type (arg2))
10724         error (_("Operands of fixed-point subtraction "
10725                  "must have the same type"));
10726       /* Do the substraction, and cast the result to the type of the first
10727          argument.  We cannot cast the result to a reference type, so if
10728          ARG1 is a reference type, find its underlying type.  */
10729       type = value_type (arg1);
10730       while (TYPE_CODE (type) == TYPE_CODE_REF)
10731         type = TYPE_TARGET_TYPE (type);
10732       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10733       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10734
10735     case BINOP_MUL:
10736     case BINOP_DIV:
10737     case BINOP_REM:
10738     case BINOP_MOD:
10739       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10740       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10741       if (noside == EVAL_SKIP)
10742         goto nosideret;
10743       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10744         {
10745           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10746           return value_zero (value_type (arg1), not_lval);
10747         }
10748       else
10749         {
10750           type = builtin_type (exp->gdbarch)->builtin_double;
10751           if (ada_is_fixed_point_type (value_type (arg1)))
10752             arg1 = cast_from_fixed (type, arg1);
10753           if (ada_is_fixed_point_type (value_type (arg2)))
10754             arg2 = cast_from_fixed (type, arg2);
10755           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10756           return ada_value_binop (arg1, arg2, op);
10757         }
10758
10759     case BINOP_EQUAL:
10760     case BINOP_NOTEQUAL:
10761       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10762       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10763       if (noside == EVAL_SKIP)
10764         goto nosideret;
10765       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10766         tem = 0;
10767       else
10768         {
10769           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10770           tem = ada_value_equal (arg1, arg2);
10771         }
10772       if (op == BINOP_NOTEQUAL)
10773         tem = !tem;
10774       type = language_bool_type (exp->language_defn, exp->gdbarch);
10775       return value_from_longest (type, (LONGEST) tem);
10776
10777     case UNOP_NEG:
10778       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10779       if (noside == EVAL_SKIP)
10780         goto nosideret;
10781       else if (ada_is_fixed_point_type (value_type (arg1)))
10782         return value_cast (value_type (arg1), value_neg (arg1));
10783       else
10784         {
10785           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10786           return value_neg (arg1);
10787         }
10788
10789     case BINOP_LOGICAL_AND:
10790     case BINOP_LOGICAL_OR:
10791     case UNOP_LOGICAL_NOT:
10792       {
10793         struct value *val;
10794
10795         *pos -= 1;
10796         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10797         type = language_bool_type (exp->language_defn, exp->gdbarch);
10798         return value_cast (type, val);
10799       }
10800
10801     case BINOP_BITWISE_AND:
10802     case BINOP_BITWISE_IOR:
10803     case BINOP_BITWISE_XOR:
10804       {
10805         struct value *val;
10806
10807         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10808         *pos = pc;
10809         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10810
10811         return value_cast (value_type (arg1), val);
10812       }
10813
10814     case OP_VAR_VALUE:
10815       *pos -= 1;
10816
10817       if (noside == EVAL_SKIP)
10818         {
10819           *pos += 4;
10820           goto nosideret;
10821         }
10822
10823       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10824         /* Only encountered when an unresolved symbol occurs in a
10825            context other than a function call, in which case, it is
10826            invalid.  */
10827         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10828                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10829
10830       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10831         {
10832           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10833           /* Check to see if this is a tagged type.  We also need to handle
10834              the case where the type is a reference to a tagged type, but
10835              we have to be careful to exclude pointers to tagged types.
10836              The latter should be shown as usual (as a pointer), whereas
10837              a reference should mostly be transparent to the user.  */
10838           if (ada_is_tagged_type (type, 0)
10839               || (TYPE_CODE (type) == TYPE_CODE_REF
10840                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10841             {
10842               /* Tagged types are a little special in the fact that the real
10843                  type is dynamic and can only be determined by inspecting the
10844                  object's tag.  This means that we need to get the object's
10845                  value first (EVAL_NORMAL) and then extract the actual object
10846                  type from its tag.
10847
10848                  Note that we cannot skip the final step where we extract
10849                  the object type from its tag, because the EVAL_NORMAL phase
10850                  results in dynamic components being resolved into fixed ones.
10851                  This can cause problems when trying to print the type
10852                  description of tagged types whose parent has a dynamic size:
10853                  We use the type name of the "_parent" component in order
10854                  to print the name of the ancestor type in the type description.
10855                  If that component had a dynamic size, the resolution into
10856                  a fixed type would result in the loss of that type name,
10857                  thus preventing us from printing the name of the ancestor
10858                  type in the type description.  */
10859               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10860
10861               if (TYPE_CODE (type) != TYPE_CODE_REF)
10862                 {
10863                   struct type *actual_type;
10864
10865                   actual_type = type_from_tag (ada_value_tag (arg1));
10866                   if (actual_type == NULL)
10867                     /* If, for some reason, we were unable to determine
10868                        the actual type from the tag, then use the static
10869                        approximation that we just computed as a fallback.
10870                        This can happen if the debugging information is
10871                        incomplete, for instance.  */
10872                     actual_type = type;
10873                   return value_zero (actual_type, not_lval);
10874                 }
10875               else
10876                 {
10877                   /* In the case of a ref, ada_coerce_ref takes care
10878                      of determining the actual type.  But the evaluation
10879                      should return a ref as it should be valid to ask
10880                      for its address; so rebuild a ref after coerce.  */
10881                   arg1 = ada_coerce_ref (arg1);
10882                   return value_ref (arg1, TYPE_CODE_REF);
10883                 }
10884             }
10885
10886           /* Records and unions for which GNAT encodings have been
10887              generated need to be statically fixed as well.
10888              Otherwise, non-static fixing produces a type where
10889              all dynamic properties are removed, which prevents "ptype"
10890              from being able to completely describe the type.
10891              For instance, a case statement in a variant record would be
10892              replaced by the relevant components based on the actual
10893              value of the discriminants.  */
10894           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10895                && dynamic_template_type (type) != NULL)
10896               || (TYPE_CODE (type) == TYPE_CODE_UNION
10897                   && ada_find_parallel_type (type, "___XVU") != NULL))
10898             {
10899               *pos += 4;
10900               return value_zero (to_static_fixed_type (type), not_lval);
10901             }
10902         }
10903
10904       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10905       return ada_to_fixed_value (arg1);
10906
10907     case OP_FUNCALL:
10908       (*pos) += 2;
10909
10910       /* Allocate arg vector, including space for the function to be
10911          called in argvec[0] and a terminating NULL.  */
10912       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10913       argvec = XALLOCAVEC (struct value *, nargs + 2);
10914
10915       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10916           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10917         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10918                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10919       else
10920         {
10921           for (tem = 0; tem <= nargs; tem += 1)
10922             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10923           argvec[tem] = 0;
10924
10925           if (noside == EVAL_SKIP)
10926             goto nosideret;
10927         }
10928
10929       if (ada_is_constrained_packed_array_type
10930           (desc_base_type (value_type (argvec[0]))))
10931         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10932       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10933                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10934         /* This is a packed array that has already been fixed, and
10935            therefore already coerced to a simple array.  Nothing further
10936            to do.  */
10937         ;
10938       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10939         {
10940           /* Make sure we dereference references so that all the code below
10941              feels like it's really handling the referenced value.  Wrapping
10942              types (for alignment) may be there, so make sure we strip them as
10943              well.  */
10944           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10945         }
10946       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10947                && VALUE_LVAL (argvec[0]) == lval_memory)
10948         argvec[0] = value_addr (argvec[0]);
10949
10950       type = ada_check_typedef (value_type (argvec[0]));
10951
10952       /* Ada allows us to implicitly dereference arrays when subscripting
10953          them.  So, if this is an array typedef (encoding use for array
10954          access types encoded as fat pointers), strip it now.  */
10955       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10956         type = ada_typedef_target_type (type);
10957
10958       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10959         {
10960           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10961             {
10962             case TYPE_CODE_FUNC:
10963               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10964               break;
10965             case TYPE_CODE_ARRAY:
10966               break;
10967             case TYPE_CODE_STRUCT:
10968               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10969                 argvec[0] = ada_value_ind (argvec[0]);
10970               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10971               break;
10972             default:
10973               error (_("cannot subscript or call something of type `%s'"),
10974                      ada_type_name (value_type (argvec[0])));
10975               break;
10976             }
10977         }
10978
10979       switch (TYPE_CODE (type))
10980         {
10981         case TYPE_CODE_FUNC:
10982           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10983             {
10984               if (TYPE_TARGET_TYPE (type) == NULL)
10985                 error_call_unknown_return_type (NULL);
10986               return allocate_value (TYPE_TARGET_TYPE (type));
10987             }
10988           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
10989         case TYPE_CODE_INTERNAL_FUNCTION:
10990           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10991             /* We don't know anything about what the internal
10992                function might return, but we have to return
10993                something.  */
10994             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10995                                not_lval);
10996           else
10997             return call_internal_function (exp->gdbarch, exp->language_defn,
10998                                            argvec[0], nargs, argvec + 1);
10999
11000         case TYPE_CODE_STRUCT:
11001           {
11002             int arity;
11003
11004             arity = ada_array_arity (type);
11005             type = ada_array_element_type (type, nargs);
11006             if (type == NULL)
11007               error (_("cannot subscript or call a record"));
11008             if (arity != nargs)
11009               error (_("wrong number of subscripts; expecting %d"), arity);
11010             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11011               return value_zero (ada_aligned_type (type), lval_memory);
11012             return
11013               unwrap_value (ada_value_subscript
11014                             (argvec[0], nargs, argvec + 1));
11015           }
11016         case TYPE_CODE_ARRAY:
11017           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11018             {
11019               type = ada_array_element_type (type, nargs);
11020               if (type == NULL)
11021                 error (_("element type of array unknown"));
11022               else
11023                 return value_zero (ada_aligned_type (type), lval_memory);
11024             }
11025           return
11026             unwrap_value (ada_value_subscript
11027                           (ada_coerce_to_simple_array (argvec[0]),
11028                            nargs, argvec + 1));
11029         case TYPE_CODE_PTR:     /* Pointer to array */
11030           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11031             {
11032               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11033               type = ada_array_element_type (type, nargs);
11034               if (type == NULL)
11035                 error (_("element type of array unknown"));
11036               else
11037                 return value_zero (ada_aligned_type (type), lval_memory);
11038             }
11039           return
11040             unwrap_value (ada_value_ptr_subscript (argvec[0],
11041                                                    nargs, argvec + 1));
11042
11043         default:
11044           error (_("Attempt to index or call something other than an "
11045                    "array or function"));
11046         }
11047
11048     case TERNOP_SLICE:
11049       {
11050         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11051         struct value *low_bound_val =
11052           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11053         struct value *high_bound_val =
11054           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11055         LONGEST low_bound;
11056         LONGEST high_bound;
11057
11058         low_bound_val = coerce_ref (low_bound_val);
11059         high_bound_val = coerce_ref (high_bound_val);
11060         low_bound = value_as_long (low_bound_val);
11061         high_bound = value_as_long (high_bound_val);
11062
11063         if (noside == EVAL_SKIP)
11064           goto nosideret;
11065
11066         /* If this is a reference to an aligner type, then remove all
11067            the aligners.  */
11068         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11069             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11070           TYPE_TARGET_TYPE (value_type (array)) =
11071             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11072
11073         if (ada_is_constrained_packed_array_type (value_type (array)))
11074           error (_("cannot slice a packed array"));
11075
11076         /* If this is a reference to an array or an array lvalue,
11077            convert to a pointer.  */
11078         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11079             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11080                 && VALUE_LVAL (array) == lval_memory))
11081           array = value_addr (array);
11082
11083         if (noside == EVAL_AVOID_SIDE_EFFECTS
11084             && ada_is_array_descriptor_type (ada_check_typedef
11085                                              (value_type (array))))
11086           return empty_array (ada_type_of_array (array, 0), low_bound);
11087
11088         array = ada_coerce_to_simple_array_ptr (array);
11089
11090         /* If we have more than one level of pointer indirection,
11091            dereference the value until we get only one level.  */
11092         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11093                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11094                      == TYPE_CODE_PTR))
11095           array = value_ind (array);
11096
11097         /* Make sure we really do have an array type before going further,
11098            to avoid a SEGV when trying to get the index type or the target
11099            type later down the road if the debug info generated by
11100            the compiler is incorrect or incomplete.  */
11101         if (!ada_is_simple_array_type (value_type (array)))
11102           error (_("cannot take slice of non-array"));
11103
11104         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11105             == TYPE_CODE_PTR)
11106           {
11107             struct type *type0 = ada_check_typedef (value_type (array));
11108
11109             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11110               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11111             else
11112               {
11113                 struct type *arr_type0 =
11114                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11115
11116                 return ada_value_slice_from_ptr (array, arr_type0,
11117                                                  longest_to_int (low_bound),
11118                                                  longest_to_int (high_bound));
11119               }
11120           }
11121         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11122           return array;
11123         else if (high_bound < low_bound)
11124           return empty_array (value_type (array), low_bound);
11125         else
11126           return ada_value_slice (array, longest_to_int (low_bound),
11127                                   longest_to_int (high_bound));
11128       }
11129
11130     case UNOP_IN_RANGE:
11131       (*pos) += 2;
11132       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11133       type = check_typedef (exp->elts[pc + 1].type);
11134
11135       if (noside == EVAL_SKIP)
11136         goto nosideret;
11137
11138       switch (TYPE_CODE (type))
11139         {
11140         default:
11141           lim_warning (_("Membership test incompletely implemented; "
11142                          "always returns true"));
11143           type = language_bool_type (exp->language_defn, exp->gdbarch);
11144           return value_from_longest (type, (LONGEST) 1);
11145
11146         case TYPE_CODE_RANGE:
11147           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11148           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11149           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11150           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11151           type = language_bool_type (exp->language_defn, exp->gdbarch);
11152           return
11153             value_from_longest (type,
11154                                 (value_less (arg1, arg3)
11155                                  || value_equal (arg1, arg3))
11156                                 && (value_less (arg2, arg1)
11157                                     || value_equal (arg2, arg1)));
11158         }
11159
11160     case BINOP_IN_BOUNDS:
11161       (*pos) += 2;
11162       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11163       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11164
11165       if (noside == EVAL_SKIP)
11166         goto nosideret;
11167
11168       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11169         {
11170           type = language_bool_type (exp->language_defn, exp->gdbarch);
11171           return value_zero (type, not_lval);
11172         }
11173
11174       tem = longest_to_int (exp->elts[pc + 1].longconst);
11175
11176       type = ada_index_type (value_type (arg2), tem, "range");
11177       if (!type)
11178         type = value_type (arg1);
11179
11180       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11181       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11182
11183       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11184       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11185       type = language_bool_type (exp->language_defn, exp->gdbarch);
11186       return
11187         value_from_longest (type,
11188                             (value_less (arg1, arg3)
11189                              || value_equal (arg1, arg3))
11190                             && (value_less (arg2, arg1)
11191                                 || value_equal (arg2, arg1)));
11192
11193     case TERNOP_IN_RANGE:
11194       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11195       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11196       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11197
11198       if (noside == EVAL_SKIP)
11199         goto nosideret;
11200
11201       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11202       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11203       type = language_bool_type (exp->language_defn, exp->gdbarch);
11204       return
11205         value_from_longest (type,
11206                             (value_less (arg1, arg3)
11207                              || value_equal (arg1, arg3))
11208                             && (value_less (arg2, arg1)
11209                                 || value_equal (arg2, arg1)));
11210
11211     case OP_ATR_FIRST:
11212     case OP_ATR_LAST:
11213     case OP_ATR_LENGTH:
11214       {
11215         struct type *type_arg;
11216
11217         if (exp->elts[*pos].opcode == OP_TYPE)
11218           {
11219             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11220             arg1 = NULL;
11221             type_arg = check_typedef (exp->elts[pc + 2].type);
11222           }
11223         else
11224           {
11225             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11226             type_arg = NULL;
11227           }
11228
11229         if (exp->elts[*pos].opcode != OP_LONG)
11230           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11231         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11232         *pos += 4;
11233
11234         if (noside == EVAL_SKIP)
11235           goto nosideret;
11236
11237         if (type_arg == NULL)
11238           {
11239             arg1 = ada_coerce_ref (arg1);
11240
11241             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11242               arg1 = ada_coerce_to_simple_array (arg1);
11243
11244             if (op == OP_ATR_LENGTH)
11245               type = builtin_type (exp->gdbarch)->builtin_int;
11246             else
11247               {
11248                 type = ada_index_type (value_type (arg1), tem,
11249                                        ada_attribute_name (op));
11250                 if (type == NULL)
11251                   type = builtin_type (exp->gdbarch)->builtin_int;
11252               }
11253
11254             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11255               return allocate_value (type);
11256
11257             switch (op)
11258               {
11259               default:          /* Should never happen.  */
11260                 error (_("unexpected attribute encountered"));
11261               case OP_ATR_FIRST:
11262                 return value_from_longest
11263                         (type, ada_array_bound (arg1, tem, 0));
11264               case OP_ATR_LAST:
11265                 return value_from_longest
11266                         (type, ada_array_bound (arg1, tem, 1));
11267               case OP_ATR_LENGTH:
11268                 return value_from_longest
11269                         (type, ada_array_length (arg1, tem));
11270               }
11271           }
11272         else if (discrete_type_p (type_arg))
11273           {
11274             struct type *range_type;
11275             const char *name = ada_type_name (type_arg);
11276
11277             range_type = NULL;
11278             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11279               range_type = to_fixed_range_type (type_arg, NULL);
11280             if (range_type == NULL)
11281               range_type = type_arg;
11282             switch (op)
11283               {
11284               default:
11285                 error (_("unexpected attribute encountered"));
11286               case OP_ATR_FIRST:
11287                 return value_from_longest 
11288                   (range_type, ada_discrete_type_low_bound (range_type));
11289               case OP_ATR_LAST:
11290                 return value_from_longest
11291                   (range_type, ada_discrete_type_high_bound (range_type));
11292               case OP_ATR_LENGTH:
11293                 error (_("the 'length attribute applies only to array types"));
11294               }
11295           }
11296         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11297           error (_("unimplemented type attribute"));
11298         else
11299           {
11300             LONGEST low, high;
11301
11302             if (ada_is_constrained_packed_array_type (type_arg))
11303               type_arg = decode_constrained_packed_array_type (type_arg);
11304
11305             if (op == OP_ATR_LENGTH)
11306               type = builtin_type (exp->gdbarch)->builtin_int;
11307             else
11308               {
11309                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11310                 if (type == NULL)
11311                   type = builtin_type (exp->gdbarch)->builtin_int;
11312               }
11313
11314             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11315               return allocate_value (type);
11316
11317             switch (op)
11318               {
11319               default:
11320                 error (_("unexpected attribute encountered"));
11321               case OP_ATR_FIRST:
11322                 low = ada_array_bound_from_type (type_arg, tem, 0);
11323                 return value_from_longest (type, low);
11324               case OP_ATR_LAST:
11325                 high = ada_array_bound_from_type (type_arg, tem, 1);
11326                 return value_from_longest (type, high);
11327               case OP_ATR_LENGTH:
11328                 low = ada_array_bound_from_type (type_arg, tem, 0);
11329                 high = ada_array_bound_from_type (type_arg, tem, 1);
11330                 return value_from_longest (type, high - low + 1);
11331               }
11332           }
11333       }
11334
11335     case OP_ATR_TAG:
11336       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11337       if (noside == EVAL_SKIP)
11338         goto nosideret;
11339
11340       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11341         return value_zero (ada_tag_type (arg1), not_lval);
11342
11343       return ada_value_tag (arg1);
11344
11345     case OP_ATR_MIN:
11346     case OP_ATR_MAX:
11347       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11348       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11349       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11350       if (noside == EVAL_SKIP)
11351         goto nosideret;
11352       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11353         return value_zero (value_type (arg1), not_lval);
11354       else
11355         {
11356           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11357           return value_binop (arg1, arg2,
11358                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11359         }
11360
11361     case OP_ATR_MODULUS:
11362       {
11363         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11364
11365         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11366         if (noside == EVAL_SKIP)
11367           goto nosideret;
11368
11369         if (!ada_is_modular_type (type_arg))
11370           error (_("'modulus must be applied to modular type"));
11371
11372         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11373                                    ada_modulus (type_arg));
11374       }
11375
11376
11377     case OP_ATR_POS:
11378       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11379       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11380       if (noside == EVAL_SKIP)
11381         goto nosideret;
11382       type = builtin_type (exp->gdbarch)->builtin_int;
11383       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11384         return value_zero (type, not_lval);
11385       else
11386         return value_pos_atr (type, arg1);
11387
11388     case OP_ATR_SIZE:
11389       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11390       type = value_type (arg1);
11391
11392       /* If the argument is a reference, then dereference its type, since
11393          the user is really asking for the size of the actual object,
11394          not the size of the pointer.  */
11395       if (TYPE_CODE (type) == TYPE_CODE_REF)
11396         type = TYPE_TARGET_TYPE (type);
11397
11398       if (noside == EVAL_SKIP)
11399         goto nosideret;
11400       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11401         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11402       else
11403         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11404                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11405
11406     case OP_ATR_VAL:
11407       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11408       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11409       type = exp->elts[pc + 2].type;
11410       if (noside == EVAL_SKIP)
11411         goto nosideret;
11412       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11413         return value_zero (type, not_lval);
11414       else
11415         return value_val_atr (type, arg1);
11416
11417     case BINOP_EXP:
11418       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11419       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11420       if (noside == EVAL_SKIP)
11421         goto nosideret;
11422       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11423         return value_zero (value_type (arg1), not_lval);
11424       else
11425         {
11426           /* For integer exponentiation operations,
11427              only promote the first argument.  */
11428           if (is_integral_type (value_type (arg2)))
11429             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11430           else
11431             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11432
11433           return value_binop (arg1, arg2, op);
11434         }
11435
11436     case UNOP_PLUS:
11437       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11438       if (noside == EVAL_SKIP)
11439         goto nosideret;
11440       else
11441         return arg1;
11442
11443     case UNOP_ABS:
11444       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11445       if (noside == EVAL_SKIP)
11446         goto nosideret;
11447       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11448       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11449         return value_neg (arg1);
11450       else
11451         return arg1;
11452
11453     case UNOP_IND:
11454       preeval_pos = *pos;
11455       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11456       if (noside == EVAL_SKIP)
11457         goto nosideret;
11458       type = ada_check_typedef (value_type (arg1));
11459       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11460         {
11461           if (ada_is_array_descriptor_type (type))
11462             /* GDB allows dereferencing GNAT array descriptors.  */
11463             {
11464               struct type *arrType = ada_type_of_array (arg1, 0);
11465
11466               if (arrType == NULL)
11467                 error (_("Attempt to dereference null array pointer."));
11468               return value_at_lazy (arrType, 0);
11469             }
11470           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11471                    || TYPE_CODE (type) == TYPE_CODE_REF
11472                    /* In C you can dereference an array to get the 1st elt.  */
11473                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11474             {
11475             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11476                only be determined by inspecting the object's tag.
11477                This means that we need to evaluate completely the
11478                expression in order to get its type.  */
11479
11480               if ((TYPE_CODE (type) == TYPE_CODE_REF
11481                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11482                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11483                 {
11484                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11485                                           EVAL_NORMAL);
11486                   type = value_type (ada_value_ind (arg1));
11487                 }
11488               else
11489                 {
11490                   type = to_static_fixed_type
11491                     (ada_aligned_type
11492                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11493                 }
11494               ada_ensure_varsize_limit (type);
11495               return value_zero (type, lval_memory);
11496             }
11497           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11498             {
11499               /* GDB allows dereferencing an int.  */
11500               if (expect_type == NULL)
11501                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11502                                    lval_memory);
11503               else
11504                 {
11505                   expect_type = 
11506                     to_static_fixed_type (ada_aligned_type (expect_type));
11507                   return value_zero (expect_type, lval_memory);
11508                 }
11509             }
11510           else
11511             error (_("Attempt to take contents of a non-pointer value."));
11512         }
11513       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11514       type = ada_check_typedef (value_type (arg1));
11515
11516       if (TYPE_CODE (type) == TYPE_CODE_INT)
11517           /* GDB allows dereferencing an int.  If we were given
11518              the expect_type, then use that as the target type.
11519              Otherwise, assume that the target type is an int.  */
11520         {
11521           if (expect_type != NULL)
11522             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11523                                               arg1));
11524           else
11525             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11526                                   (CORE_ADDR) value_as_address (arg1));
11527         }
11528
11529       if (ada_is_array_descriptor_type (type))
11530         /* GDB allows dereferencing GNAT array descriptors.  */
11531         return ada_coerce_to_simple_array (arg1);
11532       else
11533         return ada_value_ind (arg1);
11534
11535     case STRUCTOP_STRUCT:
11536       tem = longest_to_int (exp->elts[pc + 1].longconst);
11537       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11538       preeval_pos = *pos;
11539       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11540       if (noside == EVAL_SKIP)
11541         goto nosideret;
11542       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11543         {
11544           struct type *type1 = value_type (arg1);
11545
11546           if (ada_is_tagged_type (type1, 1))
11547             {
11548               type = ada_lookup_struct_elt_type (type1,
11549                                                  &exp->elts[pc + 2].string,
11550                                                  1, 1);
11551
11552               /* If the field is not found, check if it exists in the
11553                  extension of this object's type. This means that we
11554                  need to evaluate completely the expression.  */
11555
11556               if (type == NULL)
11557                 {
11558                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11559                                           EVAL_NORMAL);
11560                   arg1 = ada_value_struct_elt (arg1,
11561                                                &exp->elts[pc + 2].string,
11562                                                0);
11563                   arg1 = unwrap_value (arg1);
11564                   type = value_type (ada_to_fixed_value (arg1));
11565                 }
11566             }
11567           else
11568             type =
11569               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11570                                           0);
11571
11572           return value_zero (ada_aligned_type (type), lval_memory);
11573         }
11574       else
11575         {
11576           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11577           arg1 = unwrap_value (arg1);
11578           return ada_to_fixed_value (arg1);
11579         }
11580
11581     case OP_TYPE:
11582       /* The value is not supposed to be used.  This is here to make it
11583          easier to accommodate expressions that contain types.  */
11584       (*pos) += 2;
11585       if (noside == EVAL_SKIP)
11586         goto nosideret;
11587       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11588         return allocate_value (exp->elts[pc + 1].type);
11589       else
11590         error (_("Attempt to use a type name as an expression"));
11591
11592     case OP_AGGREGATE:
11593     case OP_CHOICES:
11594     case OP_OTHERS:
11595     case OP_DISCRETE_RANGE:
11596     case OP_POSITIONAL:
11597     case OP_NAME:
11598       if (noside == EVAL_NORMAL)
11599         switch (op) 
11600           {
11601           case OP_NAME:
11602             error (_("Undefined name, ambiguous name, or renaming used in "
11603                      "component association: %s."), &exp->elts[pc+2].string);
11604           case OP_AGGREGATE:
11605             error (_("Aggregates only allowed on the right of an assignment"));
11606           default:
11607             internal_error (__FILE__, __LINE__,
11608                             _("aggregate apparently mangled"));
11609           }
11610
11611       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11612       *pos += oplen - 1;
11613       for (tem = 0; tem < nargs; tem += 1) 
11614         ada_evaluate_subexp (NULL, exp, pos, noside);
11615       goto nosideret;
11616     }
11617
11618 nosideret:
11619   return eval_skip_value (exp);
11620 }
11621 \f
11622
11623                                 /* Fixed point */
11624
11625 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11626    type name that encodes the 'small and 'delta information.
11627    Otherwise, return NULL.  */
11628
11629 static const char *
11630 fixed_type_info (struct type *type)
11631 {
11632   const char *name = ada_type_name (type);
11633   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11634
11635   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11636     {
11637       const char *tail = strstr (name, "___XF_");
11638
11639       if (tail == NULL)
11640         return NULL;
11641       else
11642         return tail + 5;
11643     }
11644   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11645     return fixed_type_info (TYPE_TARGET_TYPE (type));
11646   else
11647     return NULL;
11648 }
11649
11650 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11651
11652 int
11653 ada_is_fixed_point_type (struct type *type)
11654 {
11655   return fixed_type_info (type) != NULL;
11656 }
11657
11658 /* Return non-zero iff TYPE represents a System.Address type.  */
11659
11660 int
11661 ada_is_system_address_type (struct type *type)
11662 {
11663   return (TYPE_NAME (type)
11664           && strcmp (TYPE_NAME (type), "system__address") == 0);
11665 }
11666
11667 /* Assuming that TYPE is the representation of an Ada fixed-point
11668    type, return the target floating-point type to be used to represent
11669    of this type during internal computation.  */
11670
11671 static struct type *
11672 ada_scaling_type (struct type *type)
11673 {
11674   return builtin_type (get_type_arch (type))->builtin_long_double;
11675 }
11676
11677 /* Assuming that TYPE is the representation of an Ada fixed-point
11678    type, return its delta, or NULL if the type is malformed and the
11679    delta cannot be determined.  */
11680
11681 struct value *
11682 ada_delta (struct type *type)
11683 {
11684   const char *encoding = fixed_type_info (type);
11685   struct type *scale_type = ada_scaling_type (type);
11686
11687   long long num, den;
11688
11689   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11690     return nullptr;
11691   else
11692     return value_binop (value_from_longest (scale_type, num),
11693                         value_from_longest (scale_type, den), BINOP_DIV);
11694 }
11695
11696 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11697    factor ('SMALL value) associated with the type.  */
11698
11699 struct value *
11700 ada_scaling_factor (struct type *type)
11701 {
11702   const char *encoding = fixed_type_info (type);
11703   struct type *scale_type = ada_scaling_type (type);
11704
11705   long long num0, den0, num1, den1;
11706   int n;
11707
11708   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11709               &num0, &den0, &num1, &den1);
11710
11711   if (n < 2)
11712     return value_from_longest (scale_type, 1);
11713   else if (n == 4)
11714     return value_binop (value_from_longest (scale_type, num1),
11715                         value_from_longest (scale_type, den1), BINOP_DIV);
11716   else
11717     return value_binop (value_from_longest (scale_type, num0),
11718                         value_from_longest (scale_type, den0), BINOP_DIV);
11719 }
11720
11721 \f
11722
11723                                 /* Range types */
11724
11725 /* Scan STR beginning at position K for a discriminant name, and
11726    return the value of that discriminant field of DVAL in *PX.  If
11727    PNEW_K is not null, put the position of the character beyond the
11728    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11729    not alter *PX and *PNEW_K if unsuccessful.  */
11730
11731 static int
11732 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11733                     int *pnew_k)
11734 {
11735   static char *bound_buffer = NULL;
11736   static size_t bound_buffer_len = 0;
11737   const char *pstart, *pend, *bound;
11738   struct value *bound_val;
11739
11740   if (dval == NULL || str == NULL || str[k] == '\0')
11741     return 0;
11742
11743   pstart = str + k;
11744   pend = strstr (pstart, "__");
11745   if (pend == NULL)
11746     {
11747       bound = pstart;
11748       k += strlen (bound);
11749     }
11750   else
11751     {
11752       int len = pend - pstart;
11753
11754       /* Strip __ and beyond.  */
11755       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11756       strncpy (bound_buffer, pstart, len);
11757       bound_buffer[len] = '\0';
11758
11759       bound = bound_buffer;
11760       k = pend - str;
11761     }
11762
11763   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11764   if (bound_val == NULL)
11765     return 0;
11766
11767   *px = value_as_long (bound_val);
11768   if (pnew_k != NULL)
11769     *pnew_k = k;
11770   return 1;
11771 }
11772
11773 /* Value of variable named NAME in the current environment.  If
11774    no such variable found, then if ERR_MSG is null, returns 0, and
11775    otherwise causes an error with message ERR_MSG.  */
11776
11777 static struct value *
11778 get_var_value (const char *name, const char *err_msg)
11779 {
11780   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11781
11782   std::vector<struct block_symbol> syms;
11783   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11784                                              get_selected_block (0),
11785                                              VAR_DOMAIN, &syms, 1);
11786
11787   if (nsyms != 1)
11788     {
11789       if (err_msg == NULL)
11790         return 0;
11791       else
11792         error (("%s"), err_msg);
11793     }
11794
11795   return value_of_variable (syms[0].symbol, syms[0].block);
11796 }
11797
11798 /* Value of integer variable named NAME in the current environment.
11799    If no such variable is found, returns false.  Otherwise, sets VALUE
11800    to the variable's value and returns true.  */
11801
11802 bool
11803 get_int_var_value (const char *name, LONGEST &value)
11804 {
11805   struct value *var_val = get_var_value (name, 0);
11806
11807   if (var_val == 0)
11808     return false;
11809
11810   value = value_as_long (var_val);
11811   return true;
11812 }
11813
11814
11815 /* Return a range type whose base type is that of the range type named
11816    NAME in the current environment, and whose bounds are calculated
11817    from NAME according to the GNAT range encoding conventions.
11818    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11819    corresponding range type from debug information; fall back to using it
11820    if symbol lookup fails.  If a new type must be created, allocate it
11821    like ORIG_TYPE was.  The bounds information, in general, is encoded
11822    in NAME, the base type given in the named range type.  */
11823
11824 static struct type *
11825 to_fixed_range_type (struct type *raw_type, struct value *dval)
11826 {
11827   const char *name;
11828   struct type *base_type;
11829   const char *subtype_info;
11830
11831   gdb_assert (raw_type != NULL);
11832   gdb_assert (TYPE_NAME (raw_type) != NULL);
11833
11834   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11835     base_type = TYPE_TARGET_TYPE (raw_type);
11836   else
11837     base_type = raw_type;
11838
11839   name = TYPE_NAME (raw_type);
11840   subtype_info = strstr (name, "___XD");
11841   if (subtype_info == NULL)
11842     {
11843       LONGEST L = ada_discrete_type_low_bound (raw_type);
11844       LONGEST U = ada_discrete_type_high_bound (raw_type);
11845
11846       if (L < INT_MIN || U > INT_MAX)
11847         return raw_type;
11848       else
11849         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11850                                          L, U);
11851     }
11852   else
11853     {
11854       static char *name_buf = NULL;
11855       static size_t name_len = 0;
11856       int prefix_len = subtype_info - name;
11857       LONGEST L, U;
11858       struct type *type;
11859       const char *bounds_str;
11860       int n;
11861
11862       GROW_VECT (name_buf, name_len, prefix_len + 5);
11863       strncpy (name_buf, name, prefix_len);
11864       name_buf[prefix_len] = '\0';
11865
11866       subtype_info += 5;
11867       bounds_str = strchr (subtype_info, '_');
11868       n = 1;
11869
11870       if (*subtype_info == 'L')
11871         {
11872           if (!ada_scan_number (bounds_str, n, &L, &n)
11873               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11874             return raw_type;
11875           if (bounds_str[n] == '_')
11876             n += 2;
11877           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11878             n += 1;
11879           subtype_info += 1;
11880         }
11881       else
11882         {
11883           strcpy (name_buf + prefix_len, "___L");
11884           if (!get_int_var_value (name_buf, L))
11885             {
11886               lim_warning (_("Unknown lower bound, using 1."));
11887               L = 1;
11888             }
11889         }
11890
11891       if (*subtype_info == 'U')
11892         {
11893           if (!ada_scan_number (bounds_str, n, &U, &n)
11894               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11895             return raw_type;
11896         }
11897       else
11898         {
11899           strcpy (name_buf + prefix_len, "___U");
11900           if (!get_int_var_value (name_buf, U))
11901             {
11902               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11903               U = L;
11904             }
11905         }
11906
11907       type = create_static_range_type (alloc_type_copy (raw_type),
11908                                        base_type, L, U);
11909       /* create_static_range_type alters the resulting type's length
11910          to match the size of the base_type, which is not what we want.
11911          Set it back to the original range type's length.  */
11912       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11913       TYPE_NAME (type) = name;
11914       return type;
11915     }
11916 }
11917
11918 /* True iff NAME is the name of a range type.  */
11919
11920 int
11921 ada_is_range_type_name (const char *name)
11922 {
11923   return (name != NULL && strstr (name, "___XD"));
11924 }
11925 \f
11926
11927                                 /* Modular types */
11928
11929 /* True iff TYPE is an Ada modular type.  */
11930
11931 int
11932 ada_is_modular_type (struct type *type)
11933 {
11934   struct type *subranged_type = get_base_type (type);
11935
11936   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11937           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11938           && TYPE_UNSIGNED (subranged_type));
11939 }
11940
11941 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11942
11943 ULONGEST
11944 ada_modulus (struct type *type)
11945 {
11946   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11947 }
11948 \f
11949
11950 /* Ada exception catchpoint support:
11951    ---------------------------------
11952
11953    We support 3 kinds of exception catchpoints:
11954      . catchpoints on Ada exceptions
11955      . catchpoints on unhandled Ada exceptions
11956      . catchpoints on failed assertions
11957
11958    Exceptions raised during failed assertions, or unhandled exceptions
11959    could perfectly be caught with the general catchpoint on Ada exceptions.
11960    However, we can easily differentiate these two special cases, and having
11961    the option to distinguish these two cases from the rest can be useful
11962    to zero-in on certain situations.
11963
11964    Exception catchpoints are a specialized form of breakpoint,
11965    since they rely on inserting breakpoints inside known routines
11966    of the GNAT runtime.  The implementation therefore uses a standard
11967    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11968    of breakpoint_ops.
11969
11970    Support in the runtime for exception catchpoints have been changed
11971    a few times already, and these changes affect the implementation
11972    of these catchpoints.  In order to be able to support several
11973    variants of the runtime, we use a sniffer that will determine
11974    the runtime variant used by the program being debugged.  */
11975
11976 /* Ada's standard exceptions.
11977
11978    The Ada 83 standard also defined Numeric_Error.  But there so many
11979    situations where it was unclear from the Ada 83 Reference Manual
11980    (RM) whether Constraint_Error or Numeric_Error should be raised,
11981    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11982    Interpretation saying that anytime the RM says that Numeric_Error
11983    should be raised, the implementation may raise Constraint_Error.
11984    Ada 95 went one step further and pretty much removed Numeric_Error
11985    from the list of standard exceptions (it made it a renaming of
11986    Constraint_Error, to help preserve compatibility when compiling
11987    an Ada83 compiler). As such, we do not include Numeric_Error from
11988    this list of standard exceptions.  */
11989
11990 static const char *standard_exc[] = {
11991   "constraint_error",
11992   "program_error",
11993   "storage_error",
11994   "tasking_error"
11995 };
11996
11997 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11998
11999 /* A structure that describes how to support exception catchpoints
12000    for a given executable.  */
12001
12002 struct exception_support_info
12003 {
12004    /* The name of the symbol to break on in order to insert
12005       a catchpoint on exceptions.  */
12006    const char *catch_exception_sym;
12007
12008    /* The name of the symbol to break on in order to insert
12009       a catchpoint on unhandled exceptions.  */
12010    const char *catch_exception_unhandled_sym;
12011
12012    /* The name of the symbol to break on in order to insert
12013       a catchpoint on failed assertions.  */
12014    const char *catch_assert_sym;
12015
12016    /* The name of the symbol to break on in order to insert
12017       a catchpoint on exception handling.  */
12018    const char *catch_handlers_sym;
12019
12020    /* Assuming that the inferior just triggered an unhandled exception
12021       catchpoint, this function is responsible for returning the address
12022       in inferior memory where the name of that exception is stored.
12023       Return zero if the address could not be computed.  */
12024    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12025 };
12026
12027 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12028 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12029
12030 /* The following exception support info structure describes how to
12031    implement exception catchpoints with the latest version of the
12032    Ada runtime (as of 2007-03-06).  */
12033
12034 static const struct exception_support_info default_exception_support_info =
12035 {
12036   "__gnat_debug_raise_exception", /* catch_exception_sym */
12037   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12038   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12039   "__gnat_begin_handler", /* catch_handlers_sym */
12040   ada_unhandled_exception_name_addr
12041 };
12042
12043 /* The following exception support info structure describes how to
12044    implement exception catchpoints with a slightly older version
12045    of the Ada runtime.  */
12046
12047 static const struct exception_support_info exception_support_info_fallback =
12048 {
12049   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12050   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12051   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12052   "__gnat_begin_handler", /* catch_handlers_sym */
12053   ada_unhandled_exception_name_addr_from_raise
12054 };
12055
12056 /* Return nonzero if we can detect the exception support routines
12057    described in EINFO.
12058
12059    This function errors out if an abnormal situation is detected
12060    (for instance, if we find the exception support routines, but
12061    that support is found to be incomplete).  */
12062
12063 static int
12064 ada_has_this_exception_support (const struct exception_support_info *einfo)
12065 {
12066   struct symbol *sym;
12067
12068   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12069      that should be compiled with debugging information.  As a result, we
12070      expect to find that symbol in the symtabs.  */
12071
12072   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12073   if (sym == NULL)
12074     {
12075       /* Perhaps we did not find our symbol because the Ada runtime was
12076          compiled without debugging info, or simply stripped of it.
12077          It happens on some GNU/Linux distributions for instance, where
12078          users have to install a separate debug package in order to get
12079          the runtime's debugging info.  In that situation, let the user
12080          know why we cannot insert an Ada exception catchpoint.
12081
12082          Note: Just for the purpose of inserting our Ada exception
12083          catchpoint, we could rely purely on the associated minimal symbol.
12084          But we would be operating in degraded mode anyway, since we are
12085          still lacking the debugging info needed later on to extract
12086          the name of the exception being raised (this name is printed in
12087          the catchpoint message, and is also used when trying to catch
12088          a specific exception).  We do not handle this case for now.  */
12089       struct bound_minimal_symbol msym
12090         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12091
12092       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12093         error (_("Your Ada runtime appears to be missing some debugging "
12094                  "information.\nCannot insert Ada exception catchpoint "
12095                  "in this configuration."));
12096
12097       return 0;
12098     }
12099
12100   /* Make sure that the symbol we found corresponds to a function.  */
12101
12102   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12103     error (_("Symbol \"%s\" is not a function (class = %d)"),
12104            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12105
12106   return 1;
12107 }
12108
12109 /* Inspect the Ada runtime and determine which exception info structure
12110    should be used to provide support for exception catchpoints.
12111
12112    This function will always set the per-inferior exception_info,
12113    or raise an error.  */
12114
12115 static void
12116 ada_exception_support_info_sniffer (void)
12117 {
12118   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12119
12120   /* If the exception info is already known, then no need to recompute it.  */
12121   if (data->exception_info != NULL)
12122     return;
12123
12124   /* Check the latest (default) exception support info.  */
12125   if (ada_has_this_exception_support (&default_exception_support_info))
12126     {
12127       data->exception_info = &default_exception_support_info;
12128       return;
12129     }
12130
12131   /* Try our fallback exception suport info.  */
12132   if (ada_has_this_exception_support (&exception_support_info_fallback))
12133     {
12134       data->exception_info = &exception_support_info_fallback;
12135       return;
12136     }
12137
12138   /* Sometimes, it is normal for us to not be able to find the routine
12139      we are looking for.  This happens when the program is linked with
12140      the shared version of the GNAT runtime, and the program has not been
12141      started yet.  Inform the user of these two possible causes if
12142      applicable.  */
12143
12144   if (ada_update_initial_language (language_unknown) != language_ada)
12145     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12146
12147   /* If the symbol does not exist, then check that the program is
12148      already started, to make sure that shared libraries have been
12149      loaded.  If it is not started, this may mean that the symbol is
12150      in a shared library.  */
12151
12152   if (inferior_ptid.pid () == 0)
12153     error (_("Unable to insert catchpoint. Try to start the program first."));
12154
12155   /* At this point, we know that we are debugging an Ada program and
12156      that the inferior has been started, but we still are not able to
12157      find the run-time symbols.  That can mean that we are in
12158      configurable run time mode, or that a-except as been optimized
12159      out by the linker...  In any case, at this point it is not worth
12160      supporting this feature.  */
12161
12162   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12163 }
12164
12165 /* True iff FRAME is very likely to be that of a function that is
12166    part of the runtime system.  This is all very heuristic, but is
12167    intended to be used as advice as to what frames are uninteresting
12168    to most users.  */
12169
12170 static int
12171 is_known_support_routine (struct frame_info *frame)
12172 {
12173   enum language func_lang;
12174   int i;
12175   const char *fullname;
12176
12177   /* If this code does not have any debugging information (no symtab),
12178      This cannot be any user code.  */
12179
12180   symtab_and_line sal = find_frame_sal (frame);
12181   if (sal.symtab == NULL)
12182     return 1;
12183
12184   /* If there is a symtab, but the associated source file cannot be
12185      located, then assume this is not user code:  Selecting a frame
12186      for which we cannot display the code would not be very helpful
12187      for the user.  This should also take care of case such as VxWorks
12188      where the kernel has some debugging info provided for a few units.  */
12189
12190   fullname = symtab_to_fullname (sal.symtab);
12191   if (access (fullname, R_OK) != 0)
12192     return 1;
12193
12194   /* Check the unit filename againt the Ada runtime file naming.
12195      We also check the name of the objfile against the name of some
12196      known system libraries that sometimes come with debugging info
12197      too.  */
12198
12199   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12200     {
12201       re_comp (known_runtime_file_name_patterns[i]);
12202       if (re_exec (lbasename (sal.symtab->filename)))
12203         return 1;
12204       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12205           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12206         return 1;
12207     }
12208
12209   /* Check whether the function is a GNAT-generated entity.  */
12210
12211   gdb::unique_xmalloc_ptr<char> func_name
12212     = find_frame_funname (frame, &func_lang, NULL);
12213   if (func_name == NULL)
12214     return 1;
12215
12216   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12217     {
12218       re_comp (known_auxiliary_function_name_patterns[i]);
12219       if (re_exec (func_name.get ()))
12220         return 1;
12221     }
12222
12223   return 0;
12224 }
12225
12226 /* Find the first frame that contains debugging information and that is not
12227    part of the Ada run-time, starting from FI and moving upward.  */
12228
12229 void
12230 ada_find_printable_frame (struct frame_info *fi)
12231 {
12232   for (; fi != NULL; fi = get_prev_frame (fi))
12233     {
12234       if (!is_known_support_routine (fi))
12235         {
12236           select_frame (fi);
12237           break;
12238         }
12239     }
12240
12241 }
12242
12243 /* Assuming that the inferior just triggered an unhandled exception
12244    catchpoint, return the address in inferior memory where the name
12245    of the exception is stored.
12246    
12247    Return zero if the address could not be computed.  */
12248
12249 static CORE_ADDR
12250 ada_unhandled_exception_name_addr (void)
12251 {
12252   return parse_and_eval_address ("e.full_name");
12253 }
12254
12255 /* Same as ada_unhandled_exception_name_addr, except that this function
12256    should be used when the inferior uses an older version of the runtime,
12257    where the exception name needs to be extracted from a specific frame
12258    several frames up in the callstack.  */
12259
12260 static CORE_ADDR
12261 ada_unhandled_exception_name_addr_from_raise (void)
12262 {
12263   int frame_level;
12264   struct frame_info *fi;
12265   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12266
12267   /* To determine the name of this exception, we need to select
12268      the frame corresponding to RAISE_SYM_NAME.  This frame is
12269      at least 3 levels up, so we simply skip the first 3 frames
12270      without checking the name of their associated function.  */
12271   fi = get_current_frame ();
12272   for (frame_level = 0; frame_level < 3; frame_level += 1)
12273     if (fi != NULL)
12274       fi = get_prev_frame (fi); 
12275
12276   while (fi != NULL)
12277     {
12278       enum language func_lang;
12279
12280       gdb::unique_xmalloc_ptr<char> func_name
12281         = find_frame_funname (fi, &func_lang, NULL);
12282       if (func_name != NULL)
12283         {
12284           if (strcmp (func_name.get (),
12285                       data->exception_info->catch_exception_sym) == 0)
12286             break; /* We found the frame we were looking for...  */
12287         }
12288       fi = get_prev_frame (fi);
12289     }
12290
12291   if (fi == NULL)
12292     return 0;
12293
12294   select_frame (fi);
12295   return parse_and_eval_address ("id.full_name");
12296 }
12297
12298 /* Assuming the inferior just triggered an Ada exception catchpoint
12299    (of any type), return the address in inferior memory where the name
12300    of the exception is stored, if applicable.
12301
12302    Assumes the selected frame is the current frame.
12303
12304    Return zero if the address could not be computed, or if not relevant.  */
12305
12306 static CORE_ADDR
12307 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12308                            struct breakpoint *b)
12309 {
12310   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12311
12312   switch (ex)
12313     {
12314       case ada_catch_exception:
12315         return (parse_and_eval_address ("e.full_name"));
12316         break;
12317
12318       case ada_catch_exception_unhandled:
12319         return data->exception_info->unhandled_exception_name_addr ();
12320         break;
12321
12322       case ada_catch_handlers:
12323         return 0;  /* The runtimes does not provide access to the exception
12324                       name.  */
12325         break;
12326
12327       case ada_catch_assert:
12328         return 0;  /* Exception name is not relevant in this case.  */
12329         break;
12330
12331       default:
12332         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12333         break;
12334     }
12335
12336   return 0; /* Should never be reached.  */
12337 }
12338
12339 /* Assuming the inferior is stopped at an exception catchpoint,
12340    return the message which was associated to the exception, if
12341    available.  Return NULL if the message could not be retrieved.
12342
12343    Note: The exception message can be associated to an exception
12344    either through the use of the Raise_Exception function, or
12345    more simply (Ada 2005 and later), via:
12346
12347        raise Exception_Name with "exception message";
12348
12349    */
12350
12351 static gdb::unique_xmalloc_ptr<char>
12352 ada_exception_message_1 (void)
12353 {
12354   struct value *e_msg_val;
12355   int e_msg_len;
12356
12357   /* For runtimes that support this feature, the exception message
12358      is passed as an unbounded string argument called "message".  */
12359   e_msg_val = parse_and_eval ("message");
12360   if (e_msg_val == NULL)
12361     return NULL; /* Exception message not supported.  */
12362
12363   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12364   gdb_assert (e_msg_val != NULL);
12365   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12366
12367   /* If the message string is empty, then treat it as if there was
12368      no exception message.  */
12369   if (e_msg_len <= 0)
12370     return NULL;
12371
12372   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12373   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12374   e_msg.get ()[e_msg_len] = '\0';
12375
12376   return e_msg;
12377 }
12378
12379 /* Same as ada_exception_message_1, except that all exceptions are
12380    contained here (returning NULL instead).  */
12381
12382 static gdb::unique_xmalloc_ptr<char>
12383 ada_exception_message (void)
12384 {
12385   gdb::unique_xmalloc_ptr<char> e_msg;
12386
12387   TRY
12388     {
12389       e_msg = ada_exception_message_1 ();
12390     }
12391   CATCH (e, RETURN_MASK_ERROR)
12392     {
12393       e_msg.reset (nullptr);
12394     }
12395   END_CATCH
12396
12397   return e_msg;
12398 }
12399
12400 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12401    any error that ada_exception_name_addr_1 might cause to be thrown.
12402    When an error is intercepted, a warning with the error message is printed,
12403    and zero is returned.  */
12404
12405 static CORE_ADDR
12406 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12407                          struct breakpoint *b)
12408 {
12409   CORE_ADDR result = 0;
12410
12411   TRY
12412     {
12413       result = ada_exception_name_addr_1 (ex, b);
12414     }
12415
12416   CATCH (e, RETURN_MASK_ERROR)
12417     {
12418       warning (_("failed to get exception name: %s"), e.message);
12419       return 0;
12420     }
12421   END_CATCH
12422
12423   return result;
12424 }
12425
12426 static std::string ada_exception_catchpoint_cond_string
12427   (const char *excep_string,
12428    enum ada_exception_catchpoint_kind ex);
12429
12430 /* Ada catchpoints.
12431
12432    In the case of catchpoints on Ada exceptions, the catchpoint will
12433    stop the target on every exception the program throws.  When a user
12434    specifies the name of a specific exception, we translate this
12435    request into a condition expression (in text form), and then parse
12436    it into an expression stored in each of the catchpoint's locations.
12437    We then use this condition to check whether the exception that was
12438    raised is the one the user is interested in.  If not, then the
12439    target is resumed again.  We store the name of the requested
12440    exception, in order to be able to re-set the condition expression
12441    when symbols change.  */
12442
12443 /* An instance of this type is used to represent an Ada catchpoint
12444    breakpoint location.  */
12445
12446 class ada_catchpoint_location : public bp_location
12447 {
12448 public:
12449   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12450     : bp_location (ops, owner)
12451   {}
12452
12453   /* The condition that checks whether the exception that was raised
12454      is the specific exception the user specified on catchpoint
12455      creation.  */
12456   expression_up excep_cond_expr;
12457 };
12458
12459 /* Implement the DTOR method in the bp_location_ops structure for all
12460    Ada exception catchpoint kinds.  */
12461
12462 static void
12463 ada_catchpoint_location_dtor (struct bp_location *bl)
12464 {
12465   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12466
12467   al->excep_cond_expr.reset ();
12468 }
12469
12470 /* The vtable to be used in Ada catchpoint locations.  */
12471
12472 static const struct bp_location_ops ada_catchpoint_location_ops =
12473 {
12474   ada_catchpoint_location_dtor
12475 };
12476
12477 /* An instance of this type is used to represent an Ada catchpoint.  */
12478
12479 struct ada_catchpoint : public breakpoint
12480 {
12481   /* The name of the specific exception the user specified.  */
12482   std::string excep_string;
12483 };
12484
12485 /* Parse the exception condition string in the context of each of the
12486    catchpoint's locations, and store them for later evaluation.  */
12487
12488 static void
12489 create_excep_cond_exprs (struct ada_catchpoint *c,
12490                          enum ada_exception_catchpoint_kind ex)
12491 {
12492   struct bp_location *bl;
12493
12494   /* Nothing to do if there's no specific exception to catch.  */
12495   if (c->excep_string.empty ())
12496     return;
12497
12498   /* Same if there are no locations... */
12499   if (c->loc == NULL)
12500     return;
12501
12502   /* Compute the condition expression in text form, from the specific
12503      expection we want to catch.  */
12504   std::string cond_string
12505     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12506
12507   /* Iterate over all the catchpoint's locations, and parse an
12508      expression for each.  */
12509   for (bl = c->loc; bl != NULL; bl = bl->next)
12510     {
12511       struct ada_catchpoint_location *ada_loc
12512         = (struct ada_catchpoint_location *) bl;
12513       expression_up exp;
12514
12515       if (!bl->shlib_disabled)
12516         {
12517           const char *s;
12518
12519           s = cond_string.c_str ();
12520           TRY
12521             {
12522               exp = parse_exp_1 (&s, bl->address,
12523                                  block_for_pc (bl->address),
12524                                  0);
12525             }
12526           CATCH (e, RETURN_MASK_ERROR)
12527             {
12528               warning (_("failed to reevaluate internal exception condition "
12529                          "for catchpoint %d: %s"),
12530                        c->number, e.message);
12531             }
12532           END_CATCH
12533         }
12534
12535       ada_loc->excep_cond_expr = std::move (exp);
12536     }
12537 }
12538
12539 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12540    structure for all exception catchpoint kinds.  */
12541
12542 static struct bp_location *
12543 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12544                              struct breakpoint *self)
12545 {
12546   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12547 }
12548
12549 /* Implement the RE_SET method in the breakpoint_ops structure for all
12550    exception catchpoint kinds.  */
12551
12552 static void
12553 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12554 {
12555   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12556
12557   /* Call the base class's method.  This updates the catchpoint's
12558      locations.  */
12559   bkpt_breakpoint_ops.re_set (b);
12560
12561   /* Reparse the exception conditional expressions.  One for each
12562      location.  */
12563   create_excep_cond_exprs (c, ex);
12564 }
12565
12566 /* Returns true if we should stop for this breakpoint hit.  If the
12567    user specified a specific exception, we only want to cause a stop
12568    if the program thrown that exception.  */
12569
12570 static int
12571 should_stop_exception (const struct bp_location *bl)
12572 {
12573   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12574   const struct ada_catchpoint_location *ada_loc
12575     = (const struct ada_catchpoint_location *) bl;
12576   int stop;
12577
12578   /* With no specific exception, should always stop.  */
12579   if (c->excep_string.empty ())
12580     return 1;
12581
12582   if (ada_loc->excep_cond_expr == NULL)
12583     {
12584       /* We will have a NULL expression if back when we were creating
12585          the expressions, this location's had failed to parse.  */
12586       return 1;
12587     }
12588
12589   stop = 1;
12590   TRY
12591     {
12592       struct value *mark;
12593
12594       mark = value_mark ();
12595       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12596       value_free_to_mark (mark);
12597     }
12598   CATCH (ex, RETURN_MASK_ALL)
12599     {
12600       exception_fprintf (gdb_stderr, ex,
12601                          _("Error in testing exception condition:\n"));
12602     }
12603   END_CATCH
12604
12605   return stop;
12606 }
12607
12608 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12609    for all exception catchpoint kinds.  */
12610
12611 static void
12612 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12613 {
12614   bs->stop = should_stop_exception (bs->bp_location_at);
12615 }
12616
12617 /* Implement the PRINT_IT method in the breakpoint_ops structure
12618    for all exception catchpoint kinds.  */
12619
12620 static enum print_stop_action
12621 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12622 {
12623   struct ui_out *uiout = current_uiout;
12624   struct breakpoint *b = bs->breakpoint_at;
12625
12626   annotate_catchpoint (b->number);
12627
12628   if (uiout->is_mi_like_p ())
12629     {
12630       uiout->field_string ("reason",
12631                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12632       uiout->field_string ("disp", bpdisp_text (b->disposition));
12633     }
12634
12635   uiout->text (b->disposition == disp_del
12636                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12637   uiout->field_int ("bkptno", b->number);
12638   uiout->text (", ");
12639
12640   /* ada_exception_name_addr relies on the selected frame being the
12641      current frame.  Need to do this here because this function may be
12642      called more than once when printing a stop, and below, we'll
12643      select the first frame past the Ada run-time (see
12644      ada_find_printable_frame).  */
12645   select_frame (get_current_frame ());
12646
12647   switch (ex)
12648     {
12649       case ada_catch_exception:
12650       case ada_catch_exception_unhandled:
12651       case ada_catch_handlers:
12652         {
12653           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12654           char exception_name[256];
12655
12656           if (addr != 0)
12657             {
12658               read_memory (addr, (gdb_byte *) exception_name,
12659                            sizeof (exception_name) - 1);
12660               exception_name [sizeof (exception_name) - 1] = '\0';
12661             }
12662           else
12663             {
12664               /* For some reason, we were unable to read the exception
12665                  name.  This could happen if the Runtime was compiled
12666                  without debugging info, for instance.  In that case,
12667                  just replace the exception name by the generic string
12668                  "exception" - it will read as "an exception" in the
12669                  notification we are about to print.  */
12670               memcpy (exception_name, "exception", sizeof ("exception"));
12671             }
12672           /* In the case of unhandled exception breakpoints, we print
12673              the exception name as "unhandled EXCEPTION_NAME", to make
12674              it clearer to the user which kind of catchpoint just got
12675              hit.  We used ui_out_text to make sure that this extra
12676              info does not pollute the exception name in the MI case.  */
12677           if (ex == ada_catch_exception_unhandled)
12678             uiout->text ("unhandled ");
12679           uiout->field_string ("exception-name", exception_name);
12680         }
12681         break;
12682       case ada_catch_assert:
12683         /* In this case, the name of the exception is not really
12684            important.  Just print "failed assertion" to make it clearer
12685            that his program just hit an assertion-failure catchpoint.
12686            We used ui_out_text because this info does not belong in
12687            the MI output.  */
12688         uiout->text ("failed assertion");
12689         break;
12690     }
12691
12692   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12693   if (exception_message != NULL)
12694     {
12695       uiout->text (" (");
12696       uiout->field_string ("exception-message", exception_message.get ());
12697       uiout->text (")");
12698     }
12699
12700   uiout->text (" at ");
12701   ada_find_printable_frame (get_current_frame ());
12702
12703   return PRINT_SRC_AND_LOC;
12704 }
12705
12706 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12707    for all exception catchpoint kinds.  */
12708
12709 static void
12710 print_one_exception (enum ada_exception_catchpoint_kind ex,
12711                      struct breakpoint *b, struct bp_location **last_loc)
12712
12713   struct ui_out *uiout = current_uiout;
12714   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12715   struct value_print_options opts;
12716
12717   get_user_print_options (&opts);
12718   if (opts.addressprint)
12719     {
12720       annotate_field (4);
12721       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12722     }
12723
12724   annotate_field (5);
12725   *last_loc = b->loc;
12726   switch (ex)
12727     {
12728       case ada_catch_exception:
12729         if (!c->excep_string.empty ())
12730           {
12731             std::string msg = string_printf (_("`%s' Ada exception"),
12732                                              c->excep_string.c_str ());
12733
12734             uiout->field_string ("what", msg);
12735           }
12736         else
12737           uiout->field_string ("what", "all Ada exceptions");
12738         
12739         break;
12740
12741       case ada_catch_exception_unhandled:
12742         uiout->field_string ("what", "unhandled Ada exceptions");
12743         break;
12744       
12745       case ada_catch_handlers:
12746         if (!c->excep_string.empty ())
12747           {
12748             uiout->field_fmt ("what",
12749                               _("`%s' Ada exception handlers"),
12750                               c->excep_string.c_str ());
12751           }
12752         else
12753           uiout->field_string ("what", "all Ada exceptions handlers");
12754         break;
12755
12756       case ada_catch_assert:
12757         uiout->field_string ("what", "failed Ada assertions");
12758         break;
12759
12760       default:
12761         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12762         break;
12763     }
12764 }
12765
12766 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12767    for all exception catchpoint kinds.  */
12768
12769 static void
12770 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12771                          struct breakpoint *b)
12772 {
12773   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12774   struct ui_out *uiout = current_uiout;
12775
12776   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12777                                                  : _("Catchpoint "));
12778   uiout->field_int ("bkptno", b->number);
12779   uiout->text (": ");
12780
12781   switch (ex)
12782     {
12783       case ada_catch_exception:
12784         if (!c->excep_string.empty ())
12785           {
12786             std::string info = string_printf (_("`%s' Ada exception"),
12787                                               c->excep_string.c_str ());
12788             uiout->text (info.c_str ());
12789           }
12790         else
12791           uiout->text (_("all Ada exceptions"));
12792         break;
12793
12794       case ada_catch_exception_unhandled:
12795         uiout->text (_("unhandled Ada exceptions"));
12796         break;
12797
12798       case ada_catch_handlers:
12799         if (!c->excep_string.empty ())
12800           {
12801             std::string info
12802               = string_printf (_("`%s' Ada exception handlers"),
12803                                c->excep_string.c_str ());
12804             uiout->text (info.c_str ());
12805           }
12806         else
12807           uiout->text (_("all Ada exceptions handlers"));
12808         break;
12809
12810       case ada_catch_assert:
12811         uiout->text (_("failed Ada assertions"));
12812         break;
12813
12814       default:
12815         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12816         break;
12817     }
12818 }
12819
12820 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12821    for all exception catchpoint kinds.  */
12822
12823 static void
12824 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12825                           struct breakpoint *b, struct ui_file *fp)
12826 {
12827   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12828
12829   switch (ex)
12830     {
12831       case ada_catch_exception:
12832         fprintf_filtered (fp, "catch exception");
12833         if (!c->excep_string.empty ())
12834           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12835         break;
12836
12837       case ada_catch_exception_unhandled:
12838         fprintf_filtered (fp, "catch exception unhandled");
12839         break;
12840
12841       case ada_catch_handlers:
12842         fprintf_filtered (fp, "catch handlers");
12843         break;
12844
12845       case ada_catch_assert:
12846         fprintf_filtered (fp, "catch assert");
12847         break;
12848
12849       default:
12850         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12851     }
12852   print_recreate_thread (b, fp);
12853 }
12854
12855 /* Virtual table for "catch exception" breakpoints.  */
12856
12857 static struct bp_location *
12858 allocate_location_catch_exception (struct breakpoint *self)
12859 {
12860   return allocate_location_exception (ada_catch_exception, self);
12861 }
12862
12863 static void
12864 re_set_catch_exception (struct breakpoint *b)
12865 {
12866   re_set_exception (ada_catch_exception, b);
12867 }
12868
12869 static void
12870 check_status_catch_exception (bpstat bs)
12871 {
12872   check_status_exception (ada_catch_exception, bs);
12873 }
12874
12875 static enum print_stop_action
12876 print_it_catch_exception (bpstat bs)
12877 {
12878   return print_it_exception (ada_catch_exception, bs);
12879 }
12880
12881 static void
12882 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12883 {
12884   print_one_exception (ada_catch_exception, b, last_loc);
12885 }
12886
12887 static void
12888 print_mention_catch_exception (struct breakpoint *b)
12889 {
12890   print_mention_exception (ada_catch_exception, b);
12891 }
12892
12893 static void
12894 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12895 {
12896   print_recreate_exception (ada_catch_exception, b, fp);
12897 }
12898
12899 static struct breakpoint_ops catch_exception_breakpoint_ops;
12900
12901 /* Virtual table for "catch exception unhandled" breakpoints.  */
12902
12903 static struct bp_location *
12904 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12905 {
12906   return allocate_location_exception (ada_catch_exception_unhandled, self);
12907 }
12908
12909 static void
12910 re_set_catch_exception_unhandled (struct breakpoint *b)
12911 {
12912   re_set_exception (ada_catch_exception_unhandled, b);
12913 }
12914
12915 static void
12916 check_status_catch_exception_unhandled (bpstat bs)
12917 {
12918   check_status_exception (ada_catch_exception_unhandled, bs);
12919 }
12920
12921 static enum print_stop_action
12922 print_it_catch_exception_unhandled (bpstat bs)
12923 {
12924   return print_it_exception (ada_catch_exception_unhandled, bs);
12925 }
12926
12927 static void
12928 print_one_catch_exception_unhandled (struct breakpoint *b,
12929                                      struct bp_location **last_loc)
12930 {
12931   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12932 }
12933
12934 static void
12935 print_mention_catch_exception_unhandled (struct breakpoint *b)
12936 {
12937   print_mention_exception (ada_catch_exception_unhandled, b);
12938 }
12939
12940 static void
12941 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12942                                           struct ui_file *fp)
12943 {
12944   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12945 }
12946
12947 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12948
12949 /* Virtual table for "catch assert" breakpoints.  */
12950
12951 static struct bp_location *
12952 allocate_location_catch_assert (struct breakpoint *self)
12953 {
12954   return allocate_location_exception (ada_catch_assert, self);
12955 }
12956
12957 static void
12958 re_set_catch_assert (struct breakpoint *b)
12959 {
12960   re_set_exception (ada_catch_assert, b);
12961 }
12962
12963 static void
12964 check_status_catch_assert (bpstat bs)
12965 {
12966   check_status_exception (ada_catch_assert, bs);
12967 }
12968
12969 static enum print_stop_action
12970 print_it_catch_assert (bpstat bs)
12971 {
12972   return print_it_exception (ada_catch_assert, bs);
12973 }
12974
12975 static void
12976 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12977 {
12978   print_one_exception (ada_catch_assert, b, last_loc);
12979 }
12980
12981 static void
12982 print_mention_catch_assert (struct breakpoint *b)
12983 {
12984   print_mention_exception (ada_catch_assert, b);
12985 }
12986
12987 static void
12988 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12989 {
12990   print_recreate_exception (ada_catch_assert, b, fp);
12991 }
12992
12993 static struct breakpoint_ops catch_assert_breakpoint_ops;
12994
12995 /* Virtual table for "catch handlers" breakpoints.  */
12996
12997 static struct bp_location *
12998 allocate_location_catch_handlers (struct breakpoint *self)
12999 {
13000   return allocate_location_exception (ada_catch_handlers, self);
13001 }
13002
13003 static void
13004 re_set_catch_handlers (struct breakpoint *b)
13005 {
13006   re_set_exception (ada_catch_handlers, b);
13007 }
13008
13009 static void
13010 check_status_catch_handlers (bpstat bs)
13011 {
13012   check_status_exception (ada_catch_handlers, bs);
13013 }
13014
13015 static enum print_stop_action
13016 print_it_catch_handlers (bpstat bs)
13017 {
13018   return print_it_exception (ada_catch_handlers, bs);
13019 }
13020
13021 static void
13022 print_one_catch_handlers (struct breakpoint *b,
13023                           struct bp_location **last_loc)
13024 {
13025   print_one_exception (ada_catch_handlers, b, last_loc);
13026 }
13027
13028 static void
13029 print_mention_catch_handlers (struct breakpoint *b)
13030 {
13031   print_mention_exception (ada_catch_handlers, b);
13032 }
13033
13034 static void
13035 print_recreate_catch_handlers (struct breakpoint *b,
13036                                struct ui_file *fp)
13037 {
13038   print_recreate_exception (ada_catch_handlers, b, fp);
13039 }
13040
13041 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13042
13043 /* Split the arguments specified in a "catch exception" command.  
13044    Set EX to the appropriate catchpoint type.
13045    Set EXCEP_STRING to the name of the specific exception if
13046    specified by the user.
13047    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13048    "catch handlers" command.  False otherwise.
13049    If a condition is found at the end of the arguments, the condition
13050    expression is stored in COND_STRING (memory must be deallocated
13051    after use).  Otherwise COND_STRING is set to NULL.  */
13052
13053 static void
13054 catch_ada_exception_command_split (const char *args,
13055                                    bool is_catch_handlers_cmd,
13056                                    enum ada_exception_catchpoint_kind *ex,
13057                                    std::string *excep_string,
13058                                    std::string *cond_string)
13059 {
13060   std::string exception_name;
13061
13062   exception_name = extract_arg (&args);
13063   if (exception_name == "if")
13064     {
13065       /* This is not an exception name; this is the start of a condition
13066          expression for a catchpoint on all exceptions.  So, "un-get"
13067          this token, and set exception_name to NULL.  */
13068       exception_name.clear ();
13069       args -= 2;
13070     }
13071
13072   /* Check to see if we have a condition.  */
13073
13074   args = skip_spaces (args);
13075   if (startswith (args, "if")
13076       && (isspace (args[2]) || args[2] == '\0'))
13077     {
13078       args += 2;
13079       args = skip_spaces (args);
13080
13081       if (args[0] == '\0')
13082         error (_("Condition missing after `if' keyword"));
13083       *cond_string = args;
13084
13085       args += strlen (args);
13086     }
13087
13088   /* Check that we do not have any more arguments.  Anything else
13089      is unexpected.  */
13090
13091   if (args[0] != '\0')
13092     error (_("Junk at end of expression"));
13093
13094   if (is_catch_handlers_cmd)
13095     {
13096       /* Catch handling of exceptions.  */
13097       *ex = ada_catch_handlers;
13098       *excep_string = exception_name;
13099     }
13100   else if (exception_name.empty ())
13101     {
13102       /* Catch all exceptions.  */
13103       *ex = ada_catch_exception;
13104       excep_string->clear ();
13105     }
13106   else if (exception_name == "unhandled")
13107     {
13108       /* Catch unhandled exceptions.  */
13109       *ex = ada_catch_exception_unhandled;
13110       excep_string->clear ();
13111     }
13112   else
13113     {
13114       /* Catch a specific exception.  */
13115       *ex = ada_catch_exception;
13116       *excep_string = exception_name;
13117     }
13118 }
13119
13120 /* Return the name of the symbol on which we should break in order to
13121    implement a catchpoint of the EX kind.  */
13122
13123 static const char *
13124 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13125 {
13126   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13127
13128   gdb_assert (data->exception_info != NULL);
13129
13130   switch (ex)
13131     {
13132       case ada_catch_exception:
13133         return (data->exception_info->catch_exception_sym);
13134         break;
13135       case ada_catch_exception_unhandled:
13136         return (data->exception_info->catch_exception_unhandled_sym);
13137         break;
13138       case ada_catch_assert:
13139         return (data->exception_info->catch_assert_sym);
13140         break;
13141       case ada_catch_handlers:
13142         return (data->exception_info->catch_handlers_sym);
13143         break;
13144       default:
13145         internal_error (__FILE__, __LINE__,
13146                         _("unexpected catchpoint kind (%d)"), ex);
13147     }
13148 }
13149
13150 /* Return the breakpoint ops "virtual table" used for catchpoints
13151    of the EX kind.  */
13152
13153 static const struct breakpoint_ops *
13154 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13155 {
13156   switch (ex)
13157     {
13158       case ada_catch_exception:
13159         return (&catch_exception_breakpoint_ops);
13160         break;
13161       case ada_catch_exception_unhandled:
13162         return (&catch_exception_unhandled_breakpoint_ops);
13163         break;
13164       case ada_catch_assert:
13165         return (&catch_assert_breakpoint_ops);
13166         break;
13167       case ada_catch_handlers:
13168         return (&catch_handlers_breakpoint_ops);
13169         break;
13170       default:
13171         internal_error (__FILE__, __LINE__,
13172                         _("unexpected catchpoint kind (%d)"), ex);
13173     }
13174 }
13175
13176 /* Return the condition that will be used to match the current exception
13177    being raised with the exception that the user wants to catch.  This
13178    assumes that this condition is used when the inferior just triggered
13179    an exception catchpoint.
13180    EX: the type of catchpoints used for catching Ada exceptions.  */
13181
13182 static std::string
13183 ada_exception_catchpoint_cond_string (const char *excep_string,
13184                                       enum ada_exception_catchpoint_kind ex)
13185 {
13186   int i;
13187   bool is_standard_exc = false;
13188   std::string result;
13189
13190   if (ex == ada_catch_handlers)
13191     {
13192       /* For exception handlers catchpoints, the condition string does
13193          not use the same parameter as for the other exceptions.  */
13194       result = ("long_integer (GNAT_GCC_exception_Access"
13195                 "(gcc_exception).all.occurrence.id)");
13196     }
13197   else
13198     result = "long_integer (e)";
13199
13200   /* The standard exceptions are a special case.  They are defined in
13201      runtime units that have been compiled without debugging info; if
13202      EXCEP_STRING is the not-fully-qualified name of a standard
13203      exception (e.g. "constraint_error") then, during the evaluation
13204      of the condition expression, the symbol lookup on this name would
13205      *not* return this standard exception.  The catchpoint condition
13206      may then be set only on user-defined exceptions which have the
13207      same not-fully-qualified name (e.g. my_package.constraint_error).
13208
13209      To avoid this unexcepted behavior, these standard exceptions are
13210      systematically prefixed by "standard".  This means that "catch
13211      exception constraint_error" is rewritten into "catch exception
13212      standard.constraint_error".
13213
13214      If an exception named contraint_error is defined in another package of
13215      the inferior program, then the only way to specify this exception as a
13216      breakpoint condition is to use its fully-qualified named:
13217      e.g. my_package.constraint_error.  */
13218
13219   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13220     {
13221       if (strcmp (standard_exc [i], excep_string) == 0)
13222         {
13223           is_standard_exc = true;
13224           break;
13225         }
13226     }
13227
13228   result += " = ";
13229
13230   if (is_standard_exc)
13231     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13232   else
13233     string_appendf (result, "long_integer (&%s)", excep_string);
13234
13235   return result;
13236 }
13237
13238 /* Return the symtab_and_line that should be used to insert an exception
13239    catchpoint of the TYPE kind.
13240
13241    ADDR_STRING returns the name of the function where the real
13242    breakpoint that implements the catchpoints is set, depending on the
13243    type of catchpoint we need to create.  */
13244
13245 static struct symtab_and_line
13246 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13247                    const char **addr_string, const struct breakpoint_ops **ops)
13248 {
13249   const char *sym_name;
13250   struct symbol *sym;
13251
13252   /* First, find out which exception support info to use.  */
13253   ada_exception_support_info_sniffer ();
13254
13255   /* Then lookup the function on which we will break in order to catch
13256      the Ada exceptions requested by the user.  */
13257   sym_name = ada_exception_sym_name (ex);
13258   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13259
13260   if (sym == NULL)
13261     error (_("Catchpoint symbol not found: %s"), sym_name);
13262
13263   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13264     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13265
13266   /* Set ADDR_STRING.  */
13267   *addr_string = xstrdup (sym_name);
13268
13269   /* Set OPS.  */
13270   *ops = ada_exception_breakpoint_ops (ex);
13271
13272   return find_function_start_sal (sym, 1);
13273 }
13274
13275 /* Create an Ada exception catchpoint.
13276
13277    EX_KIND is the kind of exception catchpoint to be created.
13278
13279    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13280    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13281    of the exception to which this catchpoint applies.
13282
13283    COND_STRING, if not empty, is the catchpoint condition.
13284
13285    TEMPFLAG, if nonzero, means that the underlying breakpoint
13286    should be temporary.
13287
13288    FROM_TTY is the usual argument passed to all commands implementations.  */
13289
13290 void
13291 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13292                                  enum ada_exception_catchpoint_kind ex_kind,
13293                                  const std::string &excep_string,
13294                                  const std::string &cond_string,
13295                                  int tempflag,
13296                                  int disabled,
13297                                  int from_tty)
13298 {
13299   const char *addr_string = NULL;
13300   const struct breakpoint_ops *ops = NULL;
13301   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13302
13303   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13304   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13305                                  ops, tempflag, disabled, from_tty);
13306   c->excep_string = excep_string;
13307   create_excep_cond_exprs (c.get (), ex_kind);
13308   if (!cond_string.empty ())
13309     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13310   install_breakpoint (0, std::move (c), 1);
13311 }
13312
13313 /* Implement the "catch exception" command.  */
13314
13315 static void
13316 catch_ada_exception_command (const char *arg_entry, int from_tty,
13317                              struct cmd_list_element *command)
13318 {
13319   const char *arg = arg_entry;
13320   struct gdbarch *gdbarch = get_current_arch ();
13321   int tempflag;
13322   enum ada_exception_catchpoint_kind ex_kind;
13323   std::string excep_string;
13324   std::string cond_string;
13325
13326   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13327
13328   if (!arg)
13329     arg = "";
13330   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13331                                      &cond_string);
13332   create_ada_exception_catchpoint (gdbarch, ex_kind,
13333                                    excep_string, cond_string,
13334                                    tempflag, 1 /* enabled */,
13335                                    from_tty);
13336 }
13337
13338 /* Implement the "catch handlers" command.  */
13339
13340 static void
13341 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13342                             struct cmd_list_element *command)
13343 {
13344   const char *arg = arg_entry;
13345   struct gdbarch *gdbarch = get_current_arch ();
13346   int tempflag;
13347   enum ada_exception_catchpoint_kind ex_kind;
13348   std::string excep_string;
13349   std::string cond_string;
13350
13351   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13352
13353   if (!arg)
13354     arg = "";
13355   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13356                                      &cond_string);
13357   create_ada_exception_catchpoint (gdbarch, ex_kind,
13358                                    excep_string, cond_string,
13359                                    tempflag, 1 /* enabled */,
13360                                    from_tty);
13361 }
13362
13363 /* Split the arguments specified in a "catch assert" command.
13364
13365    ARGS contains the command's arguments (or the empty string if
13366    no arguments were passed).
13367
13368    If ARGS contains a condition, set COND_STRING to that condition
13369    (the memory needs to be deallocated after use).  */
13370
13371 static void
13372 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13373 {
13374   args = skip_spaces (args);
13375
13376   /* Check whether a condition was provided.  */
13377   if (startswith (args, "if")
13378       && (isspace (args[2]) || args[2] == '\0'))
13379     {
13380       args += 2;
13381       args = skip_spaces (args);
13382       if (args[0] == '\0')
13383         error (_("condition missing after `if' keyword"));
13384       cond_string.assign (args);
13385     }
13386
13387   /* Otherwise, there should be no other argument at the end of
13388      the command.  */
13389   else if (args[0] != '\0')
13390     error (_("Junk at end of arguments."));
13391 }
13392
13393 /* Implement the "catch assert" command.  */
13394
13395 static void
13396 catch_assert_command (const char *arg_entry, int from_tty,
13397                       struct cmd_list_element *command)
13398 {
13399   const char *arg = arg_entry;
13400   struct gdbarch *gdbarch = get_current_arch ();
13401   int tempflag;
13402   std::string cond_string;
13403
13404   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13405
13406   if (!arg)
13407     arg = "";
13408   catch_ada_assert_command_split (arg, cond_string);
13409   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13410                                    "", cond_string,
13411                                    tempflag, 1 /* enabled */,
13412                                    from_tty);
13413 }
13414
13415 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13416
13417 static int
13418 ada_is_exception_sym (struct symbol *sym)
13419 {
13420   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13421
13422   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13423           && SYMBOL_CLASS (sym) != LOC_BLOCK
13424           && SYMBOL_CLASS (sym) != LOC_CONST
13425           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13426           && type_name != NULL && strcmp (type_name, "exception") == 0);
13427 }
13428
13429 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13430    Ada exception object.  This matches all exceptions except the ones
13431    defined by the Ada language.  */
13432
13433 static int
13434 ada_is_non_standard_exception_sym (struct symbol *sym)
13435 {
13436   int i;
13437
13438   if (!ada_is_exception_sym (sym))
13439     return 0;
13440
13441   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13442     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13443       return 0;  /* A standard exception.  */
13444
13445   /* Numeric_Error is also a standard exception, so exclude it.
13446      See the STANDARD_EXC description for more details as to why
13447      this exception is not listed in that array.  */
13448   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13449     return 0;
13450
13451   return 1;
13452 }
13453
13454 /* A helper function for std::sort, comparing two struct ada_exc_info
13455    objects.
13456
13457    The comparison is determined first by exception name, and then
13458    by exception address.  */
13459
13460 bool
13461 ada_exc_info::operator< (const ada_exc_info &other) const
13462 {
13463   int result;
13464
13465   result = strcmp (name, other.name);
13466   if (result < 0)
13467     return true;
13468   if (result == 0 && addr < other.addr)
13469     return true;
13470   return false;
13471 }
13472
13473 bool
13474 ada_exc_info::operator== (const ada_exc_info &other) const
13475 {
13476   return addr == other.addr && strcmp (name, other.name) == 0;
13477 }
13478
13479 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13480    routine, but keeping the first SKIP elements untouched.
13481
13482    All duplicates are also removed.  */
13483
13484 static void
13485 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13486                                       int skip)
13487 {
13488   std::sort (exceptions->begin () + skip, exceptions->end ());
13489   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13490                      exceptions->end ());
13491 }
13492
13493 /* Add all exceptions defined by the Ada standard whose name match
13494    a regular expression.
13495
13496    If PREG is not NULL, then this regexp_t object is used to
13497    perform the symbol name matching.  Otherwise, no name-based
13498    filtering is performed.
13499
13500    EXCEPTIONS is a vector of exceptions to which matching exceptions
13501    gets pushed.  */
13502
13503 static void
13504 ada_add_standard_exceptions (compiled_regex *preg,
13505                              std::vector<ada_exc_info> *exceptions)
13506 {
13507   int i;
13508
13509   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13510     {
13511       if (preg == NULL
13512           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13513         {
13514           struct bound_minimal_symbol msymbol
13515             = ada_lookup_simple_minsym (standard_exc[i]);
13516
13517           if (msymbol.minsym != NULL)
13518             {
13519               struct ada_exc_info info
13520                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13521
13522               exceptions->push_back (info);
13523             }
13524         }
13525     }
13526 }
13527
13528 /* Add all Ada exceptions defined locally and accessible from the given
13529    FRAME.
13530
13531    If PREG is not NULL, then this regexp_t object is used to
13532    perform the symbol name matching.  Otherwise, no name-based
13533    filtering is performed.
13534
13535    EXCEPTIONS is a vector of exceptions to which matching exceptions
13536    gets pushed.  */
13537
13538 static void
13539 ada_add_exceptions_from_frame (compiled_regex *preg,
13540                                struct frame_info *frame,
13541                                std::vector<ada_exc_info> *exceptions)
13542 {
13543   const struct block *block = get_frame_block (frame, 0);
13544
13545   while (block != 0)
13546     {
13547       struct block_iterator iter;
13548       struct symbol *sym;
13549
13550       ALL_BLOCK_SYMBOLS (block, iter, sym)
13551         {
13552           switch (SYMBOL_CLASS (sym))
13553             {
13554             case LOC_TYPEDEF:
13555             case LOC_BLOCK:
13556             case LOC_CONST:
13557               break;
13558             default:
13559               if (ada_is_exception_sym (sym))
13560                 {
13561                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13562                                               SYMBOL_VALUE_ADDRESS (sym)};
13563
13564                   exceptions->push_back (info);
13565                 }
13566             }
13567         }
13568       if (BLOCK_FUNCTION (block) != NULL)
13569         break;
13570       block = BLOCK_SUPERBLOCK (block);
13571     }
13572 }
13573
13574 /* Return true if NAME matches PREG or if PREG is NULL.  */
13575
13576 static bool
13577 name_matches_regex (const char *name, compiled_regex *preg)
13578 {
13579   return (preg == NULL
13580           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13581 }
13582
13583 /* Add all exceptions defined globally whose name name match
13584    a regular expression, excluding standard exceptions.
13585
13586    The reason we exclude standard exceptions is that they need
13587    to be handled separately: Standard exceptions are defined inside
13588    a runtime unit which is normally not compiled with debugging info,
13589    and thus usually do not show up in our symbol search.  However,
13590    if the unit was in fact built with debugging info, we need to
13591    exclude them because they would duplicate the entry we found
13592    during the special loop that specifically searches for those
13593    standard exceptions.
13594
13595    If PREG is not NULL, then this regexp_t object is used to
13596    perform the symbol name matching.  Otherwise, no name-based
13597    filtering is performed.
13598
13599    EXCEPTIONS is a vector of exceptions to which matching exceptions
13600    gets pushed.  */
13601
13602 static void
13603 ada_add_global_exceptions (compiled_regex *preg,
13604                            std::vector<ada_exc_info> *exceptions)
13605 {
13606   struct objfile *objfile;
13607   struct compunit_symtab *s;
13608
13609   /* In Ada, the symbol "search name" is a linkage name, whereas the
13610      regular expression used to do the matching refers to the natural
13611      name.  So match against the decoded name.  */
13612   expand_symtabs_matching (NULL,
13613                            lookup_name_info::match_any (),
13614                            [&] (const char *search_name)
13615                            {
13616                              const char *decoded = ada_decode (search_name);
13617                              return name_matches_regex (decoded, preg);
13618                            },
13619                            NULL,
13620                            VARIABLES_DOMAIN);
13621
13622   ALL_COMPUNITS (objfile, s)
13623     {
13624       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13625       int i;
13626
13627       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13628         {
13629           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13630           struct block_iterator iter;
13631           struct symbol *sym;
13632
13633           ALL_BLOCK_SYMBOLS (b, iter, sym)
13634             if (ada_is_non_standard_exception_sym (sym)
13635                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13636               {
13637                 struct ada_exc_info info
13638                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13639
13640                 exceptions->push_back (info);
13641               }
13642         }
13643     }
13644 }
13645
13646 /* Implements ada_exceptions_list with the regular expression passed
13647    as a regex_t, rather than a string.
13648
13649    If not NULL, PREG is used to filter out exceptions whose names
13650    do not match.  Otherwise, all exceptions are listed.  */
13651
13652 static std::vector<ada_exc_info>
13653 ada_exceptions_list_1 (compiled_regex *preg)
13654 {
13655   std::vector<ada_exc_info> result;
13656   int prev_len;
13657
13658   /* First, list the known standard exceptions.  These exceptions
13659      need to be handled separately, as they are usually defined in
13660      runtime units that have been compiled without debugging info.  */
13661
13662   ada_add_standard_exceptions (preg, &result);
13663
13664   /* Next, find all exceptions whose scope is local and accessible
13665      from the currently selected frame.  */
13666
13667   if (has_stack_frames ())
13668     {
13669       prev_len = result.size ();
13670       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13671                                      &result);
13672       if (result.size () > prev_len)
13673         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13674     }
13675
13676   /* Add all exceptions whose scope is global.  */
13677
13678   prev_len = result.size ();
13679   ada_add_global_exceptions (preg, &result);
13680   if (result.size () > prev_len)
13681     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13682
13683   return result;
13684 }
13685
13686 /* Return a vector of ada_exc_info.
13687
13688    If REGEXP is NULL, all exceptions are included in the result.
13689    Otherwise, it should contain a valid regular expression,
13690    and only the exceptions whose names match that regular expression
13691    are included in the result.
13692
13693    The exceptions are sorted in the following order:
13694      - Standard exceptions (defined by the Ada language), in
13695        alphabetical order;
13696      - Exceptions only visible from the current frame, in
13697        alphabetical order;
13698      - Exceptions whose scope is global, in alphabetical order.  */
13699
13700 std::vector<ada_exc_info>
13701 ada_exceptions_list (const char *regexp)
13702 {
13703   if (regexp == NULL)
13704     return ada_exceptions_list_1 (NULL);
13705
13706   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13707   return ada_exceptions_list_1 (&reg);
13708 }
13709
13710 /* Implement the "info exceptions" command.  */
13711
13712 static void
13713 info_exceptions_command (const char *regexp, int from_tty)
13714 {
13715   struct gdbarch *gdbarch = get_current_arch ();
13716
13717   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13718
13719   if (regexp != NULL)
13720     printf_filtered
13721       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13722   else
13723     printf_filtered (_("All defined Ada exceptions:\n"));
13724
13725   for (const ada_exc_info &info : exceptions)
13726     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13727 }
13728
13729                                 /* Operators */
13730 /* Information about operators given special treatment in functions
13731    below.  */
13732 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13733
13734 #define ADA_OPERATORS \
13735     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13736     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13737     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13738     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13739     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13740     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13741     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13742     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13743     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13744     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13745     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13746     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13747     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13748     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13749     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13750     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13751     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13752     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13753     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13754
13755 static void
13756 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13757                      int *argsp)
13758 {
13759   switch (exp->elts[pc - 1].opcode)
13760     {
13761     default:
13762       operator_length_standard (exp, pc, oplenp, argsp);
13763       break;
13764
13765 #define OP_DEFN(op, len, args, binop) \
13766     case op: *oplenp = len; *argsp = args; break;
13767       ADA_OPERATORS;
13768 #undef OP_DEFN
13769
13770     case OP_AGGREGATE:
13771       *oplenp = 3;
13772       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13773       break;
13774
13775     case OP_CHOICES:
13776       *oplenp = 3;
13777       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13778       break;
13779     }
13780 }
13781
13782 /* Implementation of the exp_descriptor method operator_check.  */
13783
13784 static int
13785 ada_operator_check (struct expression *exp, int pos,
13786                     int (*objfile_func) (struct objfile *objfile, void *data),
13787                     void *data)
13788 {
13789   const union exp_element *const elts = exp->elts;
13790   struct type *type = NULL;
13791
13792   switch (elts[pos].opcode)
13793     {
13794       case UNOP_IN_RANGE:
13795       case UNOP_QUAL:
13796         type = elts[pos + 1].type;
13797         break;
13798
13799       default:
13800         return operator_check_standard (exp, pos, objfile_func, data);
13801     }
13802
13803   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13804
13805   if (type && TYPE_OBJFILE (type)
13806       && (*objfile_func) (TYPE_OBJFILE (type), data))
13807     return 1;
13808
13809   return 0;
13810 }
13811
13812 static const char *
13813 ada_op_name (enum exp_opcode opcode)
13814 {
13815   switch (opcode)
13816     {
13817     default:
13818       return op_name_standard (opcode);
13819
13820 #define OP_DEFN(op, len, args, binop) case op: return #op;
13821       ADA_OPERATORS;
13822 #undef OP_DEFN
13823
13824     case OP_AGGREGATE:
13825       return "OP_AGGREGATE";
13826     case OP_CHOICES:
13827       return "OP_CHOICES";
13828     case OP_NAME:
13829       return "OP_NAME";
13830     }
13831 }
13832
13833 /* As for operator_length, but assumes PC is pointing at the first
13834    element of the operator, and gives meaningful results only for the 
13835    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13836
13837 static void
13838 ada_forward_operator_length (struct expression *exp, int pc,
13839                              int *oplenp, int *argsp)
13840 {
13841   switch (exp->elts[pc].opcode)
13842     {
13843     default:
13844       *oplenp = *argsp = 0;
13845       break;
13846
13847 #define OP_DEFN(op, len, args, binop) \
13848     case op: *oplenp = len; *argsp = args; break;
13849       ADA_OPERATORS;
13850 #undef OP_DEFN
13851
13852     case OP_AGGREGATE:
13853       *oplenp = 3;
13854       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13855       break;
13856
13857     case OP_CHOICES:
13858       *oplenp = 3;
13859       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13860       break;
13861
13862     case OP_STRING:
13863     case OP_NAME:
13864       {
13865         int len = longest_to_int (exp->elts[pc + 1].longconst);
13866
13867         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13868         *argsp = 0;
13869         break;
13870       }
13871     }
13872 }
13873
13874 static int
13875 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13876 {
13877   enum exp_opcode op = exp->elts[elt].opcode;
13878   int oplen, nargs;
13879   int pc = elt;
13880   int i;
13881
13882   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13883
13884   switch (op)
13885     {
13886       /* Ada attributes ('Foo).  */
13887     case OP_ATR_FIRST:
13888     case OP_ATR_LAST:
13889     case OP_ATR_LENGTH:
13890     case OP_ATR_IMAGE:
13891     case OP_ATR_MAX:
13892     case OP_ATR_MIN:
13893     case OP_ATR_MODULUS:
13894     case OP_ATR_POS:
13895     case OP_ATR_SIZE:
13896     case OP_ATR_TAG:
13897     case OP_ATR_VAL:
13898       break;
13899
13900     case UNOP_IN_RANGE:
13901     case UNOP_QUAL:
13902       /* XXX: gdb_sprint_host_address, type_sprint */
13903       fprintf_filtered (stream, _("Type @"));
13904       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13905       fprintf_filtered (stream, " (");
13906       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13907       fprintf_filtered (stream, ")");
13908       break;
13909     case BINOP_IN_BOUNDS:
13910       fprintf_filtered (stream, " (%d)",
13911                         longest_to_int (exp->elts[pc + 2].longconst));
13912       break;
13913     case TERNOP_IN_RANGE:
13914       break;
13915
13916     case OP_AGGREGATE:
13917     case OP_OTHERS:
13918     case OP_DISCRETE_RANGE:
13919     case OP_POSITIONAL:
13920     case OP_CHOICES:
13921       break;
13922
13923     case OP_NAME:
13924     case OP_STRING:
13925       {
13926         char *name = &exp->elts[elt + 2].string;
13927         int len = longest_to_int (exp->elts[elt + 1].longconst);
13928
13929         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13930         break;
13931       }
13932
13933     default:
13934       return dump_subexp_body_standard (exp, stream, elt);
13935     }
13936
13937   elt += oplen;
13938   for (i = 0; i < nargs; i += 1)
13939     elt = dump_subexp (exp, stream, elt);
13940
13941   return elt;
13942 }
13943
13944 /* The Ada extension of print_subexp (q.v.).  */
13945
13946 static void
13947 ada_print_subexp (struct expression *exp, int *pos,
13948                   struct ui_file *stream, enum precedence prec)
13949 {
13950   int oplen, nargs, i;
13951   int pc = *pos;
13952   enum exp_opcode op = exp->elts[pc].opcode;
13953
13954   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13955
13956   *pos += oplen;
13957   switch (op)
13958     {
13959     default:
13960       *pos -= oplen;
13961       print_subexp_standard (exp, pos, stream, prec);
13962       return;
13963
13964     case OP_VAR_VALUE:
13965       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13966       return;
13967
13968     case BINOP_IN_BOUNDS:
13969       /* XXX: sprint_subexp */
13970       print_subexp (exp, pos, stream, PREC_SUFFIX);
13971       fputs_filtered (" in ", stream);
13972       print_subexp (exp, pos, stream, PREC_SUFFIX);
13973       fputs_filtered ("'range", stream);
13974       if (exp->elts[pc + 1].longconst > 1)
13975         fprintf_filtered (stream, "(%ld)",
13976                           (long) exp->elts[pc + 1].longconst);
13977       return;
13978
13979     case TERNOP_IN_RANGE:
13980       if (prec >= PREC_EQUAL)
13981         fputs_filtered ("(", stream);
13982       /* XXX: sprint_subexp */
13983       print_subexp (exp, pos, stream, PREC_SUFFIX);
13984       fputs_filtered (" in ", stream);
13985       print_subexp (exp, pos, stream, PREC_EQUAL);
13986       fputs_filtered (" .. ", stream);
13987       print_subexp (exp, pos, stream, PREC_EQUAL);
13988       if (prec >= PREC_EQUAL)
13989         fputs_filtered (")", stream);
13990       return;
13991
13992     case OP_ATR_FIRST:
13993     case OP_ATR_LAST:
13994     case OP_ATR_LENGTH:
13995     case OP_ATR_IMAGE:
13996     case OP_ATR_MAX:
13997     case OP_ATR_MIN:
13998     case OP_ATR_MODULUS:
13999     case OP_ATR_POS:
14000     case OP_ATR_SIZE:
14001     case OP_ATR_TAG:
14002     case OP_ATR_VAL:
14003       if (exp->elts[*pos].opcode == OP_TYPE)
14004         {
14005           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14006             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14007                            &type_print_raw_options);
14008           *pos += 3;
14009         }
14010       else
14011         print_subexp (exp, pos, stream, PREC_SUFFIX);
14012       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14013       if (nargs > 1)
14014         {
14015           int tem;
14016
14017           for (tem = 1; tem < nargs; tem += 1)
14018             {
14019               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14020               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14021             }
14022           fputs_filtered (")", stream);
14023         }
14024       return;
14025
14026     case UNOP_QUAL:
14027       type_print (exp->elts[pc + 1].type, "", stream, 0);
14028       fputs_filtered ("'(", stream);
14029       print_subexp (exp, pos, stream, PREC_PREFIX);
14030       fputs_filtered (")", stream);
14031       return;
14032
14033     case UNOP_IN_RANGE:
14034       /* XXX: sprint_subexp */
14035       print_subexp (exp, pos, stream, PREC_SUFFIX);
14036       fputs_filtered (" in ", stream);
14037       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14038                      &type_print_raw_options);
14039       return;
14040
14041     case OP_DISCRETE_RANGE:
14042       print_subexp (exp, pos, stream, PREC_SUFFIX);
14043       fputs_filtered ("..", stream);
14044       print_subexp (exp, pos, stream, PREC_SUFFIX);
14045       return;
14046
14047     case OP_OTHERS:
14048       fputs_filtered ("others => ", stream);
14049       print_subexp (exp, pos, stream, PREC_SUFFIX);
14050       return;
14051
14052     case OP_CHOICES:
14053       for (i = 0; i < nargs-1; i += 1)
14054         {
14055           if (i > 0)
14056             fputs_filtered ("|", stream);
14057           print_subexp (exp, pos, stream, PREC_SUFFIX);
14058         }
14059       fputs_filtered (" => ", stream);
14060       print_subexp (exp, pos, stream, PREC_SUFFIX);
14061       return;
14062       
14063     case OP_POSITIONAL:
14064       print_subexp (exp, pos, stream, PREC_SUFFIX);
14065       return;
14066
14067     case OP_AGGREGATE:
14068       fputs_filtered ("(", stream);
14069       for (i = 0; i < nargs; i += 1)
14070         {
14071           if (i > 0)
14072             fputs_filtered (", ", stream);
14073           print_subexp (exp, pos, stream, PREC_SUFFIX);
14074         }
14075       fputs_filtered (")", stream);
14076       return;
14077     }
14078 }
14079
14080 /* Table mapping opcodes into strings for printing operators
14081    and precedences of the operators.  */
14082
14083 static const struct op_print ada_op_print_tab[] = {
14084   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14085   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14086   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14087   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14088   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14089   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14090   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14091   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14092   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14093   {">=", BINOP_GEQ, PREC_ORDER, 0},
14094   {">", BINOP_GTR, PREC_ORDER, 0},
14095   {"<", BINOP_LESS, PREC_ORDER, 0},
14096   {">>", BINOP_RSH, PREC_SHIFT, 0},
14097   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14098   {"+", BINOP_ADD, PREC_ADD, 0},
14099   {"-", BINOP_SUB, PREC_ADD, 0},
14100   {"&", BINOP_CONCAT, PREC_ADD, 0},
14101   {"*", BINOP_MUL, PREC_MUL, 0},
14102   {"/", BINOP_DIV, PREC_MUL, 0},
14103   {"rem", BINOP_REM, PREC_MUL, 0},
14104   {"mod", BINOP_MOD, PREC_MUL, 0},
14105   {"**", BINOP_EXP, PREC_REPEAT, 0},
14106   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14107   {"-", UNOP_NEG, PREC_PREFIX, 0},
14108   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14109   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14110   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14111   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14112   {".all", UNOP_IND, PREC_SUFFIX, 1},
14113   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14114   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14115   {NULL, OP_NULL, PREC_SUFFIX, 0}
14116 };
14117 \f
14118 enum ada_primitive_types {
14119   ada_primitive_type_int,
14120   ada_primitive_type_long,
14121   ada_primitive_type_short,
14122   ada_primitive_type_char,
14123   ada_primitive_type_float,
14124   ada_primitive_type_double,
14125   ada_primitive_type_void,
14126   ada_primitive_type_long_long,
14127   ada_primitive_type_long_double,
14128   ada_primitive_type_natural,
14129   ada_primitive_type_positive,
14130   ada_primitive_type_system_address,
14131   ada_primitive_type_storage_offset,
14132   nr_ada_primitive_types
14133 };
14134
14135 static void
14136 ada_language_arch_info (struct gdbarch *gdbarch,
14137                         struct language_arch_info *lai)
14138 {
14139   const struct builtin_type *builtin = builtin_type (gdbarch);
14140
14141   lai->primitive_type_vector
14142     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14143                               struct type *);
14144
14145   lai->primitive_type_vector [ada_primitive_type_int]
14146     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14147                          0, "integer");
14148   lai->primitive_type_vector [ada_primitive_type_long]
14149     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14150                          0, "long_integer");
14151   lai->primitive_type_vector [ada_primitive_type_short]
14152     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14153                          0, "short_integer");
14154   lai->string_char_type
14155     = lai->primitive_type_vector [ada_primitive_type_char]
14156     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14157   lai->primitive_type_vector [ada_primitive_type_float]
14158     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14159                        "float", gdbarch_float_format (gdbarch));
14160   lai->primitive_type_vector [ada_primitive_type_double]
14161     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14162                        "long_float", gdbarch_double_format (gdbarch));
14163   lai->primitive_type_vector [ada_primitive_type_long_long]
14164     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14165                          0, "long_long_integer");
14166   lai->primitive_type_vector [ada_primitive_type_long_double]
14167     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14168                        "long_long_float", gdbarch_long_double_format (gdbarch));
14169   lai->primitive_type_vector [ada_primitive_type_natural]
14170     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14171                          0, "natural");
14172   lai->primitive_type_vector [ada_primitive_type_positive]
14173     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14174                          0, "positive");
14175   lai->primitive_type_vector [ada_primitive_type_void]
14176     = builtin->builtin_void;
14177
14178   lai->primitive_type_vector [ada_primitive_type_system_address]
14179     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14180                                       "void"));
14181   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14182     = "system__address";
14183
14184   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14185      type.  This is a signed integral type whose size is the same as
14186      the size of addresses.  */
14187   {
14188     unsigned int addr_length = TYPE_LENGTH
14189       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14190
14191     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14192       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14193                            "storage_offset");
14194   }
14195
14196   lai->bool_type_symbol = NULL;
14197   lai->bool_type_default = builtin->builtin_bool;
14198 }
14199 \f
14200                                 /* Language vector */
14201
14202 /* Not really used, but needed in the ada_language_defn.  */
14203
14204 static void
14205 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14206 {
14207   ada_emit_char (c, type, stream, quoter, 1);
14208 }
14209
14210 static int
14211 parse (struct parser_state *ps)
14212 {
14213   warnings_issued = 0;
14214   return ada_parse (ps);
14215 }
14216
14217 static const struct exp_descriptor ada_exp_descriptor = {
14218   ada_print_subexp,
14219   ada_operator_length,
14220   ada_operator_check,
14221   ada_op_name,
14222   ada_dump_subexp_body,
14223   ada_evaluate_subexp
14224 };
14225
14226 /* symbol_name_matcher_ftype adapter for wild_match.  */
14227
14228 static bool
14229 do_wild_match (const char *symbol_search_name,
14230                const lookup_name_info &lookup_name,
14231                completion_match_result *comp_match_res)
14232 {
14233   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14234 }
14235
14236 /* symbol_name_matcher_ftype adapter for full_match.  */
14237
14238 static bool
14239 do_full_match (const char *symbol_search_name,
14240                const lookup_name_info &lookup_name,
14241                completion_match_result *comp_match_res)
14242 {
14243   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14244 }
14245
14246 /* Build the Ada lookup name for LOOKUP_NAME.  */
14247
14248 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14249 {
14250   const std::string &user_name = lookup_name.name ();
14251
14252   if (user_name[0] == '<')
14253     {
14254       if (user_name.back () == '>')
14255         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14256       else
14257         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14258       m_encoded_p = true;
14259       m_verbatim_p = true;
14260       m_wild_match_p = false;
14261       m_standard_p = false;
14262     }
14263   else
14264     {
14265       m_verbatim_p = false;
14266
14267       m_encoded_p = user_name.find ("__") != std::string::npos;
14268
14269       if (!m_encoded_p)
14270         {
14271           const char *folded = ada_fold_name (user_name.c_str ());
14272           const char *encoded = ada_encode_1 (folded, false);
14273           if (encoded != NULL)
14274             m_encoded_name = encoded;
14275           else
14276             m_encoded_name = user_name;
14277         }
14278       else
14279         m_encoded_name = user_name;
14280
14281       /* Handle the 'package Standard' special case.  See description
14282          of m_standard_p.  */
14283       if (startswith (m_encoded_name.c_str (), "standard__"))
14284         {
14285           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14286           m_standard_p = true;
14287         }
14288       else
14289         m_standard_p = false;
14290
14291       /* If the name contains a ".", then the user is entering a fully
14292          qualified entity name, and the match must not be done in wild
14293          mode.  Similarly, if the user wants to complete what looks
14294          like an encoded name, the match must not be done in wild
14295          mode.  Also, in the standard__ special case always do
14296          non-wild matching.  */
14297       m_wild_match_p
14298         = (lookup_name.match_type () != symbol_name_match_type::FULL
14299            && !m_encoded_p
14300            && !m_standard_p
14301            && user_name.find ('.') == std::string::npos);
14302     }
14303 }
14304
14305 /* symbol_name_matcher_ftype method for Ada.  This only handles
14306    completion mode.  */
14307
14308 static bool
14309 ada_symbol_name_matches (const char *symbol_search_name,
14310                          const lookup_name_info &lookup_name,
14311                          completion_match_result *comp_match_res)
14312 {
14313   return lookup_name.ada ().matches (symbol_search_name,
14314                                      lookup_name.match_type (),
14315                                      comp_match_res);
14316 }
14317
14318 /* A name matcher that matches the symbol name exactly, with
14319    strcmp.  */
14320
14321 static bool
14322 literal_symbol_name_matcher (const char *symbol_search_name,
14323                              const lookup_name_info &lookup_name,
14324                              completion_match_result *comp_match_res)
14325 {
14326   const std::string &name = lookup_name.name ();
14327
14328   int cmp = (lookup_name.completion_mode ()
14329              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14330              : strcmp (symbol_search_name, name.c_str ()));
14331   if (cmp == 0)
14332     {
14333       if (comp_match_res != NULL)
14334         comp_match_res->set_match (symbol_search_name);
14335       return true;
14336     }
14337   else
14338     return false;
14339 }
14340
14341 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14342    Ada.  */
14343
14344 static symbol_name_matcher_ftype *
14345 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14346 {
14347   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14348     return literal_symbol_name_matcher;
14349
14350   if (lookup_name.completion_mode ())
14351     return ada_symbol_name_matches;
14352   else
14353     {
14354       if (lookup_name.ada ().wild_match_p ())
14355         return do_wild_match;
14356       else
14357         return do_full_match;
14358     }
14359 }
14360
14361 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14362
14363 static struct value *
14364 ada_read_var_value (struct symbol *var, const struct block *var_block,
14365                     struct frame_info *frame)
14366 {
14367   const struct block *frame_block = NULL;
14368   struct symbol *renaming_sym = NULL;
14369
14370   /* The only case where default_read_var_value is not sufficient
14371      is when VAR is a renaming...  */
14372   if (frame)
14373     frame_block = get_frame_block (frame, NULL);
14374   if (frame_block)
14375     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14376   if (renaming_sym != NULL)
14377     return ada_read_renaming_var_value (renaming_sym, frame_block);
14378
14379   /* This is a typical case where we expect the default_read_var_value
14380      function to work.  */
14381   return default_read_var_value (var, var_block, frame);
14382 }
14383
14384 static const char *ada_extensions[] =
14385 {
14386   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14387 };
14388
14389 extern const struct language_defn ada_language_defn = {
14390   "ada",                        /* Language name */
14391   "Ada",
14392   language_ada,
14393   range_check_off,
14394   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14395                                    that's not quite what this means.  */
14396   array_row_major,
14397   macro_expansion_no,
14398   ada_extensions,
14399   &ada_exp_descriptor,
14400   parse,
14401   resolve,
14402   ada_printchar,                /* Print a character constant */
14403   ada_printstr,                 /* Function to print string constant */
14404   emit_char,                    /* Function to print single char (not used) */
14405   ada_print_type,               /* Print a type using appropriate syntax */
14406   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14407   ada_val_print,                /* Print a value using appropriate syntax */
14408   ada_value_print,              /* Print a top-level value */
14409   ada_read_var_value,           /* la_read_var_value */
14410   NULL,                         /* Language specific skip_trampoline */
14411   NULL,                         /* name_of_this */
14412   true,                         /* la_store_sym_names_in_linkage_form_p */
14413   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14414   basic_lookup_transparent_type,        /* lookup_transparent_type */
14415   ada_la_decode,                /* Language specific symbol demangler */
14416   ada_sniff_from_mangled_name,
14417   NULL,                         /* Language specific
14418                                    class_name_from_physname */
14419   ada_op_print_tab,             /* expression operators for printing */
14420   0,                            /* c-style arrays */
14421   1,                            /* String lower bound */
14422   ada_get_gdb_completer_word_break_characters,
14423   ada_collect_symbol_completion_matches,
14424   ada_language_arch_info,
14425   ada_print_array_index,
14426   default_pass_by_reference,
14427   c_get_string,
14428   c_watch_location_expression,
14429   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14430   ada_iterate_over_symbols,
14431   default_search_name_hash,
14432   &ada_varobj_ops,
14433   NULL,
14434   NULL,
14435   LANG_MAGIC
14436 };
14437
14438 /* Command-list for the "set/show ada" prefix command.  */
14439 static struct cmd_list_element *set_ada_list;
14440 static struct cmd_list_element *show_ada_list;
14441
14442 /* Implement the "set ada" prefix command.  */
14443
14444 static void
14445 set_ada_command (const char *arg, int from_tty)
14446 {
14447   printf_unfiltered (_(\
14448 "\"set ada\" must be followed by the name of a setting.\n"));
14449   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14450 }
14451
14452 /* Implement the "show ada" prefix command.  */
14453
14454 static void
14455 show_ada_command (const char *args, int from_tty)
14456 {
14457   cmd_show_list (show_ada_list, from_tty, "");
14458 }
14459
14460 static void
14461 initialize_ada_catchpoint_ops (void)
14462 {
14463   struct breakpoint_ops *ops;
14464
14465   initialize_breakpoint_ops ();
14466
14467   ops = &catch_exception_breakpoint_ops;
14468   *ops = bkpt_breakpoint_ops;
14469   ops->allocate_location = allocate_location_catch_exception;
14470   ops->re_set = re_set_catch_exception;
14471   ops->check_status = check_status_catch_exception;
14472   ops->print_it = print_it_catch_exception;
14473   ops->print_one = print_one_catch_exception;
14474   ops->print_mention = print_mention_catch_exception;
14475   ops->print_recreate = print_recreate_catch_exception;
14476
14477   ops = &catch_exception_unhandled_breakpoint_ops;
14478   *ops = bkpt_breakpoint_ops;
14479   ops->allocate_location = allocate_location_catch_exception_unhandled;
14480   ops->re_set = re_set_catch_exception_unhandled;
14481   ops->check_status = check_status_catch_exception_unhandled;
14482   ops->print_it = print_it_catch_exception_unhandled;
14483   ops->print_one = print_one_catch_exception_unhandled;
14484   ops->print_mention = print_mention_catch_exception_unhandled;
14485   ops->print_recreate = print_recreate_catch_exception_unhandled;
14486
14487   ops = &catch_assert_breakpoint_ops;
14488   *ops = bkpt_breakpoint_ops;
14489   ops->allocate_location = allocate_location_catch_assert;
14490   ops->re_set = re_set_catch_assert;
14491   ops->check_status = check_status_catch_assert;
14492   ops->print_it = print_it_catch_assert;
14493   ops->print_one = print_one_catch_assert;
14494   ops->print_mention = print_mention_catch_assert;
14495   ops->print_recreate = print_recreate_catch_assert;
14496
14497   ops = &catch_handlers_breakpoint_ops;
14498   *ops = bkpt_breakpoint_ops;
14499   ops->allocate_location = allocate_location_catch_handlers;
14500   ops->re_set = re_set_catch_handlers;
14501   ops->check_status = check_status_catch_handlers;
14502   ops->print_it = print_it_catch_handlers;
14503   ops->print_one = print_one_catch_handlers;
14504   ops->print_mention = print_mention_catch_handlers;
14505   ops->print_recreate = print_recreate_catch_handlers;
14506 }
14507
14508 /* This module's 'new_objfile' observer.  */
14509
14510 static void
14511 ada_new_objfile_observer (struct objfile *objfile)
14512 {
14513   ada_clear_symbol_cache ();
14514 }
14515
14516 /* This module's 'free_objfile' observer.  */
14517
14518 static void
14519 ada_free_objfile_observer (struct objfile *objfile)
14520 {
14521   ada_clear_symbol_cache ();
14522 }
14523
14524 void
14525 _initialize_ada_language (void)
14526 {
14527   initialize_ada_catchpoint_ops ();
14528
14529   add_prefix_cmd ("ada", no_class, set_ada_command,
14530                   _("Prefix command for changing Ada-specfic settings"),
14531                   &set_ada_list, "set ada ", 0, &setlist);
14532
14533   add_prefix_cmd ("ada", no_class, show_ada_command,
14534                   _("Generic command for showing Ada-specific settings."),
14535                   &show_ada_list, "show ada ", 0, &showlist);
14536
14537   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14538                            &trust_pad_over_xvs, _("\
14539 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14540 Show whether an optimization trusting PAD types over XVS types is activated"),
14541                            _("\
14542 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14543 should normally trust the contents of PAD types, but certain older versions\n\
14544 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14545 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14546 work around this bug.  It is always safe to turn this option \"off\", but\n\
14547 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14548 this option to \"off\" unless necessary."),
14549                             NULL, NULL, &set_ada_list, &show_ada_list);
14550
14551   add_setshow_boolean_cmd ("print-signatures", class_vars,
14552                            &print_signatures, _("\
14553 Enable or disable the output of formal and return types for functions in the \
14554 overloads selection menu"), _("\
14555 Show whether the output of formal and return types for functions in the \
14556 overloads selection menu is activated"),
14557                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14558
14559   add_catch_command ("exception", _("\
14560 Catch Ada exceptions, when raised.\n\
14561 With an argument, catch only exceptions with the given name."),
14562                      catch_ada_exception_command,
14563                      NULL,
14564                      CATCH_PERMANENT,
14565                      CATCH_TEMPORARY);
14566
14567   add_catch_command ("handlers", _("\
14568 Catch Ada exceptions, when handled.\n\
14569 With an argument, catch only exceptions with the given name."),
14570                      catch_ada_handlers_command,
14571                      NULL,
14572                      CATCH_PERMANENT,
14573                      CATCH_TEMPORARY);
14574   add_catch_command ("assert", _("\
14575 Catch failed Ada assertions, when raised.\n\
14576 With an argument, catch only exceptions with the given name."),
14577                      catch_assert_command,
14578                      NULL,
14579                      CATCH_PERMANENT,
14580                      CATCH_TEMPORARY);
14581
14582   varsize_limit = 65536;
14583   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14584                             &varsize_limit, _("\
14585 Set the maximum number of bytes allowed in a variable-size object."), _("\
14586 Show the maximum number of bytes allowed in a variable-size object."), _("\
14587 Attempts to access an object whose size is not a compile-time constant\n\
14588 and exceeds this limit will cause an error."),
14589                             NULL, NULL, &setlist, &showlist);
14590
14591   add_info ("exceptions", info_exceptions_command,
14592             _("\
14593 List all Ada exception names.\n\
14594 If a regular expression is passed as an argument, only those matching\n\
14595 the regular expression are listed."));
14596
14597   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14598                   _("Set Ada maintenance-related variables."),
14599                   &maint_set_ada_cmdlist, "maintenance set ada ",
14600                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14601
14602   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14603                   _("Show Ada maintenance-related variables"),
14604                   &maint_show_ada_cmdlist, "maintenance show ada ",
14605                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14606
14607   add_setshow_boolean_cmd
14608     ("ignore-descriptive-types", class_maintenance,
14609      &ada_ignore_descriptive_types_p,
14610      _("Set whether descriptive types generated by GNAT should be ignored."),
14611      _("Show whether descriptive types generated by GNAT should be ignored."),
14612      _("\
14613 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14614 DWARF attribute."),
14615      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14616
14617   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14618                                            NULL, xcalloc, xfree);
14619
14620   /* The ada-lang observers.  */
14621   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14622   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14623   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14624
14625   /* Setup various context-specific data.  */
14626   ada_inferior_data
14627     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14628   ada_pspace_data_handle
14629     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14630 }