(Ada) Cleanup code by using ada_is_access_to_unconstrained_array call.
[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
7558   v = NULL;
7559   t1 = t = ada_check_typedef (value_type (arg));
7560   if (TYPE_CODE (t) == TYPE_CODE_REF)
7561     {
7562       t1 = TYPE_TARGET_TYPE (t);
7563       if (t1 == NULL)
7564         goto BadValue;
7565       t1 = ada_check_typedef (t1);
7566       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7567         {
7568           arg = coerce_ref (arg);
7569           t = t1;
7570         }
7571     }
7572
7573   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7574     {
7575       t1 = TYPE_TARGET_TYPE (t);
7576       if (t1 == NULL)
7577         goto BadValue;
7578       t1 = ada_check_typedef (t1);
7579       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7580         {
7581           arg = value_ind (arg);
7582           t = t1;
7583         }
7584       else
7585         break;
7586     }
7587
7588   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7589     goto BadValue;
7590
7591   if (t1 == t)
7592     v = ada_search_struct_field (name, arg, 0, t);
7593   else
7594     {
7595       int bit_offset, bit_size, byte_offset;
7596       struct type *field_type;
7597       CORE_ADDR address;
7598
7599       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7600         address = value_address (ada_value_ind (arg));
7601       else
7602         address = value_address (ada_coerce_ref (arg));
7603
7604       /* Check to see if this is a tagged type.  We also need to handle
7605          the case where the type is a reference to a tagged type, but
7606          we have to be careful to exclude pointers to tagged types.
7607          The latter should be shown as usual (as a pointer), whereas
7608          a reference should mostly be transparent to the user.  */
7609
7610       if (ada_is_tagged_type (t1, 0)
7611           || (TYPE_CODE (t1) == TYPE_CODE_REF
7612               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7613         {
7614           /* We first try to find the searched field in the current type.
7615              If not found then let's look in the fixed type.  */
7616
7617           if (!find_struct_field (name, t1, 0,
7618                                   &field_type, &byte_offset, &bit_offset,
7619                                   &bit_size, NULL))
7620             t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7621                                     address, NULL, 1);
7622         }
7623       else
7624         t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7625                                 address, NULL, 1);
7626
7627       if (find_struct_field (name, t1, 0,
7628                              &field_type, &byte_offset, &bit_offset,
7629                              &bit_size, NULL))
7630         {
7631           if (bit_size != 0)
7632             {
7633               if (TYPE_CODE (t) == TYPE_CODE_REF)
7634                 arg = ada_coerce_ref (arg);
7635               else
7636                 arg = ada_value_ind (arg);
7637               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7638                                                   bit_offset, bit_size,
7639                                                   field_type);
7640             }
7641           else
7642             v = value_at_lazy (field_type, address + byte_offset);
7643         }
7644     }
7645
7646   if (v != NULL || no_err)
7647     return v;
7648   else
7649     error (_("There is no member named %s."), name);
7650
7651  BadValue:
7652   if (no_err)
7653     return NULL;
7654   else
7655     error (_("Attempt to extract a component of "
7656              "a value that is not a record."));
7657 }
7658
7659 /* Return a string representation of type TYPE.  */
7660
7661 static std::string
7662 type_as_string (struct type *type)
7663 {
7664   string_file tmp_stream;
7665
7666   type_print (type, "", &tmp_stream, -1);
7667
7668   return std::move (tmp_stream.string ());
7669 }
7670
7671 /* Given a type TYPE, look up the type of the component of type named NAME.
7672    If DISPP is non-null, add its byte displacement from the beginning of a
7673    structure (pointed to by a value) of type TYPE to *DISPP (does not
7674    work for packed fields).
7675
7676    Matches any field whose name has NAME as a prefix, possibly
7677    followed by "___".
7678
7679    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7680    be a (pointer or reference)+ to a struct or union, and the
7681    ultimate target type will be searched.
7682
7683    Looks recursively into variant clauses and parent types.
7684
7685    In the case of homonyms in the tagged types, please refer to the
7686    long explanation in find_struct_field's function documentation.
7687
7688    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7689    TYPE is not a type of the right kind.  */
7690
7691 static struct type *
7692 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7693                             int noerr)
7694 {
7695   int i;
7696   int parent_offset = -1;
7697
7698   if (name == NULL)
7699     goto BadName;
7700
7701   if (refok && type != NULL)
7702     while (1)
7703       {
7704         type = ada_check_typedef (type);
7705         if (TYPE_CODE (type) != TYPE_CODE_PTR
7706             && TYPE_CODE (type) != TYPE_CODE_REF)
7707           break;
7708         type = TYPE_TARGET_TYPE (type);
7709       }
7710
7711   if (type == NULL
7712       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7713           && TYPE_CODE (type) != TYPE_CODE_UNION))
7714     {
7715       if (noerr)
7716         return NULL;
7717
7718       error (_("Type %s is not a structure or union type"),
7719              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7720     }
7721
7722   type = to_static_fixed_type (type);
7723
7724   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7725     {
7726       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7727       struct type *t;
7728
7729       if (t_field_name == NULL)
7730         continue;
7731
7732       else if (ada_is_parent_field (type, i))
7733         {
7734           /* This is a field pointing us to the parent type of a tagged
7735              type.  As hinted in this function's documentation, we give
7736              preference to fields in the current record first, so what
7737              we do here is just record the index of this field before
7738              we skip it.  If it turns out we couldn't find our field
7739              in the current record, then we'll get back to it and search
7740              inside it whether the field might exist in the parent.  */
7741
7742           parent_offset = i;
7743           continue;
7744         }
7745
7746       else if (field_name_match (t_field_name, name))
7747         return TYPE_FIELD_TYPE (type, i);
7748
7749       else if (ada_is_wrapper_field (type, i))
7750         {
7751           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7752                                           0, 1);
7753           if (t != NULL)
7754             return t;
7755         }
7756
7757       else if (ada_is_variant_part (type, i))
7758         {
7759           int j;
7760           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7761                                                                         i));
7762
7763           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7764             {
7765               /* FIXME pnh 2008/01/26: We check for a field that is
7766                  NOT wrapped in a struct, since the compiler sometimes
7767                  generates these for unchecked variant types.  Revisit
7768                  if the compiler changes this practice.  */
7769               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7770
7771               if (v_field_name != NULL 
7772                   && field_name_match (v_field_name, name))
7773                 t = TYPE_FIELD_TYPE (field_type, j);
7774               else
7775                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7776                                                                  j),
7777                                                 name, 0, 1);
7778
7779               if (t != NULL)
7780                 return t;
7781             }
7782         }
7783
7784     }
7785
7786     /* Field not found so far.  If this is a tagged type which
7787        has a parent, try finding that field in the parent now.  */
7788
7789     if (parent_offset != -1)
7790       {
7791         struct type *t;
7792
7793         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7794                                         name, 0, 1);
7795         if (t != NULL)
7796           return t;
7797       }
7798
7799 BadName:
7800   if (!noerr)
7801     {
7802       const char *name_str = name != NULL ? name : _("<null>");
7803
7804       error (_("Type %s has no component named %s"),
7805              type_as_string (type).c_str (), name_str);
7806     }
7807
7808   return NULL;
7809 }
7810
7811 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7812    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7813    represents an unchecked union (that is, the variant part of a
7814    record that is named in an Unchecked_Union pragma).  */
7815
7816 static int
7817 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7818 {
7819   const char *discrim_name = ada_variant_discrim_name (var_type);
7820
7821   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7822 }
7823
7824
7825 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7826    within a value of type OUTER_TYPE that is stored in GDB at
7827    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7828    numbering from 0) is applicable.  Returns -1 if none are.  */
7829
7830 int
7831 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7832                            const gdb_byte *outer_valaddr)
7833 {
7834   int others_clause;
7835   int i;
7836   const char *discrim_name = ada_variant_discrim_name (var_type);
7837   struct value *outer;
7838   struct value *discrim;
7839   LONGEST discrim_val;
7840
7841   /* Using plain value_from_contents_and_address here causes problems
7842      because we will end up trying to resolve a type that is currently
7843      being constructed.  */
7844   outer = value_from_contents_and_address_unresolved (outer_type,
7845                                                       outer_valaddr, 0);
7846   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7847   if (discrim == NULL)
7848     return -1;
7849   discrim_val = value_as_long (discrim);
7850
7851   others_clause = -1;
7852   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7853     {
7854       if (ada_is_others_clause (var_type, i))
7855         others_clause = i;
7856       else if (ada_in_variant (discrim_val, var_type, i))
7857         return i;
7858     }
7859
7860   return others_clause;
7861 }
7862 \f
7863
7864
7865                                 /* Dynamic-Sized Records */
7866
7867 /* Strategy: The type ostensibly attached to a value with dynamic size
7868    (i.e., a size that is not statically recorded in the debugging
7869    data) does not accurately reflect the size or layout of the value.
7870    Our strategy is to convert these values to values with accurate,
7871    conventional types that are constructed on the fly.  */
7872
7873 /* There is a subtle and tricky problem here.  In general, we cannot
7874    determine the size of dynamic records without its data.  However,
7875    the 'struct value' data structure, which GDB uses to represent
7876    quantities in the inferior process (the target), requires the size
7877    of the type at the time of its allocation in order to reserve space
7878    for GDB's internal copy of the data.  That's why the
7879    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7880    rather than struct value*s.
7881
7882    However, GDB's internal history variables ($1, $2, etc.) are
7883    struct value*s containing internal copies of the data that are not, in
7884    general, the same as the data at their corresponding addresses in
7885    the target.  Fortunately, the types we give to these values are all
7886    conventional, fixed-size types (as per the strategy described
7887    above), so that we don't usually have to perform the
7888    'to_fixed_xxx_type' conversions to look at their values.
7889    Unfortunately, there is one exception: if one of the internal
7890    history variables is an array whose elements are unconstrained
7891    records, then we will need to create distinct fixed types for each
7892    element selected.  */
7893
7894 /* The upshot of all of this is that many routines take a (type, host
7895    address, target address) triple as arguments to represent a value.
7896    The host address, if non-null, is supposed to contain an internal
7897    copy of the relevant data; otherwise, the program is to consult the
7898    target at the target address.  */
7899
7900 /* Assuming that VAL0 represents a pointer value, the result of
7901    dereferencing it.  Differs from value_ind in its treatment of
7902    dynamic-sized types.  */
7903
7904 struct value *
7905 ada_value_ind (struct value *val0)
7906 {
7907   struct value *val = value_ind (val0);
7908
7909   if (ada_is_tagged_type (value_type (val), 0))
7910     val = ada_tag_value_at_base_address (val);
7911
7912   return ada_to_fixed_value (val);
7913 }
7914
7915 /* The value resulting from dereferencing any "reference to"
7916    qualifiers on VAL0.  */
7917
7918 static struct value *
7919 ada_coerce_ref (struct value *val0)
7920 {
7921   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7922     {
7923       struct value *val = val0;
7924
7925       val = coerce_ref (val);
7926
7927       if (ada_is_tagged_type (value_type (val), 0))
7928         val = ada_tag_value_at_base_address (val);
7929
7930       return ada_to_fixed_value (val);
7931     }
7932   else
7933     return val0;
7934 }
7935
7936 /* Return OFF rounded upward if necessary to a multiple of
7937    ALIGNMENT (a power of 2).  */
7938
7939 static unsigned int
7940 align_value (unsigned int off, unsigned int alignment)
7941 {
7942   return (off + alignment - 1) & ~(alignment - 1);
7943 }
7944
7945 /* Return the bit alignment required for field #F of template type TYPE.  */
7946
7947 static unsigned int
7948 field_alignment (struct type *type, int f)
7949 {
7950   const char *name = TYPE_FIELD_NAME (type, f);
7951   int len;
7952   int align_offset;
7953
7954   /* The field name should never be null, unless the debugging information
7955      is somehow malformed.  In this case, we assume the field does not
7956      require any alignment.  */
7957   if (name == NULL)
7958     return 1;
7959
7960   len = strlen (name);
7961
7962   if (!isdigit (name[len - 1]))
7963     return 1;
7964
7965   if (isdigit (name[len - 2]))
7966     align_offset = len - 2;
7967   else
7968     align_offset = len - 1;
7969
7970   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7971     return TARGET_CHAR_BIT;
7972
7973   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7974 }
7975
7976 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7977
7978 static struct symbol *
7979 ada_find_any_type_symbol (const char *name)
7980 {
7981   struct symbol *sym;
7982
7983   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7984   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7985     return sym;
7986
7987   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7988   return sym;
7989 }
7990
7991 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7992    solely for types defined by debug info, it will not search the GDB
7993    primitive types.  */
7994
7995 static struct type *
7996 ada_find_any_type (const char *name)
7997 {
7998   struct symbol *sym = ada_find_any_type_symbol (name);
7999
8000   if (sym != NULL)
8001     return SYMBOL_TYPE (sym);
8002
8003   return NULL;
8004 }
8005
8006 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8007    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8008    symbol, in which case it is returned.  Otherwise, this looks for
8009    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8010    Return symbol if found, and NULL otherwise.  */
8011
8012 struct symbol *
8013 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8014 {
8015   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8016   struct symbol *sym;
8017
8018   if (strstr (name, "___XR") != NULL)
8019      return name_sym;
8020
8021   sym = find_old_style_renaming_symbol (name, block);
8022
8023   if (sym != NULL)
8024     return sym;
8025
8026   /* Not right yet.  FIXME pnh 7/20/2007.  */
8027   sym = ada_find_any_type_symbol (name);
8028   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8029     return sym;
8030   else
8031     return NULL;
8032 }
8033
8034 static struct symbol *
8035 find_old_style_renaming_symbol (const char *name, const struct block *block)
8036 {
8037   const struct symbol *function_sym = block_linkage_function (block);
8038   char *rename;
8039
8040   if (function_sym != NULL)
8041     {
8042       /* If the symbol is defined inside a function, NAME is not fully
8043          qualified.  This means we need to prepend the function name
8044          as well as adding the ``___XR'' suffix to build the name of
8045          the associated renaming symbol.  */
8046       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8047       /* Function names sometimes contain suffixes used
8048          for instance to qualify nested subprograms.  When building
8049          the XR type name, we need to make sure that this suffix is
8050          not included.  So do not include any suffix in the function
8051          name length below.  */
8052       int function_name_len = ada_name_prefix_len (function_name);
8053       const int rename_len = function_name_len + 2      /*  "__" */
8054         + strlen (name) + 6 /* "___XR\0" */ ;
8055
8056       /* Strip the suffix if necessary.  */
8057       ada_remove_trailing_digits (function_name, &function_name_len);
8058       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8059       ada_remove_Xbn_suffix (function_name, &function_name_len);
8060
8061       /* Library-level functions are a special case, as GNAT adds
8062          a ``_ada_'' prefix to the function name to avoid namespace
8063          pollution.  However, the renaming symbols themselves do not
8064          have this prefix, so we need to skip this prefix if present.  */
8065       if (function_name_len > 5 /* "_ada_" */
8066           && strstr (function_name, "_ada_") == function_name)
8067         {
8068           function_name += 5;
8069           function_name_len -= 5;
8070         }
8071
8072       rename = (char *) alloca (rename_len * sizeof (char));
8073       strncpy (rename, function_name, function_name_len);
8074       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8075                  "__%s___XR", name);
8076     }
8077   else
8078     {
8079       const int rename_len = strlen (name) + 6;
8080
8081       rename = (char *) alloca (rename_len * sizeof (char));
8082       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8083     }
8084
8085   return ada_find_any_type_symbol (rename);
8086 }
8087
8088 /* Because of GNAT encoding conventions, several GDB symbols may match a
8089    given type name.  If the type denoted by TYPE0 is to be preferred to
8090    that of TYPE1 for purposes of type printing, return non-zero;
8091    otherwise return 0.  */
8092
8093 int
8094 ada_prefer_type (struct type *type0, struct type *type1)
8095 {
8096   if (type1 == NULL)
8097     return 1;
8098   else if (type0 == NULL)
8099     return 0;
8100   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8101     return 1;
8102   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8103     return 0;
8104   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8105     return 1;
8106   else if (ada_is_constrained_packed_array_type (type0))
8107     return 1;
8108   else if (ada_is_array_descriptor_type (type0)
8109            && !ada_is_array_descriptor_type (type1))
8110     return 1;
8111   else
8112     {
8113       const char *type0_name = TYPE_NAME (type0);
8114       const char *type1_name = TYPE_NAME (type1);
8115
8116       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8117           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8118         return 1;
8119     }
8120   return 0;
8121 }
8122
8123 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8124    null.  */
8125
8126 const char *
8127 ada_type_name (struct type *type)
8128 {
8129   if (type == NULL)
8130     return NULL;
8131   return TYPE_NAME (type);
8132 }
8133
8134 /* Search the list of "descriptive" types associated to TYPE for a type
8135    whose name is NAME.  */
8136
8137 static struct type *
8138 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8139 {
8140   struct type *result, *tmp;
8141
8142   if (ada_ignore_descriptive_types_p)
8143     return NULL;
8144
8145   /* If there no descriptive-type info, then there is no parallel type
8146      to be found.  */
8147   if (!HAVE_GNAT_AUX_INFO (type))
8148     return NULL;
8149
8150   result = TYPE_DESCRIPTIVE_TYPE (type);
8151   while (result != NULL)
8152     {
8153       const char *result_name = ada_type_name (result);
8154
8155       if (result_name == NULL)
8156         {
8157           warning (_("unexpected null name on descriptive type"));
8158           return NULL;
8159         }
8160
8161       /* If the names match, stop.  */
8162       if (strcmp (result_name, name) == 0)
8163         break;
8164
8165       /* Otherwise, look at the next item on the list, if any.  */
8166       if (HAVE_GNAT_AUX_INFO (result))
8167         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8168       else
8169         tmp = NULL;
8170
8171       /* If not found either, try after having resolved the typedef.  */
8172       if (tmp != NULL)
8173         result = tmp;
8174       else
8175         {
8176           result = check_typedef (result);
8177           if (HAVE_GNAT_AUX_INFO (result))
8178             result = TYPE_DESCRIPTIVE_TYPE (result);
8179           else
8180             result = NULL;
8181         }
8182     }
8183
8184   /* If we didn't find a match, see whether this is a packed array.  With
8185      older compilers, the descriptive type information is either absent or
8186      irrelevant when it comes to packed arrays so the above lookup fails.
8187      Fall back to using a parallel lookup by name in this case.  */
8188   if (result == NULL && ada_is_constrained_packed_array_type (type))
8189     return ada_find_any_type (name);
8190
8191   return result;
8192 }
8193
8194 /* Find a parallel type to TYPE with the specified NAME, using the
8195    descriptive type taken from the debugging information, if available,
8196    and otherwise using the (slower) name-based method.  */
8197
8198 static struct type *
8199 ada_find_parallel_type_with_name (struct type *type, const char *name)
8200 {
8201   struct type *result = NULL;
8202
8203   if (HAVE_GNAT_AUX_INFO (type))
8204     result = find_parallel_type_by_descriptive_type (type, name);
8205   else
8206     result = ada_find_any_type (name);
8207
8208   return result;
8209 }
8210
8211 /* Same as above, but specify the name of the parallel type by appending
8212    SUFFIX to the name of TYPE.  */
8213
8214 struct type *
8215 ada_find_parallel_type (struct type *type, const char *suffix)
8216 {
8217   char *name;
8218   const char *type_name = ada_type_name (type);
8219   int len;
8220
8221   if (type_name == NULL)
8222     return NULL;
8223
8224   len = strlen (type_name);
8225
8226   name = (char *) alloca (len + strlen (suffix) + 1);
8227
8228   strcpy (name, type_name);
8229   strcpy (name + len, suffix);
8230
8231   return ada_find_parallel_type_with_name (type, name);
8232 }
8233
8234 /* If TYPE is a variable-size record type, return the corresponding template
8235    type describing its fields.  Otherwise, return NULL.  */
8236
8237 static struct type *
8238 dynamic_template_type (struct type *type)
8239 {
8240   type = ada_check_typedef (type);
8241
8242   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8243       || ada_type_name (type) == NULL)
8244     return NULL;
8245   else
8246     {
8247       int len = strlen (ada_type_name (type));
8248
8249       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8250         return type;
8251       else
8252         return ada_find_parallel_type (type, "___XVE");
8253     }
8254 }
8255
8256 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8257    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8258
8259 static int
8260 is_dynamic_field (struct type *templ_type, int field_num)
8261 {
8262   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8263
8264   return name != NULL
8265     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8266     && strstr (name, "___XVL") != NULL;
8267 }
8268
8269 /* The index of the variant field of TYPE, or -1 if TYPE does not
8270    represent a variant record type.  */
8271
8272 static int
8273 variant_field_index (struct type *type)
8274 {
8275   int f;
8276
8277   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8278     return -1;
8279
8280   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8281     {
8282       if (ada_is_variant_part (type, f))
8283         return f;
8284     }
8285   return -1;
8286 }
8287
8288 /* A record type with no fields.  */
8289
8290 static struct type *
8291 empty_record (struct type *templ)
8292 {
8293   struct type *type = alloc_type_copy (templ);
8294
8295   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8296   TYPE_NFIELDS (type) = 0;
8297   TYPE_FIELDS (type) = NULL;
8298   INIT_CPLUS_SPECIFIC (type);
8299   TYPE_NAME (type) = "<empty>";
8300   TYPE_LENGTH (type) = 0;
8301   return type;
8302 }
8303
8304 /* An ordinary record type (with fixed-length fields) that describes
8305    the value of type TYPE at VALADDR or ADDRESS (see comments at
8306    the beginning of this section) VAL according to GNAT conventions.
8307    DVAL0 should describe the (portion of a) record that contains any
8308    necessary discriminants.  It should be NULL if value_type (VAL) is
8309    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8310    variant field (unless unchecked) is replaced by a particular branch
8311    of the variant.
8312
8313    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8314    length are not statically known are discarded.  As a consequence,
8315    VALADDR, ADDRESS and DVAL0 are ignored.
8316
8317    NOTE: Limitations: For now, we assume that dynamic fields and
8318    variants occupy whole numbers of bytes.  However, they need not be
8319    byte-aligned.  */
8320
8321 struct type *
8322 ada_template_to_fixed_record_type_1 (struct type *type,
8323                                      const gdb_byte *valaddr,
8324                                      CORE_ADDR address, struct value *dval0,
8325                                      int keep_dynamic_fields)
8326 {
8327   struct value *mark = value_mark ();
8328   struct value *dval;
8329   struct type *rtype;
8330   int nfields, bit_len;
8331   int variant_field;
8332   long off;
8333   int fld_bit_len;
8334   int f;
8335
8336   /* Compute the number of fields in this record type that are going
8337      to be processed: unless keep_dynamic_fields, this includes only
8338      fields whose position and length are static will be processed.  */
8339   if (keep_dynamic_fields)
8340     nfields = TYPE_NFIELDS (type);
8341   else
8342     {
8343       nfields = 0;
8344       while (nfields < TYPE_NFIELDS (type)
8345              && !ada_is_variant_part (type, nfields)
8346              && !is_dynamic_field (type, nfields))
8347         nfields++;
8348     }
8349
8350   rtype = alloc_type_copy (type);
8351   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8352   INIT_CPLUS_SPECIFIC (rtype);
8353   TYPE_NFIELDS (rtype) = nfields;
8354   TYPE_FIELDS (rtype) = (struct field *)
8355     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8356   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8357   TYPE_NAME (rtype) = ada_type_name (type);
8358   TYPE_FIXED_INSTANCE (rtype) = 1;
8359
8360   off = 0;
8361   bit_len = 0;
8362   variant_field = -1;
8363
8364   for (f = 0; f < nfields; f += 1)
8365     {
8366       off = align_value (off, field_alignment (type, f))
8367         + TYPE_FIELD_BITPOS (type, f);
8368       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8369       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8370
8371       if (ada_is_variant_part (type, f))
8372         {
8373           variant_field = f;
8374           fld_bit_len = 0;
8375         }
8376       else if (is_dynamic_field (type, f))
8377         {
8378           const gdb_byte *field_valaddr = valaddr;
8379           CORE_ADDR field_address = address;
8380           struct type *field_type =
8381             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8382
8383           if (dval0 == NULL)
8384             {
8385               /* rtype's length is computed based on the run-time
8386                  value of discriminants.  If the discriminants are not
8387                  initialized, the type size may be completely bogus and
8388                  GDB may fail to allocate a value for it.  So check the
8389                  size first before creating the value.  */
8390               ada_ensure_varsize_limit (rtype);
8391               /* Using plain value_from_contents_and_address here
8392                  causes problems because we will end up trying to
8393                  resolve a type that is currently being
8394                  constructed.  */
8395               dval = value_from_contents_and_address_unresolved (rtype,
8396                                                                  valaddr,
8397                                                                  address);
8398               rtype = value_type (dval);
8399             }
8400           else
8401             dval = dval0;
8402
8403           /* If the type referenced by this field is an aligner type, we need
8404              to unwrap that aligner type, because its size might not be set.
8405              Keeping the aligner type would cause us to compute the wrong
8406              size for this field, impacting the offset of the all the fields
8407              that follow this one.  */
8408           if (ada_is_aligner_type (field_type))
8409             {
8410               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8411
8412               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8413               field_address = cond_offset_target (field_address, field_offset);
8414               field_type = ada_aligned_type (field_type);
8415             }
8416
8417           field_valaddr = cond_offset_host (field_valaddr,
8418                                             off / TARGET_CHAR_BIT);
8419           field_address = cond_offset_target (field_address,
8420                                               off / TARGET_CHAR_BIT);
8421
8422           /* Get the fixed type of the field.  Note that, in this case,
8423              we do not want to get the real type out of the tag: if
8424              the current field is the parent part of a tagged record,
8425              we will get the tag of the object.  Clearly wrong: the real
8426              type of the parent is not the real type of the child.  We
8427              would end up in an infinite loop.  */
8428           field_type = ada_get_base_type (field_type);
8429           field_type = ada_to_fixed_type (field_type, field_valaddr,
8430                                           field_address, dval, 0);
8431           /* If the field size is already larger than the maximum
8432              object size, then the record itself will necessarily
8433              be larger than the maximum object size.  We need to make
8434              this check now, because the size might be so ridiculously
8435              large (due to an uninitialized variable in the inferior)
8436              that it would cause an overflow when adding it to the
8437              record size.  */
8438           ada_ensure_varsize_limit (field_type);
8439
8440           TYPE_FIELD_TYPE (rtype, f) = field_type;
8441           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8442           /* The multiplication can potentially overflow.  But because
8443              the field length has been size-checked just above, and
8444              assuming that the maximum size is a reasonable value,
8445              an overflow should not happen in practice.  So rather than
8446              adding overflow recovery code to this already complex code,
8447              we just assume that it's not going to happen.  */
8448           fld_bit_len =
8449             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8450         }
8451       else
8452         {
8453           /* Note: If this field's type is a typedef, it is important
8454              to preserve the typedef layer.
8455
8456              Otherwise, we might be transforming a typedef to a fat
8457              pointer (encoding a pointer to an unconstrained array),
8458              into a basic fat pointer (encoding an unconstrained
8459              array).  As both types are implemented using the same
8460              structure, the typedef is the only clue which allows us
8461              to distinguish between the two options.  Stripping it
8462              would prevent us from printing this field appropriately.  */
8463           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8464           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8465           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8466             fld_bit_len =
8467               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8468           else
8469             {
8470               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8471
8472               /* We need to be careful of typedefs when computing
8473                  the length of our field.  If this is a typedef,
8474                  get the length of the target type, not the length
8475                  of the typedef.  */
8476               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8477                 field_type = ada_typedef_target_type (field_type);
8478
8479               fld_bit_len =
8480                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8481             }
8482         }
8483       if (off + fld_bit_len > bit_len)
8484         bit_len = off + fld_bit_len;
8485       off += fld_bit_len;
8486       TYPE_LENGTH (rtype) =
8487         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8488     }
8489
8490   /* We handle the variant part, if any, at the end because of certain
8491      odd cases in which it is re-ordered so as NOT to be the last field of
8492      the record.  This can happen in the presence of representation
8493      clauses.  */
8494   if (variant_field >= 0)
8495     {
8496       struct type *branch_type;
8497
8498       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8499
8500       if (dval0 == NULL)
8501         {
8502           /* Using plain value_from_contents_and_address here causes
8503              problems because we will end up trying to resolve a type
8504              that is currently being constructed.  */
8505           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8506                                                              address);
8507           rtype = value_type (dval);
8508         }
8509       else
8510         dval = dval0;
8511
8512       branch_type =
8513         to_fixed_variant_branch_type
8514         (TYPE_FIELD_TYPE (type, variant_field),
8515          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8516          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8517       if (branch_type == NULL)
8518         {
8519           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8520             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8521           TYPE_NFIELDS (rtype) -= 1;
8522         }
8523       else
8524         {
8525           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8526           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8527           fld_bit_len =
8528             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8529             TARGET_CHAR_BIT;
8530           if (off + fld_bit_len > bit_len)
8531             bit_len = off + fld_bit_len;
8532           TYPE_LENGTH (rtype) =
8533             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8534         }
8535     }
8536
8537   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8538      should contain the alignment of that record, which should be a strictly
8539      positive value.  If null or negative, then something is wrong, most
8540      probably in the debug info.  In that case, we don't round up the size
8541      of the resulting type.  If this record is not part of another structure,
8542      the current RTYPE length might be good enough for our purposes.  */
8543   if (TYPE_LENGTH (type) <= 0)
8544     {
8545       if (TYPE_NAME (rtype))
8546         warning (_("Invalid type size for `%s' detected: %d."),
8547                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8548       else
8549         warning (_("Invalid type size for <unnamed> detected: %d."),
8550                  TYPE_LENGTH (type));
8551     }
8552   else
8553     {
8554       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8555                                          TYPE_LENGTH (type));
8556     }
8557
8558   value_free_to_mark (mark);
8559   if (TYPE_LENGTH (rtype) > varsize_limit)
8560     error (_("record type with dynamic size is larger than varsize-limit"));
8561   return rtype;
8562 }
8563
8564 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8565    of 1.  */
8566
8567 static struct type *
8568 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8569                                CORE_ADDR address, struct value *dval0)
8570 {
8571   return ada_template_to_fixed_record_type_1 (type, valaddr,
8572                                               address, dval0, 1);
8573 }
8574
8575 /* An ordinary record type in which ___XVL-convention fields and
8576    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8577    static approximations, containing all possible fields.  Uses
8578    no runtime values.  Useless for use in values, but that's OK,
8579    since the results are used only for type determinations.   Works on both
8580    structs and unions.  Representation note: to save space, we memorize
8581    the result of this function in the TYPE_TARGET_TYPE of the
8582    template type.  */
8583
8584 static struct type *
8585 template_to_static_fixed_type (struct type *type0)
8586 {
8587   struct type *type;
8588   int nfields;
8589   int f;
8590
8591   /* No need no do anything if the input type is already fixed.  */
8592   if (TYPE_FIXED_INSTANCE (type0))
8593     return type0;
8594
8595   /* Likewise if we already have computed the static approximation.  */
8596   if (TYPE_TARGET_TYPE (type0) != NULL)
8597     return TYPE_TARGET_TYPE (type0);
8598
8599   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8600   type = type0;
8601   nfields = TYPE_NFIELDS (type0);
8602
8603   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8604      recompute all over next time.  */
8605   TYPE_TARGET_TYPE (type0) = type;
8606
8607   for (f = 0; f < nfields; f += 1)
8608     {
8609       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8610       struct type *new_type;
8611
8612       if (is_dynamic_field (type0, f))
8613         {
8614           field_type = ada_check_typedef (field_type);
8615           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8616         }
8617       else
8618         new_type = static_unwrap_type (field_type);
8619
8620       if (new_type != field_type)
8621         {
8622           /* Clone TYPE0 only the first time we get a new field type.  */
8623           if (type == type0)
8624             {
8625               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8626               TYPE_CODE (type) = TYPE_CODE (type0);
8627               INIT_CPLUS_SPECIFIC (type);
8628               TYPE_NFIELDS (type) = nfields;
8629               TYPE_FIELDS (type) = (struct field *)
8630                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8631               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8632                       sizeof (struct field) * nfields);
8633               TYPE_NAME (type) = ada_type_name (type0);
8634               TYPE_FIXED_INSTANCE (type) = 1;
8635               TYPE_LENGTH (type) = 0;
8636             }
8637           TYPE_FIELD_TYPE (type, f) = new_type;
8638           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8639         }
8640     }
8641
8642   return type;
8643 }
8644
8645 /* Given an object of type TYPE whose contents are at VALADDR and
8646    whose address in memory is ADDRESS, returns a revision of TYPE,
8647    which should be a non-dynamic-sized record, in which the variant
8648    part, if any, is replaced with the appropriate branch.  Looks
8649    for discriminant values in DVAL0, which can be NULL if the record
8650    contains the necessary discriminant values.  */
8651
8652 static struct type *
8653 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8654                                    CORE_ADDR address, struct value *dval0)
8655 {
8656   struct value *mark = value_mark ();
8657   struct value *dval;
8658   struct type *rtype;
8659   struct type *branch_type;
8660   int nfields = TYPE_NFIELDS (type);
8661   int variant_field = variant_field_index (type);
8662
8663   if (variant_field == -1)
8664     return type;
8665
8666   if (dval0 == NULL)
8667     {
8668       dval = value_from_contents_and_address (type, valaddr, address);
8669       type = value_type (dval);
8670     }
8671   else
8672     dval = dval0;
8673
8674   rtype = alloc_type_copy (type);
8675   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8676   INIT_CPLUS_SPECIFIC (rtype);
8677   TYPE_NFIELDS (rtype) = nfields;
8678   TYPE_FIELDS (rtype) =
8679     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8680   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8681           sizeof (struct field) * nfields);
8682   TYPE_NAME (rtype) = ada_type_name (type);
8683   TYPE_FIXED_INSTANCE (rtype) = 1;
8684   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8685
8686   branch_type = to_fixed_variant_branch_type
8687     (TYPE_FIELD_TYPE (type, variant_field),
8688      cond_offset_host (valaddr,
8689                        TYPE_FIELD_BITPOS (type, variant_field)
8690                        / TARGET_CHAR_BIT),
8691      cond_offset_target (address,
8692                          TYPE_FIELD_BITPOS (type, variant_field)
8693                          / TARGET_CHAR_BIT), dval);
8694   if (branch_type == NULL)
8695     {
8696       int f;
8697
8698       for (f = variant_field + 1; f < nfields; f += 1)
8699         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8700       TYPE_NFIELDS (rtype) -= 1;
8701     }
8702   else
8703     {
8704       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8705       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8706       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8707       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8708     }
8709   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8710
8711   value_free_to_mark (mark);
8712   return rtype;
8713 }
8714
8715 /* An ordinary record type (with fixed-length fields) that describes
8716    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8717    beginning of this section].   Any necessary discriminants' values
8718    should be in DVAL, a record value; it may be NULL if the object
8719    at ADDR itself contains any necessary discriminant values.
8720    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8721    values from the record are needed.  Except in the case that DVAL,
8722    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8723    unchecked) is replaced by a particular branch of the variant.
8724
8725    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8726    is questionable and may be removed.  It can arise during the
8727    processing of an unconstrained-array-of-record type where all the
8728    variant branches have exactly the same size.  This is because in
8729    such cases, the compiler does not bother to use the XVS convention
8730    when encoding the record.  I am currently dubious of this
8731    shortcut and suspect the compiler should be altered.  FIXME.  */
8732
8733 static struct type *
8734 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8735                       CORE_ADDR address, struct value *dval)
8736 {
8737   struct type *templ_type;
8738
8739   if (TYPE_FIXED_INSTANCE (type0))
8740     return type0;
8741
8742   templ_type = dynamic_template_type (type0);
8743
8744   if (templ_type != NULL)
8745     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8746   else if (variant_field_index (type0) >= 0)
8747     {
8748       if (dval == NULL && valaddr == NULL && address == 0)
8749         return type0;
8750       return to_record_with_fixed_variant_part (type0, valaddr, address,
8751                                                 dval);
8752     }
8753   else
8754     {
8755       TYPE_FIXED_INSTANCE (type0) = 1;
8756       return type0;
8757     }
8758
8759 }
8760
8761 /* An ordinary record type (with fixed-length fields) that describes
8762    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8763    union type.  Any necessary discriminants' values should be in DVAL,
8764    a record value.  That is, this routine selects the appropriate
8765    branch of the union at ADDR according to the discriminant value
8766    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8767    it represents a variant subject to a pragma Unchecked_Union.  */
8768
8769 static struct type *
8770 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8771                               CORE_ADDR address, struct value *dval)
8772 {
8773   int which;
8774   struct type *templ_type;
8775   struct type *var_type;
8776
8777   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8778     var_type = TYPE_TARGET_TYPE (var_type0);
8779   else
8780     var_type = var_type0;
8781
8782   templ_type = ada_find_parallel_type (var_type, "___XVU");
8783
8784   if (templ_type != NULL)
8785     var_type = templ_type;
8786
8787   if (is_unchecked_variant (var_type, value_type (dval)))
8788       return var_type0;
8789   which =
8790     ada_which_variant_applies (var_type,
8791                                value_type (dval), value_contents (dval));
8792
8793   if (which < 0)
8794     return empty_record (var_type);
8795   else if (is_dynamic_field (var_type, which))
8796     return to_fixed_record_type
8797       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8798        valaddr, address, dval);
8799   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8800     return
8801       to_fixed_record_type
8802       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8803   else
8804     return TYPE_FIELD_TYPE (var_type, which);
8805 }
8806
8807 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8808    ENCODING_TYPE, a type following the GNAT conventions for discrete
8809    type encodings, only carries redundant information.  */
8810
8811 static int
8812 ada_is_redundant_range_encoding (struct type *range_type,
8813                                  struct type *encoding_type)
8814 {
8815   const char *bounds_str;
8816   int n;
8817   LONGEST lo, hi;
8818
8819   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8820
8821   if (TYPE_CODE (get_base_type (range_type))
8822       != TYPE_CODE (get_base_type (encoding_type)))
8823     {
8824       /* The compiler probably used a simple base type to describe
8825          the range type instead of the range's actual base type,
8826          expecting us to get the real base type from the encoding
8827          anyway.  In this situation, the encoding cannot be ignored
8828          as redundant.  */
8829       return 0;
8830     }
8831
8832   if (is_dynamic_type (range_type))
8833     return 0;
8834
8835   if (TYPE_NAME (encoding_type) == NULL)
8836     return 0;
8837
8838   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8839   if (bounds_str == NULL)
8840     return 0;
8841
8842   n = 8; /* Skip "___XDLU_".  */
8843   if (!ada_scan_number (bounds_str, n, &lo, &n))
8844     return 0;
8845   if (TYPE_LOW_BOUND (range_type) != lo)
8846     return 0;
8847
8848   n += 2; /* Skip the "__" separator between the two bounds.  */
8849   if (!ada_scan_number (bounds_str, n, &hi, &n))
8850     return 0;
8851   if (TYPE_HIGH_BOUND (range_type) != hi)
8852     return 0;
8853
8854   return 1;
8855 }
8856
8857 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8858    a type following the GNAT encoding for describing array type
8859    indices, only carries redundant information.  */
8860
8861 static int
8862 ada_is_redundant_index_type_desc (struct type *array_type,
8863                                   struct type *desc_type)
8864 {
8865   struct type *this_layer = check_typedef (array_type);
8866   int i;
8867
8868   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8869     {
8870       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8871                                             TYPE_FIELD_TYPE (desc_type, i)))
8872         return 0;
8873       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8874     }
8875
8876   return 1;
8877 }
8878
8879 /* Assuming that TYPE0 is an array type describing the type of a value
8880    at ADDR, and that DVAL describes a record containing any
8881    discriminants used in TYPE0, returns a type for the value that
8882    contains no dynamic components (that is, no components whose sizes
8883    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8884    true, gives an error message if the resulting type's size is over
8885    varsize_limit.  */
8886
8887 static struct type *
8888 to_fixed_array_type (struct type *type0, struct value *dval,
8889                      int ignore_too_big)
8890 {
8891   struct type *index_type_desc;
8892   struct type *result;
8893   int constrained_packed_array_p;
8894   static const char *xa_suffix = "___XA";
8895
8896   type0 = ada_check_typedef (type0);
8897   if (TYPE_FIXED_INSTANCE (type0))
8898     return type0;
8899
8900   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8901   if (constrained_packed_array_p)
8902     type0 = decode_constrained_packed_array_type (type0);
8903
8904   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8905
8906   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8907      encoding suffixed with 'P' may still be generated.  If so,
8908      it should be used to find the XA type.  */
8909
8910   if (index_type_desc == NULL)
8911     {
8912       const char *type_name = ada_type_name (type0);
8913
8914       if (type_name != NULL)
8915         {
8916           const int len = strlen (type_name);
8917           char *name = (char *) alloca (len + strlen (xa_suffix));
8918
8919           if (type_name[len - 1] == 'P')
8920             {
8921               strcpy (name, type_name);
8922               strcpy (name + len - 1, xa_suffix);
8923               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8924             }
8925         }
8926     }
8927
8928   ada_fixup_array_indexes_type (index_type_desc);
8929   if (index_type_desc != NULL
8930       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8931     {
8932       /* Ignore this ___XA parallel type, as it does not bring any
8933          useful information.  This allows us to avoid creating fixed
8934          versions of the array's index types, which would be identical
8935          to the original ones.  This, in turn, can also help avoid
8936          the creation of fixed versions of the array itself.  */
8937       index_type_desc = NULL;
8938     }
8939
8940   if (index_type_desc == NULL)
8941     {
8942       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8943
8944       /* NOTE: elt_type---the fixed version of elt_type0---should never
8945          depend on the contents of the array in properly constructed
8946          debugging data.  */
8947       /* Create a fixed version of the array element type.
8948          We're not providing the address of an element here,
8949          and thus the actual object value cannot be inspected to do
8950          the conversion.  This should not be a problem, since arrays of
8951          unconstrained objects are not allowed.  In particular, all
8952          the elements of an array of a tagged type should all be of
8953          the same type specified in the debugging info.  No need to
8954          consult the object tag.  */
8955       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8956
8957       /* Make sure we always create a new array type when dealing with
8958          packed array types, since we're going to fix-up the array
8959          type length and element bitsize a little further down.  */
8960       if (elt_type0 == elt_type && !constrained_packed_array_p)
8961         result = type0;
8962       else
8963         result = create_array_type (alloc_type_copy (type0),
8964                                     elt_type, TYPE_INDEX_TYPE (type0));
8965     }
8966   else
8967     {
8968       int i;
8969       struct type *elt_type0;
8970
8971       elt_type0 = type0;
8972       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8973         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8974
8975       /* NOTE: result---the fixed version of elt_type0---should never
8976          depend on the contents of the array in properly constructed
8977          debugging data.  */
8978       /* Create a fixed version of the array element type.
8979          We're not providing the address of an element here,
8980          and thus the actual object value cannot be inspected to do
8981          the conversion.  This should not be a problem, since arrays of
8982          unconstrained objects are not allowed.  In particular, all
8983          the elements of an array of a tagged type should all be of
8984          the same type specified in the debugging info.  No need to
8985          consult the object tag.  */
8986       result =
8987         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8988
8989       elt_type0 = type0;
8990       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8991         {
8992           struct type *range_type =
8993             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8994
8995           result = create_array_type (alloc_type_copy (elt_type0),
8996                                       result, range_type);
8997           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8998         }
8999       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
9000         error (_("array type with dynamic size is larger than varsize-limit"));
9001     }
9002
9003   /* We want to preserve the type name.  This can be useful when
9004      trying to get the type name of a value that has already been
9005      printed (for instance, if the user did "print VAR; whatis $".  */
9006   TYPE_NAME (result) = TYPE_NAME (type0);
9007
9008   if (constrained_packed_array_p)
9009     {
9010       /* So far, the resulting type has been created as if the original
9011          type was a regular (non-packed) array type.  As a result, the
9012          bitsize of the array elements needs to be set again, and the array
9013          length needs to be recomputed based on that bitsize.  */
9014       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9015       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9016
9017       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9018       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9019       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9020         TYPE_LENGTH (result)++;
9021     }
9022
9023   TYPE_FIXED_INSTANCE (result) = 1;
9024   return result;
9025 }
9026
9027
9028 /* A standard type (containing no dynamically sized components)
9029    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9030    DVAL describes a record containing any discriminants used in TYPE0,
9031    and may be NULL if there are none, or if the object of type TYPE at
9032    ADDRESS or in VALADDR contains these discriminants.
9033    
9034    If CHECK_TAG is not null, in the case of tagged types, this function
9035    attempts to locate the object's tag and use it to compute the actual
9036    type.  However, when ADDRESS is null, we cannot use it to determine the
9037    location of the tag, and therefore compute the tagged type's actual type.
9038    So we return the tagged type without consulting the tag.  */
9039    
9040 static struct type *
9041 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9042                    CORE_ADDR address, struct value *dval, int check_tag)
9043 {
9044   type = ada_check_typedef (type);
9045   switch (TYPE_CODE (type))
9046     {
9047     default:
9048       return type;
9049     case TYPE_CODE_STRUCT:
9050       {
9051         struct type *static_type = to_static_fixed_type (type);
9052         struct type *fixed_record_type =
9053           to_fixed_record_type (type, valaddr, address, NULL);
9054
9055         /* If STATIC_TYPE is a tagged type and we know the object's address,
9056            then we can determine its tag, and compute the object's actual
9057            type from there.  Note that we have to use the fixed record
9058            type (the parent part of the record may have dynamic fields
9059            and the way the location of _tag is expressed may depend on
9060            them).  */
9061
9062         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9063           {
9064             struct value *tag =
9065               value_tag_from_contents_and_address
9066               (fixed_record_type,
9067                valaddr,
9068                address);
9069             struct type *real_type = type_from_tag (tag);
9070             struct value *obj =
9071               value_from_contents_and_address (fixed_record_type,
9072                                                valaddr,
9073                                                address);
9074             fixed_record_type = value_type (obj);
9075             if (real_type != NULL)
9076               return to_fixed_record_type
9077                 (real_type, NULL,
9078                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9079           }
9080
9081         /* Check to see if there is a parallel ___XVZ variable.
9082            If there is, then it provides the actual size of our type.  */
9083         else if (ada_type_name (fixed_record_type) != NULL)
9084           {
9085             const char *name = ada_type_name (fixed_record_type);
9086             char *xvz_name
9087               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9088             bool xvz_found = false;
9089             LONGEST size;
9090
9091             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9092             TRY
9093               {
9094                 xvz_found = get_int_var_value (xvz_name, size);
9095               }
9096             CATCH (except, RETURN_MASK_ERROR)
9097               {
9098                 /* We found the variable, but somehow failed to read
9099                    its value.  Rethrow the same error, but with a little
9100                    bit more information, to help the user understand
9101                    what went wrong (Eg: the variable might have been
9102                    optimized out).  */
9103                 throw_error (except.error,
9104                              _("unable to read value of %s (%s)"),
9105                              xvz_name, except.message);
9106               }
9107             END_CATCH
9108
9109             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9110               {
9111                 fixed_record_type = copy_type (fixed_record_type);
9112                 TYPE_LENGTH (fixed_record_type) = size;
9113
9114                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9115                    observed this when the debugging info is STABS, and
9116                    apparently it is something that is hard to fix.
9117
9118                    In practice, we don't need the actual type definition
9119                    at all, because the presence of the XVZ variable allows us
9120                    to assume that there must be a XVS type as well, which we
9121                    should be able to use later, when we need the actual type
9122                    definition.
9123
9124                    In the meantime, pretend that the "fixed" type we are
9125                    returning is NOT a stub, because this can cause trouble
9126                    when using this type to create new types targeting it.
9127                    Indeed, the associated creation routines often check
9128                    whether the target type is a stub and will try to replace
9129                    it, thus using a type with the wrong size.  This, in turn,
9130                    might cause the new type to have the wrong size too.
9131                    Consider the case of an array, for instance, where the size
9132                    of the array is computed from the number of elements in
9133                    our array multiplied by the size of its element.  */
9134                 TYPE_STUB (fixed_record_type) = 0;
9135               }
9136           }
9137         return fixed_record_type;
9138       }
9139     case TYPE_CODE_ARRAY:
9140       return to_fixed_array_type (type, dval, 1);
9141     case TYPE_CODE_UNION:
9142       if (dval == NULL)
9143         return type;
9144       else
9145         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9146     }
9147 }
9148
9149 /* The same as ada_to_fixed_type_1, except that it preserves the type
9150    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9151
9152    The typedef layer needs be preserved in order to differentiate between
9153    arrays and array pointers when both types are implemented using the same
9154    fat pointer.  In the array pointer case, the pointer is encoded as
9155    a typedef of the pointer type.  For instance, considering:
9156
9157           type String_Access is access String;
9158           S1 : String_Access := null;
9159
9160    To the debugger, S1 is defined as a typedef of type String.  But
9161    to the user, it is a pointer.  So if the user tries to print S1,
9162    we should not dereference the array, but print the array address
9163    instead.
9164
9165    If we didn't preserve the typedef layer, we would lose the fact that
9166    the type is to be presented as a pointer (needs de-reference before
9167    being printed).  And we would also use the source-level type name.  */
9168
9169 struct type *
9170 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9171                    CORE_ADDR address, struct value *dval, int check_tag)
9172
9173 {
9174   struct type *fixed_type =
9175     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9176
9177   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9178       then preserve the typedef layer.
9179
9180       Implementation note: We can only check the main-type portion of
9181       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9182       from TYPE now returns a type that has the same instance flags
9183       as TYPE.  For instance, if TYPE is a "typedef const", and its
9184       target type is a "struct", then the typedef elimination will return
9185       a "const" version of the target type.  See check_typedef for more
9186       details about how the typedef layer elimination is done.
9187
9188       brobecker/2010-11-19: It seems to me that the only case where it is
9189       useful to preserve the typedef layer is when dealing with fat pointers.
9190       Perhaps, we could add a check for that and preserve the typedef layer
9191       only in that situation.  But this seems unecessary so far, probably
9192       because we call check_typedef/ada_check_typedef pretty much everywhere.
9193       */
9194   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9195       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9196           == TYPE_MAIN_TYPE (fixed_type)))
9197     return type;
9198
9199   return fixed_type;
9200 }
9201
9202 /* A standard (static-sized) type corresponding as well as possible to
9203    TYPE0, but based on no runtime data.  */
9204
9205 static struct type *
9206 to_static_fixed_type (struct type *type0)
9207 {
9208   struct type *type;
9209
9210   if (type0 == NULL)
9211     return NULL;
9212
9213   if (TYPE_FIXED_INSTANCE (type0))
9214     return type0;
9215
9216   type0 = ada_check_typedef (type0);
9217
9218   switch (TYPE_CODE (type0))
9219     {
9220     default:
9221       return type0;
9222     case TYPE_CODE_STRUCT:
9223       type = dynamic_template_type (type0);
9224       if (type != NULL)
9225         return template_to_static_fixed_type (type);
9226       else
9227         return template_to_static_fixed_type (type0);
9228     case TYPE_CODE_UNION:
9229       type = ada_find_parallel_type (type0, "___XVU");
9230       if (type != NULL)
9231         return template_to_static_fixed_type (type);
9232       else
9233         return template_to_static_fixed_type (type0);
9234     }
9235 }
9236
9237 /* A static approximation of TYPE with all type wrappers removed.  */
9238
9239 static struct type *
9240 static_unwrap_type (struct type *type)
9241 {
9242   if (ada_is_aligner_type (type))
9243     {
9244       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9245       if (ada_type_name (type1) == NULL)
9246         TYPE_NAME (type1) = ada_type_name (type);
9247
9248       return static_unwrap_type (type1);
9249     }
9250   else
9251     {
9252       struct type *raw_real_type = ada_get_base_type (type);
9253
9254       if (raw_real_type == type)
9255         return type;
9256       else
9257         return to_static_fixed_type (raw_real_type);
9258     }
9259 }
9260
9261 /* In some cases, incomplete and private types require
9262    cross-references that are not resolved as records (for example,
9263       type Foo;
9264       type FooP is access Foo;
9265       V: FooP;
9266       type Foo is array ...;
9267    ).  In these cases, since there is no mechanism for producing
9268    cross-references to such types, we instead substitute for FooP a
9269    stub enumeration type that is nowhere resolved, and whose tag is
9270    the name of the actual type.  Call these types "non-record stubs".  */
9271
9272 /* A type equivalent to TYPE that is not a non-record stub, if one
9273    exists, otherwise TYPE.  */
9274
9275 struct type *
9276 ada_check_typedef (struct type *type)
9277 {
9278   if (type == NULL)
9279     return NULL;
9280
9281   /* If our type is an access to an unconstrained array, which is encoded
9282      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9283      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9284      what allows us to distinguish between fat pointers that represent
9285      array types, and fat pointers that represent array access types
9286      (in both cases, the compiler implements them as fat pointers).  */
9287   if (ada_is_access_to_unconstrained_array (type))
9288     return type;
9289
9290   type = check_typedef (type);
9291   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9292       || !TYPE_STUB (type)
9293       || TYPE_NAME (type) == NULL)
9294     return type;
9295   else
9296     {
9297       const char *name = TYPE_NAME (type);
9298       struct type *type1 = ada_find_any_type (name);
9299
9300       if (type1 == NULL)
9301         return type;
9302
9303       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9304          stubs pointing to arrays, as we don't create symbols for array
9305          types, only for the typedef-to-array types).  If that's the case,
9306          strip the typedef layer.  */
9307       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9308         type1 = ada_check_typedef (type1);
9309
9310       return type1;
9311     }
9312 }
9313
9314 /* A value representing the data at VALADDR/ADDRESS as described by
9315    type TYPE0, but with a standard (static-sized) type that correctly
9316    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9317    type, then return VAL0 [this feature is simply to avoid redundant
9318    creation of struct values].  */
9319
9320 static struct value *
9321 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9322                            struct value *val0)
9323 {
9324   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9325
9326   if (type == type0 && val0 != NULL)
9327     return val0;
9328
9329   if (VALUE_LVAL (val0) != lval_memory)
9330     {
9331       /* Our value does not live in memory; it could be a convenience
9332          variable, for instance.  Create a not_lval value using val0's
9333          contents.  */
9334       return value_from_contents (type, value_contents (val0));
9335     }
9336
9337   return value_from_contents_and_address (type, 0, address);
9338 }
9339
9340 /* A value representing VAL, but with a standard (static-sized) type
9341    that correctly describes it.  Does not necessarily create a new
9342    value.  */
9343
9344 struct value *
9345 ada_to_fixed_value (struct value *val)
9346 {
9347   val = unwrap_value (val);
9348   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9349   return val;
9350 }
9351 \f
9352
9353 /* Attributes */
9354
9355 /* Table mapping attribute numbers to names.
9356    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9357
9358 static const char *attribute_names[] = {
9359   "<?>",
9360
9361   "first",
9362   "last",
9363   "length",
9364   "image",
9365   "max",
9366   "min",
9367   "modulus",
9368   "pos",
9369   "size",
9370   "tag",
9371   "val",
9372   0
9373 };
9374
9375 const char *
9376 ada_attribute_name (enum exp_opcode n)
9377 {
9378   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9379     return attribute_names[n - OP_ATR_FIRST + 1];
9380   else
9381     return attribute_names[0];
9382 }
9383
9384 /* Evaluate the 'POS attribute applied to ARG.  */
9385
9386 static LONGEST
9387 pos_atr (struct value *arg)
9388 {
9389   struct value *val = coerce_ref (arg);
9390   struct type *type = value_type (val);
9391   LONGEST result;
9392
9393   if (!discrete_type_p (type))
9394     error (_("'POS only defined on discrete types"));
9395
9396   if (!discrete_position (type, value_as_long (val), &result))
9397     error (_("enumeration value is invalid: can't find 'POS"));
9398
9399   return result;
9400 }
9401
9402 static struct value *
9403 value_pos_atr (struct type *type, struct value *arg)
9404 {
9405   return value_from_longest (type, pos_atr (arg));
9406 }
9407
9408 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9409
9410 static struct value *
9411 value_val_atr (struct type *type, struct value *arg)
9412 {
9413   if (!discrete_type_p (type))
9414     error (_("'VAL only defined on discrete types"));
9415   if (!integer_type_p (value_type (arg)))
9416     error (_("'VAL requires integral argument"));
9417
9418   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9419     {
9420       long pos = value_as_long (arg);
9421
9422       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9423         error (_("argument to 'VAL out of range"));
9424       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9425     }
9426   else
9427     return value_from_longest (type, value_as_long (arg));
9428 }
9429 \f
9430
9431                                 /* Evaluation */
9432
9433 /* True if TYPE appears to be an Ada character type.
9434    [At the moment, this is true only for Character and Wide_Character;
9435    It is a heuristic test that could stand improvement].  */
9436
9437 int
9438 ada_is_character_type (struct type *type)
9439 {
9440   const char *name;
9441
9442   /* If the type code says it's a character, then assume it really is,
9443      and don't check any further.  */
9444   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9445     return 1;
9446   
9447   /* Otherwise, assume it's a character type iff it is a discrete type
9448      with a known character type name.  */
9449   name = ada_type_name (type);
9450   return (name != NULL
9451           && (TYPE_CODE (type) == TYPE_CODE_INT
9452               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9453           && (strcmp (name, "character") == 0
9454               || strcmp (name, "wide_character") == 0
9455               || strcmp (name, "wide_wide_character") == 0
9456               || strcmp (name, "unsigned char") == 0));
9457 }
9458
9459 /* True if TYPE appears to be an Ada string type.  */
9460
9461 int
9462 ada_is_string_type (struct type *type)
9463 {
9464   type = ada_check_typedef (type);
9465   if (type != NULL
9466       && TYPE_CODE (type) != TYPE_CODE_PTR
9467       && (ada_is_simple_array_type (type)
9468           || ada_is_array_descriptor_type (type))
9469       && ada_array_arity (type) == 1)
9470     {
9471       struct type *elttype = ada_array_element_type (type, 1);
9472
9473       return ada_is_character_type (elttype);
9474     }
9475   else
9476     return 0;
9477 }
9478
9479 /* The compiler sometimes provides a parallel XVS type for a given
9480    PAD type.  Normally, it is safe to follow the PAD type directly,
9481    but older versions of the compiler have a bug that causes the offset
9482    of its "F" field to be wrong.  Following that field in that case
9483    would lead to incorrect results, but this can be worked around
9484    by ignoring the PAD type and using the associated XVS type instead.
9485
9486    Set to True if the debugger should trust the contents of PAD types.
9487    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9488 static int trust_pad_over_xvs = 1;
9489
9490 /* True if TYPE is a struct type introduced by the compiler to force the
9491    alignment of a value.  Such types have a single field with a
9492    distinctive name.  */
9493
9494 int
9495 ada_is_aligner_type (struct type *type)
9496 {
9497   type = ada_check_typedef (type);
9498
9499   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9500     return 0;
9501
9502   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9503           && TYPE_NFIELDS (type) == 1
9504           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9505 }
9506
9507 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9508    the parallel type.  */
9509
9510 struct type *
9511 ada_get_base_type (struct type *raw_type)
9512 {
9513   struct type *real_type_namer;
9514   struct type *raw_real_type;
9515
9516   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9517     return raw_type;
9518
9519   if (ada_is_aligner_type (raw_type))
9520     /* The encoding specifies that we should always use the aligner type.
9521        So, even if this aligner type has an associated XVS type, we should
9522        simply ignore it.
9523
9524        According to the compiler gurus, an XVS type parallel to an aligner
9525        type may exist because of a stabs limitation.  In stabs, aligner
9526        types are empty because the field has a variable-sized type, and
9527        thus cannot actually be used as an aligner type.  As a result,
9528        we need the associated parallel XVS type to decode the type.
9529        Since the policy in the compiler is to not change the internal
9530        representation based on the debugging info format, we sometimes
9531        end up having a redundant XVS type parallel to the aligner type.  */
9532     return raw_type;
9533
9534   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9535   if (real_type_namer == NULL
9536       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9537       || TYPE_NFIELDS (real_type_namer) != 1)
9538     return raw_type;
9539
9540   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9541     {
9542       /* This is an older encoding form where the base type needs to be
9543          looked up by name.  We prefer the newer enconding because it is
9544          more efficient.  */
9545       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9546       if (raw_real_type == NULL)
9547         return raw_type;
9548       else
9549         return raw_real_type;
9550     }
9551
9552   /* The field in our XVS type is a reference to the base type.  */
9553   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9554 }
9555
9556 /* The type of value designated by TYPE, with all aligners removed.  */
9557
9558 struct type *
9559 ada_aligned_type (struct type *type)
9560 {
9561   if (ada_is_aligner_type (type))
9562     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9563   else
9564     return ada_get_base_type (type);
9565 }
9566
9567
9568 /* The address of the aligned value in an object at address VALADDR
9569    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9570
9571 const gdb_byte *
9572 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9573 {
9574   if (ada_is_aligner_type (type))
9575     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9576                                    valaddr +
9577                                    TYPE_FIELD_BITPOS (type,
9578                                                       0) / TARGET_CHAR_BIT);
9579   else
9580     return valaddr;
9581 }
9582
9583
9584
9585 /* The printed representation of an enumeration literal with encoded
9586    name NAME.  The value is good to the next call of ada_enum_name.  */
9587 const char *
9588 ada_enum_name (const char *name)
9589 {
9590   static char *result;
9591   static size_t result_len = 0;
9592   const char *tmp;
9593
9594   /* First, unqualify the enumeration name:
9595      1. Search for the last '.' character.  If we find one, then skip
9596      all the preceding characters, the unqualified name starts
9597      right after that dot.
9598      2. Otherwise, we may be debugging on a target where the compiler
9599      translates dots into "__".  Search forward for double underscores,
9600      but stop searching when we hit an overloading suffix, which is
9601      of the form "__" followed by digits.  */
9602
9603   tmp = strrchr (name, '.');
9604   if (tmp != NULL)
9605     name = tmp + 1;
9606   else
9607     {
9608       while ((tmp = strstr (name, "__")) != NULL)
9609         {
9610           if (isdigit (tmp[2]))
9611             break;
9612           else
9613             name = tmp + 2;
9614         }
9615     }
9616
9617   if (name[0] == 'Q')
9618     {
9619       int v;
9620
9621       if (name[1] == 'U' || name[1] == 'W')
9622         {
9623           if (sscanf (name + 2, "%x", &v) != 1)
9624             return name;
9625         }
9626       else
9627         return name;
9628
9629       GROW_VECT (result, result_len, 16);
9630       if (isascii (v) && isprint (v))
9631         xsnprintf (result, result_len, "'%c'", v);
9632       else if (name[1] == 'U')
9633         xsnprintf (result, result_len, "[\"%02x\"]", v);
9634       else
9635         xsnprintf (result, result_len, "[\"%04x\"]", v);
9636
9637       return result;
9638     }
9639   else
9640     {
9641       tmp = strstr (name, "__");
9642       if (tmp == NULL)
9643         tmp = strstr (name, "$");
9644       if (tmp != NULL)
9645         {
9646           GROW_VECT (result, result_len, tmp - name + 1);
9647           strncpy (result, name, tmp - name);
9648           result[tmp - name] = '\0';
9649           return result;
9650         }
9651
9652       return name;
9653     }
9654 }
9655
9656 /* Evaluate the subexpression of EXP starting at *POS as for
9657    evaluate_type, updating *POS to point just past the evaluated
9658    expression.  */
9659
9660 static struct value *
9661 evaluate_subexp_type (struct expression *exp, int *pos)
9662 {
9663   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9664 }
9665
9666 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9667    value it wraps.  */
9668
9669 static struct value *
9670 unwrap_value (struct value *val)
9671 {
9672   struct type *type = ada_check_typedef (value_type (val));
9673
9674   if (ada_is_aligner_type (type))
9675     {
9676       struct value *v = ada_value_struct_elt (val, "F", 0);
9677       struct type *val_type = ada_check_typedef (value_type (v));
9678
9679       if (ada_type_name (val_type) == NULL)
9680         TYPE_NAME (val_type) = ada_type_name (type);
9681
9682       return unwrap_value (v);
9683     }
9684   else
9685     {
9686       struct type *raw_real_type =
9687         ada_check_typedef (ada_get_base_type (type));
9688
9689       /* If there is no parallel XVS or XVE type, then the value is
9690          already unwrapped.  Return it without further modification.  */
9691       if ((type == raw_real_type)
9692           && ada_find_parallel_type (type, "___XVE") == NULL)
9693         return val;
9694
9695       return
9696         coerce_unspec_val_to_type
9697         (val, ada_to_fixed_type (raw_real_type, 0,
9698                                  value_address (val),
9699                                  NULL, 1));
9700     }
9701 }
9702
9703 static struct value *
9704 cast_from_fixed (struct type *type, struct value *arg)
9705 {
9706   struct value *scale = ada_scaling_factor (value_type (arg));
9707   arg = value_cast (value_type (scale), arg);
9708
9709   arg = value_binop (arg, scale, BINOP_MUL);
9710   return value_cast (type, arg);
9711 }
9712
9713 static struct value *
9714 cast_to_fixed (struct type *type, struct value *arg)
9715 {
9716   if (type == value_type (arg))
9717     return arg;
9718
9719   struct value *scale = ada_scaling_factor (type);
9720   if (ada_is_fixed_point_type (value_type (arg)))
9721     arg = cast_from_fixed (value_type (scale), arg);
9722   else
9723     arg = value_cast (value_type (scale), arg);
9724
9725   arg = value_binop (arg, scale, BINOP_DIV);
9726   return value_cast (type, arg);
9727 }
9728
9729 /* Given two array types T1 and T2, return nonzero iff both arrays
9730    contain the same number of elements.  */
9731
9732 static int
9733 ada_same_array_size_p (struct type *t1, struct type *t2)
9734 {
9735   LONGEST lo1, hi1, lo2, hi2;
9736
9737   /* Get the array bounds in order to verify that the size of
9738      the two arrays match.  */
9739   if (!get_array_bounds (t1, &lo1, &hi1)
9740       || !get_array_bounds (t2, &lo2, &hi2))
9741     error (_("unable to determine array bounds"));
9742
9743   /* To make things easier for size comparison, normalize a bit
9744      the case of empty arrays by making sure that the difference
9745      between upper bound and lower bound is always -1.  */
9746   if (lo1 > hi1)
9747     hi1 = lo1 - 1;
9748   if (lo2 > hi2)
9749     hi2 = lo2 - 1;
9750
9751   return (hi1 - lo1 == hi2 - lo2);
9752 }
9753
9754 /* Assuming that VAL is an array of integrals, and TYPE represents
9755    an array with the same number of elements, but with wider integral
9756    elements, return an array "casted" to TYPE.  In practice, this
9757    means that the returned array is built by casting each element
9758    of the original array into TYPE's (wider) element type.  */
9759
9760 static struct value *
9761 ada_promote_array_of_integrals (struct type *type, struct value *val)
9762 {
9763   struct type *elt_type = TYPE_TARGET_TYPE (type);
9764   LONGEST lo, hi;
9765   struct value *res;
9766   LONGEST i;
9767
9768   /* Verify that both val and type are arrays of scalars, and
9769      that the size of val's elements is smaller than the size
9770      of type's element.  */
9771   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9772   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9773   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9774   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9775   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9776               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9777
9778   if (!get_array_bounds (type, &lo, &hi))
9779     error (_("unable to determine array bounds"));
9780
9781   res = allocate_value (type);
9782
9783   /* Promote each array element.  */
9784   for (i = 0; i < hi - lo + 1; i++)
9785     {
9786       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9787
9788       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9789               value_contents_all (elt), TYPE_LENGTH (elt_type));
9790     }
9791
9792   return res;
9793 }
9794
9795 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9796    return the converted value.  */
9797
9798 static struct value *
9799 coerce_for_assign (struct type *type, struct value *val)
9800 {
9801   struct type *type2 = value_type (val);
9802
9803   if (type == type2)
9804     return val;
9805
9806   type2 = ada_check_typedef (type2);
9807   type = ada_check_typedef (type);
9808
9809   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9810       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9811     {
9812       val = ada_value_ind (val);
9813       type2 = value_type (val);
9814     }
9815
9816   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9817       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9818     {
9819       if (!ada_same_array_size_p (type, type2))
9820         error (_("cannot assign arrays of different length"));
9821
9822       if (is_integral_type (TYPE_TARGET_TYPE (type))
9823           && is_integral_type (TYPE_TARGET_TYPE (type2))
9824           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9825                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9826         {
9827           /* Allow implicit promotion of the array elements to
9828              a wider type.  */
9829           return ada_promote_array_of_integrals (type, val);
9830         }
9831
9832       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9833           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9834         error (_("Incompatible types in assignment"));
9835       deprecated_set_value_type (val, type);
9836     }
9837   return val;
9838 }
9839
9840 static struct value *
9841 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9842 {
9843   struct value *val;
9844   struct type *type1, *type2;
9845   LONGEST v, v1, v2;
9846
9847   arg1 = coerce_ref (arg1);
9848   arg2 = coerce_ref (arg2);
9849   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9850   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9851
9852   if (TYPE_CODE (type1) != TYPE_CODE_INT
9853       || TYPE_CODE (type2) != TYPE_CODE_INT)
9854     return value_binop (arg1, arg2, op);
9855
9856   switch (op)
9857     {
9858     case BINOP_MOD:
9859     case BINOP_DIV:
9860     case BINOP_REM:
9861       break;
9862     default:
9863       return value_binop (arg1, arg2, op);
9864     }
9865
9866   v2 = value_as_long (arg2);
9867   if (v2 == 0)
9868     error (_("second operand of %s must not be zero."), op_string (op));
9869
9870   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9871     return value_binop (arg1, arg2, op);
9872
9873   v1 = value_as_long (arg1);
9874   switch (op)
9875     {
9876     case BINOP_DIV:
9877       v = v1 / v2;
9878       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9879         v += v > 0 ? -1 : 1;
9880       break;
9881     case BINOP_REM:
9882       v = v1 % v2;
9883       if (v * v1 < 0)
9884         v -= v2;
9885       break;
9886     default:
9887       /* Should not reach this point.  */
9888       v = 0;
9889     }
9890
9891   val = allocate_value (type1);
9892   store_unsigned_integer (value_contents_raw (val),
9893                           TYPE_LENGTH (value_type (val)),
9894                           gdbarch_byte_order (get_type_arch (type1)), v);
9895   return val;
9896 }
9897
9898 static int
9899 ada_value_equal (struct value *arg1, struct value *arg2)
9900 {
9901   if (ada_is_direct_array_type (value_type (arg1))
9902       || ada_is_direct_array_type (value_type (arg2)))
9903     {
9904       struct type *arg1_type, *arg2_type;
9905
9906       /* Automatically dereference any array reference before
9907          we attempt to perform the comparison.  */
9908       arg1 = ada_coerce_ref (arg1);
9909       arg2 = ada_coerce_ref (arg2);
9910
9911       arg1 = ada_coerce_to_simple_array (arg1);
9912       arg2 = ada_coerce_to_simple_array (arg2);
9913
9914       arg1_type = ada_check_typedef (value_type (arg1));
9915       arg2_type = ada_check_typedef (value_type (arg2));
9916
9917       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9918           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9919         error (_("Attempt to compare array with non-array"));
9920       /* FIXME: The following works only for types whose
9921          representations use all bits (no padding or undefined bits)
9922          and do not have user-defined equality.  */
9923       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9924               && memcmp (value_contents (arg1), value_contents (arg2),
9925                          TYPE_LENGTH (arg1_type)) == 0);
9926     }
9927   return value_equal (arg1, arg2);
9928 }
9929
9930 /* Total number of component associations in the aggregate starting at
9931    index PC in EXP.  Assumes that index PC is the start of an
9932    OP_AGGREGATE.  */
9933
9934 static int
9935 num_component_specs (struct expression *exp, int pc)
9936 {
9937   int n, m, i;
9938
9939   m = exp->elts[pc + 1].longconst;
9940   pc += 3;
9941   n = 0;
9942   for (i = 0; i < m; i += 1)
9943     {
9944       switch (exp->elts[pc].opcode) 
9945         {
9946         default:
9947           n += 1;
9948           break;
9949         case OP_CHOICES:
9950           n += exp->elts[pc + 1].longconst;
9951           break;
9952         }
9953       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9954     }
9955   return n;
9956 }
9957
9958 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9959    component of LHS (a simple array or a record), updating *POS past
9960    the expression, assuming that LHS is contained in CONTAINER.  Does
9961    not modify the inferior's memory, nor does it modify LHS (unless
9962    LHS == CONTAINER).  */
9963
9964 static void
9965 assign_component (struct value *container, struct value *lhs, LONGEST index,
9966                   struct expression *exp, int *pos)
9967 {
9968   struct value *mark = value_mark ();
9969   struct value *elt;
9970   struct type *lhs_type = check_typedef (value_type (lhs));
9971
9972   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9973     {
9974       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9975       struct value *index_val = value_from_longest (index_type, index);
9976
9977       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9978     }
9979   else
9980     {
9981       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9982       elt = ada_to_fixed_value (elt);
9983     }
9984
9985   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9986     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9987   else
9988     value_assign_to_component (container, elt, 
9989                                ada_evaluate_subexp (NULL, exp, pos, 
9990                                                     EVAL_NORMAL));
9991
9992   value_free_to_mark (mark);
9993 }
9994
9995 /* Assuming that LHS represents an lvalue having a record or array
9996    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9997    of that aggregate's value to LHS, advancing *POS past the
9998    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9999    lvalue containing LHS (possibly LHS itself).  Does not modify
10000    the inferior's memory, nor does it modify the contents of 
10001    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10002
10003 static struct value *
10004 assign_aggregate (struct value *container, 
10005                   struct value *lhs, struct expression *exp, 
10006                   int *pos, enum noside noside)
10007 {
10008   struct type *lhs_type;
10009   int n = exp->elts[*pos+1].longconst;
10010   LONGEST low_index, high_index;
10011   int num_specs;
10012   LONGEST *indices;
10013   int max_indices, num_indices;
10014   int i;
10015
10016   *pos += 3;
10017   if (noside != EVAL_NORMAL)
10018     {
10019       for (i = 0; i < n; i += 1)
10020         ada_evaluate_subexp (NULL, exp, pos, noside);
10021       return container;
10022     }
10023
10024   container = ada_coerce_ref (container);
10025   if (ada_is_direct_array_type (value_type (container)))
10026     container = ada_coerce_to_simple_array (container);
10027   lhs = ada_coerce_ref (lhs);
10028   if (!deprecated_value_modifiable (lhs))
10029     error (_("Left operand of assignment is not a modifiable lvalue."));
10030
10031   lhs_type = check_typedef (value_type (lhs));
10032   if (ada_is_direct_array_type (lhs_type))
10033     {
10034       lhs = ada_coerce_to_simple_array (lhs);
10035       lhs_type = check_typedef (value_type (lhs));
10036       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10037       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10038     }
10039   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10040     {
10041       low_index = 0;
10042       high_index = num_visible_fields (lhs_type) - 1;
10043     }
10044   else
10045     error (_("Left-hand side must be array or record."));
10046
10047   num_specs = num_component_specs (exp, *pos - 3);
10048   max_indices = 4 * num_specs + 4;
10049   indices = XALLOCAVEC (LONGEST, max_indices);
10050   indices[0] = indices[1] = low_index - 1;
10051   indices[2] = indices[3] = high_index + 1;
10052   num_indices = 4;
10053
10054   for (i = 0; i < n; i += 1)
10055     {
10056       switch (exp->elts[*pos].opcode)
10057         {
10058           case OP_CHOICES:
10059             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10060                                            &num_indices, max_indices,
10061                                            low_index, high_index);
10062             break;
10063           case OP_POSITIONAL:
10064             aggregate_assign_positional (container, lhs, exp, pos, indices,
10065                                          &num_indices, max_indices,
10066                                          low_index, high_index);
10067             break;
10068           case OP_OTHERS:
10069             if (i != n-1)
10070               error (_("Misplaced 'others' clause"));
10071             aggregate_assign_others (container, lhs, exp, pos, indices, 
10072                                      num_indices, low_index, high_index);
10073             break;
10074           default:
10075             error (_("Internal error: bad aggregate clause"));
10076         }
10077     }
10078
10079   return container;
10080 }
10081               
10082 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10083    construct at *POS, updating *POS past the construct, given that
10084    the positions are relative to lower bound LOW, where HIGH is the 
10085    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10086    updating *NUM_INDICES as needed.  CONTAINER is as for
10087    assign_aggregate.  */
10088 static void
10089 aggregate_assign_positional (struct value *container,
10090                              struct value *lhs, struct expression *exp,
10091                              int *pos, LONGEST *indices, int *num_indices,
10092                              int max_indices, LONGEST low, LONGEST high) 
10093 {
10094   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10095   
10096   if (ind - 1 == high)
10097     warning (_("Extra components in aggregate ignored."));
10098   if (ind <= high)
10099     {
10100       add_component_interval (ind, ind, indices, num_indices, max_indices);
10101       *pos += 3;
10102       assign_component (container, lhs, ind, exp, pos);
10103     }
10104   else
10105     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10106 }
10107
10108 /* Assign into the components of LHS indexed by the OP_CHOICES
10109    construct at *POS, updating *POS past the construct, given that
10110    the allowable indices are LOW..HIGH.  Record the indices assigned
10111    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10112    needed.  CONTAINER is as for assign_aggregate.  */
10113 static void
10114 aggregate_assign_from_choices (struct value *container,
10115                                struct value *lhs, struct expression *exp,
10116                                int *pos, LONGEST *indices, int *num_indices,
10117                                int max_indices, LONGEST low, LONGEST high) 
10118 {
10119   int j;
10120   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10121   int choice_pos, expr_pc;
10122   int is_array = ada_is_direct_array_type (value_type (lhs));
10123
10124   choice_pos = *pos += 3;
10125
10126   for (j = 0; j < n_choices; j += 1)
10127     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10128   expr_pc = *pos;
10129   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10130   
10131   for (j = 0; j < n_choices; j += 1)
10132     {
10133       LONGEST lower, upper;
10134       enum exp_opcode op = exp->elts[choice_pos].opcode;
10135
10136       if (op == OP_DISCRETE_RANGE)
10137         {
10138           choice_pos += 1;
10139           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10140                                                       EVAL_NORMAL));
10141           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10142                                                       EVAL_NORMAL));
10143         }
10144       else if (is_array)
10145         {
10146           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10147                                                       EVAL_NORMAL));
10148           upper = lower;
10149         }
10150       else
10151         {
10152           int ind;
10153           const char *name;
10154
10155           switch (op)
10156             {
10157             case OP_NAME:
10158               name = &exp->elts[choice_pos + 2].string;
10159               break;
10160             case OP_VAR_VALUE:
10161               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10162               break;
10163             default:
10164               error (_("Invalid record component association."));
10165             }
10166           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10167           ind = 0;
10168           if (! find_struct_field (name, value_type (lhs), 0, 
10169                                    NULL, NULL, NULL, NULL, &ind))
10170             error (_("Unknown component name: %s."), name);
10171           lower = upper = ind;
10172         }
10173
10174       if (lower <= upper && (lower < low || upper > high))
10175         error (_("Index in component association out of bounds."));
10176
10177       add_component_interval (lower, upper, indices, num_indices,
10178                               max_indices);
10179       while (lower <= upper)
10180         {
10181           int pos1;
10182
10183           pos1 = expr_pc;
10184           assign_component (container, lhs, lower, exp, &pos1);
10185           lower += 1;
10186         }
10187     }
10188 }
10189
10190 /* Assign the value of the expression in the OP_OTHERS construct in
10191    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10192    have not been previously assigned.  The index intervals already assigned
10193    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10194    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10195 static void
10196 aggregate_assign_others (struct value *container,
10197                          struct value *lhs, struct expression *exp,
10198                          int *pos, LONGEST *indices, int num_indices,
10199                          LONGEST low, LONGEST high) 
10200 {
10201   int i;
10202   int expr_pc = *pos + 1;
10203   
10204   for (i = 0; i < num_indices - 2; i += 2)
10205     {
10206       LONGEST ind;
10207
10208       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10209         {
10210           int localpos;
10211
10212           localpos = expr_pc;
10213           assign_component (container, lhs, ind, exp, &localpos);
10214         }
10215     }
10216   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10217 }
10218
10219 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10220    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10221    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10222    MAX_SIZE.  The resulting intervals do not overlap.  */
10223 static void
10224 add_component_interval (LONGEST low, LONGEST high, 
10225                         LONGEST* indices, int *size, int max_size)
10226 {
10227   int i, j;
10228
10229   for (i = 0; i < *size; i += 2) {
10230     if (high >= indices[i] && low <= indices[i + 1])
10231       {
10232         int kh;
10233
10234         for (kh = i + 2; kh < *size; kh += 2)
10235           if (high < indices[kh])
10236             break;
10237         if (low < indices[i])
10238           indices[i] = low;
10239         indices[i + 1] = indices[kh - 1];
10240         if (high > indices[i + 1])
10241           indices[i + 1] = high;
10242         memcpy (indices + i + 2, indices + kh, *size - kh);
10243         *size -= kh - i - 2;
10244         return;
10245       }
10246     else if (high < indices[i])
10247       break;
10248   }
10249         
10250   if (*size == max_size)
10251     error (_("Internal error: miscounted aggregate components."));
10252   *size += 2;
10253   for (j = *size-1; j >= i+2; j -= 1)
10254     indices[j] = indices[j - 2];
10255   indices[i] = low;
10256   indices[i + 1] = high;
10257 }
10258
10259 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10260    is different.  */
10261
10262 static struct value *
10263 ada_value_cast (struct type *type, struct value *arg2)
10264 {
10265   if (type == ada_check_typedef (value_type (arg2)))
10266     return arg2;
10267
10268   if (ada_is_fixed_point_type (type))
10269     return cast_to_fixed (type, arg2);
10270
10271   if (ada_is_fixed_point_type (value_type (arg2)))
10272     return cast_from_fixed (type, arg2);
10273
10274   return value_cast (type, arg2);
10275 }
10276
10277 /*  Evaluating Ada expressions, and printing their result.
10278     ------------------------------------------------------
10279
10280     1. Introduction:
10281     ----------------
10282
10283     We usually evaluate an Ada expression in order to print its value.
10284     We also evaluate an expression in order to print its type, which
10285     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10286     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10287     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10288     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10289     similar.
10290
10291     Evaluating expressions is a little more complicated for Ada entities
10292     than it is for entities in languages such as C.  The main reason for
10293     this is that Ada provides types whose definition might be dynamic.
10294     One example of such types is variant records.  Or another example
10295     would be an array whose bounds can only be known at run time.
10296
10297     The following description is a general guide as to what should be
10298     done (and what should NOT be done) in order to evaluate an expression
10299     involving such types, and when.  This does not cover how the semantic
10300     information is encoded by GNAT as this is covered separatly.  For the
10301     document used as the reference for the GNAT encoding, see exp_dbug.ads
10302     in the GNAT sources.
10303
10304     Ideally, we should embed each part of this description next to its
10305     associated code.  Unfortunately, the amount of code is so vast right
10306     now that it's hard to see whether the code handling a particular
10307     situation might be duplicated or not.  One day, when the code is
10308     cleaned up, this guide might become redundant with the comments
10309     inserted in the code, and we might want to remove it.
10310
10311     2. ``Fixing'' an Entity, the Simple Case:
10312     -----------------------------------------
10313
10314     When evaluating Ada expressions, the tricky issue is that they may
10315     reference entities whose type contents and size are not statically
10316     known.  Consider for instance a variant record:
10317
10318        type Rec (Empty : Boolean := True) is record
10319           case Empty is
10320              when True => null;
10321              when False => Value : Integer;
10322           end case;
10323        end record;
10324        Yes : Rec := (Empty => False, Value => 1);
10325        No  : Rec := (empty => True);
10326
10327     The size and contents of that record depends on the value of the
10328     descriminant (Rec.Empty).  At this point, neither the debugging
10329     information nor the associated type structure in GDB are able to
10330     express such dynamic types.  So what the debugger does is to create
10331     "fixed" versions of the type that applies to the specific object.
10332     We also informally refer to this opperation as "fixing" an object,
10333     which means creating its associated fixed type.
10334
10335     Example: when printing the value of variable "Yes" above, its fixed
10336     type would look like this:
10337
10338        type Rec is record
10339           Empty : Boolean;
10340           Value : Integer;
10341        end record;
10342
10343     On the other hand, if we printed the value of "No", its fixed type
10344     would become:
10345
10346        type Rec is record
10347           Empty : Boolean;
10348        end record;
10349
10350     Things become a little more complicated when trying to fix an entity
10351     with a dynamic type that directly contains another dynamic type,
10352     such as an array of variant records, for instance.  There are
10353     two possible cases: Arrays, and records.
10354
10355     3. ``Fixing'' Arrays:
10356     ---------------------
10357
10358     The type structure in GDB describes an array in terms of its bounds,
10359     and the type of its elements.  By design, all elements in the array
10360     have the same type and we cannot represent an array of variant elements
10361     using the current type structure in GDB.  When fixing an array,
10362     we cannot fix the array element, as we would potentially need one
10363     fixed type per element of the array.  As a result, the best we can do
10364     when fixing an array is to produce an array whose bounds and size
10365     are correct (allowing us to read it from memory), but without having
10366     touched its element type.  Fixing each element will be done later,
10367     when (if) necessary.
10368
10369     Arrays are a little simpler to handle than records, because the same
10370     amount of memory is allocated for each element of the array, even if
10371     the amount of space actually used by each element differs from element
10372     to element.  Consider for instance the following array of type Rec:
10373
10374        type Rec_Array is array (1 .. 2) of Rec;
10375
10376     The actual amount of memory occupied by each element might be different
10377     from element to element, depending on the value of their discriminant.
10378     But the amount of space reserved for each element in the array remains
10379     fixed regardless.  So we simply need to compute that size using
10380     the debugging information available, from which we can then determine
10381     the array size (we multiply the number of elements of the array by
10382     the size of each element).
10383
10384     The simplest case is when we have an array of a constrained element
10385     type. For instance, consider the following type declarations:
10386
10387         type Bounded_String (Max_Size : Integer) is
10388            Length : Integer;
10389            Buffer : String (1 .. Max_Size);
10390         end record;
10391         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10392
10393     In this case, the compiler describes the array as an array of
10394     variable-size elements (identified by its XVS suffix) for which
10395     the size can be read in the parallel XVZ variable.
10396
10397     In the case of an array of an unconstrained element type, the compiler
10398     wraps the array element inside a private PAD type.  This type should not
10399     be shown to the user, and must be "unwrap"'ed before printing.  Note
10400     that we also use the adjective "aligner" in our code to designate
10401     these wrapper types.
10402
10403     In some cases, the size allocated for each element is statically
10404     known.  In that case, the PAD type already has the correct size,
10405     and the array element should remain unfixed.
10406
10407     But there are cases when this size is not statically known.
10408     For instance, assuming that "Five" is an integer variable:
10409
10410         type Dynamic is array (1 .. Five) of Integer;
10411         type Wrapper (Has_Length : Boolean := False) is record
10412            Data : Dynamic;
10413            case Has_Length is
10414               when True => Length : Integer;
10415               when False => null;
10416            end case;
10417         end record;
10418         type Wrapper_Array is array (1 .. 2) of Wrapper;
10419
10420         Hello : Wrapper_Array := (others => (Has_Length => True,
10421                                              Data => (others => 17),
10422                                              Length => 1));
10423
10424
10425     The debugging info would describe variable Hello as being an
10426     array of a PAD type.  The size of that PAD type is not statically
10427     known, but can be determined using a parallel XVZ variable.
10428     In that case, a copy of the PAD type with the correct size should
10429     be used for the fixed array.
10430
10431     3. ``Fixing'' record type objects:
10432     ----------------------------------
10433
10434     Things are slightly different from arrays in the case of dynamic
10435     record types.  In this case, in order to compute the associated
10436     fixed type, we need to determine the size and offset of each of
10437     its components.  This, in turn, requires us to compute the fixed
10438     type of each of these components.
10439
10440     Consider for instance the example:
10441
10442         type Bounded_String (Max_Size : Natural) is record
10443            Str : String (1 .. Max_Size);
10444            Length : Natural;
10445         end record;
10446         My_String : Bounded_String (Max_Size => 10);
10447
10448     In that case, the position of field "Length" depends on the size
10449     of field Str, which itself depends on the value of the Max_Size
10450     discriminant.  In order to fix the type of variable My_String,
10451     we need to fix the type of field Str.  Therefore, fixing a variant
10452     record requires us to fix each of its components.
10453
10454     However, if a component does not have a dynamic size, the component
10455     should not be fixed.  In particular, fields that use a PAD type
10456     should not fixed.  Here is an example where this might happen
10457     (assuming type Rec above):
10458
10459        type Container (Big : Boolean) is record
10460           First : Rec;
10461           After : Integer;
10462           case Big is
10463              when True => Another : Integer;
10464              when False => null;
10465           end case;
10466        end record;
10467        My_Container : Container := (Big => False,
10468                                     First => (Empty => True),
10469                                     After => 42);
10470
10471     In that example, the compiler creates a PAD type for component First,
10472     whose size is constant, and then positions the component After just
10473     right after it.  The offset of component After is therefore constant
10474     in this case.
10475
10476     The debugger computes the position of each field based on an algorithm
10477     that uses, among other things, the actual position and size of the field
10478     preceding it.  Let's now imagine that the user is trying to print
10479     the value of My_Container.  If the type fixing was recursive, we would
10480     end up computing the offset of field After based on the size of the
10481     fixed version of field First.  And since in our example First has
10482     only one actual field, the size of the fixed type is actually smaller
10483     than the amount of space allocated to that field, and thus we would
10484     compute the wrong offset of field After.
10485
10486     To make things more complicated, we need to watch out for dynamic
10487     components of variant records (identified by the ___XVL suffix in
10488     the component name).  Even if the target type is a PAD type, the size
10489     of that type might not be statically known.  So the PAD type needs
10490     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10491     we might end up with the wrong size for our component.  This can be
10492     observed with the following type declarations:
10493
10494         type Octal is new Integer range 0 .. 7;
10495         type Octal_Array is array (Positive range <>) of Octal;
10496         pragma Pack (Octal_Array);
10497
10498         type Octal_Buffer (Size : Positive) is record
10499            Buffer : Octal_Array (1 .. Size);
10500            Length : Integer;
10501         end record;
10502
10503     In that case, Buffer is a PAD type whose size is unset and needs
10504     to be computed by fixing the unwrapped type.
10505
10506     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10507     ----------------------------------------------------------
10508
10509     Lastly, when should the sub-elements of an entity that remained unfixed
10510     thus far, be actually fixed?
10511
10512     The answer is: Only when referencing that element.  For instance
10513     when selecting one component of a record, this specific component
10514     should be fixed at that point in time.  Or when printing the value
10515     of a record, each component should be fixed before its value gets
10516     printed.  Similarly for arrays, the element of the array should be
10517     fixed when printing each element of the array, or when extracting
10518     one element out of that array.  On the other hand, fixing should
10519     not be performed on the elements when taking a slice of an array!
10520
10521     Note that one of the side effects of miscomputing the offset and
10522     size of each field is that we end up also miscomputing the size
10523     of the containing type.  This can have adverse results when computing
10524     the value of an entity.  GDB fetches the value of an entity based
10525     on the size of its type, and thus a wrong size causes GDB to fetch
10526     the wrong amount of memory.  In the case where the computed size is
10527     too small, GDB fetches too little data to print the value of our
10528     entity.  Results in this case are unpredictable, as we usually read
10529     past the buffer containing the data =:-o.  */
10530
10531 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10532    for that subexpression cast to TO_TYPE.  Advance *POS over the
10533    subexpression.  */
10534
10535 static value *
10536 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10537                               enum noside noside, struct type *to_type)
10538 {
10539   int pc = *pos;
10540
10541   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10542       || exp->elts[pc].opcode == OP_VAR_VALUE)
10543     {
10544       (*pos) += 4;
10545
10546       value *val;
10547       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10548         {
10549           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10550             return value_zero (to_type, not_lval);
10551
10552           val = evaluate_var_msym_value (noside,
10553                                          exp->elts[pc + 1].objfile,
10554                                          exp->elts[pc + 2].msymbol);
10555         }
10556       else
10557         val = evaluate_var_value (noside,
10558                                   exp->elts[pc + 1].block,
10559                                   exp->elts[pc + 2].symbol);
10560
10561       if (noside == EVAL_SKIP)
10562         return eval_skip_value (exp);
10563
10564       val = ada_value_cast (to_type, val);
10565
10566       /* Follow the Ada language semantics that do not allow taking
10567          an address of the result of a cast (view conversion in Ada).  */
10568       if (VALUE_LVAL (val) == lval_memory)
10569         {
10570           if (value_lazy (val))
10571             value_fetch_lazy (val);
10572           VALUE_LVAL (val) = not_lval;
10573         }
10574       return val;
10575     }
10576
10577   value *val = evaluate_subexp (to_type, exp, pos, noside);
10578   if (noside == EVAL_SKIP)
10579     return eval_skip_value (exp);
10580   return ada_value_cast (to_type, val);
10581 }
10582
10583 /* Implement the evaluate_exp routine in the exp_descriptor structure
10584    for the Ada language.  */
10585
10586 static struct value *
10587 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10588                      int *pos, enum noside noside)
10589 {
10590   enum exp_opcode op;
10591   int tem;
10592   int pc;
10593   int preeval_pos;
10594   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10595   struct type *type;
10596   int nargs, oplen;
10597   struct value **argvec;
10598
10599   pc = *pos;
10600   *pos += 1;
10601   op = exp->elts[pc].opcode;
10602
10603   switch (op)
10604     {
10605     default:
10606       *pos -= 1;
10607       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10608
10609       if (noside == EVAL_NORMAL)
10610         arg1 = unwrap_value (arg1);
10611
10612       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10613          then we need to perform the conversion manually, because
10614          evaluate_subexp_standard doesn't do it.  This conversion is
10615          necessary in Ada because the different kinds of float/fixed
10616          types in Ada have different representations.
10617
10618          Similarly, we need to perform the conversion from OP_LONG
10619          ourselves.  */
10620       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10621         arg1 = ada_value_cast (expect_type, arg1);
10622
10623       return arg1;
10624
10625     case OP_STRING:
10626       {
10627         struct value *result;
10628
10629         *pos -= 1;
10630         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10631         /* The result type will have code OP_STRING, bashed there from 
10632            OP_ARRAY.  Bash it back.  */
10633         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10634           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10635         return result;
10636       }
10637
10638     case UNOP_CAST:
10639       (*pos) += 2;
10640       type = exp->elts[pc + 1].type;
10641       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10642
10643     case UNOP_QUAL:
10644       (*pos) += 2;
10645       type = exp->elts[pc + 1].type;
10646       return ada_evaluate_subexp (type, exp, pos, noside);
10647
10648     case BINOP_ASSIGN:
10649       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10650       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10651         {
10652           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10653           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10654             return arg1;
10655           return ada_value_assign (arg1, arg1);
10656         }
10657       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10658          except if the lhs of our assignment is a convenience variable.
10659          In the case of assigning to a convenience variable, the lhs
10660          should be exactly the result of the evaluation of the rhs.  */
10661       type = value_type (arg1);
10662       if (VALUE_LVAL (arg1) == lval_internalvar)
10663          type = NULL;
10664       arg2 = evaluate_subexp (type, exp, pos, noside);
10665       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10666         return arg1;
10667       if (ada_is_fixed_point_type (value_type (arg1)))
10668         arg2 = cast_to_fixed (value_type (arg1), arg2);
10669       else if (ada_is_fixed_point_type (value_type (arg2)))
10670         error
10671           (_("Fixed-point values must be assigned to fixed-point variables"));
10672       else
10673         arg2 = coerce_for_assign (value_type (arg1), arg2);
10674       return ada_value_assign (arg1, arg2);
10675
10676     case BINOP_ADD:
10677       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10678       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10679       if (noside == EVAL_SKIP)
10680         goto nosideret;
10681       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10682         return (value_from_longest
10683                  (value_type (arg1),
10684                   value_as_long (arg1) + value_as_long (arg2)));
10685       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10686         return (value_from_longest
10687                  (value_type (arg2),
10688                   value_as_long (arg1) + value_as_long (arg2)));
10689       if ((ada_is_fixed_point_type (value_type (arg1))
10690            || ada_is_fixed_point_type (value_type (arg2)))
10691           && value_type (arg1) != value_type (arg2))
10692         error (_("Operands of fixed-point addition must have the same type"));
10693       /* Do the addition, and cast the result to the type of the first
10694          argument.  We cannot cast the result to a reference type, so if
10695          ARG1 is a reference type, find its underlying type.  */
10696       type = value_type (arg1);
10697       while (TYPE_CODE (type) == TYPE_CODE_REF)
10698         type = TYPE_TARGET_TYPE (type);
10699       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10700       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10701
10702     case BINOP_SUB:
10703       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10704       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10705       if (noside == EVAL_SKIP)
10706         goto nosideret;
10707       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10708         return (value_from_longest
10709                  (value_type (arg1),
10710                   value_as_long (arg1) - value_as_long (arg2)));
10711       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10712         return (value_from_longest
10713                  (value_type (arg2),
10714                   value_as_long (arg1) - value_as_long (arg2)));
10715       if ((ada_is_fixed_point_type (value_type (arg1))
10716            || ada_is_fixed_point_type (value_type (arg2)))
10717           && value_type (arg1) != value_type (arg2))
10718         error (_("Operands of fixed-point subtraction "
10719                  "must have the same type"));
10720       /* Do the substraction, and cast the result to the type of the first
10721          argument.  We cannot cast the result to a reference type, so if
10722          ARG1 is a reference type, find its underlying type.  */
10723       type = value_type (arg1);
10724       while (TYPE_CODE (type) == TYPE_CODE_REF)
10725         type = TYPE_TARGET_TYPE (type);
10726       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10727       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10728
10729     case BINOP_MUL:
10730     case BINOP_DIV:
10731     case BINOP_REM:
10732     case BINOP_MOD:
10733       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10734       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10735       if (noside == EVAL_SKIP)
10736         goto nosideret;
10737       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10738         {
10739           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10740           return value_zero (value_type (arg1), not_lval);
10741         }
10742       else
10743         {
10744           type = builtin_type (exp->gdbarch)->builtin_double;
10745           if (ada_is_fixed_point_type (value_type (arg1)))
10746             arg1 = cast_from_fixed (type, arg1);
10747           if (ada_is_fixed_point_type (value_type (arg2)))
10748             arg2 = cast_from_fixed (type, arg2);
10749           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10750           return ada_value_binop (arg1, arg2, op);
10751         }
10752
10753     case BINOP_EQUAL:
10754     case BINOP_NOTEQUAL:
10755       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10756       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10757       if (noside == EVAL_SKIP)
10758         goto nosideret;
10759       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10760         tem = 0;
10761       else
10762         {
10763           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10764           tem = ada_value_equal (arg1, arg2);
10765         }
10766       if (op == BINOP_NOTEQUAL)
10767         tem = !tem;
10768       type = language_bool_type (exp->language_defn, exp->gdbarch);
10769       return value_from_longest (type, (LONGEST) tem);
10770
10771     case UNOP_NEG:
10772       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10773       if (noside == EVAL_SKIP)
10774         goto nosideret;
10775       else if (ada_is_fixed_point_type (value_type (arg1)))
10776         return value_cast (value_type (arg1), value_neg (arg1));
10777       else
10778         {
10779           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10780           return value_neg (arg1);
10781         }
10782
10783     case BINOP_LOGICAL_AND:
10784     case BINOP_LOGICAL_OR:
10785     case UNOP_LOGICAL_NOT:
10786       {
10787         struct value *val;
10788
10789         *pos -= 1;
10790         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10791         type = language_bool_type (exp->language_defn, exp->gdbarch);
10792         return value_cast (type, val);
10793       }
10794
10795     case BINOP_BITWISE_AND:
10796     case BINOP_BITWISE_IOR:
10797     case BINOP_BITWISE_XOR:
10798       {
10799         struct value *val;
10800
10801         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10802         *pos = pc;
10803         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10804
10805         return value_cast (value_type (arg1), val);
10806       }
10807
10808     case OP_VAR_VALUE:
10809       *pos -= 1;
10810
10811       if (noside == EVAL_SKIP)
10812         {
10813           *pos += 4;
10814           goto nosideret;
10815         }
10816
10817       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10818         /* Only encountered when an unresolved symbol occurs in a
10819            context other than a function call, in which case, it is
10820            invalid.  */
10821         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10822                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10823
10824       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10825         {
10826           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10827           /* Check to see if this is a tagged type.  We also need to handle
10828              the case where the type is a reference to a tagged type, but
10829              we have to be careful to exclude pointers to tagged types.
10830              The latter should be shown as usual (as a pointer), whereas
10831              a reference should mostly be transparent to the user.  */
10832           if (ada_is_tagged_type (type, 0)
10833               || (TYPE_CODE (type) == TYPE_CODE_REF
10834                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10835             {
10836               /* Tagged types are a little special in the fact that the real
10837                  type is dynamic and can only be determined by inspecting the
10838                  object's tag.  This means that we need to get the object's
10839                  value first (EVAL_NORMAL) and then extract the actual object
10840                  type from its tag.
10841
10842                  Note that we cannot skip the final step where we extract
10843                  the object type from its tag, because the EVAL_NORMAL phase
10844                  results in dynamic components being resolved into fixed ones.
10845                  This can cause problems when trying to print the type
10846                  description of tagged types whose parent has a dynamic size:
10847                  We use the type name of the "_parent" component in order
10848                  to print the name of the ancestor type in the type description.
10849                  If that component had a dynamic size, the resolution into
10850                  a fixed type would result in the loss of that type name,
10851                  thus preventing us from printing the name of the ancestor
10852                  type in the type description.  */
10853               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10854
10855               if (TYPE_CODE (type) != TYPE_CODE_REF)
10856                 {
10857                   struct type *actual_type;
10858
10859                   actual_type = type_from_tag (ada_value_tag (arg1));
10860                   if (actual_type == NULL)
10861                     /* If, for some reason, we were unable to determine
10862                        the actual type from the tag, then use the static
10863                        approximation that we just computed as a fallback.
10864                        This can happen if the debugging information is
10865                        incomplete, for instance.  */
10866                     actual_type = type;
10867                   return value_zero (actual_type, not_lval);
10868                 }
10869               else
10870                 {
10871                   /* In the case of a ref, ada_coerce_ref takes care
10872                      of determining the actual type.  But the evaluation
10873                      should return a ref as it should be valid to ask
10874                      for its address; so rebuild a ref after coerce.  */
10875                   arg1 = ada_coerce_ref (arg1);
10876                   return value_ref (arg1, TYPE_CODE_REF);
10877                 }
10878             }
10879
10880           /* Records and unions for which GNAT encodings have been
10881              generated need to be statically fixed as well.
10882              Otherwise, non-static fixing produces a type where
10883              all dynamic properties are removed, which prevents "ptype"
10884              from being able to completely describe the type.
10885              For instance, a case statement in a variant record would be
10886              replaced by the relevant components based on the actual
10887              value of the discriminants.  */
10888           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10889                && dynamic_template_type (type) != NULL)
10890               || (TYPE_CODE (type) == TYPE_CODE_UNION
10891                   && ada_find_parallel_type (type, "___XVU") != NULL))
10892             {
10893               *pos += 4;
10894               return value_zero (to_static_fixed_type (type), not_lval);
10895             }
10896         }
10897
10898       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10899       return ada_to_fixed_value (arg1);
10900
10901     case OP_FUNCALL:
10902       (*pos) += 2;
10903
10904       /* Allocate arg vector, including space for the function to be
10905          called in argvec[0] and a terminating NULL.  */
10906       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10907       argvec = XALLOCAVEC (struct value *, nargs + 2);
10908
10909       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10910           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10911         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10912                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10913       else
10914         {
10915           for (tem = 0; tem <= nargs; tem += 1)
10916             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10917           argvec[tem] = 0;
10918
10919           if (noside == EVAL_SKIP)
10920             goto nosideret;
10921         }
10922
10923       if (ada_is_constrained_packed_array_type
10924           (desc_base_type (value_type (argvec[0]))))
10925         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10926       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10927                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10928         /* This is a packed array that has already been fixed, and
10929            therefore already coerced to a simple array.  Nothing further
10930            to do.  */
10931         ;
10932       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10933         {
10934           /* Make sure we dereference references so that all the code below
10935              feels like it's really handling the referenced value.  Wrapping
10936              types (for alignment) may be there, so make sure we strip them as
10937              well.  */
10938           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10939         }
10940       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10941                && VALUE_LVAL (argvec[0]) == lval_memory)
10942         argvec[0] = value_addr (argvec[0]);
10943
10944       type = ada_check_typedef (value_type (argvec[0]));
10945
10946       /* Ada allows us to implicitly dereference arrays when subscripting
10947          them.  So, if this is an array typedef (encoding use for array
10948          access types encoded as fat pointers), strip it now.  */
10949       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10950         type = ada_typedef_target_type (type);
10951
10952       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10953         {
10954           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10955             {
10956             case TYPE_CODE_FUNC:
10957               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10958               break;
10959             case TYPE_CODE_ARRAY:
10960               break;
10961             case TYPE_CODE_STRUCT:
10962               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10963                 argvec[0] = ada_value_ind (argvec[0]);
10964               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10965               break;
10966             default:
10967               error (_("cannot subscript or call something of type `%s'"),
10968                      ada_type_name (value_type (argvec[0])));
10969               break;
10970             }
10971         }
10972
10973       switch (TYPE_CODE (type))
10974         {
10975         case TYPE_CODE_FUNC:
10976           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10977             {
10978               if (TYPE_TARGET_TYPE (type) == NULL)
10979                 error_call_unknown_return_type (NULL);
10980               return allocate_value (TYPE_TARGET_TYPE (type));
10981             }
10982           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
10983         case TYPE_CODE_INTERNAL_FUNCTION:
10984           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10985             /* We don't know anything about what the internal
10986                function might return, but we have to return
10987                something.  */
10988             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10989                                not_lval);
10990           else
10991             return call_internal_function (exp->gdbarch, exp->language_defn,
10992                                            argvec[0], nargs, argvec + 1);
10993
10994         case TYPE_CODE_STRUCT:
10995           {
10996             int arity;
10997
10998             arity = ada_array_arity (type);
10999             type = ada_array_element_type (type, nargs);
11000             if (type == NULL)
11001               error (_("cannot subscript or call a record"));
11002             if (arity != nargs)
11003               error (_("wrong number of subscripts; expecting %d"), arity);
11004             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11005               return value_zero (ada_aligned_type (type), lval_memory);
11006             return
11007               unwrap_value (ada_value_subscript
11008                             (argvec[0], nargs, argvec + 1));
11009           }
11010         case TYPE_CODE_ARRAY:
11011           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11012             {
11013               type = ada_array_element_type (type, nargs);
11014               if (type == NULL)
11015                 error (_("element type of array unknown"));
11016               else
11017                 return value_zero (ada_aligned_type (type), lval_memory);
11018             }
11019           return
11020             unwrap_value (ada_value_subscript
11021                           (ada_coerce_to_simple_array (argvec[0]),
11022                            nargs, argvec + 1));
11023         case TYPE_CODE_PTR:     /* Pointer to array */
11024           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11025             {
11026               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11027               type = ada_array_element_type (type, nargs);
11028               if (type == NULL)
11029                 error (_("element type of array unknown"));
11030               else
11031                 return value_zero (ada_aligned_type (type), lval_memory);
11032             }
11033           return
11034             unwrap_value (ada_value_ptr_subscript (argvec[0],
11035                                                    nargs, argvec + 1));
11036
11037         default:
11038           error (_("Attempt to index or call something other than an "
11039                    "array or function"));
11040         }
11041
11042     case TERNOP_SLICE:
11043       {
11044         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11045         struct value *low_bound_val =
11046           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11047         struct value *high_bound_val =
11048           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11049         LONGEST low_bound;
11050         LONGEST high_bound;
11051
11052         low_bound_val = coerce_ref (low_bound_val);
11053         high_bound_val = coerce_ref (high_bound_val);
11054         low_bound = value_as_long (low_bound_val);
11055         high_bound = value_as_long (high_bound_val);
11056
11057         if (noside == EVAL_SKIP)
11058           goto nosideret;
11059
11060         /* If this is a reference to an aligner type, then remove all
11061            the aligners.  */
11062         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11063             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11064           TYPE_TARGET_TYPE (value_type (array)) =
11065             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11066
11067         if (ada_is_constrained_packed_array_type (value_type (array)))
11068           error (_("cannot slice a packed array"));
11069
11070         /* If this is a reference to an array or an array lvalue,
11071            convert to a pointer.  */
11072         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11073             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11074                 && VALUE_LVAL (array) == lval_memory))
11075           array = value_addr (array);
11076
11077         if (noside == EVAL_AVOID_SIDE_EFFECTS
11078             && ada_is_array_descriptor_type (ada_check_typedef
11079                                              (value_type (array))))
11080           return empty_array (ada_type_of_array (array, 0), low_bound);
11081
11082         array = ada_coerce_to_simple_array_ptr (array);
11083
11084         /* If we have more than one level of pointer indirection,
11085            dereference the value until we get only one level.  */
11086         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11087                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11088                      == TYPE_CODE_PTR))
11089           array = value_ind (array);
11090
11091         /* Make sure we really do have an array type before going further,
11092            to avoid a SEGV when trying to get the index type or the target
11093            type later down the road if the debug info generated by
11094            the compiler is incorrect or incomplete.  */
11095         if (!ada_is_simple_array_type (value_type (array)))
11096           error (_("cannot take slice of non-array"));
11097
11098         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11099             == TYPE_CODE_PTR)
11100           {
11101             struct type *type0 = ada_check_typedef (value_type (array));
11102
11103             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11104               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11105             else
11106               {
11107                 struct type *arr_type0 =
11108                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11109
11110                 return ada_value_slice_from_ptr (array, arr_type0,
11111                                                  longest_to_int (low_bound),
11112                                                  longest_to_int (high_bound));
11113               }
11114           }
11115         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11116           return array;
11117         else if (high_bound < low_bound)
11118           return empty_array (value_type (array), low_bound);
11119         else
11120           return ada_value_slice (array, longest_to_int (low_bound),
11121                                   longest_to_int (high_bound));
11122       }
11123
11124     case UNOP_IN_RANGE:
11125       (*pos) += 2;
11126       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11127       type = check_typedef (exp->elts[pc + 1].type);
11128
11129       if (noside == EVAL_SKIP)
11130         goto nosideret;
11131
11132       switch (TYPE_CODE (type))
11133         {
11134         default:
11135           lim_warning (_("Membership test incompletely implemented; "
11136                          "always returns true"));
11137           type = language_bool_type (exp->language_defn, exp->gdbarch);
11138           return value_from_longest (type, (LONGEST) 1);
11139
11140         case TYPE_CODE_RANGE:
11141           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11142           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11143           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11144           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11145           type = language_bool_type (exp->language_defn, exp->gdbarch);
11146           return
11147             value_from_longest (type,
11148                                 (value_less (arg1, arg3)
11149                                  || value_equal (arg1, arg3))
11150                                 && (value_less (arg2, arg1)
11151                                     || value_equal (arg2, arg1)));
11152         }
11153
11154     case BINOP_IN_BOUNDS:
11155       (*pos) += 2;
11156       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11157       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11158
11159       if (noside == EVAL_SKIP)
11160         goto nosideret;
11161
11162       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11163         {
11164           type = language_bool_type (exp->language_defn, exp->gdbarch);
11165           return value_zero (type, not_lval);
11166         }
11167
11168       tem = longest_to_int (exp->elts[pc + 1].longconst);
11169
11170       type = ada_index_type (value_type (arg2), tem, "range");
11171       if (!type)
11172         type = value_type (arg1);
11173
11174       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11175       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11176
11177       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11178       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11179       type = language_bool_type (exp->language_defn, exp->gdbarch);
11180       return
11181         value_from_longest (type,
11182                             (value_less (arg1, arg3)
11183                              || value_equal (arg1, arg3))
11184                             && (value_less (arg2, arg1)
11185                                 || value_equal (arg2, arg1)));
11186
11187     case TERNOP_IN_RANGE:
11188       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11189       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11190       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11191
11192       if (noside == EVAL_SKIP)
11193         goto nosideret;
11194
11195       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11196       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11197       type = language_bool_type (exp->language_defn, exp->gdbarch);
11198       return
11199         value_from_longest (type,
11200                             (value_less (arg1, arg3)
11201                              || value_equal (arg1, arg3))
11202                             && (value_less (arg2, arg1)
11203                                 || value_equal (arg2, arg1)));
11204
11205     case OP_ATR_FIRST:
11206     case OP_ATR_LAST:
11207     case OP_ATR_LENGTH:
11208       {
11209         struct type *type_arg;
11210
11211         if (exp->elts[*pos].opcode == OP_TYPE)
11212           {
11213             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11214             arg1 = NULL;
11215             type_arg = check_typedef (exp->elts[pc + 2].type);
11216           }
11217         else
11218           {
11219             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11220             type_arg = NULL;
11221           }
11222
11223         if (exp->elts[*pos].opcode != OP_LONG)
11224           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11225         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11226         *pos += 4;
11227
11228         if (noside == EVAL_SKIP)
11229           goto nosideret;
11230
11231         if (type_arg == NULL)
11232           {
11233             arg1 = ada_coerce_ref (arg1);
11234
11235             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11236               arg1 = ada_coerce_to_simple_array (arg1);
11237
11238             if (op == OP_ATR_LENGTH)
11239               type = builtin_type (exp->gdbarch)->builtin_int;
11240             else
11241               {
11242                 type = ada_index_type (value_type (arg1), tem,
11243                                        ada_attribute_name (op));
11244                 if (type == NULL)
11245                   type = builtin_type (exp->gdbarch)->builtin_int;
11246               }
11247
11248             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11249               return allocate_value (type);
11250
11251             switch (op)
11252               {
11253               default:          /* Should never happen.  */
11254                 error (_("unexpected attribute encountered"));
11255               case OP_ATR_FIRST:
11256                 return value_from_longest
11257                         (type, ada_array_bound (arg1, tem, 0));
11258               case OP_ATR_LAST:
11259                 return value_from_longest
11260                         (type, ada_array_bound (arg1, tem, 1));
11261               case OP_ATR_LENGTH:
11262                 return value_from_longest
11263                         (type, ada_array_length (arg1, tem));
11264               }
11265           }
11266         else if (discrete_type_p (type_arg))
11267           {
11268             struct type *range_type;
11269             const char *name = ada_type_name (type_arg);
11270
11271             range_type = NULL;
11272             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11273               range_type = to_fixed_range_type (type_arg, NULL);
11274             if (range_type == NULL)
11275               range_type = type_arg;
11276             switch (op)
11277               {
11278               default:
11279                 error (_("unexpected attribute encountered"));
11280               case OP_ATR_FIRST:
11281                 return value_from_longest 
11282                   (range_type, ada_discrete_type_low_bound (range_type));
11283               case OP_ATR_LAST:
11284                 return value_from_longest
11285                   (range_type, ada_discrete_type_high_bound (range_type));
11286               case OP_ATR_LENGTH:
11287                 error (_("the 'length attribute applies only to array types"));
11288               }
11289           }
11290         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11291           error (_("unimplemented type attribute"));
11292         else
11293           {
11294             LONGEST low, high;
11295
11296             if (ada_is_constrained_packed_array_type (type_arg))
11297               type_arg = decode_constrained_packed_array_type (type_arg);
11298
11299             if (op == OP_ATR_LENGTH)
11300               type = builtin_type (exp->gdbarch)->builtin_int;
11301             else
11302               {
11303                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11304                 if (type == NULL)
11305                   type = builtin_type (exp->gdbarch)->builtin_int;
11306               }
11307
11308             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11309               return allocate_value (type);
11310
11311             switch (op)
11312               {
11313               default:
11314                 error (_("unexpected attribute encountered"));
11315               case OP_ATR_FIRST:
11316                 low = ada_array_bound_from_type (type_arg, tem, 0);
11317                 return value_from_longest (type, low);
11318               case OP_ATR_LAST:
11319                 high = ada_array_bound_from_type (type_arg, tem, 1);
11320                 return value_from_longest (type, high);
11321               case OP_ATR_LENGTH:
11322                 low = ada_array_bound_from_type (type_arg, tem, 0);
11323                 high = ada_array_bound_from_type (type_arg, tem, 1);
11324                 return value_from_longest (type, high - low + 1);
11325               }
11326           }
11327       }
11328
11329     case OP_ATR_TAG:
11330       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11331       if (noside == EVAL_SKIP)
11332         goto nosideret;
11333
11334       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11335         return value_zero (ada_tag_type (arg1), not_lval);
11336
11337       return ada_value_tag (arg1);
11338
11339     case OP_ATR_MIN:
11340     case OP_ATR_MAX:
11341       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11342       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11343       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11344       if (noside == EVAL_SKIP)
11345         goto nosideret;
11346       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11347         return value_zero (value_type (arg1), not_lval);
11348       else
11349         {
11350           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11351           return value_binop (arg1, arg2,
11352                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11353         }
11354
11355     case OP_ATR_MODULUS:
11356       {
11357         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11358
11359         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11360         if (noside == EVAL_SKIP)
11361           goto nosideret;
11362
11363         if (!ada_is_modular_type (type_arg))
11364           error (_("'modulus must be applied to modular type"));
11365
11366         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11367                                    ada_modulus (type_arg));
11368       }
11369
11370
11371     case OP_ATR_POS:
11372       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11373       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11374       if (noside == EVAL_SKIP)
11375         goto nosideret;
11376       type = builtin_type (exp->gdbarch)->builtin_int;
11377       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11378         return value_zero (type, not_lval);
11379       else
11380         return value_pos_atr (type, arg1);
11381
11382     case OP_ATR_SIZE:
11383       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11384       type = value_type (arg1);
11385
11386       /* If the argument is a reference, then dereference its type, since
11387          the user is really asking for the size of the actual object,
11388          not the size of the pointer.  */
11389       if (TYPE_CODE (type) == TYPE_CODE_REF)
11390         type = TYPE_TARGET_TYPE (type);
11391
11392       if (noside == EVAL_SKIP)
11393         goto nosideret;
11394       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11395         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11396       else
11397         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11398                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11399
11400     case OP_ATR_VAL:
11401       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11402       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11403       type = exp->elts[pc + 2].type;
11404       if (noside == EVAL_SKIP)
11405         goto nosideret;
11406       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11407         return value_zero (type, not_lval);
11408       else
11409         return value_val_atr (type, arg1);
11410
11411     case BINOP_EXP:
11412       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11413       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11414       if (noside == EVAL_SKIP)
11415         goto nosideret;
11416       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11417         return value_zero (value_type (arg1), not_lval);
11418       else
11419         {
11420           /* For integer exponentiation operations,
11421              only promote the first argument.  */
11422           if (is_integral_type (value_type (arg2)))
11423             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11424           else
11425             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11426
11427           return value_binop (arg1, arg2, op);
11428         }
11429
11430     case UNOP_PLUS:
11431       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11432       if (noside == EVAL_SKIP)
11433         goto nosideret;
11434       else
11435         return arg1;
11436
11437     case UNOP_ABS:
11438       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11439       if (noside == EVAL_SKIP)
11440         goto nosideret;
11441       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11442       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11443         return value_neg (arg1);
11444       else
11445         return arg1;
11446
11447     case UNOP_IND:
11448       preeval_pos = *pos;
11449       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11450       if (noside == EVAL_SKIP)
11451         goto nosideret;
11452       type = ada_check_typedef (value_type (arg1));
11453       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11454         {
11455           if (ada_is_array_descriptor_type (type))
11456             /* GDB allows dereferencing GNAT array descriptors.  */
11457             {
11458               struct type *arrType = ada_type_of_array (arg1, 0);
11459
11460               if (arrType == NULL)
11461                 error (_("Attempt to dereference null array pointer."));
11462               return value_at_lazy (arrType, 0);
11463             }
11464           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11465                    || TYPE_CODE (type) == TYPE_CODE_REF
11466                    /* In C you can dereference an array to get the 1st elt.  */
11467                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11468             {
11469             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11470                only be determined by inspecting the object's tag.
11471                This means that we need to evaluate completely the
11472                expression in order to get its type.  */
11473
11474               if ((TYPE_CODE (type) == TYPE_CODE_REF
11475                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11476                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11477                 {
11478                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11479                                           EVAL_NORMAL);
11480                   type = value_type (ada_value_ind (arg1));
11481                 }
11482               else
11483                 {
11484                   type = to_static_fixed_type
11485                     (ada_aligned_type
11486                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11487                 }
11488               ada_ensure_varsize_limit (type);
11489               return value_zero (type, lval_memory);
11490             }
11491           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11492             {
11493               /* GDB allows dereferencing an int.  */
11494               if (expect_type == NULL)
11495                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11496                                    lval_memory);
11497               else
11498                 {
11499                   expect_type = 
11500                     to_static_fixed_type (ada_aligned_type (expect_type));
11501                   return value_zero (expect_type, lval_memory);
11502                 }
11503             }
11504           else
11505             error (_("Attempt to take contents of a non-pointer value."));
11506         }
11507       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11508       type = ada_check_typedef (value_type (arg1));
11509
11510       if (TYPE_CODE (type) == TYPE_CODE_INT)
11511           /* GDB allows dereferencing an int.  If we were given
11512              the expect_type, then use that as the target type.
11513              Otherwise, assume that the target type is an int.  */
11514         {
11515           if (expect_type != NULL)
11516             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11517                                               arg1));
11518           else
11519             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11520                                   (CORE_ADDR) value_as_address (arg1));
11521         }
11522
11523       if (ada_is_array_descriptor_type (type))
11524         /* GDB allows dereferencing GNAT array descriptors.  */
11525         return ada_coerce_to_simple_array (arg1);
11526       else
11527         return ada_value_ind (arg1);
11528
11529     case STRUCTOP_STRUCT:
11530       tem = longest_to_int (exp->elts[pc + 1].longconst);
11531       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11532       preeval_pos = *pos;
11533       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11534       if (noside == EVAL_SKIP)
11535         goto nosideret;
11536       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11537         {
11538           struct type *type1 = value_type (arg1);
11539
11540           if (ada_is_tagged_type (type1, 1))
11541             {
11542               type = ada_lookup_struct_elt_type (type1,
11543                                                  &exp->elts[pc + 2].string,
11544                                                  1, 1);
11545
11546               /* If the field is not found, check if it exists in the
11547                  extension of this object's type. This means that we
11548                  need to evaluate completely the expression.  */
11549
11550               if (type == NULL)
11551                 {
11552                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11553                                           EVAL_NORMAL);
11554                   arg1 = ada_value_struct_elt (arg1,
11555                                                &exp->elts[pc + 2].string,
11556                                                0);
11557                   arg1 = unwrap_value (arg1);
11558                   type = value_type (ada_to_fixed_value (arg1));
11559                 }
11560             }
11561           else
11562             type =
11563               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11564                                           0);
11565
11566           return value_zero (ada_aligned_type (type), lval_memory);
11567         }
11568       else
11569         {
11570           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11571           arg1 = unwrap_value (arg1);
11572           return ada_to_fixed_value (arg1);
11573         }
11574
11575     case OP_TYPE:
11576       /* The value is not supposed to be used.  This is here to make it
11577          easier to accommodate expressions that contain types.  */
11578       (*pos) += 2;
11579       if (noside == EVAL_SKIP)
11580         goto nosideret;
11581       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11582         return allocate_value (exp->elts[pc + 1].type);
11583       else
11584         error (_("Attempt to use a type name as an expression"));
11585
11586     case OP_AGGREGATE:
11587     case OP_CHOICES:
11588     case OP_OTHERS:
11589     case OP_DISCRETE_RANGE:
11590     case OP_POSITIONAL:
11591     case OP_NAME:
11592       if (noside == EVAL_NORMAL)
11593         switch (op) 
11594           {
11595           case OP_NAME:
11596             error (_("Undefined name, ambiguous name, or renaming used in "
11597                      "component association: %s."), &exp->elts[pc+2].string);
11598           case OP_AGGREGATE:
11599             error (_("Aggregates only allowed on the right of an assignment"));
11600           default:
11601             internal_error (__FILE__, __LINE__,
11602                             _("aggregate apparently mangled"));
11603           }
11604
11605       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11606       *pos += oplen - 1;
11607       for (tem = 0; tem < nargs; tem += 1) 
11608         ada_evaluate_subexp (NULL, exp, pos, noside);
11609       goto nosideret;
11610     }
11611
11612 nosideret:
11613   return eval_skip_value (exp);
11614 }
11615 \f
11616
11617                                 /* Fixed point */
11618
11619 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11620    type name that encodes the 'small and 'delta information.
11621    Otherwise, return NULL.  */
11622
11623 static const char *
11624 fixed_type_info (struct type *type)
11625 {
11626   const char *name = ada_type_name (type);
11627   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11628
11629   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11630     {
11631       const char *tail = strstr (name, "___XF_");
11632
11633       if (tail == NULL)
11634         return NULL;
11635       else
11636         return tail + 5;
11637     }
11638   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11639     return fixed_type_info (TYPE_TARGET_TYPE (type));
11640   else
11641     return NULL;
11642 }
11643
11644 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11645
11646 int
11647 ada_is_fixed_point_type (struct type *type)
11648 {
11649   return fixed_type_info (type) != NULL;
11650 }
11651
11652 /* Return non-zero iff TYPE represents a System.Address type.  */
11653
11654 int
11655 ada_is_system_address_type (struct type *type)
11656 {
11657   return (TYPE_NAME (type)
11658           && strcmp (TYPE_NAME (type), "system__address") == 0);
11659 }
11660
11661 /* Assuming that TYPE is the representation of an Ada fixed-point
11662    type, return the target floating-point type to be used to represent
11663    of this type during internal computation.  */
11664
11665 static struct type *
11666 ada_scaling_type (struct type *type)
11667 {
11668   return builtin_type (get_type_arch (type))->builtin_long_double;
11669 }
11670
11671 /* Assuming that TYPE is the representation of an Ada fixed-point
11672    type, return its delta, or NULL if the type is malformed and the
11673    delta cannot be determined.  */
11674
11675 struct value *
11676 ada_delta (struct type *type)
11677 {
11678   const char *encoding = fixed_type_info (type);
11679   struct type *scale_type = ada_scaling_type (type);
11680
11681   long long num, den;
11682
11683   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11684     return nullptr;
11685   else
11686     return value_binop (value_from_longest (scale_type, num),
11687                         value_from_longest (scale_type, den), BINOP_DIV);
11688 }
11689
11690 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11691    factor ('SMALL value) associated with the type.  */
11692
11693 struct value *
11694 ada_scaling_factor (struct type *type)
11695 {
11696   const char *encoding = fixed_type_info (type);
11697   struct type *scale_type = ada_scaling_type (type);
11698
11699   long long num0, den0, num1, den1;
11700   int n;
11701
11702   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11703               &num0, &den0, &num1, &den1);
11704
11705   if (n < 2)
11706     return value_from_longest (scale_type, 1);
11707   else if (n == 4)
11708     return value_binop (value_from_longest (scale_type, num1),
11709                         value_from_longest (scale_type, den1), BINOP_DIV);
11710   else
11711     return value_binop (value_from_longest (scale_type, num0),
11712                         value_from_longest (scale_type, den0), BINOP_DIV);
11713 }
11714
11715 \f
11716
11717                                 /* Range types */
11718
11719 /* Scan STR beginning at position K for a discriminant name, and
11720    return the value of that discriminant field of DVAL in *PX.  If
11721    PNEW_K is not null, put the position of the character beyond the
11722    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11723    not alter *PX and *PNEW_K if unsuccessful.  */
11724
11725 static int
11726 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11727                     int *pnew_k)
11728 {
11729   static char *bound_buffer = NULL;
11730   static size_t bound_buffer_len = 0;
11731   const char *pstart, *pend, *bound;
11732   struct value *bound_val;
11733
11734   if (dval == NULL || str == NULL || str[k] == '\0')
11735     return 0;
11736
11737   pstart = str + k;
11738   pend = strstr (pstart, "__");
11739   if (pend == NULL)
11740     {
11741       bound = pstart;
11742       k += strlen (bound);
11743     }
11744   else
11745     {
11746       int len = pend - pstart;
11747
11748       /* Strip __ and beyond.  */
11749       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11750       strncpy (bound_buffer, pstart, len);
11751       bound_buffer[len] = '\0';
11752
11753       bound = bound_buffer;
11754       k = pend - str;
11755     }
11756
11757   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11758   if (bound_val == NULL)
11759     return 0;
11760
11761   *px = value_as_long (bound_val);
11762   if (pnew_k != NULL)
11763     *pnew_k = k;
11764   return 1;
11765 }
11766
11767 /* Value of variable named NAME in the current environment.  If
11768    no such variable found, then if ERR_MSG is null, returns 0, and
11769    otherwise causes an error with message ERR_MSG.  */
11770
11771 static struct value *
11772 get_var_value (const char *name, const char *err_msg)
11773 {
11774   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11775
11776   std::vector<struct block_symbol> syms;
11777   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11778                                              get_selected_block (0),
11779                                              VAR_DOMAIN, &syms, 1);
11780
11781   if (nsyms != 1)
11782     {
11783       if (err_msg == NULL)
11784         return 0;
11785       else
11786         error (("%s"), err_msg);
11787     }
11788
11789   return value_of_variable (syms[0].symbol, syms[0].block);
11790 }
11791
11792 /* Value of integer variable named NAME in the current environment.
11793    If no such variable is found, returns false.  Otherwise, sets VALUE
11794    to the variable's value and returns true.  */
11795
11796 bool
11797 get_int_var_value (const char *name, LONGEST &value)
11798 {
11799   struct value *var_val = get_var_value (name, 0);
11800
11801   if (var_val == 0)
11802     return false;
11803
11804   value = value_as_long (var_val);
11805   return true;
11806 }
11807
11808
11809 /* Return a range type whose base type is that of the range type named
11810    NAME in the current environment, and whose bounds are calculated
11811    from NAME according to the GNAT range encoding conventions.
11812    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11813    corresponding range type from debug information; fall back to using it
11814    if symbol lookup fails.  If a new type must be created, allocate it
11815    like ORIG_TYPE was.  The bounds information, in general, is encoded
11816    in NAME, the base type given in the named range type.  */
11817
11818 static struct type *
11819 to_fixed_range_type (struct type *raw_type, struct value *dval)
11820 {
11821   const char *name;
11822   struct type *base_type;
11823   const char *subtype_info;
11824
11825   gdb_assert (raw_type != NULL);
11826   gdb_assert (TYPE_NAME (raw_type) != NULL);
11827
11828   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11829     base_type = TYPE_TARGET_TYPE (raw_type);
11830   else
11831     base_type = raw_type;
11832
11833   name = TYPE_NAME (raw_type);
11834   subtype_info = strstr (name, "___XD");
11835   if (subtype_info == NULL)
11836     {
11837       LONGEST L = ada_discrete_type_low_bound (raw_type);
11838       LONGEST U = ada_discrete_type_high_bound (raw_type);
11839
11840       if (L < INT_MIN || U > INT_MAX)
11841         return raw_type;
11842       else
11843         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11844                                          L, U);
11845     }
11846   else
11847     {
11848       static char *name_buf = NULL;
11849       static size_t name_len = 0;
11850       int prefix_len = subtype_info - name;
11851       LONGEST L, U;
11852       struct type *type;
11853       const char *bounds_str;
11854       int n;
11855
11856       GROW_VECT (name_buf, name_len, prefix_len + 5);
11857       strncpy (name_buf, name, prefix_len);
11858       name_buf[prefix_len] = '\0';
11859
11860       subtype_info += 5;
11861       bounds_str = strchr (subtype_info, '_');
11862       n = 1;
11863
11864       if (*subtype_info == 'L')
11865         {
11866           if (!ada_scan_number (bounds_str, n, &L, &n)
11867               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11868             return raw_type;
11869           if (bounds_str[n] == '_')
11870             n += 2;
11871           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11872             n += 1;
11873           subtype_info += 1;
11874         }
11875       else
11876         {
11877           strcpy (name_buf + prefix_len, "___L");
11878           if (!get_int_var_value (name_buf, L))
11879             {
11880               lim_warning (_("Unknown lower bound, using 1."));
11881               L = 1;
11882             }
11883         }
11884
11885       if (*subtype_info == 'U')
11886         {
11887           if (!ada_scan_number (bounds_str, n, &U, &n)
11888               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11889             return raw_type;
11890         }
11891       else
11892         {
11893           strcpy (name_buf + prefix_len, "___U");
11894           if (!get_int_var_value (name_buf, U))
11895             {
11896               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11897               U = L;
11898             }
11899         }
11900
11901       type = create_static_range_type (alloc_type_copy (raw_type),
11902                                        base_type, L, U);
11903       /* create_static_range_type alters the resulting type's length
11904          to match the size of the base_type, which is not what we want.
11905          Set it back to the original range type's length.  */
11906       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11907       TYPE_NAME (type) = name;
11908       return type;
11909     }
11910 }
11911
11912 /* True iff NAME is the name of a range type.  */
11913
11914 int
11915 ada_is_range_type_name (const char *name)
11916 {
11917   return (name != NULL && strstr (name, "___XD"));
11918 }
11919 \f
11920
11921                                 /* Modular types */
11922
11923 /* True iff TYPE is an Ada modular type.  */
11924
11925 int
11926 ada_is_modular_type (struct type *type)
11927 {
11928   struct type *subranged_type = get_base_type (type);
11929
11930   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11931           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11932           && TYPE_UNSIGNED (subranged_type));
11933 }
11934
11935 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11936
11937 ULONGEST
11938 ada_modulus (struct type *type)
11939 {
11940   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11941 }
11942 \f
11943
11944 /* Ada exception catchpoint support:
11945    ---------------------------------
11946
11947    We support 3 kinds of exception catchpoints:
11948      . catchpoints on Ada exceptions
11949      . catchpoints on unhandled Ada exceptions
11950      . catchpoints on failed assertions
11951
11952    Exceptions raised during failed assertions, or unhandled exceptions
11953    could perfectly be caught with the general catchpoint on Ada exceptions.
11954    However, we can easily differentiate these two special cases, and having
11955    the option to distinguish these two cases from the rest can be useful
11956    to zero-in on certain situations.
11957
11958    Exception catchpoints are a specialized form of breakpoint,
11959    since they rely on inserting breakpoints inside known routines
11960    of the GNAT runtime.  The implementation therefore uses a standard
11961    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11962    of breakpoint_ops.
11963
11964    Support in the runtime for exception catchpoints have been changed
11965    a few times already, and these changes affect the implementation
11966    of these catchpoints.  In order to be able to support several
11967    variants of the runtime, we use a sniffer that will determine
11968    the runtime variant used by the program being debugged.  */
11969
11970 /* Ada's standard exceptions.
11971
11972    The Ada 83 standard also defined Numeric_Error.  But there so many
11973    situations where it was unclear from the Ada 83 Reference Manual
11974    (RM) whether Constraint_Error or Numeric_Error should be raised,
11975    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11976    Interpretation saying that anytime the RM says that Numeric_Error
11977    should be raised, the implementation may raise Constraint_Error.
11978    Ada 95 went one step further and pretty much removed Numeric_Error
11979    from the list of standard exceptions (it made it a renaming of
11980    Constraint_Error, to help preserve compatibility when compiling
11981    an Ada83 compiler). As such, we do not include Numeric_Error from
11982    this list of standard exceptions.  */
11983
11984 static const char *standard_exc[] = {
11985   "constraint_error",
11986   "program_error",
11987   "storage_error",
11988   "tasking_error"
11989 };
11990
11991 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11992
11993 /* A structure that describes how to support exception catchpoints
11994    for a given executable.  */
11995
11996 struct exception_support_info
11997 {
11998    /* The name of the symbol to break on in order to insert
11999       a catchpoint on exceptions.  */
12000    const char *catch_exception_sym;
12001
12002    /* The name of the symbol to break on in order to insert
12003       a catchpoint on unhandled exceptions.  */
12004    const char *catch_exception_unhandled_sym;
12005
12006    /* The name of the symbol to break on in order to insert
12007       a catchpoint on failed assertions.  */
12008    const char *catch_assert_sym;
12009
12010    /* The name of the symbol to break on in order to insert
12011       a catchpoint on exception handling.  */
12012    const char *catch_handlers_sym;
12013
12014    /* Assuming that the inferior just triggered an unhandled exception
12015       catchpoint, this function is responsible for returning the address
12016       in inferior memory where the name of that exception is stored.
12017       Return zero if the address could not be computed.  */
12018    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12019 };
12020
12021 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12022 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12023
12024 /* The following exception support info structure describes how to
12025    implement exception catchpoints with the latest version of the
12026    Ada runtime (as of 2007-03-06).  */
12027
12028 static const struct exception_support_info default_exception_support_info =
12029 {
12030   "__gnat_debug_raise_exception", /* catch_exception_sym */
12031   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12032   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12033   "__gnat_begin_handler", /* catch_handlers_sym */
12034   ada_unhandled_exception_name_addr
12035 };
12036
12037 /* The following exception support info structure describes how to
12038    implement exception catchpoints with a slightly older version
12039    of the Ada runtime.  */
12040
12041 static const struct exception_support_info exception_support_info_fallback =
12042 {
12043   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12044   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12045   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12046   "__gnat_begin_handler", /* catch_handlers_sym */
12047   ada_unhandled_exception_name_addr_from_raise
12048 };
12049
12050 /* Return nonzero if we can detect the exception support routines
12051    described in EINFO.
12052
12053    This function errors out if an abnormal situation is detected
12054    (for instance, if we find the exception support routines, but
12055    that support is found to be incomplete).  */
12056
12057 static int
12058 ada_has_this_exception_support (const struct exception_support_info *einfo)
12059 {
12060   struct symbol *sym;
12061
12062   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12063      that should be compiled with debugging information.  As a result, we
12064      expect to find that symbol in the symtabs.  */
12065
12066   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12067   if (sym == NULL)
12068     {
12069       /* Perhaps we did not find our symbol because the Ada runtime was
12070          compiled without debugging info, or simply stripped of it.
12071          It happens on some GNU/Linux distributions for instance, where
12072          users have to install a separate debug package in order to get
12073          the runtime's debugging info.  In that situation, let the user
12074          know why we cannot insert an Ada exception catchpoint.
12075
12076          Note: Just for the purpose of inserting our Ada exception
12077          catchpoint, we could rely purely on the associated minimal symbol.
12078          But we would be operating in degraded mode anyway, since we are
12079          still lacking the debugging info needed later on to extract
12080          the name of the exception being raised (this name is printed in
12081          the catchpoint message, and is also used when trying to catch
12082          a specific exception).  We do not handle this case for now.  */
12083       struct bound_minimal_symbol msym
12084         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12085
12086       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12087         error (_("Your Ada runtime appears to be missing some debugging "
12088                  "information.\nCannot insert Ada exception catchpoint "
12089                  "in this configuration."));
12090
12091       return 0;
12092     }
12093
12094   /* Make sure that the symbol we found corresponds to a function.  */
12095
12096   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12097     error (_("Symbol \"%s\" is not a function (class = %d)"),
12098            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12099
12100   return 1;
12101 }
12102
12103 /* Inspect the Ada runtime and determine which exception info structure
12104    should be used to provide support for exception catchpoints.
12105
12106    This function will always set the per-inferior exception_info,
12107    or raise an error.  */
12108
12109 static void
12110 ada_exception_support_info_sniffer (void)
12111 {
12112   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12113
12114   /* If the exception info is already known, then no need to recompute it.  */
12115   if (data->exception_info != NULL)
12116     return;
12117
12118   /* Check the latest (default) exception support info.  */
12119   if (ada_has_this_exception_support (&default_exception_support_info))
12120     {
12121       data->exception_info = &default_exception_support_info;
12122       return;
12123     }
12124
12125   /* Try our fallback exception suport info.  */
12126   if (ada_has_this_exception_support (&exception_support_info_fallback))
12127     {
12128       data->exception_info = &exception_support_info_fallback;
12129       return;
12130     }
12131
12132   /* Sometimes, it is normal for us to not be able to find the routine
12133      we are looking for.  This happens when the program is linked with
12134      the shared version of the GNAT runtime, and the program has not been
12135      started yet.  Inform the user of these two possible causes if
12136      applicable.  */
12137
12138   if (ada_update_initial_language (language_unknown) != language_ada)
12139     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12140
12141   /* If the symbol does not exist, then check that the program is
12142      already started, to make sure that shared libraries have been
12143      loaded.  If it is not started, this may mean that the symbol is
12144      in a shared library.  */
12145
12146   if (inferior_ptid.pid () == 0)
12147     error (_("Unable to insert catchpoint. Try to start the program first."));
12148
12149   /* At this point, we know that we are debugging an Ada program and
12150      that the inferior has been started, but we still are not able to
12151      find the run-time symbols.  That can mean that we are in
12152      configurable run time mode, or that a-except as been optimized
12153      out by the linker...  In any case, at this point it is not worth
12154      supporting this feature.  */
12155
12156   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12157 }
12158
12159 /* True iff FRAME is very likely to be that of a function that is
12160    part of the runtime system.  This is all very heuristic, but is
12161    intended to be used as advice as to what frames are uninteresting
12162    to most users.  */
12163
12164 static int
12165 is_known_support_routine (struct frame_info *frame)
12166 {
12167   enum language func_lang;
12168   int i;
12169   const char *fullname;
12170
12171   /* If this code does not have any debugging information (no symtab),
12172      This cannot be any user code.  */
12173
12174   symtab_and_line sal = find_frame_sal (frame);
12175   if (sal.symtab == NULL)
12176     return 1;
12177
12178   /* If there is a symtab, but the associated source file cannot be
12179      located, then assume this is not user code:  Selecting a frame
12180      for which we cannot display the code would not be very helpful
12181      for the user.  This should also take care of case such as VxWorks
12182      where the kernel has some debugging info provided for a few units.  */
12183
12184   fullname = symtab_to_fullname (sal.symtab);
12185   if (access (fullname, R_OK) != 0)
12186     return 1;
12187
12188   /* Check the unit filename againt the Ada runtime file naming.
12189      We also check the name of the objfile against the name of some
12190      known system libraries that sometimes come with debugging info
12191      too.  */
12192
12193   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12194     {
12195       re_comp (known_runtime_file_name_patterns[i]);
12196       if (re_exec (lbasename (sal.symtab->filename)))
12197         return 1;
12198       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12199           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12200         return 1;
12201     }
12202
12203   /* Check whether the function is a GNAT-generated entity.  */
12204
12205   gdb::unique_xmalloc_ptr<char> func_name
12206     = find_frame_funname (frame, &func_lang, NULL);
12207   if (func_name == NULL)
12208     return 1;
12209
12210   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12211     {
12212       re_comp (known_auxiliary_function_name_patterns[i]);
12213       if (re_exec (func_name.get ()))
12214         return 1;
12215     }
12216
12217   return 0;
12218 }
12219
12220 /* Find the first frame that contains debugging information and that is not
12221    part of the Ada run-time, starting from FI and moving upward.  */
12222
12223 void
12224 ada_find_printable_frame (struct frame_info *fi)
12225 {
12226   for (; fi != NULL; fi = get_prev_frame (fi))
12227     {
12228       if (!is_known_support_routine (fi))
12229         {
12230           select_frame (fi);
12231           break;
12232         }
12233     }
12234
12235 }
12236
12237 /* Assuming that the inferior just triggered an unhandled exception
12238    catchpoint, return the address in inferior memory where the name
12239    of the exception is stored.
12240    
12241    Return zero if the address could not be computed.  */
12242
12243 static CORE_ADDR
12244 ada_unhandled_exception_name_addr (void)
12245 {
12246   return parse_and_eval_address ("e.full_name");
12247 }
12248
12249 /* Same as ada_unhandled_exception_name_addr, except that this function
12250    should be used when the inferior uses an older version of the runtime,
12251    where the exception name needs to be extracted from a specific frame
12252    several frames up in the callstack.  */
12253
12254 static CORE_ADDR
12255 ada_unhandled_exception_name_addr_from_raise (void)
12256 {
12257   int frame_level;
12258   struct frame_info *fi;
12259   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12260
12261   /* To determine the name of this exception, we need to select
12262      the frame corresponding to RAISE_SYM_NAME.  This frame is
12263      at least 3 levels up, so we simply skip the first 3 frames
12264      without checking the name of their associated function.  */
12265   fi = get_current_frame ();
12266   for (frame_level = 0; frame_level < 3; frame_level += 1)
12267     if (fi != NULL)
12268       fi = get_prev_frame (fi); 
12269
12270   while (fi != NULL)
12271     {
12272       enum language func_lang;
12273
12274       gdb::unique_xmalloc_ptr<char> func_name
12275         = find_frame_funname (fi, &func_lang, NULL);
12276       if (func_name != NULL)
12277         {
12278           if (strcmp (func_name.get (),
12279                       data->exception_info->catch_exception_sym) == 0)
12280             break; /* We found the frame we were looking for...  */
12281         }
12282       fi = get_prev_frame (fi);
12283     }
12284
12285   if (fi == NULL)
12286     return 0;
12287
12288   select_frame (fi);
12289   return parse_and_eval_address ("id.full_name");
12290 }
12291
12292 /* Assuming the inferior just triggered an Ada exception catchpoint
12293    (of any type), return the address in inferior memory where the name
12294    of the exception is stored, if applicable.
12295
12296    Assumes the selected frame is the current frame.
12297
12298    Return zero if the address could not be computed, or if not relevant.  */
12299
12300 static CORE_ADDR
12301 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12302                            struct breakpoint *b)
12303 {
12304   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12305
12306   switch (ex)
12307     {
12308       case ada_catch_exception:
12309         return (parse_and_eval_address ("e.full_name"));
12310         break;
12311
12312       case ada_catch_exception_unhandled:
12313         return data->exception_info->unhandled_exception_name_addr ();
12314         break;
12315
12316       case ada_catch_handlers:
12317         return 0;  /* The runtimes does not provide access to the exception
12318                       name.  */
12319         break;
12320
12321       case ada_catch_assert:
12322         return 0;  /* Exception name is not relevant in this case.  */
12323         break;
12324
12325       default:
12326         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12327         break;
12328     }
12329
12330   return 0; /* Should never be reached.  */
12331 }
12332
12333 /* Assuming the inferior is stopped at an exception catchpoint,
12334    return the message which was associated to the exception, if
12335    available.  Return NULL if the message could not be retrieved.
12336
12337    Note: The exception message can be associated to an exception
12338    either through the use of the Raise_Exception function, or
12339    more simply (Ada 2005 and later), via:
12340
12341        raise Exception_Name with "exception message";
12342
12343    */
12344
12345 static gdb::unique_xmalloc_ptr<char>
12346 ada_exception_message_1 (void)
12347 {
12348   struct value *e_msg_val;
12349   int e_msg_len;
12350
12351   /* For runtimes that support this feature, the exception message
12352      is passed as an unbounded string argument called "message".  */
12353   e_msg_val = parse_and_eval ("message");
12354   if (e_msg_val == NULL)
12355     return NULL; /* Exception message not supported.  */
12356
12357   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12358   gdb_assert (e_msg_val != NULL);
12359   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12360
12361   /* If the message string is empty, then treat it as if there was
12362      no exception message.  */
12363   if (e_msg_len <= 0)
12364     return NULL;
12365
12366   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12367   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12368   e_msg.get ()[e_msg_len] = '\0';
12369
12370   return e_msg;
12371 }
12372
12373 /* Same as ada_exception_message_1, except that all exceptions are
12374    contained here (returning NULL instead).  */
12375
12376 static gdb::unique_xmalloc_ptr<char>
12377 ada_exception_message (void)
12378 {
12379   gdb::unique_xmalloc_ptr<char> e_msg;
12380
12381   TRY
12382     {
12383       e_msg = ada_exception_message_1 ();
12384     }
12385   CATCH (e, RETURN_MASK_ERROR)
12386     {
12387       e_msg.reset (nullptr);
12388     }
12389   END_CATCH
12390
12391   return e_msg;
12392 }
12393
12394 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12395    any error that ada_exception_name_addr_1 might cause to be thrown.
12396    When an error is intercepted, a warning with the error message is printed,
12397    and zero is returned.  */
12398
12399 static CORE_ADDR
12400 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12401                          struct breakpoint *b)
12402 {
12403   CORE_ADDR result = 0;
12404
12405   TRY
12406     {
12407       result = ada_exception_name_addr_1 (ex, b);
12408     }
12409
12410   CATCH (e, RETURN_MASK_ERROR)
12411     {
12412       warning (_("failed to get exception name: %s"), e.message);
12413       return 0;
12414     }
12415   END_CATCH
12416
12417   return result;
12418 }
12419
12420 static std::string ada_exception_catchpoint_cond_string
12421   (const char *excep_string,
12422    enum ada_exception_catchpoint_kind ex);
12423
12424 /* Ada catchpoints.
12425
12426    In the case of catchpoints on Ada exceptions, the catchpoint will
12427    stop the target on every exception the program throws.  When a user
12428    specifies the name of a specific exception, we translate this
12429    request into a condition expression (in text form), and then parse
12430    it into an expression stored in each of the catchpoint's locations.
12431    We then use this condition to check whether the exception that was
12432    raised is the one the user is interested in.  If not, then the
12433    target is resumed again.  We store the name of the requested
12434    exception, in order to be able to re-set the condition expression
12435    when symbols change.  */
12436
12437 /* An instance of this type is used to represent an Ada catchpoint
12438    breakpoint location.  */
12439
12440 class ada_catchpoint_location : public bp_location
12441 {
12442 public:
12443   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12444     : bp_location (ops, owner)
12445   {}
12446
12447   /* The condition that checks whether the exception that was raised
12448      is the specific exception the user specified on catchpoint
12449      creation.  */
12450   expression_up excep_cond_expr;
12451 };
12452
12453 /* Implement the DTOR method in the bp_location_ops structure for all
12454    Ada exception catchpoint kinds.  */
12455
12456 static void
12457 ada_catchpoint_location_dtor (struct bp_location *bl)
12458 {
12459   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12460
12461   al->excep_cond_expr.reset ();
12462 }
12463
12464 /* The vtable to be used in Ada catchpoint locations.  */
12465
12466 static const struct bp_location_ops ada_catchpoint_location_ops =
12467 {
12468   ada_catchpoint_location_dtor
12469 };
12470
12471 /* An instance of this type is used to represent an Ada catchpoint.  */
12472
12473 struct ada_catchpoint : public breakpoint
12474 {
12475   /* The name of the specific exception the user specified.  */
12476   std::string excep_string;
12477 };
12478
12479 /* Parse the exception condition string in the context of each of the
12480    catchpoint's locations, and store them for later evaluation.  */
12481
12482 static void
12483 create_excep_cond_exprs (struct ada_catchpoint *c,
12484                          enum ada_exception_catchpoint_kind ex)
12485 {
12486   struct bp_location *bl;
12487
12488   /* Nothing to do if there's no specific exception to catch.  */
12489   if (c->excep_string.empty ())
12490     return;
12491
12492   /* Same if there are no locations... */
12493   if (c->loc == NULL)
12494     return;
12495
12496   /* Compute the condition expression in text form, from the specific
12497      expection we want to catch.  */
12498   std::string cond_string
12499     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12500
12501   /* Iterate over all the catchpoint's locations, and parse an
12502      expression for each.  */
12503   for (bl = c->loc; bl != NULL; bl = bl->next)
12504     {
12505       struct ada_catchpoint_location *ada_loc
12506         = (struct ada_catchpoint_location *) bl;
12507       expression_up exp;
12508
12509       if (!bl->shlib_disabled)
12510         {
12511           const char *s;
12512
12513           s = cond_string.c_str ();
12514           TRY
12515             {
12516               exp = parse_exp_1 (&s, bl->address,
12517                                  block_for_pc (bl->address),
12518                                  0);
12519             }
12520           CATCH (e, RETURN_MASK_ERROR)
12521             {
12522               warning (_("failed to reevaluate internal exception condition "
12523                          "for catchpoint %d: %s"),
12524                        c->number, e.message);
12525             }
12526           END_CATCH
12527         }
12528
12529       ada_loc->excep_cond_expr = std::move (exp);
12530     }
12531 }
12532
12533 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12534    structure for all exception catchpoint kinds.  */
12535
12536 static struct bp_location *
12537 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12538                              struct breakpoint *self)
12539 {
12540   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12541 }
12542
12543 /* Implement the RE_SET method in the breakpoint_ops structure for all
12544    exception catchpoint kinds.  */
12545
12546 static void
12547 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12548 {
12549   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12550
12551   /* Call the base class's method.  This updates the catchpoint's
12552      locations.  */
12553   bkpt_breakpoint_ops.re_set (b);
12554
12555   /* Reparse the exception conditional expressions.  One for each
12556      location.  */
12557   create_excep_cond_exprs (c, ex);
12558 }
12559
12560 /* Returns true if we should stop for this breakpoint hit.  If the
12561    user specified a specific exception, we only want to cause a stop
12562    if the program thrown that exception.  */
12563
12564 static int
12565 should_stop_exception (const struct bp_location *bl)
12566 {
12567   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12568   const struct ada_catchpoint_location *ada_loc
12569     = (const struct ada_catchpoint_location *) bl;
12570   int stop;
12571
12572   /* With no specific exception, should always stop.  */
12573   if (c->excep_string.empty ())
12574     return 1;
12575
12576   if (ada_loc->excep_cond_expr == NULL)
12577     {
12578       /* We will have a NULL expression if back when we were creating
12579          the expressions, this location's had failed to parse.  */
12580       return 1;
12581     }
12582
12583   stop = 1;
12584   TRY
12585     {
12586       struct value *mark;
12587
12588       mark = value_mark ();
12589       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12590       value_free_to_mark (mark);
12591     }
12592   CATCH (ex, RETURN_MASK_ALL)
12593     {
12594       exception_fprintf (gdb_stderr, ex,
12595                          _("Error in testing exception condition:\n"));
12596     }
12597   END_CATCH
12598
12599   return stop;
12600 }
12601
12602 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12603    for all exception catchpoint kinds.  */
12604
12605 static void
12606 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12607 {
12608   bs->stop = should_stop_exception (bs->bp_location_at);
12609 }
12610
12611 /* Implement the PRINT_IT method in the breakpoint_ops structure
12612    for all exception catchpoint kinds.  */
12613
12614 static enum print_stop_action
12615 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12616 {
12617   struct ui_out *uiout = current_uiout;
12618   struct breakpoint *b = bs->breakpoint_at;
12619
12620   annotate_catchpoint (b->number);
12621
12622   if (uiout->is_mi_like_p ())
12623     {
12624       uiout->field_string ("reason",
12625                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12626       uiout->field_string ("disp", bpdisp_text (b->disposition));
12627     }
12628
12629   uiout->text (b->disposition == disp_del
12630                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12631   uiout->field_int ("bkptno", b->number);
12632   uiout->text (", ");
12633
12634   /* ada_exception_name_addr relies on the selected frame being the
12635      current frame.  Need to do this here because this function may be
12636      called more than once when printing a stop, and below, we'll
12637      select the first frame past the Ada run-time (see
12638      ada_find_printable_frame).  */
12639   select_frame (get_current_frame ());
12640
12641   switch (ex)
12642     {
12643       case ada_catch_exception:
12644       case ada_catch_exception_unhandled:
12645       case ada_catch_handlers:
12646         {
12647           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12648           char exception_name[256];
12649
12650           if (addr != 0)
12651             {
12652               read_memory (addr, (gdb_byte *) exception_name,
12653                            sizeof (exception_name) - 1);
12654               exception_name [sizeof (exception_name) - 1] = '\0';
12655             }
12656           else
12657             {
12658               /* For some reason, we were unable to read the exception
12659                  name.  This could happen if the Runtime was compiled
12660                  without debugging info, for instance.  In that case,
12661                  just replace the exception name by the generic string
12662                  "exception" - it will read as "an exception" in the
12663                  notification we are about to print.  */
12664               memcpy (exception_name, "exception", sizeof ("exception"));
12665             }
12666           /* In the case of unhandled exception breakpoints, we print
12667              the exception name as "unhandled EXCEPTION_NAME", to make
12668              it clearer to the user which kind of catchpoint just got
12669              hit.  We used ui_out_text to make sure that this extra
12670              info does not pollute the exception name in the MI case.  */
12671           if (ex == ada_catch_exception_unhandled)
12672             uiout->text ("unhandled ");
12673           uiout->field_string ("exception-name", exception_name);
12674         }
12675         break;
12676       case ada_catch_assert:
12677         /* In this case, the name of the exception is not really
12678            important.  Just print "failed assertion" to make it clearer
12679            that his program just hit an assertion-failure catchpoint.
12680            We used ui_out_text because this info does not belong in
12681            the MI output.  */
12682         uiout->text ("failed assertion");
12683         break;
12684     }
12685
12686   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12687   if (exception_message != NULL)
12688     {
12689       uiout->text (" (");
12690       uiout->field_string ("exception-message", exception_message.get ());
12691       uiout->text (")");
12692     }
12693
12694   uiout->text (" at ");
12695   ada_find_printable_frame (get_current_frame ());
12696
12697   return PRINT_SRC_AND_LOC;
12698 }
12699
12700 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12701    for all exception catchpoint kinds.  */
12702
12703 static void
12704 print_one_exception (enum ada_exception_catchpoint_kind ex,
12705                      struct breakpoint *b, struct bp_location **last_loc)
12706
12707   struct ui_out *uiout = current_uiout;
12708   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12709   struct value_print_options opts;
12710
12711   get_user_print_options (&opts);
12712   if (opts.addressprint)
12713     {
12714       annotate_field (4);
12715       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12716     }
12717
12718   annotate_field (5);
12719   *last_loc = b->loc;
12720   switch (ex)
12721     {
12722       case ada_catch_exception:
12723         if (!c->excep_string.empty ())
12724           {
12725             std::string msg = string_printf (_("`%s' Ada exception"),
12726                                              c->excep_string.c_str ());
12727
12728             uiout->field_string ("what", msg);
12729           }
12730         else
12731           uiout->field_string ("what", "all Ada exceptions");
12732         
12733         break;
12734
12735       case ada_catch_exception_unhandled:
12736         uiout->field_string ("what", "unhandled Ada exceptions");
12737         break;
12738       
12739       case ada_catch_handlers:
12740         if (!c->excep_string.empty ())
12741           {
12742             uiout->field_fmt ("what",
12743                               _("`%s' Ada exception handlers"),
12744                               c->excep_string.c_str ());
12745           }
12746         else
12747           uiout->field_string ("what", "all Ada exceptions handlers");
12748         break;
12749
12750       case ada_catch_assert:
12751         uiout->field_string ("what", "failed Ada assertions");
12752         break;
12753
12754       default:
12755         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12756         break;
12757     }
12758 }
12759
12760 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12761    for all exception catchpoint kinds.  */
12762
12763 static void
12764 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12765                          struct breakpoint *b)
12766 {
12767   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12768   struct ui_out *uiout = current_uiout;
12769
12770   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12771                                                  : _("Catchpoint "));
12772   uiout->field_int ("bkptno", b->number);
12773   uiout->text (": ");
12774
12775   switch (ex)
12776     {
12777       case ada_catch_exception:
12778         if (!c->excep_string.empty ())
12779           {
12780             std::string info = string_printf (_("`%s' Ada exception"),
12781                                               c->excep_string.c_str ());
12782             uiout->text (info.c_str ());
12783           }
12784         else
12785           uiout->text (_("all Ada exceptions"));
12786         break;
12787
12788       case ada_catch_exception_unhandled:
12789         uiout->text (_("unhandled Ada exceptions"));
12790         break;
12791
12792       case ada_catch_handlers:
12793         if (!c->excep_string.empty ())
12794           {
12795             std::string info
12796               = string_printf (_("`%s' Ada exception handlers"),
12797                                c->excep_string.c_str ());
12798             uiout->text (info.c_str ());
12799           }
12800         else
12801           uiout->text (_("all Ada exceptions handlers"));
12802         break;
12803
12804       case ada_catch_assert:
12805         uiout->text (_("failed Ada assertions"));
12806         break;
12807
12808       default:
12809         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12810         break;
12811     }
12812 }
12813
12814 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12815    for all exception catchpoint kinds.  */
12816
12817 static void
12818 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12819                           struct breakpoint *b, struct ui_file *fp)
12820 {
12821   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12822
12823   switch (ex)
12824     {
12825       case ada_catch_exception:
12826         fprintf_filtered (fp, "catch exception");
12827         if (!c->excep_string.empty ())
12828           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12829         break;
12830
12831       case ada_catch_exception_unhandled:
12832         fprintf_filtered (fp, "catch exception unhandled");
12833         break;
12834
12835       case ada_catch_handlers:
12836         fprintf_filtered (fp, "catch handlers");
12837         break;
12838
12839       case ada_catch_assert:
12840         fprintf_filtered (fp, "catch assert");
12841         break;
12842
12843       default:
12844         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12845     }
12846   print_recreate_thread (b, fp);
12847 }
12848
12849 /* Virtual table for "catch exception" breakpoints.  */
12850
12851 static struct bp_location *
12852 allocate_location_catch_exception (struct breakpoint *self)
12853 {
12854   return allocate_location_exception (ada_catch_exception, self);
12855 }
12856
12857 static void
12858 re_set_catch_exception (struct breakpoint *b)
12859 {
12860   re_set_exception (ada_catch_exception, b);
12861 }
12862
12863 static void
12864 check_status_catch_exception (bpstat bs)
12865 {
12866   check_status_exception (ada_catch_exception, bs);
12867 }
12868
12869 static enum print_stop_action
12870 print_it_catch_exception (bpstat bs)
12871 {
12872   return print_it_exception (ada_catch_exception, bs);
12873 }
12874
12875 static void
12876 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12877 {
12878   print_one_exception (ada_catch_exception, b, last_loc);
12879 }
12880
12881 static void
12882 print_mention_catch_exception (struct breakpoint *b)
12883 {
12884   print_mention_exception (ada_catch_exception, b);
12885 }
12886
12887 static void
12888 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12889 {
12890   print_recreate_exception (ada_catch_exception, b, fp);
12891 }
12892
12893 static struct breakpoint_ops catch_exception_breakpoint_ops;
12894
12895 /* Virtual table for "catch exception unhandled" breakpoints.  */
12896
12897 static struct bp_location *
12898 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12899 {
12900   return allocate_location_exception (ada_catch_exception_unhandled, self);
12901 }
12902
12903 static void
12904 re_set_catch_exception_unhandled (struct breakpoint *b)
12905 {
12906   re_set_exception (ada_catch_exception_unhandled, b);
12907 }
12908
12909 static void
12910 check_status_catch_exception_unhandled (bpstat bs)
12911 {
12912   check_status_exception (ada_catch_exception_unhandled, bs);
12913 }
12914
12915 static enum print_stop_action
12916 print_it_catch_exception_unhandled (bpstat bs)
12917 {
12918   return print_it_exception (ada_catch_exception_unhandled, bs);
12919 }
12920
12921 static void
12922 print_one_catch_exception_unhandled (struct breakpoint *b,
12923                                      struct bp_location **last_loc)
12924 {
12925   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12926 }
12927
12928 static void
12929 print_mention_catch_exception_unhandled (struct breakpoint *b)
12930 {
12931   print_mention_exception (ada_catch_exception_unhandled, b);
12932 }
12933
12934 static void
12935 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12936                                           struct ui_file *fp)
12937 {
12938   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12939 }
12940
12941 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12942
12943 /* Virtual table for "catch assert" breakpoints.  */
12944
12945 static struct bp_location *
12946 allocate_location_catch_assert (struct breakpoint *self)
12947 {
12948   return allocate_location_exception (ada_catch_assert, self);
12949 }
12950
12951 static void
12952 re_set_catch_assert (struct breakpoint *b)
12953 {
12954   re_set_exception (ada_catch_assert, b);
12955 }
12956
12957 static void
12958 check_status_catch_assert (bpstat bs)
12959 {
12960   check_status_exception (ada_catch_assert, bs);
12961 }
12962
12963 static enum print_stop_action
12964 print_it_catch_assert (bpstat bs)
12965 {
12966   return print_it_exception (ada_catch_assert, bs);
12967 }
12968
12969 static void
12970 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12971 {
12972   print_one_exception (ada_catch_assert, b, last_loc);
12973 }
12974
12975 static void
12976 print_mention_catch_assert (struct breakpoint *b)
12977 {
12978   print_mention_exception (ada_catch_assert, b);
12979 }
12980
12981 static void
12982 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12983 {
12984   print_recreate_exception (ada_catch_assert, b, fp);
12985 }
12986
12987 static struct breakpoint_ops catch_assert_breakpoint_ops;
12988
12989 /* Virtual table for "catch handlers" breakpoints.  */
12990
12991 static struct bp_location *
12992 allocate_location_catch_handlers (struct breakpoint *self)
12993 {
12994   return allocate_location_exception (ada_catch_handlers, self);
12995 }
12996
12997 static void
12998 re_set_catch_handlers (struct breakpoint *b)
12999 {
13000   re_set_exception (ada_catch_handlers, b);
13001 }
13002
13003 static void
13004 check_status_catch_handlers (bpstat bs)
13005 {
13006   check_status_exception (ada_catch_handlers, bs);
13007 }
13008
13009 static enum print_stop_action
13010 print_it_catch_handlers (bpstat bs)
13011 {
13012   return print_it_exception (ada_catch_handlers, bs);
13013 }
13014
13015 static void
13016 print_one_catch_handlers (struct breakpoint *b,
13017                           struct bp_location **last_loc)
13018 {
13019   print_one_exception (ada_catch_handlers, b, last_loc);
13020 }
13021
13022 static void
13023 print_mention_catch_handlers (struct breakpoint *b)
13024 {
13025   print_mention_exception (ada_catch_handlers, b);
13026 }
13027
13028 static void
13029 print_recreate_catch_handlers (struct breakpoint *b,
13030                                struct ui_file *fp)
13031 {
13032   print_recreate_exception (ada_catch_handlers, b, fp);
13033 }
13034
13035 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13036
13037 /* Split the arguments specified in a "catch exception" command.  
13038    Set EX to the appropriate catchpoint type.
13039    Set EXCEP_STRING to the name of the specific exception if
13040    specified by the user.
13041    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13042    "catch handlers" command.  False otherwise.
13043    If a condition is found at the end of the arguments, the condition
13044    expression is stored in COND_STRING (memory must be deallocated
13045    after use).  Otherwise COND_STRING is set to NULL.  */
13046
13047 static void
13048 catch_ada_exception_command_split (const char *args,
13049                                    bool is_catch_handlers_cmd,
13050                                    enum ada_exception_catchpoint_kind *ex,
13051                                    std::string *excep_string,
13052                                    std::string *cond_string)
13053 {
13054   std::string exception_name;
13055
13056   exception_name = extract_arg (&args);
13057   if (exception_name == "if")
13058     {
13059       /* This is not an exception name; this is the start of a condition
13060          expression for a catchpoint on all exceptions.  So, "un-get"
13061          this token, and set exception_name to NULL.  */
13062       exception_name.clear ();
13063       args -= 2;
13064     }
13065
13066   /* Check to see if we have a condition.  */
13067
13068   args = skip_spaces (args);
13069   if (startswith (args, "if")
13070       && (isspace (args[2]) || args[2] == '\0'))
13071     {
13072       args += 2;
13073       args = skip_spaces (args);
13074
13075       if (args[0] == '\0')
13076         error (_("Condition missing after `if' keyword"));
13077       *cond_string = args;
13078
13079       args += strlen (args);
13080     }
13081
13082   /* Check that we do not have any more arguments.  Anything else
13083      is unexpected.  */
13084
13085   if (args[0] != '\0')
13086     error (_("Junk at end of expression"));
13087
13088   if (is_catch_handlers_cmd)
13089     {
13090       /* Catch handling of exceptions.  */
13091       *ex = ada_catch_handlers;
13092       *excep_string = exception_name;
13093     }
13094   else if (exception_name.empty ())
13095     {
13096       /* Catch all exceptions.  */
13097       *ex = ada_catch_exception;
13098       excep_string->clear ();
13099     }
13100   else if (exception_name == "unhandled")
13101     {
13102       /* Catch unhandled exceptions.  */
13103       *ex = ada_catch_exception_unhandled;
13104       excep_string->clear ();
13105     }
13106   else
13107     {
13108       /* Catch a specific exception.  */
13109       *ex = ada_catch_exception;
13110       *excep_string = exception_name;
13111     }
13112 }
13113
13114 /* Return the name of the symbol on which we should break in order to
13115    implement a catchpoint of the EX kind.  */
13116
13117 static const char *
13118 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13119 {
13120   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13121
13122   gdb_assert (data->exception_info != NULL);
13123
13124   switch (ex)
13125     {
13126       case ada_catch_exception:
13127         return (data->exception_info->catch_exception_sym);
13128         break;
13129       case ada_catch_exception_unhandled:
13130         return (data->exception_info->catch_exception_unhandled_sym);
13131         break;
13132       case ada_catch_assert:
13133         return (data->exception_info->catch_assert_sym);
13134         break;
13135       case ada_catch_handlers:
13136         return (data->exception_info->catch_handlers_sym);
13137         break;
13138       default:
13139         internal_error (__FILE__, __LINE__,
13140                         _("unexpected catchpoint kind (%d)"), ex);
13141     }
13142 }
13143
13144 /* Return the breakpoint ops "virtual table" used for catchpoints
13145    of the EX kind.  */
13146
13147 static const struct breakpoint_ops *
13148 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13149 {
13150   switch (ex)
13151     {
13152       case ada_catch_exception:
13153         return (&catch_exception_breakpoint_ops);
13154         break;
13155       case ada_catch_exception_unhandled:
13156         return (&catch_exception_unhandled_breakpoint_ops);
13157         break;
13158       case ada_catch_assert:
13159         return (&catch_assert_breakpoint_ops);
13160         break;
13161       case ada_catch_handlers:
13162         return (&catch_handlers_breakpoint_ops);
13163         break;
13164       default:
13165         internal_error (__FILE__, __LINE__,
13166                         _("unexpected catchpoint kind (%d)"), ex);
13167     }
13168 }
13169
13170 /* Return the condition that will be used to match the current exception
13171    being raised with the exception that the user wants to catch.  This
13172    assumes that this condition is used when the inferior just triggered
13173    an exception catchpoint.
13174    EX: the type of catchpoints used for catching Ada exceptions.  */
13175
13176 static std::string
13177 ada_exception_catchpoint_cond_string (const char *excep_string,
13178                                       enum ada_exception_catchpoint_kind ex)
13179 {
13180   int i;
13181   bool is_standard_exc = false;
13182   std::string result;
13183
13184   if (ex == ada_catch_handlers)
13185     {
13186       /* For exception handlers catchpoints, the condition string does
13187          not use the same parameter as for the other exceptions.  */
13188       result = ("long_integer (GNAT_GCC_exception_Access"
13189                 "(gcc_exception).all.occurrence.id)");
13190     }
13191   else
13192     result = "long_integer (e)";
13193
13194   /* The standard exceptions are a special case.  They are defined in
13195      runtime units that have been compiled without debugging info; if
13196      EXCEP_STRING is the not-fully-qualified name of a standard
13197      exception (e.g. "constraint_error") then, during the evaluation
13198      of the condition expression, the symbol lookup on this name would
13199      *not* return this standard exception.  The catchpoint condition
13200      may then be set only on user-defined exceptions which have the
13201      same not-fully-qualified name (e.g. my_package.constraint_error).
13202
13203      To avoid this unexcepted behavior, these standard exceptions are
13204      systematically prefixed by "standard".  This means that "catch
13205      exception constraint_error" is rewritten into "catch exception
13206      standard.constraint_error".
13207
13208      If an exception named contraint_error is defined in another package of
13209      the inferior program, then the only way to specify this exception as a
13210      breakpoint condition is to use its fully-qualified named:
13211      e.g. my_package.constraint_error.  */
13212
13213   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13214     {
13215       if (strcmp (standard_exc [i], excep_string) == 0)
13216         {
13217           is_standard_exc = true;
13218           break;
13219         }
13220     }
13221
13222   result += " = ";
13223
13224   if (is_standard_exc)
13225     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13226   else
13227     string_appendf (result, "long_integer (&%s)", excep_string);
13228
13229   return result;
13230 }
13231
13232 /* Return the symtab_and_line that should be used to insert an exception
13233    catchpoint of the TYPE kind.
13234
13235    ADDR_STRING returns the name of the function where the real
13236    breakpoint that implements the catchpoints is set, depending on the
13237    type of catchpoint we need to create.  */
13238
13239 static struct symtab_and_line
13240 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13241                    const char **addr_string, const struct breakpoint_ops **ops)
13242 {
13243   const char *sym_name;
13244   struct symbol *sym;
13245
13246   /* First, find out which exception support info to use.  */
13247   ada_exception_support_info_sniffer ();
13248
13249   /* Then lookup the function on which we will break in order to catch
13250      the Ada exceptions requested by the user.  */
13251   sym_name = ada_exception_sym_name (ex);
13252   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13253
13254   if (sym == NULL)
13255     error (_("Catchpoint symbol not found: %s"), sym_name);
13256
13257   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13258     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13259
13260   /* Set ADDR_STRING.  */
13261   *addr_string = xstrdup (sym_name);
13262
13263   /* Set OPS.  */
13264   *ops = ada_exception_breakpoint_ops (ex);
13265
13266   return find_function_start_sal (sym, 1);
13267 }
13268
13269 /* Create an Ada exception catchpoint.
13270
13271    EX_KIND is the kind of exception catchpoint to be created.
13272
13273    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13274    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13275    of the exception to which this catchpoint applies.
13276
13277    COND_STRING, if not empty, is the catchpoint condition.
13278
13279    TEMPFLAG, if nonzero, means that the underlying breakpoint
13280    should be temporary.
13281
13282    FROM_TTY is the usual argument passed to all commands implementations.  */
13283
13284 void
13285 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13286                                  enum ada_exception_catchpoint_kind ex_kind,
13287                                  const std::string &excep_string,
13288                                  const std::string &cond_string,
13289                                  int tempflag,
13290                                  int disabled,
13291                                  int from_tty)
13292 {
13293   const char *addr_string = NULL;
13294   const struct breakpoint_ops *ops = NULL;
13295   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13296
13297   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13298   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13299                                  ops, tempflag, disabled, from_tty);
13300   c->excep_string = excep_string;
13301   create_excep_cond_exprs (c.get (), ex_kind);
13302   if (!cond_string.empty ())
13303     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13304   install_breakpoint (0, std::move (c), 1);
13305 }
13306
13307 /* Implement the "catch exception" command.  */
13308
13309 static void
13310 catch_ada_exception_command (const char *arg_entry, int from_tty,
13311                              struct cmd_list_element *command)
13312 {
13313   const char *arg = arg_entry;
13314   struct gdbarch *gdbarch = get_current_arch ();
13315   int tempflag;
13316   enum ada_exception_catchpoint_kind ex_kind;
13317   std::string excep_string;
13318   std::string cond_string;
13319
13320   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13321
13322   if (!arg)
13323     arg = "";
13324   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13325                                      &cond_string);
13326   create_ada_exception_catchpoint (gdbarch, ex_kind,
13327                                    excep_string, cond_string,
13328                                    tempflag, 1 /* enabled */,
13329                                    from_tty);
13330 }
13331
13332 /* Implement the "catch handlers" command.  */
13333
13334 static void
13335 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13336                             struct cmd_list_element *command)
13337 {
13338   const char *arg = arg_entry;
13339   struct gdbarch *gdbarch = get_current_arch ();
13340   int tempflag;
13341   enum ada_exception_catchpoint_kind ex_kind;
13342   std::string excep_string;
13343   std::string cond_string;
13344
13345   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13346
13347   if (!arg)
13348     arg = "";
13349   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13350                                      &cond_string);
13351   create_ada_exception_catchpoint (gdbarch, ex_kind,
13352                                    excep_string, cond_string,
13353                                    tempflag, 1 /* enabled */,
13354                                    from_tty);
13355 }
13356
13357 /* Split the arguments specified in a "catch assert" command.
13358
13359    ARGS contains the command's arguments (or the empty string if
13360    no arguments were passed).
13361
13362    If ARGS contains a condition, set COND_STRING to that condition
13363    (the memory needs to be deallocated after use).  */
13364
13365 static void
13366 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13367 {
13368   args = skip_spaces (args);
13369
13370   /* Check whether a condition was provided.  */
13371   if (startswith (args, "if")
13372       && (isspace (args[2]) || args[2] == '\0'))
13373     {
13374       args += 2;
13375       args = skip_spaces (args);
13376       if (args[0] == '\0')
13377         error (_("condition missing after `if' keyword"));
13378       cond_string.assign (args);
13379     }
13380
13381   /* Otherwise, there should be no other argument at the end of
13382      the command.  */
13383   else if (args[0] != '\0')
13384     error (_("Junk at end of arguments."));
13385 }
13386
13387 /* Implement the "catch assert" command.  */
13388
13389 static void
13390 catch_assert_command (const char *arg_entry, int from_tty,
13391                       struct cmd_list_element *command)
13392 {
13393   const char *arg = arg_entry;
13394   struct gdbarch *gdbarch = get_current_arch ();
13395   int tempflag;
13396   std::string cond_string;
13397
13398   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13399
13400   if (!arg)
13401     arg = "";
13402   catch_ada_assert_command_split (arg, cond_string);
13403   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13404                                    "", cond_string,
13405                                    tempflag, 1 /* enabled */,
13406                                    from_tty);
13407 }
13408
13409 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13410
13411 static int
13412 ada_is_exception_sym (struct symbol *sym)
13413 {
13414   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13415
13416   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13417           && SYMBOL_CLASS (sym) != LOC_BLOCK
13418           && SYMBOL_CLASS (sym) != LOC_CONST
13419           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13420           && type_name != NULL && strcmp (type_name, "exception") == 0);
13421 }
13422
13423 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13424    Ada exception object.  This matches all exceptions except the ones
13425    defined by the Ada language.  */
13426
13427 static int
13428 ada_is_non_standard_exception_sym (struct symbol *sym)
13429 {
13430   int i;
13431
13432   if (!ada_is_exception_sym (sym))
13433     return 0;
13434
13435   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13436     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13437       return 0;  /* A standard exception.  */
13438
13439   /* Numeric_Error is also a standard exception, so exclude it.
13440      See the STANDARD_EXC description for more details as to why
13441      this exception is not listed in that array.  */
13442   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13443     return 0;
13444
13445   return 1;
13446 }
13447
13448 /* A helper function for std::sort, comparing two struct ada_exc_info
13449    objects.
13450
13451    The comparison is determined first by exception name, and then
13452    by exception address.  */
13453
13454 bool
13455 ada_exc_info::operator< (const ada_exc_info &other) const
13456 {
13457   int result;
13458
13459   result = strcmp (name, other.name);
13460   if (result < 0)
13461     return true;
13462   if (result == 0 && addr < other.addr)
13463     return true;
13464   return false;
13465 }
13466
13467 bool
13468 ada_exc_info::operator== (const ada_exc_info &other) const
13469 {
13470   return addr == other.addr && strcmp (name, other.name) == 0;
13471 }
13472
13473 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13474    routine, but keeping the first SKIP elements untouched.
13475
13476    All duplicates are also removed.  */
13477
13478 static void
13479 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13480                                       int skip)
13481 {
13482   std::sort (exceptions->begin () + skip, exceptions->end ());
13483   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13484                      exceptions->end ());
13485 }
13486
13487 /* Add all exceptions defined by the Ada standard whose name match
13488    a regular expression.
13489
13490    If PREG is not NULL, then this regexp_t object is used to
13491    perform the symbol name matching.  Otherwise, no name-based
13492    filtering is performed.
13493
13494    EXCEPTIONS is a vector of exceptions to which matching exceptions
13495    gets pushed.  */
13496
13497 static void
13498 ada_add_standard_exceptions (compiled_regex *preg,
13499                              std::vector<ada_exc_info> *exceptions)
13500 {
13501   int i;
13502
13503   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13504     {
13505       if (preg == NULL
13506           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13507         {
13508           struct bound_minimal_symbol msymbol
13509             = ada_lookup_simple_minsym (standard_exc[i]);
13510
13511           if (msymbol.minsym != NULL)
13512             {
13513               struct ada_exc_info info
13514                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13515
13516               exceptions->push_back (info);
13517             }
13518         }
13519     }
13520 }
13521
13522 /* Add all Ada exceptions defined locally and accessible from the given
13523    FRAME.
13524
13525    If PREG is not NULL, then this regexp_t object is used to
13526    perform the symbol name matching.  Otherwise, no name-based
13527    filtering is performed.
13528
13529    EXCEPTIONS is a vector of exceptions to which matching exceptions
13530    gets pushed.  */
13531
13532 static void
13533 ada_add_exceptions_from_frame (compiled_regex *preg,
13534                                struct frame_info *frame,
13535                                std::vector<ada_exc_info> *exceptions)
13536 {
13537   const struct block *block = get_frame_block (frame, 0);
13538
13539   while (block != 0)
13540     {
13541       struct block_iterator iter;
13542       struct symbol *sym;
13543
13544       ALL_BLOCK_SYMBOLS (block, iter, sym)
13545         {
13546           switch (SYMBOL_CLASS (sym))
13547             {
13548             case LOC_TYPEDEF:
13549             case LOC_BLOCK:
13550             case LOC_CONST:
13551               break;
13552             default:
13553               if (ada_is_exception_sym (sym))
13554                 {
13555                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13556                                               SYMBOL_VALUE_ADDRESS (sym)};
13557
13558                   exceptions->push_back (info);
13559                 }
13560             }
13561         }
13562       if (BLOCK_FUNCTION (block) != NULL)
13563         break;
13564       block = BLOCK_SUPERBLOCK (block);
13565     }
13566 }
13567
13568 /* Return true if NAME matches PREG or if PREG is NULL.  */
13569
13570 static bool
13571 name_matches_regex (const char *name, compiled_regex *preg)
13572 {
13573   return (preg == NULL
13574           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13575 }
13576
13577 /* Add all exceptions defined globally whose name name match
13578    a regular expression, excluding standard exceptions.
13579
13580    The reason we exclude standard exceptions is that they need
13581    to be handled separately: Standard exceptions are defined inside
13582    a runtime unit which is normally not compiled with debugging info,
13583    and thus usually do not show up in our symbol search.  However,
13584    if the unit was in fact built with debugging info, we need to
13585    exclude them because they would duplicate the entry we found
13586    during the special loop that specifically searches for those
13587    standard exceptions.
13588
13589    If PREG is not NULL, then this regexp_t object is used to
13590    perform the symbol name matching.  Otherwise, no name-based
13591    filtering is performed.
13592
13593    EXCEPTIONS is a vector of exceptions to which matching exceptions
13594    gets pushed.  */
13595
13596 static void
13597 ada_add_global_exceptions (compiled_regex *preg,
13598                            std::vector<ada_exc_info> *exceptions)
13599 {
13600   struct objfile *objfile;
13601   struct compunit_symtab *s;
13602
13603   /* In Ada, the symbol "search name" is a linkage name, whereas the
13604      regular expression used to do the matching refers to the natural
13605      name.  So match against the decoded name.  */
13606   expand_symtabs_matching (NULL,
13607                            lookup_name_info::match_any (),
13608                            [&] (const char *search_name)
13609                            {
13610                              const char *decoded = ada_decode (search_name);
13611                              return name_matches_regex (decoded, preg);
13612                            },
13613                            NULL,
13614                            VARIABLES_DOMAIN);
13615
13616   ALL_COMPUNITS (objfile, s)
13617     {
13618       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13619       int i;
13620
13621       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13622         {
13623           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13624           struct block_iterator iter;
13625           struct symbol *sym;
13626
13627           ALL_BLOCK_SYMBOLS (b, iter, sym)
13628             if (ada_is_non_standard_exception_sym (sym)
13629                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13630               {
13631                 struct ada_exc_info info
13632                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13633
13634                 exceptions->push_back (info);
13635               }
13636         }
13637     }
13638 }
13639
13640 /* Implements ada_exceptions_list with the regular expression passed
13641    as a regex_t, rather than a string.
13642
13643    If not NULL, PREG is used to filter out exceptions whose names
13644    do not match.  Otherwise, all exceptions are listed.  */
13645
13646 static std::vector<ada_exc_info>
13647 ada_exceptions_list_1 (compiled_regex *preg)
13648 {
13649   std::vector<ada_exc_info> result;
13650   int prev_len;
13651
13652   /* First, list the known standard exceptions.  These exceptions
13653      need to be handled separately, as they are usually defined in
13654      runtime units that have been compiled without debugging info.  */
13655
13656   ada_add_standard_exceptions (preg, &result);
13657
13658   /* Next, find all exceptions whose scope is local and accessible
13659      from the currently selected frame.  */
13660
13661   if (has_stack_frames ())
13662     {
13663       prev_len = result.size ();
13664       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13665                                      &result);
13666       if (result.size () > prev_len)
13667         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13668     }
13669
13670   /* Add all exceptions whose scope is global.  */
13671
13672   prev_len = result.size ();
13673   ada_add_global_exceptions (preg, &result);
13674   if (result.size () > prev_len)
13675     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13676
13677   return result;
13678 }
13679
13680 /* Return a vector of ada_exc_info.
13681
13682    If REGEXP is NULL, all exceptions are included in the result.
13683    Otherwise, it should contain a valid regular expression,
13684    and only the exceptions whose names match that regular expression
13685    are included in the result.
13686
13687    The exceptions are sorted in the following order:
13688      - Standard exceptions (defined by the Ada language), in
13689        alphabetical order;
13690      - Exceptions only visible from the current frame, in
13691        alphabetical order;
13692      - Exceptions whose scope is global, in alphabetical order.  */
13693
13694 std::vector<ada_exc_info>
13695 ada_exceptions_list (const char *regexp)
13696 {
13697   if (regexp == NULL)
13698     return ada_exceptions_list_1 (NULL);
13699
13700   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13701   return ada_exceptions_list_1 (&reg);
13702 }
13703
13704 /* Implement the "info exceptions" command.  */
13705
13706 static void
13707 info_exceptions_command (const char *regexp, int from_tty)
13708 {
13709   struct gdbarch *gdbarch = get_current_arch ();
13710
13711   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13712
13713   if (regexp != NULL)
13714     printf_filtered
13715       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13716   else
13717     printf_filtered (_("All defined Ada exceptions:\n"));
13718
13719   for (const ada_exc_info &info : exceptions)
13720     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13721 }
13722
13723                                 /* Operators */
13724 /* Information about operators given special treatment in functions
13725    below.  */
13726 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13727
13728 #define ADA_OPERATORS \
13729     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13730     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13731     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13732     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13733     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13734     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13735     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13736     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13737     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13738     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13739     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13740     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13741     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13742     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13743     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13744     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13745     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13746     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13747     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13748
13749 static void
13750 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13751                      int *argsp)
13752 {
13753   switch (exp->elts[pc - 1].opcode)
13754     {
13755     default:
13756       operator_length_standard (exp, pc, oplenp, argsp);
13757       break;
13758
13759 #define OP_DEFN(op, len, args, binop) \
13760     case op: *oplenp = len; *argsp = args; break;
13761       ADA_OPERATORS;
13762 #undef OP_DEFN
13763
13764     case OP_AGGREGATE:
13765       *oplenp = 3;
13766       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13767       break;
13768
13769     case OP_CHOICES:
13770       *oplenp = 3;
13771       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13772       break;
13773     }
13774 }
13775
13776 /* Implementation of the exp_descriptor method operator_check.  */
13777
13778 static int
13779 ada_operator_check (struct expression *exp, int pos,
13780                     int (*objfile_func) (struct objfile *objfile, void *data),
13781                     void *data)
13782 {
13783   const union exp_element *const elts = exp->elts;
13784   struct type *type = NULL;
13785
13786   switch (elts[pos].opcode)
13787     {
13788       case UNOP_IN_RANGE:
13789       case UNOP_QUAL:
13790         type = elts[pos + 1].type;
13791         break;
13792
13793       default:
13794         return operator_check_standard (exp, pos, objfile_func, data);
13795     }
13796
13797   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13798
13799   if (type && TYPE_OBJFILE (type)
13800       && (*objfile_func) (TYPE_OBJFILE (type), data))
13801     return 1;
13802
13803   return 0;
13804 }
13805
13806 static const char *
13807 ada_op_name (enum exp_opcode opcode)
13808 {
13809   switch (opcode)
13810     {
13811     default:
13812       return op_name_standard (opcode);
13813
13814 #define OP_DEFN(op, len, args, binop) case op: return #op;
13815       ADA_OPERATORS;
13816 #undef OP_DEFN
13817
13818     case OP_AGGREGATE:
13819       return "OP_AGGREGATE";
13820     case OP_CHOICES:
13821       return "OP_CHOICES";
13822     case OP_NAME:
13823       return "OP_NAME";
13824     }
13825 }
13826
13827 /* As for operator_length, but assumes PC is pointing at the first
13828    element of the operator, and gives meaningful results only for the 
13829    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13830
13831 static void
13832 ada_forward_operator_length (struct expression *exp, int pc,
13833                              int *oplenp, int *argsp)
13834 {
13835   switch (exp->elts[pc].opcode)
13836     {
13837     default:
13838       *oplenp = *argsp = 0;
13839       break;
13840
13841 #define OP_DEFN(op, len, args, binop) \
13842     case op: *oplenp = len; *argsp = args; break;
13843       ADA_OPERATORS;
13844 #undef OP_DEFN
13845
13846     case OP_AGGREGATE:
13847       *oplenp = 3;
13848       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13849       break;
13850
13851     case OP_CHOICES:
13852       *oplenp = 3;
13853       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13854       break;
13855
13856     case OP_STRING:
13857     case OP_NAME:
13858       {
13859         int len = longest_to_int (exp->elts[pc + 1].longconst);
13860
13861         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13862         *argsp = 0;
13863         break;
13864       }
13865     }
13866 }
13867
13868 static int
13869 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13870 {
13871   enum exp_opcode op = exp->elts[elt].opcode;
13872   int oplen, nargs;
13873   int pc = elt;
13874   int i;
13875
13876   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13877
13878   switch (op)
13879     {
13880       /* Ada attributes ('Foo).  */
13881     case OP_ATR_FIRST:
13882     case OP_ATR_LAST:
13883     case OP_ATR_LENGTH:
13884     case OP_ATR_IMAGE:
13885     case OP_ATR_MAX:
13886     case OP_ATR_MIN:
13887     case OP_ATR_MODULUS:
13888     case OP_ATR_POS:
13889     case OP_ATR_SIZE:
13890     case OP_ATR_TAG:
13891     case OP_ATR_VAL:
13892       break;
13893
13894     case UNOP_IN_RANGE:
13895     case UNOP_QUAL:
13896       /* XXX: gdb_sprint_host_address, type_sprint */
13897       fprintf_filtered (stream, _("Type @"));
13898       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13899       fprintf_filtered (stream, " (");
13900       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13901       fprintf_filtered (stream, ")");
13902       break;
13903     case BINOP_IN_BOUNDS:
13904       fprintf_filtered (stream, " (%d)",
13905                         longest_to_int (exp->elts[pc + 2].longconst));
13906       break;
13907     case TERNOP_IN_RANGE:
13908       break;
13909
13910     case OP_AGGREGATE:
13911     case OP_OTHERS:
13912     case OP_DISCRETE_RANGE:
13913     case OP_POSITIONAL:
13914     case OP_CHOICES:
13915       break;
13916
13917     case OP_NAME:
13918     case OP_STRING:
13919       {
13920         char *name = &exp->elts[elt + 2].string;
13921         int len = longest_to_int (exp->elts[elt + 1].longconst);
13922
13923         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13924         break;
13925       }
13926
13927     default:
13928       return dump_subexp_body_standard (exp, stream, elt);
13929     }
13930
13931   elt += oplen;
13932   for (i = 0; i < nargs; i += 1)
13933     elt = dump_subexp (exp, stream, elt);
13934
13935   return elt;
13936 }
13937
13938 /* The Ada extension of print_subexp (q.v.).  */
13939
13940 static void
13941 ada_print_subexp (struct expression *exp, int *pos,
13942                   struct ui_file *stream, enum precedence prec)
13943 {
13944   int oplen, nargs, i;
13945   int pc = *pos;
13946   enum exp_opcode op = exp->elts[pc].opcode;
13947
13948   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13949
13950   *pos += oplen;
13951   switch (op)
13952     {
13953     default:
13954       *pos -= oplen;
13955       print_subexp_standard (exp, pos, stream, prec);
13956       return;
13957
13958     case OP_VAR_VALUE:
13959       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13960       return;
13961
13962     case BINOP_IN_BOUNDS:
13963       /* XXX: sprint_subexp */
13964       print_subexp (exp, pos, stream, PREC_SUFFIX);
13965       fputs_filtered (" in ", stream);
13966       print_subexp (exp, pos, stream, PREC_SUFFIX);
13967       fputs_filtered ("'range", stream);
13968       if (exp->elts[pc + 1].longconst > 1)
13969         fprintf_filtered (stream, "(%ld)",
13970                           (long) exp->elts[pc + 1].longconst);
13971       return;
13972
13973     case TERNOP_IN_RANGE:
13974       if (prec >= PREC_EQUAL)
13975         fputs_filtered ("(", stream);
13976       /* XXX: sprint_subexp */
13977       print_subexp (exp, pos, stream, PREC_SUFFIX);
13978       fputs_filtered (" in ", stream);
13979       print_subexp (exp, pos, stream, PREC_EQUAL);
13980       fputs_filtered (" .. ", stream);
13981       print_subexp (exp, pos, stream, PREC_EQUAL);
13982       if (prec >= PREC_EQUAL)
13983         fputs_filtered (")", stream);
13984       return;
13985
13986     case OP_ATR_FIRST:
13987     case OP_ATR_LAST:
13988     case OP_ATR_LENGTH:
13989     case OP_ATR_IMAGE:
13990     case OP_ATR_MAX:
13991     case OP_ATR_MIN:
13992     case OP_ATR_MODULUS:
13993     case OP_ATR_POS:
13994     case OP_ATR_SIZE:
13995     case OP_ATR_TAG:
13996     case OP_ATR_VAL:
13997       if (exp->elts[*pos].opcode == OP_TYPE)
13998         {
13999           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14000             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14001                            &type_print_raw_options);
14002           *pos += 3;
14003         }
14004       else
14005         print_subexp (exp, pos, stream, PREC_SUFFIX);
14006       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14007       if (nargs > 1)
14008         {
14009           int tem;
14010
14011           for (tem = 1; tem < nargs; tem += 1)
14012             {
14013               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14014               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14015             }
14016           fputs_filtered (")", stream);
14017         }
14018       return;
14019
14020     case UNOP_QUAL:
14021       type_print (exp->elts[pc + 1].type, "", stream, 0);
14022       fputs_filtered ("'(", stream);
14023       print_subexp (exp, pos, stream, PREC_PREFIX);
14024       fputs_filtered (")", stream);
14025       return;
14026
14027     case UNOP_IN_RANGE:
14028       /* XXX: sprint_subexp */
14029       print_subexp (exp, pos, stream, PREC_SUFFIX);
14030       fputs_filtered (" in ", stream);
14031       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14032                      &type_print_raw_options);
14033       return;
14034
14035     case OP_DISCRETE_RANGE:
14036       print_subexp (exp, pos, stream, PREC_SUFFIX);
14037       fputs_filtered ("..", stream);
14038       print_subexp (exp, pos, stream, PREC_SUFFIX);
14039       return;
14040
14041     case OP_OTHERS:
14042       fputs_filtered ("others => ", stream);
14043       print_subexp (exp, pos, stream, PREC_SUFFIX);
14044       return;
14045
14046     case OP_CHOICES:
14047       for (i = 0; i < nargs-1; i += 1)
14048         {
14049           if (i > 0)
14050             fputs_filtered ("|", stream);
14051           print_subexp (exp, pos, stream, PREC_SUFFIX);
14052         }
14053       fputs_filtered (" => ", stream);
14054       print_subexp (exp, pos, stream, PREC_SUFFIX);
14055       return;
14056       
14057     case OP_POSITIONAL:
14058       print_subexp (exp, pos, stream, PREC_SUFFIX);
14059       return;
14060
14061     case OP_AGGREGATE:
14062       fputs_filtered ("(", stream);
14063       for (i = 0; i < nargs; i += 1)
14064         {
14065           if (i > 0)
14066             fputs_filtered (", ", stream);
14067           print_subexp (exp, pos, stream, PREC_SUFFIX);
14068         }
14069       fputs_filtered (")", stream);
14070       return;
14071     }
14072 }
14073
14074 /* Table mapping opcodes into strings for printing operators
14075    and precedences of the operators.  */
14076
14077 static const struct op_print ada_op_print_tab[] = {
14078   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14079   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14080   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14081   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14082   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14083   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14084   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14085   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14086   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14087   {">=", BINOP_GEQ, PREC_ORDER, 0},
14088   {">", BINOP_GTR, PREC_ORDER, 0},
14089   {"<", BINOP_LESS, PREC_ORDER, 0},
14090   {">>", BINOP_RSH, PREC_SHIFT, 0},
14091   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14092   {"+", BINOP_ADD, PREC_ADD, 0},
14093   {"-", BINOP_SUB, PREC_ADD, 0},
14094   {"&", BINOP_CONCAT, PREC_ADD, 0},
14095   {"*", BINOP_MUL, PREC_MUL, 0},
14096   {"/", BINOP_DIV, PREC_MUL, 0},
14097   {"rem", BINOP_REM, PREC_MUL, 0},
14098   {"mod", BINOP_MOD, PREC_MUL, 0},
14099   {"**", BINOP_EXP, PREC_REPEAT, 0},
14100   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14101   {"-", UNOP_NEG, PREC_PREFIX, 0},
14102   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14103   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14104   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14105   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14106   {".all", UNOP_IND, PREC_SUFFIX, 1},
14107   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14108   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14109   {NULL, OP_NULL, PREC_SUFFIX, 0}
14110 };
14111 \f
14112 enum ada_primitive_types {
14113   ada_primitive_type_int,
14114   ada_primitive_type_long,
14115   ada_primitive_type_short,
14116   ada_primitive_type_char,
14117   ada_primitive_type_float,
14118   ada_primitive_type_double,
14119   ada_primitive_type_void,
14120   ada_primitive_type_long_long,
14121   ada_primitive_type_long_double,
14122   ada_primitive_type_natural,
14123   ada_primitive_type_positive,
14124   ada_primitive_type_system_address,
14125   ada_primitive_type_storage_offset,
14126   nr_ada_primitive_types
14127 };
14128
14129 static void
14130 ada_language_arch_info (struct gdbarch *gdbarch,
14131                         struct language_arch_info *lai)
14132 {
14133   const struct builtin_type *builtin = builtin_type (gdbarch);
14134
14135   lai->primitive_type_vector
14136     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14137                               struct type *);
14138
14139   lai->primitive_type_vector [ada_primitive_type_int]
14140     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14141                          0, "integer");
14142   lai->primitive_type_vector [ada_primitive_type_long]
14143     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14144                          0, "long_integer");
14145   lai->primitive_type_vector [ada_primitive_type_short]
14146     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14147                          0, "short_integer");
14148   lai->string_char_type
14149     = lai->primitive_type_vector [ada_primitive_type_char]
14150     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14151   lai->primitive_type_vector [ada_primitive_type_float]
14152     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14153                        "float", gdbarch_float_format (gdbarch));
14154   lai->primitive_type_vector [ada_primitive_type_double]
14155     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14156                        "long_float", gdbarch_double_format (gdbarch));
14157   lai->primitive_type_vector [ada_primitive_type_long_long]
14158     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14159                          0, "long_long_integer");
14160   lai->primitive_type_vector [ada_primitive_type_long_double]
14161     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14162                        "long_long_float", gdbarch_long_double_format (gdbarch));
14163   lai->primitive_type_vector [ada_primitive_type_natural]
14164     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14165                          0, "natural");
14166   lai->primitive_type_vector [ada_primitive_type_positive]
14167     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14168                          0, "positive");
14169   lai->primitive_type_vector [ada_primitive_type_void]
14170     = builtin->builtin_void;
14171
14172   lai->primitive_type_vector [ada_primitive_type_system_address]
14173     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14174                                       "void"));
14175   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14176     = "system__address";
14177
14178   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14179      type.  This is a signed integral type whose size is the same as
14180      the size of addresses.  */
14181   {
14182     unsigned int addr_length = TYPE_LENGTH
14183       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14184
14185     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14186       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14187                            "storage_offset");
14188   }
14189
14190   lai->bool_type_symbol = NULL;
14191   lai->bool_type_default = builtin->builtin_bool;
14192 }
14193 \f
14194                                 /* Language vector */
14195
14196 /* Not really used, but needed in the ada_language_defn.  */
14197
14198 static void
14199 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14200 {
14201   ada_emit_char (c, type, stream, quoter, 1);
14202 }
14203
14204 static int
14205 parse (struct parser_state *ps)
14206 {
14207   warnings_issued = 0;
14208   return ada_parse (ps);
14209 }
14210
14211 static const struct exp_descriptor ada_exp_descriptor = {
14212   ada_print_subexp,
14213   ada_operator_length,
14214   ada_operator_check,
14215   ada_op_name,
14216   ada_dump_subexp_body,
14217   ada_evaluate_subexp
14218 };
14219
14220 /* symbol_name_matcher_ftype adapter for wild_match.  */
14221
14222 static bool
14223 do_wild_match (const char *symbol_search_name,
14224                const lookup_name_info &lookup_name,
14225                completion_match_result *comp_match_res)
14226 {
14227   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14228 }
14229
14230 /* symbol_name_matcher_ftype adapter for full_match.  */
14231
14232 static bool
14233 do_full_match (const char *symbol_search_name,
14234                const lookup_name_info &lookup_name,
14235                completion_match_result *comp_match_res)
14236 {
14237   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14238 }
14239
14240 /* Build the Ada lookup name for LOOKUP_NAME.  */
14241
14242 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14243 {
14244   const std::string &user_name = lookup_name.name ();
14245
14246   if (user_name[0] == '<')
14247     {
14248       if (user_name.back () == '>')
14249         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14250       else
14251         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14252       m_encoded_p = true;
14253       m_verbatim_p = true;
14254       m_wild_match_p = false;
14255       m_standard_p = false;
14256     }
14257   else
14258     {
14259       m_verbatim_p = false;
14260
14261       m_encoded_p = user_name.find ("__") != std::string::npos;
14262
14263       if (!m_encoded_p)
14264         {
14265           const char *folded = ada_fold_name (user_name.c_str ());
14266           const char *encoded = ada_encode_1 (folded, false);
14267           if (encoded != NULL)
14268             m_encoded_name = encoded;
14269           else
14270             m_encoded_name = user_name;
14271         }
14272       else
14273         m_encoded_name = user_name;
14274
14275       /* Handle the 'package Standard' special case.  See description
14276          of m_standard_p.  */
14277       if (startswith (m_encoded_name.c_str (), "standard__"))
14278         {
14279           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14280           m_standard_p = true;
14281         }
14282       else
14283         m_standard_p = false;
14284
14285       /* If the name contains a ".", then the user is entering a fully
14286          qualified entity name, and the match must not be done in wild
14287          mode.  Similarly, if the user wants to complete what looks
14288          like an encoded name, the match must not be done in wild
14289          mode.  Also, in the standard__ special case always do
14290          non-wild matching.  */
14291       m_wild_match_p
14292         = (lookup_name.match_type () != symbol_name_match_type::FULL
14293            && !m_encoded_p
14294            && !m_standard_p
14295            && user_name.find ('.') == std::string::npos);
14296     }
14297 }
14298
14299 /* symbol_name_matcher_ftype method for Ada.  This only handles
14300    completion mode.  */
14301
14302 static bool
14303 ada_symbol_name_matches (const char *symbol_search_name,
14304                          const lookup_name_info &lookup_name,
14305                          completion_match_result *comp_match_res)
14306 {
14307   return lookup_name.ada ().matches (symbol_search_name,
14308                                      lookup_name.match_type (),
14309                                      comp_match_res);
14310 }
14311
14312 /* A name matcher that matches the symbol name exactly, with
14313    strcmp.  */
14314
14315 static bool
14316 literal_symbol_name_matcher (const char *symbol_search_name,
14317                              const lookup_name_info &lookup_name,
14318                              completion_match_result *comp_match_res)
14319 {
14320   const std::string &name = lookup_name.name ();
14321
14322   int cmp = (lookup_name.completion_mode ()
14323              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14324              : strcmp (symbol_search_name, name.c_str ()));
14325   if (cmp == 0)
14326     {
14327       if (comp_match_res != NULL)
14328         comp_match_res->set_match (symbol_search_name);
14329       return true;
14330     }
14331   else
14332     return false;
14333 }
14334
14335 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14336    Ada.  */
14337
14338 static symbol_name_matcher_ftype *
14339 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14340 {
14341   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14342     return literal_symbol_name_matcher;
14343
14344   if (lookup_name.completion_mode ())
14345     return ada_symbol_name_matches;
14346   else
14347     {
14348       if (lookup_name.ada ().wild_match_p ())
14349         return do_wild_match;
14350       else
14351         return do_full_match;
14352     }
14353 }
14354
14355 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14356
14357 static struct value *
14358 ada_read_var_value (struct symbol *var, const struct block *var_block,
14359                     struct frame_info *frame)
14360 {
14361   const struct block *frame_block = NULL;
14362   struct symbol *renaming_sym = NULL;
14363
14364   /* The only case where default_read_var_value is not sufficient
14365      is when VAR is a renaming...  */
14366   if (frame)
14367     frame_block = get_frame_block (frame, NULL);
14368   if (frame_block)
14369     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14370   if (renaming_sym != NULL)
14371     return ada_read_renaming_var_value (renaming_sym, frame_block);
14372
14373   /* This is a typical case where we expect the default_read_var_value
14374      function to work.  */
14375   return default_read_var_value (var, var_block, frame);
14376 }
14377
14378 static const char *ada_extensions[] =
14379 {
14380   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14381 };
14382
14383 extern const struct language_defn ada_language_defn = {
14384   "ada",                        /* Language name */
14385   "Ada",
14386   language_ada,
14387   range_check_off,
14388   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14389                                    that's not quite what this means.  */
14390   array_row_major,
14391   macro_expansion_no,
14392   ada_extensions,
14393   &ada_exp_descriptor,
14394   parse,
14395   resolve,
14396   ada_printchar,                /* Print a character constant */
14397   ada_printstr,                 /* Function to print string constant */
14398   emit_char,                    /* Function to print single char (not used) */
14399   ada_print_type,               /* Print a type using appropriate syntax */
14400   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14401   ada_val_print,                /* Print a value using appropriate syntax */
14402   ada_value_print,              /* Print a top-level value */
14403   ada_read_var_value,           /* la_read_var_value */
14404   NULL,                         /* Language specific skip_trampoline */
14405   NULL,                         /* name_of_this */
14406   true,                         /* la_store_sym_names_in_linkage_form_p */
14407   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14408   basic_lookup_transparent_type,        /* lookup_transparent_type */
14409   ada_la_decode,                /* Language specific symbol demangler */
14410   ada_sniff_from_mangled_name,
14411   NULL,                         /* Language specific
14412                                    class_name_from_physname */
14413   ada_op_print_tab,             /* expression operators for printing */
14414   0,                            /* c-style arrays */
14415   1,                            /* String lower bound */
14416   ada_get_gdb_completer_word_break_characters,
14417   ada_collect_symbol_completion_matches,
14418   ada_language_arch_info,
14419   ada_print_array_index,
14420   default_pass_by_reference,
14421   c_get_string,
14422   c_watch_location_expression,
14423   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14424   ada_iterate_over_symbols,
14425   default_search_name_hash,
14426   &ada_varobj_ops,
14427   NULL,
14428   NULL,
14429   LANG_MAGIC
14430 };
14431
14432 /* Command-list for the "set/show ada" prefix command.  */
14433 static struct cmd_list_element *set_ada_list;
14434 static struct cmd_list_element *show_ada_list;
14435
14436 /* Implement the "set ada" prefix command.  */
14437
14438 static void
14439 set_ada_command (const char *arg, int from_tty)
14440 {
14441   printf_unfiltered (_(\
14442 "\"set ada\" must be followed by the name of a setting.\n"));
14443   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14444 }
14445
14446 /* Implement the "show ada" prefix command.  */
14447
14448 static void
14449 show_ada_command (const char *args, int from_tty)
14450 {
14451   cmd_show_list (show_ada_list, from_tty, "");
14452 }
14453
14454 static void
14455 initialize_ada_catchpoint_ops (void)
14456 {
14457   struct breakpoint_ops *ops;
14458
14459   initialize_breakpoint_ops ();
14460
14461   ops = &catch_exception_breakpoint_ops;
14462   *ops = bkpt_breakpoint_ops;
14463   ops->allocate_location = allocate_location_catch_exception;
14464   ops->re_set = re_set_catch_exception;
14465   ops->check_status = check_status_catch_exception;
14466   ops->print_it = print_it_catch_exception;
14467   ops->print_one = print_one_catch_exception;
14468   ops->print_mention = print_mention_catch_exception;
14469   ops->print_recreate = print_recreate_catch_exception;
14470
14471   ops = &catch_exception_unhandled_breakpoint_ops;
14472   *ops = bkpt_breakpoint_ops;
14473   ops->allocate_location = allocate_location_catch_exception_unhandled;
14474   ops->re_set = re_set_catch_exception_unhandled;
14475   ops->check_status = check_status_catch_exception_unhandled;
14476   ops->print_it = print_it_catch_exception_unhandled;
14477   ops->print_one = print_one_catch_exception_unhandled;
14478   ops->print_mention = print_mention_catch_exception_unhandled;
14479   ops->print_recreate = print_recreate_catch_exception_unhandled;
14480
14481   ops = &catch_assert_breakpoint_ops;
14482   *ops = bkpt_breakpoint_ops;
14483   ops->allocate_location = allocate_location_catch_assert;
14484   ops->re_set = re_set_catch_assert;
14485   ops->check_status = check_status_catch_assert;
14486   ops->print_it = print_it_catch_assert;
14487   ops->print_one = print_one_catch_assert;
14488   ops->print_mention = print_mention_catch_assert;
14489   ops->print_recreate = print_recreate_catch_assert;
14490
14491   ops = &catch_handlers_breakpoint_ops;
14492   *ops = bkpt_breakpoint_ops;
14493   ops->allocate_location = allocate_location_catch_handlers;
14494   ops->re_set = re_set_catch_handlers;
14495   ops->check_status = check_status_catch_handlers;
14496   ops->print_it = print_it_catch_handlers;
14497   ops->print_one = print_one_catch_handlers;
14498   ops->print_mention = print_mention_catch_handlers;
14499   ops->print_recreate = print_recreate_catch_handlers;
14500 }
14501
14502 /* This module's 'new_objfile' observer.  */
14503
14504 static void
14505 ada_new_objfile_observer (struct objfile *objfile)
14506 {
14507   ada_clear_symbol_cache ();
14508 }
14509
14510 /* This module's 'free_objfile' observer.  */
14511
14512 static void
14513 ada_free_objfile_observer (struct objfile *objfile)
14514 {
14515   ada_clear_symbol_cache ();
14516 }
14517
14518 void
14519 _initialize_ada_language (void)
14520 {
14521   initialize_ada_catchpoint_ops ();
14522
14523   add_prefix_cmd ("ada", no_class, set_ada_command,
14524                   _("Prefix command for changing Ada-specfic settings"),
14525                   &set_ada_list, "set ada ", 0, &setlist);
14526
14527   add_prefix_cmd ("ada", no_class, show_ada_command,
14528                   _("Generic command for showing Ada-specific settings."),
14529                   &show_ada_list, "show ada ", 0, &showlist);
14530
14531   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14532                            &trust_pad_over_xvs, _("\
14533 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14534 Show whether an optimization trusting PAD types over XVS types is activated"),
14535                            _("\
14536 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14537 should normally trust the contents of PAD types, but certain older versions\n\
14538 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14539 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14540 work around this bug.  It is always safe to turn this option \"off\", but\n\
14541 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14542 this option to \"off\" unless necessary."),
14543                             NULL, NULL, &set_ada_list, &show_ada_list);
14544
14545   add_setshow_boolean_cmd ("print-signatures", class_vars,
14546                            &print_signatures, _("\
14547 Enable or disable the output of formal and return types for functions in the \
14548 overloads selection menu"), _("\
14549 Show whether the output of formal and return types for functions in the \
14550 overloads selection menu is activated"),
14551                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14552
14553   add_catch_command ("exception", _("\
14554 Catch Ada exceptions, when raised.\n\
14555 With an argument, catch only exceptions with the given name."),
14556                      catch_ada_exception_command,
14557                      NULL,
14558                      CATCH_PERMANENT,
14559                      CATCH_TEMPORARY);
14560
14561   add_catch_command ("handlers", _("\
14562 Catch Ada exceptions, when handled.\n\
14563 With an argument, catch only exceptions with the given name."),
14564                      catch_ada_handlers_command,
14565                      NULL,
14566                      CATCH_PERMANENT,
14567                      CATCH_TEMPORARY);
14568   add_catch_command ("assert", _("\
14569 Catch failed Ada assertions, when raised.\n\
14570 With an argument, catch only exceptions with the given name."),
14571                      catch_assert_command,
14572                      NULL,
14573                      CATCH_PERMANENT,
14574                      CATCH_TEMPORARY);
14575
14576   varsize_limit = 65536;
14577   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14578                             &varsize_limit, _("\
14579 Set the maximum number of bytes allowed in a variable-size object."), _("\
14580 Show the maximum number of bytes allowed in a variable-size object."), _("\
14581 Attempts to access an object whose size is not a compile-time constant\n\
14582 and exceeds this limit will cause an error."),
14583                             NULL, NULL, &setlist, &showlist);
14584
14585   add_info ("exceptions", info_exceptions_command,
14586             _("\
14587 List all Ada exception names.\n\
14588 If a regular expression is passed as an argument, only those matching\n\
14589 the regular expression are listed."));
14590
14591   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14592                   _("Set Ada maintenance-related variables."),
14593                   &maint_set_ada_cmdlist, "maintenance set ada ",
14594                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14595
14596   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14597                   _("Show Ada maintenance-related variables"),
14598                   &maint_show_ada_cmdlist, "maintenance show ada ",
14599                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14600
14601   add_setshow_boolean_cmd
14602     ("ignore-descriptive-types", class_maintenance,
14603      &ada_ignore_descriptive_types_p,
14604      _("Set whether descriptive types generated by GNAT should be ignored."),
14605      _("Show whether descriptive types generated by GNAT should be ignored."),
14606      _("\
14607 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14608 DWARF attribute."),
14609      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14610
14611   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14612                                            NULL, xcalloc, xfree);
14613
14614   /* The ada-lang observers.  */
14615   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14616   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14617   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14618
14619   /* Setup various context-specific data.  */
14620   ada_inferior_data
14621     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14622   ada_pspace_data_handle
14623     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14624 }