[gdb/Ada] slices of arrays with dynamic strides
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observer.h"
52 #include "vec.h"
53 #include "stack.h"
54 #include "gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66
67 /* Define whether or not the C operator '/' truncates towards zero for
68    differently signed operands (truncation direction is undefined in C).
69    Copied from valarith.c.  */
70
71 #ifndef TRUNCATION_TOWARDS_ZERO
72 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
73 #endif
74
75 static struct type *desc_base_type (struct type *);
76
77 static struct type *desc_bounds_type (struct type *);
78
79 static struct value *desc_bounds (struct value *);
80
81 static int fat_pntr_bounds_bitpos (struct type *);
82
83 static int fat_pntr_bounds_bitsize (struct type *);
84
85 static struct type *desc_data_target_type (struct type *);
86
87 static struct value *desc_data (struct value *);
88
89 static int fat_pntr_data_bitpos (struct type *);
90
91 static int fat_pntr_data_bitsize (struct type *);
92
93 static struct value *desc_one_bound (struct value *, int, int);
94
95 static int desc_bound_bitpos (struct type *, int, int);
96
97 static int desc_bound_bitsize (struct type *, int, int);
98
99 static struct type *desc_index_type (struct type *, int);
100
101 static int desc_arity (struct type *);
102
103 static int ada_type_match (struct type *, struct type *, int);
104
105 static int ada_args_match (struct symbol *, struct value **, int);
106
107 static struct value *make_array_descriptor (struct type *, struct value *);
108
109 static void ada_add_block_symbols (struct obstack *,
110                                    const struct block *,
111                                    const lookup_name_info &lookup_name,
112                                    domain_enum, struct objfile *);
113
114 static void ada_add_all_symbols (struct obstack *, const struct block *,
115                                  const lookup_name_info &lookup_name,
116                                  domain_enum, int, int *);
117
118 static int is_nonfunction (struct block_symbol *, int);
119
120 static void add_defn_to_vec (struct obstack *, struct symbol *,
121                              const struct block *);
122
123 static int num_defns_collected (struct obstack *);
124
125 static struct block_symbol *defns_collected (struct obstack *, int);
126
127 static struct value *resolve_subexp (expression_up *, int *, int,
128                                      struct type *);
129
130 static void replace_operator_with_call (expression_up *, int, int, int,
131                                         struct symbol *, const struct block *);
132
133 static int possible_user_operator_p (enum exp_opcode, struct value **);
134
135 static const char *ada_op_name (enum exp_opcode);
136
137 static const char *ada_decoded_op_name (enum exp_opcode);
138
139 static int numeric_type_p (struct type *);
140
141 static int integer_type_p (struct type *);
142
143 static int scalar_type_p (struct type *);
144
145 static int discrete_type_p (struct type *);
146
147 static enum ada_renaming_category parse_old_style_renaming (struct type *,
148                                                             const char **,
149                                                             int *,
150                                                             const char **);
151
152 static struct symbol *find_old_style_renaming_symbol (const char *,
153                                                       const struct block *);
154
155 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
156                                                 int, int);
157
158 static struct value *evaluate_subexp_type (struct expression *, int *);
159
160 static struct type *ada_find_parallel_type_with_name (struct type *,
161                                                       const char *);
162
163 static int is_dynamic_field (struct type *, int);
164
165 static struct type *to_fixed_variant_branch_type (struct type *,
166                                                   const gdb_byte *,
167                                                   CORE_ADDR, struct value *);
168
169 static struct type *to_fixed_array_type (struct type *, struct value *, int);
170
171 static struct type *to_fixed_range_type (struct type *, struct value *);
172
173 static struct type *to_static_fixed_type (struct type *);
174 static struct type *static_unwrap_type (struct type *type);
175
176 static struct value *unwrap_value (struct value *);
177
178 static struct type *constrained_packed_array_type (struct type *, long *);
179
180 static struct type *decode_constrained_packed_array_type (struct type *);
181
182 static long decode_packed_array_bitsize (struct type *);
183
184 static struct value *decode_constrained_packed_array (struct value *);
185
186 static int ada_is_packed_array_type  (struct type *);
187
188 static int ada_is_unconstrained_packed_array_type (struct type *);
189
190 static struct value *value_subscript_packed (struct value *, int,
191                                              struct value **);
192
193 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196                                                 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217                                        domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220                                               struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223                                                 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226                               struct type **, int *, int *, int *, int *);
227
228 static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
229                                                 struct value *);
230
231 static int ada_resolve_function (struct block_symbol *, int,
232                                  struct value **, int, const char *,
233                                  struct type *);
234
235 static int ada_is_direct_array_type (struct type *);
236
237 static void ada_language_arch_info (struct gdbarch *,
238                                     struct language_arch_info *);
239
240 static struct value *ada_index_struct_field (int, struct value *, int,
241                                              struct type *);
242
243 static struct value *assign_aggregate (struct value *, struct value *, 
244                                        struct expression *,
245                                        int *, enum noside);
246
247 static void aggregate_assign_from_choices (struct value *, struct value *, 
248                                            struct expression *,
249                                            int *, LONGEST *, int *,
250                                            int, LONGEST, LONGEST);
251
252 static void aggregate_assign_positional (struct value *, struct value *,
253                                          struct expression *,
254                                          int *, LONGEST *, int *, int,
255                                          LONGEST, LONGEST);
256
257
258 static void aggregate_assign_others (struct value *, struct value *,
259                                      struct expression *,
260                                      int *, LONGEST *, int, LONGEST, LONGEST);
261
262
263 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
264
265
266 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
267                                           int *, enum noside);
268
269 static void ada_forward_operator_length (struct expression *, int, int *,
270                                          int *);
271
272 static struct type *ada_find_any_type (const char *name);
273
274 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
275   (const lookup_name_info &lookup_name);
276
277 \f
278
279 /* The result of a symbol lookup to be stored in our symbol cache.  */
280
281 struct cache_entry
282 {
283   /* The name used to perform the lookup.  */
284   const char *name;
285   /* The namespace used during the lookup.  */
286   domain_enum domain;
287   /* The symbol returned by the lookup, or NULL if no matching symbol
288      was found.  */
289   struct symbol *sym;
290   /* The block where the symbol was found, or NULL if no matching
291      symbol was found.  */
292   const struct block *block;
293   /* A pointer to the next entry with the same hash.  */
294   struct cache_entry *next;
295 };
296
297 /* The Ada symbol cache, used to store the result of Ada-mode symbol
298    lookups in the course of executing the user's commands.
299
300    The cache is implemented using a simple, fixed-sized hash.
301    The size is fixed on the grounds that there are not likely to be
302    all that many symbols looked up during any given session, regardless
303    of the size of the symbol table.  If we decide to go to a resizable
304    table, let's just use the stuff from libiberty instead.  */
305
306 #define HASH_SIZE 1009
307
308 struct ada_symbol_cache
309 {
310   /* An obstack used to store the entries in our cache.  */
311   struct obstack cache_space;
312
313   /* The root of the hash table used to implement our symbol cache.  */
314   struct cache_entry *root[HASH_SIZE];
315 };
316
317 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
318
319 /* Maximum-sized dynamic type.  */
320 static unsigned int varsize_limit;
321
322 static const char ada_completer_word_break_characters[] =
323 #ifdef VMS
324   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
325 #else
326   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
327 #endif
328
329 /* The name of the symbol to use to get the name of the main subprogram.  */
330 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
331   = "__gnat_ada_main_program_name";
332
333 /* Limit on the number of warnings to raise per expression evaluation.  */
334 static int warning_limit = 2;
335
336 /* Number of warning messages issued; reset to 0 by cleanups after
337    expression evaluation.  */
338 static int warnings_issued = 0;
339
340 static const char *known_runtime_file_name_patterns[] = {
341   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
342 };
343
344 static const char *known_auxiliary_function_name_patterns[] = {
345   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
346 };
347
348 /* Maintenance-related settings for this module.  */
349
350 static struct cmd_list_element *maint_set_ada_cmdlist;
351 static struct cmd_list_element *maint_show_ada_cmdlist;
352
353 /* Implement the "maintenance set ada" (prefix) command.  */
354
355 static void
356 maint_set_ada_cmd (const char *args, int from_tty)
357 {
358   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
359              gdb_stdout);
360 }
361
362 /* Implement the "maintenance show ada" (prefix) command.  */
363
364 static void
365 maint_show_ada_cmd (const char *args, int from_tty)
366 {
367   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
368 }
369
370 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
371
372 static int ada_ignore_descriptive_types_p = 0;
373
374                         /* Inferior-specific data.  */
375
376 /* Per-inferior data for this module.  */
377
378 struct ada_inferior_data
379 {
380   /* The ada__tags__type_specific_data type, which is used when decoding
381      tagged types.  With older versions of GNAT, this type was directly
382      accessible through a component ("tsd") in the object tag.  But this
383      is no longer the case, so we cache it for each inferior.  */
384   struct type *tsd_type;
385
386   /* The exception_support_info data.  This data is used to determine
387      how to implement support for Ada exception catchpoints in a given
388      inferior.  */
389   const struct exception_support_info *exception_info;
390 };
391
392 /* Our key to this module's inferior data.  */
393 static const struct inferior_data *ada_inferior_data;
394
395 /* A cleanup routine for our inferior data.  */
396 static void
397 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
398 {
399   struct ada_inferior_data *data;
400
401   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
402   if (data != NULL)
403     xfree (data);
404 }
405
406 /* Return our inferior data for the given inferior (INF).
407
408    This function always returns a valid pointer to an allocated
409    ada_inferior_data structure.  If INF's inferior data has not
410    been previously set, this functions creates a new one with all
411    fields set to zero, sets INF's inferior to it, and then returns
412    a pointer to that newly allocated ada_inferior_data.  */
413
414 static struct ada_inferior_data *
415 get_ada_inferior_data (struct inferior *inf)
416 {
417   struct ada_inferior_data *data;
418
419   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
420   if (data == NULL)
421     {
422       data = XCNEW (struct ada_inferior_data);
423       set_inferior_data (inf, ada_inferior_data, data);
424     }
425
426   return data;
427 }
428
429 /* Perform all necessary cleanups regarding our module's inferior data
430    that is required after the inferior INF just exited.  */
431
432 static void
433 ada_inferior_exit (struct inferior *inf)
434 {
435   ada_inferior_data_cleanup (inf, NULL);
436   set_inferior_data (inf, ada_inferior_data, NULL);
437 }
438
439
440                         /* program-space-specific data.  */
441
442 /* This module's per-program-space data.  */
443 struct ada_pspace_data
444 {
445   /* The Ada symbol cache.  */
446   struct ada_symbol_cache *sym_cache;
447 };
448
449 /* Key to our per-program-space data.  */
450 static const struct program_space_data *ada_pspace_data_handle;
451
452 /* Return this module's data for the given program space (PSPACE).
453    If not is found, add a zero'ed one now.
454
455    This function always returns a valid object.  */
456
457 static struct ada_pspace_data *
458 get_ada_pspace_data (struct program_space *pspace)
459 {
460   struct ada_pspace_data *data;
461
462   data = ((struct ada_pspace_data *)
463           program_space_data (pspace, ada_pspace_data_handle));
464   if (data == NULL)
465     {
466       data = XCNEW (struct ada_pspace_data);
467       set_program_space_data (pspace, ada_pspace_data_handle, data);
468     }
469
470   return data;
471 }
472
473 /* The cleanup callback for this module's per-program-space data.  */
474
475 static void
476 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
477 {
478   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
479
480   if (pspace_data->sym_cache != NULL)
481     ada_free_symbol_cache (pspace_data->sym_cache);
482   xfree (pspace_data);
483 }
484
485                         /* Utilities */
486
487 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
488    all typedef layers have been peeled.  Otherwise, return TYPE.
489
490    Normally, we really expect a typedef type to only have 1 typedef layer.
491    In other words, we really expect the target type of a typedef type to be
492    a non-typedef type.  This is particularly true for Ada units, because
493    the language does not have a typedef vs not-typedef distinction.
494    In that respect, the Ada compiler has been trying to eliminate as many
495    typedef definitions in the debugging information, since they generally
496    do not bring any extra information (we still use typedef under certain
497    circumstances related mostly to the GNAT encoding).
498
499    Unfortunately, we have seen situations where the debugging information
500    generated by the compiler leads to such multiple typedef layers.  For
501    instance, consider the following example with stabs:
502
503      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
504      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
505
506    This is an error in the debugging information which causes type
507    pck__float_array___XUP to be defined twice, and the second time,
508    it is defined as a typedef of a typedef.
509
510    This is on the fringe of legality as far as debugging information is
511    concerned, and certainly unexpected.  But it is easy to handle these
512    situations correctly, so we can afford to be lenient in this case.  */
513
514 static struct type *
515 ada_typedef_target_type (struct type *type)
516 {
517   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
518     type = TYPE_TARGET_TYPE (type);
519   return type;
520 }
521
522 /* Given DECODED_NAME a string holding a symbol name in its
523    decoded form (ie using the Ada dotted notation), returns
524    its unqualified name.  */
525
526 static const char *
527 ada_unqualified_name (const char *decoded_name)
528 {
529   const char *result;
530   
531   /* If the decoded name starts with '<', it means that the encoded
532      name does not follow standard naming conventions, and thus that
533      it is not your typical Ada symbol name.  Trying to unqualify it
534      is therefore pointless and possibly erroneous.  */
535   if (decoded_name[0] == '<')
536     return decoded_name;
537
538   result = strrchr (decoded_name, '.');
539   if (result != NULL)
540     result++;                   /* Skip the dot...  */
541   else
542     result = decoded_name;
543
544   return result;
545 }
546
547 /* Return a string starting with '<', followed by STR, and '>'.
548    The result is good until the next call.  */
549
550 static char *
551 add_angle_brackets (const char *str)
552 {
553   static char *result = NULL;
554
555   xfree (result);
556   result = xstrprintf ("<%s>", str);
557   return result;
558 }
559
560 static const char *
561 ada_get_gdb_completer_word_break_characters (void)
562 {
563   return ada_completer_word_break_characters;
564 }
565
566 /* Print an array element index using the Ada syntax.  */
567
568 static void
569 ada_print_array_index (struct value *index_value, struct ui_file *stream,
570                        const struct value_print_options *options)
571 {
572   LA_VALUE_PRINT (index_value, stream, options);
573   fprintf_filtered (stream, " => ");
574 }
575
576 /* Assuming VECT points to an array of *SIZE objects of size
577    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
578    updating *SIZE as necessary and returning the (new) array.  */
579
580 void *
581 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
582 {
583   if (*size < min_size)
584     {
585       *size *= 2;
586       if (*size < min_size)
587         *size = min_size;
588       vect = xrealloc (vect, *size * element_size);
589     }
590   return vect;
591 }
592
593 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
594    suffix of FIELD_NAME beginning "___".  */
595
596 static int
597 field_name_match (const char *field_name, const char *target)
598 {
599   int len = strlen (target);
600
601   return
602     (strncmp (field_name, target, len) == 0
603      && (field_name[len] == '\0'
604          || (startswith (field_name + len, "___")
605              && strcmp (field_name + strlen (field_name) - 6,
606                         "___XVN") != 0)));
607 }
608
609
610 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
611    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
612    and return its index.  This function also handles fields whose name
613    have ___ suffixes because the compiler sometimes alters their name
614    by adding such a suffix to represent fields with certain constraints.
615    If the field could not be found, return a negative number if
616    MAYBE_MISSING is set.  Otherwise raise an error.  */
617
618 int
619 ada_get_field_index (const struct type *type, const char *field_name,
620                      int maybe_missing)
621 {
622   int fieldno;
623   struct type *struct_type = check_typedef ((struct type *) type);
624
625   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
626     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
627       return fieldno;
628
629   if (!maybe_missing)
630     error (_("Unable to find field %s in struct %s.  Aborting"),
631            field_name, TYPE_NAME (struct_type));
632
633   return -1;
634 }
635
636 /* The length of the prefix of NAME prior to any "___" suffix.  */
637
638 int
639 ada_name_prefix_len (const char *name)
640 {
641   if (name == NULL)
642     return 0;
643   else
644     {
645       const char *p = strstr (name, "___");
646
647       if (p == NULL)
648         return strlen (name);
649       else
650         return p - name;
651     }
652 }
653
654 /* Return non-zero if SUFFIX is a suffix of STR.
655    Return zero if STR is null.  */
656
657 static int
658 is_suffix (const char *str, const char *suffix)
659 {
660   int len1, len2;
661
662   if (str == NULL)
663     return 0;
664   len1 = strlen (str);
665   len2 = strlen (suffix);
666   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
667 }
668
669 /* The contents of value VAL, treated as a value of type TYPE.  The
670    result is an lval in memory if VAL is.  */
671
672 static struct value *
673 coerce_unspec_val_to_type (struct value *val, struct type *type)
674 {
675   type = ada_check_typedef (type);
676   if (value_type (val) == type)
677     return val;
678   else
679     {
680       struct value *result;
681
682       /* Make sure that the object size is not unreasonable before
683          trying to allocate some memory for it.  */
684       ada_ensure_varsize_limit (type);
685
686       if (value_lazy (val)
687           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
688         result = allocate_value_lazy (type);
689       else
690         {
691           result = allocate_value (type);
692           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
693         }
694       set_value_component_location (result, val);
695       set_value_bitsize (result, value_bitsize (val));
696       set_value_bitpos (result, value_bitpos (val));
697       set_value_address (result, value_address (val));
698       return result;
699     }
700 }
701
702 static const gdb_byte *
703 cond_offset_host (const gdb_byte *valaddr, long offset)
704 {
705   if (valaddr == NULL)
706     return NULL;
707   else
708     return valaddr + offset;
709 }
710
711 static CORE_ADDR
712 cond_offset_target (CORE_ADDR address, long offset)
713 {
714   if (address == 0)
715     return 0;
716   else
717     return address + offset;
718 }
719
720 /* Issue a warning (as for the definition of warning in utils.c, but
721    with exactly one argument rather than ...), unless the limit on the
722    number of warnings has passed during the evaluation of the current
723    expression.  */
724
725 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
726    provided by "complaint".  */
727 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
728
729 static void
730 lim_warning (const char *format, ...)
731 {
732   va_list args;
733
734   va_start (args, format);
735   warnings_issued += 1;
736   if (warnings_issued <= warning_limit)
737     vwarning (format, args);
738
739   va_end (args);
740 }
741
742 /* Issue an error if the size of an object of type T is unreasonable,
743    i.e. if it would be a bad idea to allocate a value of this type in
744    GDB.  */
745
746 void
747 ada_ensure_varsize_limit (const struct type *type)
748 {
749   if (TYPE_LENGTH (type) > varsize_limit)
750     error (_("object size is larger than varsize-limit"));
751 }
752
753 /* Maximum value of a SIZE-byte signed integer type.  */
754 static LONGEST
755 max_of_size (int size)
756 {
757   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
758
759   return top_bit | (top_bit - 1);
760 }
761
762 /* Minimum value of a SIZE-byte signed integer type.  */
763 static LONGEST
764 min_of_size (int size)
765 {
766   return -max_of_size (size) - 1;
767 }
768
769 /* Maximum value of a SIZE-byte unsigned integer type.  */
770 static ULONGEST
771 umax_of_size (int size)
772 {
773   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
774
775   return top_bit | (top_bit - 1);
776 }
777
778 /* Maximum value of integral type T, as a signed quantity.  */
779 static LONGEST
780 max_of_type (struct type *t)
781 {
782   if (TYPE_UNSIGNED (t))
783     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
784   else
785     return max_of_size (TYPE_LENGTH (t));
786 }
787
788 /* Minimum value of integral type T, as a signed quantity.  */
789 static LONGEST
790 min_of_type (struct type *t)
791 {
792   if (TYPE_UNSIGNED (t)) 
793     return 0;
794   else
795     return min_of_size (TYPE_LENGTH (t));
796 }
797
798 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
799 LONGEST
800 ada_discrete_type_high_bound (struct type *type)
801 {
802   type = resolve_dynamic_type (type, NULL, 0);
803   switch (TYPE_CODE (type))
804     {
805     case TYPE_CODE_RANGE:
806       return TYPE_HIGH_BOUND (type);
807     case TYPE_CODE_ENUM:
808       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
809     case TYPE_CODE_BOOL:
810       return 1;
811     case TYPE_CODE_CHAR:
812     case TYPE_CODE_INT:
813       return max_of_type (type);
814     default:
815       error (_("Unexpected type in ada_discrete_type_high_bound."));
816     }
817 }
818
819 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
820 LONGEST
821 ada_discrete_type_low_bound (struct type *type)
822 {
823   type = resolve_dynamic_type (type, NULL, 0);
824   switch (TYPE_CODE (type))
825     {
826     case TYPE_CODE_RANGE:
827       return TYPE_LOW_BOUND (type);
828     case TYPE_CODE_ENUM:
829       return TYPE_FIELD_ENUMVAL (type, 0);
830     case TYPE_CODE_BOOL:
831       return 0;
832     case TYPE_CODE_CHAR:
833     case TYPE_CODE_INT:
834       return min_of_type (type);
835     default:
836       error (_("Unexpected type in ada_discrete_type_low_bound."));
837     }
838 }
839
840 /* The identity on non-range types.  For range types, the underlying
841    non-range scalar type.  */
842
843 static struct type *
844 get_base_type (struct type *type)
845 {
846   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
847     {
848       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
849         return type;
850       type = TYPE_TARGET_TYPE (type);
851     }
852   return type;
853 }
854
855 /* Return a decoded version of the given VALUE.  This means returning
856    a value whose type is obtained by applying all the GNAT-specific
857    encondings, making the resulting type a static but standard description
858    of the initial type.  */
859
860 struct value *
861 ada_get_decoded_value (struct value *value)
862 {
863   struct type *type = ada_check_typedef (value_type (value));
864
865   if (ada_is_array_descriptor_type (type)
866       || (ada_is_constrained_packed_array_type (type)
867           && TYPE_CODE (type) != TYPE_CODE_PTR))
868     {
869       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
870         value = ada_coerce_to_simple_array_ptr (value);
871       else
872         value = ada_coerce_to_simple_array (value);
873     }
874   else
875     value = ada_to_fixed_value (value);
876
877   return value;
878 }
879
880 /* Same as ada_get_decoded_value, but with the given TYPE.
881    Because there is no associated actual value for this type,
882    the resulting type might be a best-effort approximation in
883    the case of dynamic types.  */
884
885 struct type *
886 ada_get_decoded_type (struct type *type)
887 {
888   type = to_static_fixed_type (type);
889   if (ada_is_constrained_packed_array_type (type))
890     type = ada_coerce_to_simple_array_type (type);
891   return type;
892 }
893
894 \f
895
896                                 /* Language Selection */
897
898 /* If the main program is in Ada, return language_ada, otherwise return LANG
899    (the main program is in Ada iif the adainit symbol is found).  */
900
901 enum language
902 ada_update_initial_language (enum language lang)
903 {
904   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
905                              (struct objfile *) NULL).minsym != NULL)
906     return language_ada;
907
908   return lang;
909 }
910
911 /* If the main procedure is written in Ada, then return its name.
912    The result is good until the next call.  Return NULL if the main
913    procedure doesn't appear to be in Ada.  */
914
915 char *
916 ada_main_name (void)
917 {
918   struct bound_minimal_symbol msym;
919   static char *main_program_name = NULL;
920
921   /* For Ada, the name of the main procedure is stored in a specific
922      string constant, generated by the binder.  Look for that symbol,
923      extract its address, and then read that string.  If we didn't find
924      that string, then most probably the main procedure is not written
925      in Ada.  */
926   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
927
928   if (msym.minsym != NULL)
929     {
930       CORE_ADDR main_program_name_addr;
931       int err_code;
932
933       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
934       if (main_program_name_addr == 0)
935         error (_("Invalid address for Ada main program name."));
936
937       xfree (main_program_name);
938       target_read_string (main_program_name_addr, &main_program_name,
939                           1024, &err_code);
940
941       if (err_code != 0)
942         return NULL;
943       return main_program_name;
944     }
945
946   /* The main procedure doesn't seem to be in Ada.  */
947   return NULL;
948 }
949 \f
950                                 /* Symbols */
951
952 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
953    of NULLs.  */
954
955 const struct ada_opname_map ada_opname_table[] = {
956   {"Oadd", "\"+\"", BINOP_ADD},
957   {"Osubtract", "\"-\"", BINOP_SUB},
958   {"Omultiply", "\"*\"", BINOP_MUL},
959   {"Odivide", "\"/\"", BINOP_DIV},
960   {"Omod", "\"mod\"", BINOP_MOD},
961   {"Orem", "\"rem\"", BINOP_REM},
962   {"Oexpon", "\"**\"", BINOP_EXP},
963   {"Olt", "\"<\"", BINOP_LESS},
964   {"Ole", "\"<=\"", BINOP_LEQ},
965   {"Ogt", "\">\"", BINOP_GTR},
966   {"Oge", "\">=\"", BINOP_GEQ},
967   {"Oeq", "\"=\"", BINOP_EQUAL},
968   {"One", "\"/=\"", BINOP_NOTEQUAL},
969   {"Oand", "\"and\"", BINOP_BITWISE_AND},
970   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
971   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
972   {"Oconcat", "\"&\"", BINOP_CONCAT},
973   {"Oabs", "\"abs\"", UNOP_ABS},
974   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
975   {"Oadd", "\"+\"", UNOP_PLUS},
976   {"Osubtract", "\"-\"", UNOP_NEG},
977   {NULL, NULL}
978 };
979
980 /* The "encoded" form of DECODED, according to GNAT conventions.  The
981    result is valid until the next call to ada_encode.  If
982    THROW_ERRORS, throw an error if invalid operator name is found.
983    Otherwise, return NULL in that case.  */
984
985 static char *
986 ada_encode_1 (const char *decoded, bool throw_errors)
987 {
988   static char *encoding_buffer = NULL;
989   static size_t encoding_buffer_size = 0;
990   const char *p;
991   int k;
992
993   if (decoded == NULL)
994     return NULL;
995
996   GROW_VECT (encoding_buffer, encoding_buffer_size,
997              2 * strlen (decoded) + 10);
998
999   k = 0;
1000   for (p = decoded; *p != '\0'; p += 1)
1001     {
1002       if (*p == '.')
1003         {
1004           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1005           k += 2;
1006         }
1007       else if (*p == '"')
1008         {
1009           const struct ada_opname_map *mapping;
1010
1011           for (mapping = ada_opname_table;
1012                mapping->encoded != NULL
1013                && !startswith (p, mapping->decoded); mapping += 1)
1014             ;
1015           if (mapping->encoded == NULL)
1016             {
1017               if (throw_errors)
1018                 error (_("invalid Ada operator name: %s"), p);
1019               else
1020                 return NULL;
1021             }
1022           strcpy (encoding_buffer + k, mapping->encoded);
1023           k += strlen (mapping->encoded);
1024           break;
1025         }
1026       else
1027         {
1028           encoding_buffer[k] = *p;
1029           k += 1;
1030         }
1031     }
1032
1033   encoding_buffer[k] = '\0';
1034   return encoding_buffer;
1035 }
1036
1037 /* The "encoded" form of DECODED, according to GNAT conventions.
1038    The result is valid until the next call to ada_encode.  */
1039
1040 char *
1041 ada_encode (const char *decoded)
1042 {
1043   return ada_encode_1 (decoded, true);
1044 }
1045
1046 /* Return NAME folded to lower case, or, if surrounded by single
1047    quotes, unfolded, but with the quotes stripped away.  Result good
1048    to next call.  */
1049
1050 char *
1051 ada_fold_name (const char *name)
1052 {
1053   static char *fold_buffer = NULL;
1054   static size_t fold_buffer_size = 0;
1055
1056   int len = strlen (name);
1057   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1058
1059   if (name[0] == '\'')
1060     {
1061       strncpy (fold_buffer, name + 1, len - 2);
1062       fold_buffer[len - 2] = '\000';
1063     }
1064   else
1065     {
1066       int i;
1067
1068       for (i = 0; i <= len; i += 1)
1069         fold_buffer[i] = tolower (name[i]);
1070     }
1071
1072   return fold_buffer;
1073 }
1074
1075 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1076
1077 static int
1078 is_lower_alphanum (const char c)
1079 {
1080   return (isdigit (c) || (isalpha (c) && islower (c)));
1081 }
1082
1083 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1084    This function saves in LEN the length of that same symbol name but
1085    without either of these suffixes:
1086      . .{DIGIT}+
1087      . ${DIGIT}+
1088      . ___{DIGIT}+
1089      . __{DIGIT}+.
1090
1091    These are suffixes introduced by the compiler for entities such as
1092    nested subprogram for instance, in order to avoid name clashes.
1093    They do not serve any purpose for the debugger.  */
1094
1095 static void
1096 ada_remove_trailing_digits (const char *encoded, int *len)
1097 {
1098   if (*len > 1 && isdigit (encoded[*len - 1]))
1099     {
1100       int i = *len - 2;
1101
1102       while (i > 0 && isdigit (encoded[i]))
1103         i--;
1104       if (i >= 0 && encoded[i] == '.')
1105         *len = i;
1106       else if (i >= 0 && encoded[i] == '$')
1107         *len = i;
1108       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1109         *len = i - 2;
1110       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1111         *len = i - 1;
1112     }
1113 }
1114
1115 /* Remove the suffix introduced by the compiler for protected object
1116    subprograms.  */
1117
1118 static void
1119 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1120 {
1121   /* Remove trailing N.  */
1122
1123   /* Protected entry subprograms are broken into two
1124      separate subprograms: The first one is unprotected, and has
1125      a 'N' suffix; the second is the protected version, and has
1126      the 'P' suffix.  The second calls the first one after handling
1127      the protection.  Since the P subprograms are internally generated,
1128      we leave these names undecoded, giving the user a clue that this
1129      entity is internal.  */
1130
1131   if (*len > 1
1132       && encoded[*len - 1] == 'N'
1133       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1134     *len = *len - 1;
1135 }
1136
1137 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1138
1139 static void
1140 ada_remove_Xbn_suffix (const char *encoded, int *len)
1141 {
1142   int i = *len - 1;
1143
1144   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1145     i--;
1146
1147   if (encoded[i] != 'X')
1148     return;
1149
1150   if (i == 0)
1151     return;
1152
1153   if (isalnum (encoded[i-1]))
1154     *len = i;
1155 }
1156
1157 /* If ENCODED follows the GNAT entity encoding conventions, then return
1158    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1159    replaced by ENCODED.
1160
1161    The resulting string is valid until the next call of ada_decode.
1162    If the string is unchanged by decoding, the original string pointer
1163    is returned.  */
1164
1165 const char *
1166 ada_decode (const char *encoded)
1167 {
1168   int i, j;
1169   int len0;
1170   const char *p;
1171   char *decoded;
1172   int at_start_name;
1173   static char *decoding_buffer = NULL;
1174   static size_t decoding_buffer_size = 0;
1175
1176   /* The name of the Ada main procedure starts with "_ada_".
1177      This prefix is not part of the decoded name, so skip this part
1178      if we see this prefix.  */
1179   if (startswith (encoded, "_ada_"))
1180     encoded += 5;
1181
1182   /* If the name starts with '_', then it is not a properly encoded
1183      name, so do not attempt to decode it.  Similarly, if the name
1184      starts with '<', the name should not be decoded.  */
1185   if (encoded[0] == '_' || encoded[0] == '<')
1186     goto Suppress;
1187
1188   len0 = strlen (encoded);
1189
1190   ada_remove_trailing_digits (encoded, &len0);
1191   ada_remove_po_subprogram_suffix (encoded, &len0);
1192
1193   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1194      the suffix is located before the current "end" of ENCODED.  We want
1195      to avoid re-matching parts of ENCODED that have previously been
1196      marked as discarded (by decrementing LEN0).  */
1197   p = strstr (encoded, "___");
1198   if (p != NULL && p - encoded < len0 - 3)
1199     {
1200       if (p[3] == 'X')
1201         len0 = p - encoded;
1202       else
1203         goto Suppress;
1204     }
1205
1206   /* Remove any trailing TKB suffix.  It tells us that this symbol
1207      is for the body of a task, but that information does not actually
1208      appear in the decoded name.  */
1209
1210   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1211     len0 -= 3;
1212
1213   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1214      from the TKB suffix because it is used for non-anonymous task
1215      bodies.  */
1216
1217   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1218     len0 -= 2;
1219
1220   /* Remove trailing "B" suffixes.  */
1221   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1222
1223   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1224     len0 -= 1;
1225
1226   /* Make decoded big enough for possible expansion by operator name.  */
1227
1228   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1229   decoded = decoding_buffer;
1230
1231   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1232
1233   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1234     {
1235       i = len0 - 2;
1236       while ((i >= 0 && isdigit (encoded[i]))
1237              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1238         i -= 1;
1239       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1240         len0 = i - 1;
1241       else if (encoded[i] == '$')
1242         len0 = i;
1243     }
1244
1245   /* The first few characters that are not alphabetic are not part
1246      of any encoding we use, so we can copy them over verbatim.  */
1247
1248   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1249     decoded[j] = encoded[i];
1250
1251   at_start_name = 1;
1252   while (i < len0)
1253     {
1254       /* Is this a symbol function?  */
1255       if (at_start_name && encoded[i] == 'O')
1256         {
1257           int k;
1258
1259           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1260             {
1261               int op_len = strlen (ada_opname_table[k].encoded);
1262               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1263                             op_len - 1) == 0)
1264                   && !isalnum (encoded[i + op_len]))
1265                 {
1266                   strcpy (decoded + j, ada_opname_table[k].decoded);
1267                   at_start_name = 0;
1268                   i += op_len;
1269                   j += strlen (ada_opname_table[k].decoded);
1270                   break;
1271                 }
1272             }
1273           if (ada_opname_table[k].encoded != NULL)
1274             continue;
1275         }
1276       at_start_name = 0;
1277
1278       /* Replace "TK__" with "__", which will eventually be translated
1279          into "." (just below).  */
1280
1281       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1282         i += 2;
1283
1284       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1285          be translated into "." (just below).  These are internal names
1286          generated for anonymous blocks inside which our symbol is nested.  */
1287
1288       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1289           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1290           && isdigit (encoded [i+4]))
1291         {
1292           int k = i + 5;
1293           
1294           while (k < len0 && isdigit (encoded[k]))
1295             k++;  /* Skip any extra digit.  */
1296
1297           /* Double-check that the "__B_{DIGITS}+" sequence we found
1298              is indeed followed by "__".  */
1299           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1300             i = k;
1301         }
1302
1303       /* Remove _E{DIGITS}+[sb] */
1304
1305       /* Just as for protected object subprograms, there are 2 categories
1306          of subprograms created by the compiler for each entry.  The first
1307          one implements the actual entry code, and has a suffix following
1308          the convention above; the second one implements the barrier and
1309          uses the same convention as above, except that the 'E' is replaced
1310          by a 'B'.
1311
1312          Just as above, we do not decode the name of barrier functions
1313          to give the user a clue that the code he is debugging has been
1314          internally generated.  */
1315
1316       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1317           && isdigit (encoded[i+2]))
1318         {
1319           int k = i + 3;
1320
1321           while (k < len0 && isdigit (encoded[k]))
1322             k++;
1323
1324           if (k < len0
1325               && (encoded[k] == 'b' || encoded[k] == 's'))
1326             {
1327               k++;
1328               /* Just as an extra precaution, make sure that if this
1329                  suffix is followed by anything else, it is a '_'.
1330                  Otherwise, we matched this sequence by accident.  */
1331               if (k == len0
1332                   || (k < len0 && encoded[k] == '_'))
1333                 i = k;
1334             }
1335         }
1336
1337       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1338          the GNAT front-end in protected object subprograms.  */
1339
1340       if (i < len0 + 3
1341           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1342         {
1343           /* Backtrack a bit up until we reach either the begining of
1344              the encoded name, or "__".  Make sure that we only find
1345              digits or lowercase characters.  */
1346           const char *ptr = encoded + i - 1;
1347
1348           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1349             ptr--;
1350           if (ptr < encoded
1351               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1352             i++;
1353         }
1354
1355       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1356         {
1357           /* This is a X[bn]* sequence not separated from the previous
1358              part of the name with a non-alpha-numeric character (in other
1359              words, immediately following an alpha-numeric character), then
1360              verify that it is placed at the end of the encoded name.  If
1361              not, then the encoding is not valid and we should abort the
1362              decoding.  Otherwise, just skip it, it is used in body-nested
1363              package names.  */
1364           do
1365             i += 1;
1366           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1367           if (i < len0)
1368             goto Suppress;
1369         }
1370       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1371         {
1372          /* Replace '__' by '.'.  */
1373           decoded[j] = '.';
1374           at_start_name = 1;
1375           i += 2;
1376           j += 1;
1377         }
1378       else
1379         {
1380           /* It's a character part of the decoded name, so just copy it
1381              over.  */
1382           decoded[j] = encoded[i];
1383           i += 1;
1384           j += 1;
1385         }
1386     }
1387   decoded[j] = '\000';
1388
1389   /* Decoded names should never contain any uppercase character.
1390      Double-check this, and abort the decoding if we find one.  */
1391
1392   for (i = 0; decoded[i] != '\0'; i += 1)
1393     if (isupper (decoded[i]) || decoded[i] == ' ')
1394       goto Suppress;
1395
1396   if (strcmp (decoded, encoded) == 0)
1397     return encoded;
1398   else
1399     return decoded;
1400
1401 Suppress:
1402   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1403   decoded = decoding_buffer;
1404   if (encoded[0] == '<')
1405     strcpy (decoded, encoded);
1406   else
1407     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1408   return decoded;
1409
1410 }
1411
1412 /* Table for keeping permanent unique copies of decoded names.  Once
1413    allocated, names in this table are never released.  While this is a
1414    storage leak, it should not be significant unless there are massive
1415    changes in the set of decoded names in successive versions of a 
1416    symbol table loaded during a single session.  */
1417 static struct htab *decoded_names_store;
1418
1419 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1420    in the language-specific part of GSYMBOL, if it has not been
1421    previously computed.  Tries to save the decoded name in the same
1422    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1423    in any case, the decoded symbol has a lifetime at least that of
1424    GSYMBOL).
1425    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1426    const, but nevertheless modified to a semantically equivalent form
1427    when a decoded name is cached in it.  */
1428
1429 const char *
1430 ada_decode_symbol (const struct general_symbol_info *arg)
1431 {
1432   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1433   const char **resultp =
1434     &gsymbol->language_specific.demangled_name;
1435
1436   if (!gsymbol->ada_mangled)
1437     {
1438       const char *decoded = ada_decode (gsymbol->name);
1439       struct obstack *obstack = gsymbol->language_specific.obstack;
1440
1441       gsymbol->ada_mangled = 1;
1442
1443       if (obstack != NULL)
1444         *resultp
1445           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1446       else
1447         {
1448           /* Sometimes, we can't find a corresponding objfile, in
1449              which case, we put the result on the heap.  Since we only
1450              decode when needed, we hope this usually does not cause a
1451              significant memory leak (FIXME).  */
1452
1453           char **slot = (char **) htab_find_slot (decoded_names_store,
1454                                                   decoded, INSERT);
1455
1456           if (*slot == NULL)
1457             *slot = xstrdup (decoded);
1458           *resultp = *slot;
1459         }
1460     }
1461
1462   return *resultp;
1463 }
1464
1465 static char *
1466 ada_la_decode (const char *encoded, int options)
1467 {
1468   return xstrdup (ada_decode (encoded));
1469 }
1470
1471 /* Implement la_sniff_from_mangled_name for Ada.  */
1472
1473 static int
1474 ada_sniff_from_mangled_name (const char *mangled, char **out)
1475 {
1476   const char *demangled = ada_decode (mangled);
1477
1478   *out = NULL;
1479
1480   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1481     {
1482       /* Set the gsymbol language to Ada, but still return 0.
1483          Two reasons for that:
1484
1485          1. For Ada, we prefer computing the symbol's decoded name
1486          on the fly rather than pre-compute it, in order to save
1487          memory (Ada projects are typically very large).
1488
1489          2. There are some areas in the definition of the GNAT
1490          encoding where, with a bit of bad luck, we might be able
1491          to decode a non-Ada symbol, generating an incorrect
1492          demangled name (Eg: names ending with "TB" for instance
1493          are identified as task bodies and so stripped from
1494          the decoded name returned).
1495
1496          Returning 1, here, but not setting *DEMANGLED, helps us get a
1497          little bit of the best of both worlds.  Because we're last,
1498          we should not affect any of the other languages that were
1499          able to demangle the symbol before us; we get to correctly
1500          tag Ada symbols as such; and even if we incorrectly tagged a
1501          non-Ada symbol, which should be rare, any routing through the
1502          Ada language should be transparent (Ada tries to behave much
1503          like C/C++ with non-Ada symbols).  */
1504       return 1;
1505     }
1506
1507   return 0;
1508 }
1509
1510 \f
1511
1512                                 /* Arrays */
1513
1514 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1515    generated by the GNAT compiler to describe the index type used
1516    for each dimension of an array, check whether it follows the latest
1517    known encoding.  If not, fix it up to conform to the latest encoding.
1518    Otherwise, do nothing.  This function also does nothing if
1519    INDEX_DESC_TYPE is NULL.
1520
1521    The GNAT encoding used to describle the array index type evolved a bit.
1522    Initially, the information would be provided through the name of each
1523    field of the structure type only, while the type of these fields was
1524    described as unspecified and irrelevant.  The debugger was then expected
1525    to perform a global type lookup using the name of that field in order
1526    to get access to the full index type description.  Because these global
1527    lookups can be very expensive, the encoding was later enhanced to make
1528    the global lookup unnecessary by defining the field type as being
1529    the full index type description.
1530
1531    The purpose of this routine is to allow us to support older versions
1532    of the compiler by detecting the use of the older encoding, and by
1533    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1534    we essentially replace each field's meaningless type by the associated
1535    index subtype).  */
1536
1537 void
1538 ada_fixup_array_indexes_type (struct type *index_desc_type)
1539 {
1540   int i;
1541
1542   if (index_desc_type == NULL)
1543     return;
1544   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1545
1546   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1547      to check one field only, no need to check them all).  If not, return
1548      now.
1549
1550      If our INDEX_DESC_TYPE was generated using the older encoding,
1551      the field type should be a meaningless integer type whose name
1552      is not equal to the field name.  */
1553   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1554       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1555                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1556     return;
1557
1558   /* Fixup each field of INDEX_DESC_TYPE.  */
1559   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1560    {
1561      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1562      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1563
1564      if (raw_type)
1565        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1566    }
1567 }
1568
1569 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1570
1571 static const char *bound_name[] = {
1572   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1573   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1574 };
1575
1576 /* Maximum number of array dimensions we are prepared to handle.  */
1577
1578 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1579
1580
1581 /* The desc_* routines return primitive portions of array descriptors
1582    (fat pointers).  */
1583
1584 /* The descriptor or array type, if any, indicated by TYPE; removes
1585    level of indirection, if needed.  */
1586
1587 static struct type *
1588 desc_base_type (struct type *type)
1589 {
1590   if (type == NULL)
1591     return NULL;
1592   type = ada_check_typedef (type);
1593   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1594     type = ada_typedef_target_type (type);
1595
1596   if (type != NULL
1597       && (TYPE_CODE (type) == TYPE_CODE_PTR
1598           || TYPE_CODE (type) == TYPE_CODE_REF))
1599     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1600   else
1601     return type;
1602 }
1603
1604 /* True iff TYPE indicates a "thin" array pointer type.  */
1605
1606 static int
1607 is_thin_pntr (struct type *type)
1608 {
1609   return
1610     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1611     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1612 }
1613
1614 /* The descriptor type for thin pointer type TYPE.  */
1615
1616 static struct type *
1617 thin_descriptor_type (struct type *type)
1618 {
1619   struct type *base_type = desc_base_type (type);
1620
1621   if (base_type == NULL)
1622     return NULL;
1623   if (is_suffix (ada_type_name (base_type), "___XVE"))
1624     return base_type;
1625   else
1626     {
1627       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1628
1629       if (alt_type == NULL)
1630         return base_type;
1631       else
1632         return alt_type;
1633     }
1634 }
1635
1636 /* A pointer to the array data for thin-pointer value VAL.  */
1637
1638 static struct value *
1639 thin_data_pntr (struct value *val)
1640 {
1641   struct type *type = ada_check_typedef (value_type (val));
1642   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1643
1644   data_type = lookup_pointer_type (data_type);
1645
1646   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1647     return value_cast (data_type, value_copy (val));
1648   else
1649     return value_from_longest (data_type, value_address (val));
1650 }
1651
1652 /* True iff TYPE indicates a "thick" array pointer type.  */
1653
1654 static int
1655 is_thick_pntr (struct type *type)
1656 {
1657   type = desc_base_type (type);
1658   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1659           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1660 }
1661
1662 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1663    pointer to one, the type of its bounds data; otherwise, NULL.  */
1664
1665 static struct type *
1666 desc_bounds_type (struct type *type)
1667 {
1668   struct type *r;
1669
1670   type = desc_base_type (type);
1671
1672   if (type == NULL)
1673     return NULL;
1674   else if (is_thin_pntr (type))
1675     {
1676       type = thin_descriptor_type (type);
1677       if (type == NULL)
1678         return NULL;
1679       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1680       if (r != NULL)
1681         return ada_check_typedef (r);
1682     }
1683   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1684     {
1685       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1686       if (r != NULL)
1687         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1688     }
1689   return NULL;
1690 }
1691
1692 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1693    one, a pointer to its bounds data.   Otherwise NULL.  */
1694
1695 static struct value *
1696 desc_bounds (struct value *arr)
1697 {
1698   struct type *type = ada_check_typedef (value_type (arr));
1699
1700   if (is_thin_pntr (type))
1701     {
1702       struct type *bounds_type =
1703         desc_bounds_type (thin_descriptor_type (type));
1704       LONGEST addr;
1705
1706       if (bounds_type == NULL)
1707         error (_("Bad GNAT array descriptor"));
1708
1709       /* NOTE: The following calculation is not really kosher, but
1710          since desc_type is an XVE-encoded type (and shouldn't be),
1711          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1712       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1713         addr = value_as_long (arr);
1714       else
1715         addr = value_address (arr);
1716
1717       return
1718         value_from_longest (lookup_pointer_type (bounds_type),
1719                             addr - TYPE_LENGTH (bounds_type));
1720     }
1721
1722   else if (is_thick_pntr (type))
1723     {
1724       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1725                                                _("Bad GNAT array descriptor"));
1726       struct type *p_bounds_type = value_type (p_bounds);
1727
1728       if (p_bounds_type
1729           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1730         {
1731           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1732
1733           if (TYPE_STUB (target_type))
1734             p_bounds = value_cast (lookup_pointer_type
1735                                    (ada_check_typedef (target_type)),
1736                                    p_bounds);
1737         }
1738       else
1739         error (_("Bad GNAT array descriptor"));
1740
1741       return p_bounds;
1742     }
1743   else
1744     return NULL;
1745 }
1746
1747 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1748    position of the field containing the address of the bounds data.  */
1749
1750 static int
1751 fat_pntr_bounds_bitpos (struct type *type)
1752 {
1753   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1754 }
1755
1756 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1757    size of the field containing the address of the bounds data.  */
1758
1759 static int
1760 fat_pntr_bounds_bitsize (struct type *type)
1761 {
1762   type = desc_base_type (type);
1763
1764   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1765     return TYPE_FIELD_BITSIZE (type, 1);
1766   else
1767     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1768 }
1769
1770 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1771    pointer to one, the type of its array data (a array-with-no-bounds type);
1772    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1773    data.  */
1774
1775 static struct type *
1776 desc_data_target_type (struct type *type)
1777 {
1778   type = desc_base_type (type);
1779
1780   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1781   if (is_thin_pntr (type))
1782     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1783   else if (is_thick_pntr (type))
1784     {
1785       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1786
1787       if (data_type
1788           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1789         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1790     }
1791
1792   return NULL;
1793 }
1794
1795 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1796    its array data.  */
1797
1798 static struct value *
1799 desc_data (struct value *arr)
1800 {
1801   struct type *type = value_type (arr);
1802
1803   if (is_thin_pntr (type))
1804     return thin_data_pntr (arr);
1805   else if (is_thick_pntr (type))
1806     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1807                              _("Bad GNAT array descriptor"));
1808   else
1809     return NULL;
1810 }
1811
1812
1813 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1814    position of the field containing the address of the data.  */
1815
1816 static int
1817 fat_pntr_data_bitpos (struct type *type)
1818 {
1819   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1820 }
1821
1822 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1823    size of the field containing the address of the data.  */
1824
1825 static int
1826 fat_pntr_data_bitsize (struct type *type)
1827 {
1828   type = desc_base_type (type);
1829
1830   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1831     return TYPE_FIELD_BITSIZE (type, 0);
1832   else
1833     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1834 }
1835
1836 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1837    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1838    bound, if WHICH is 1.  The first bound is I=1.  */
1839
1840 static struct value *
1841 desc_one_bound (struct value *bounds, int i, int which)
1842 {
1843   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1844                            _("Bad GNAT array descriptor bounds"));
1845 }
1846
1847 /* If BOUNDS is an array-bounds structure type, return the bit position
1848    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1849    bound, if WHICH is 1.  The first bound is I=1.  */
1850
1851 static int
1852 desc_bound_bitpos (struct type *type, int i, int which)
1853 {
1854   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1855 }
1856
1857 /* If BOUNDS is an array-bounds structure type, return the bit field size
1858    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1859    bound, if WHICH is 1.  The first bound is I=1.  */
1860
1861 static int
1862 desc_bound_bitsize (struct type *type, int i, int which)
1863 {
1864   type = desc_base_type (type);
1865
1866   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1867     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1868   else
1869     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1870 }
1871
1872 /* If TYPE is the type of an array-bounds structure, the type of its
1873    Ith bound (numbering from 1).  Otherwise, NULL.  */
1874
1875 static struct type *
1876 desc_index_type (struct type *type, int i)
1877 {
1878   type = desc_base_type (type);
1879
1880   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1881     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1882   else
1883     return NULL;
1884 }
1885
1886 /* The number of index positions in the array-bounds type TYPE.
1887    Return 0 if TYPE is NULL.  */
1888
1889 static int
1890 desc_arity (struct type *type)
1891 {
1892   type = desc_base_type (type);
1893
1894   if (type != NULL)
1895     return TYPE_NFIELDS (type) / 2;
1896   return 0;
1897 }
1898
1899 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1900    an array descriptor type (representing an unconstrained array
1901    type).  */
1902
1903 static int
1904 ada_is_direct_array_type (struct type *type)
1905 {
1906   if (type == NULL)
1907     return 0;
1908   type = ada_check_typedef (type);
1909   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1910           || ada_is_array_descriptor_type (type));
1911 }
1912
1913 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1914  * to one.  */
1915
1916 static int
1917 ada_is_array_type (struct type *type)
1918 {
1919   while (type != NULL 
1920          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1921              || TYPE_CODE (type) == TYPE_CODE_REF))
1922     type = TYPE_TARGET_TYPE (type);
1923   return ada_is_direct_array_type (type);
1924 }
1925
1926 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1927
1928 int
1929 ada_is_simple_array_type (struct type *type)
1930 {
1931   if (type == NULL)
1932     return 0;
1933   type = ada_check_typedef (type);
1934   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1935           || (TYPE_CODE (type) == TYPE_CODE_PTR
1936               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1937                  == TYPE_CODE_ARRAY));
1938 }
1939
1940 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1941
1942 int
1943 ada_is_array_descriptor_type (struct type *type)
1944 {
1945   struct type *data_type = desc_data_target_type (type);
1946
1947   if (type == NULL)
1948     return 0;
1949   type = ada_check_typedef (type);
1950   return (data_type != NULL
1951           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1952           && desc_arity (desc_bounds_type (type)) > 0);
1953 }
1954
1955 /* Non-zero iff type is a partially mal-formed GNAT array
1956    descriptor.  FIXME: This is to compensate for some problems with
1957    debugging output from GNAT.  Re-examine periodically to see if it
1958    is still needed.  */
1959
1960 int
1961 ada_is_bogus_array_descriptor (struct type *type)
1962 {
1963   return
1964     type != NULL
1965     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1966     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1967         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1968     && !ada_is_array_descriptor_type (type);
1969 }
1970
1971
1972 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1973    (fat pointer) returns the type of the array data described---specifically,
1974    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1975    in from the descriptor; otherwise, they are left unspecified.  If
1976    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1977    returns NULL.  The result is simply the type of ARR if ARR is not
1978    a descriptor.  */
1979 struct type *
1980 ada_type_of_array (struct value *arr, int bounds)
1981 {
1982   if (ada_is_constrained_packed_array_type (value_type (arr)))
1983     return decode_constrained_packed_array_type (value_type (arr));
1984
1985   if (!ada_is_array_descriptor_type (value_type (arr)))
1986     return value_type (arr);
1987
1988   if (!bounds)
1989     {
1990       struct type *array_type =
1991         ada_check_typedef (desc_data_target_type (value_type (arr)));
1992
1993       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1994         TYPE_FIELD_BITSIZE (array_type, 0) =
1995           decode_packed_array_bitsize (value_type (arr));
1996       
1997       return array_type;
1998     }
1999   else
2000     {
2001       struct type *elt_type;
2002       int arity;
2003       struct value *descriptor;
2004
2005       elt_type = ada_array_element_type (value_type (arr), -1);
2006       arity = ada_array_arity (value_type (arr));
2007
2008       if (elt_type == NULL || arity == 0)
2009         return ada_check_typedef (value_type (arr));
2010
2011       descriptor = desc_bounds (arr);
2012       if (value_as_long (descriptor) == 0)
2013         return NULL;
2014       while (arity > 0)
2015         {
2016           struct type *range_type = alloc_type_copy (value_type (arr));
2017           struct type *array_type = alloc_type_copy (value_type (arr));
2018           struct value *low = desc_one_bound (descriptor, arity, 0);
2019           struct value *high = desc_one_bound (descriptor, arity, 1);
2020
2021           arity -= 1;
2022           create_static_range_type (range_type, value_type (low),
2023                                     longest_to_int (value_as_long (low)),
2024                                     longest_to_int (value_as_long (high)));
2025           elt_type = create_array_type (array_type, elt_type, range_type);
2026
2027           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2028             {
2029               /* We need to store the element packed bitsize, as well as
2030                  recompute the array size, because it was previously
2031                  computed based on the unpacked element size.  */
2032               LONGEST lo = value_as_long (low);
2033               LONGEST hi = value_as_long (high);
2034
2035               TYPE_FIELD_BITSIZE (elt_type, 0) =
2036                 decode_packed_array_bitsize (value_type (arr));
2037               /* If the array has no element, then the size is already
2038                  zero, and does not need to be recomputed.  */
2039               if (lo < hi)
2040                 {
2041                   int array_bitsize =
2042                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2043
2044                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2045                 }
2046             }
2047         }
2048
2049       return lookup_pointer_type (elt_type);
2050     }
2051 }
2052
2053 /* If ARR does not represent an array, returns ARR unchanged.
2054    Otherwise, returns either a standard GDB array with bounds set
2055    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2056    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2057
2058 struct value *
2059 ada_coerce_to_simple_array_ptr (struct value *arr)
2060 {
2061   if (ada_is_array_descriptor_type (value_type (arr)))
2062     {
2063       struct type *arrType = ada_type_of_array (arr, 1);
2064
2065       if (arrType == NULL)
2066         return NULL;
2067       return value_cast (arrType, value_copy (desc_data (arr)));
2068     }
2069   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2070     return decode_constrained_packed_array (arr);
2071   else
2072     return arr;
2073 }
2074
2075 /* If ARR does not represent an array, returns ARR unchanged.
2076    Otherwise, returns a standard GDB array describing ARR (which may
2077    be ARR itself if it already is in the proper form).  */
2078
2079 struct value *
2080 ada_coerce_to_simple_array (struct value *arr)
2081 {
2082   if (ada_is_array_descriptor_type (value_type (arr)))
2083     {
2084       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2085
2086       if (arrVal == NULL)
2087         error (_("Bounds unavailable for null array pointer."));
2088       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2089       return value_ind (arrVal);
2090     }
2091   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2092     return decode_constrained_packed_array (arr);
2093   else
2094     return arr;
2095 }
2096
2097 /* If TYPE represents a GNAT array type, return it translated to an
2098    ordinary GDB array type (possibly with BITSIZE fields indicating
2099    packing).  For other types, is the identity.  */
2100
2101 struct type *
2102 ada_coerce_to_simple_array_type (struct type *type)
2103 {
2104   if (ada_is_constrained_packed_array_type (type))
2105     return decode_constrained_packed_array_type (type);
2106
2107   if (ada_is_array_descriptor_type (type))
2108     return ada_check_typedef (desc_data_target_type (type));
2109
2110   return type;
2111 }
2112
2113 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2114
2115 static int
2116 ada_is_packed_array_type  (struct type *type)
2117 {
2118   if (type == NULL)
2119     return 0;
2120   type = desc_base_type (type);
2121   type = ada_check_typedef (type);
2122   return
2123     ada_type_name (type) != NULL
2124     && strstr (ada_type_name (type), "___XP") != NULL;
2125 }
2126
2127 /* Non-zero iff TYPE represents a standard GNAT constrained
2128    packed-array type.  */
2129
2130 int
2131 ada_is_constrained_packed_array_type (struct type *type)
2132 {
2133   return ada_is_packed_array_type (type)
2134     && !ada_is_array_descriptor_type (type);
2135 }
2136
2137 /* Non-zero iff TYPE represents an array descriptor for a
2138    unconstrained packed-array type.  */
2139
2140 static int
2141 ada_is_unconstrained_packed_array_type (struct type *type)
2142 {
2143   return ada_is_packed_array_type (type)
2144     && ada_is_array_descriptor_type (type);
2145 }
2146
2147 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2148    return the size of its elements in bits.  */
2149
2150 static long
2151 decode_packed_array_bitsize (struct type *type)
2152 {
2153   const char *raw_name;
2154   const char *tail;
2155   long bits;
2156
2157   /* Access to arrays implemented as fat pointers are encoded as a typedef
2158      of the fat pointer type.  We need the name of the fat pointer type
2159      to do the decoding, so strip the typedef layer.  */
2160   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2161     type = ada_typedef_target_type (type);
2162
2163   raw_name = ada_type_name (ada_check_typedef (type));
2164   if (!raw_name)
2165     raw_name = ada_type_name (desc_base_type (type));
2166
2167   if (!raw_name)
2168     return 0;
2169
2170   tail = strstr (raw_name, "___XP");
2171   gdb_assert (tail != NULL);
2172
2173   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2174     {
2175       lim_warning
2176         (_("could not understand bit size information on packed array"));
2177       return 0;
2178     }
2179
2180   return bits;
2181 }
2182
2183 /* Given that TYPE is a standard GDB array type with all bounds filled
2184    in, and that the element size of its ultimate scalar constituents
2185    (that is, either its elements, or, if it is an array of arrays, its
2186    elements' elements, etc.) is *ELT_BITS, return an identical type,
2187    but with the bit sizes of its elements (and those of any
2188    constituent arrays) recorded in the BITSIZE components of its
2189    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2190    in bits.
2191
2192    Note that, for arrays whose index type has an XA encoding where
2193    a bound references a record discriminant, getting that discriminant,
2194    and therefore the actual value of that bound, is not possible
2195    because none of the given parameters gives us access to the record.
2196    This function assumes that it is OK in the context where it is being
2197    used to return an array whose bounds are still dynamic and where
2198    the length is arbitrary.  */
2199
2200 static struct type *
2201 constrained_packed_array_type (struct type *type, long *elt_bits)
2202 {
2203   struct type *new_elt_type;
2204   struct type *new_type;
2205   struct type *index_type_desc;
2206   struct type *index_type;
2207   LONGEST low_bound, high_bound;
2208
2209   type = ada_check_typedef (type);
2210   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2211     return type;
2212
2213   index_type_desc = ada_find_parallel_type (type, "___XA");
2214   if (index_type_desc)
2215     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2216                                       NULL);
2217   else
2218     index_type = TYPE_INDEX_TYPE (type);
2219
2220   new_type = alloc_type_copy (type);
2221   new_elt_type =
2222     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2223                                    elt_bits);
2224   create_array_type (new_type, new_elt_type, index_type);
2225   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2226   TYPE_NAME (new_type) = ada_type_name (type);
2227
2228   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2229        && is_dynamic_type (check_typedef (index_type)))
2230       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2231     low_bound = high_bound = 0;
2232   if (high_bound < low_bound)
2233     *elt_bits = TYPE_LENGTH (new_type) = 0;
2234   else
2235     {
2236       *elt_bits *= (high_bound - low_bound + 1);
2237       TYPE_LENGTH (new_type) =
2238         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2239     }
2240
2241   TYPE_FIXED_INSTANCE (new_type) = 1;
2242   return new_type;
2243 }
2244
2245 /* The array type encoded by TYPE, where
2246    ada_is_constrained_packed_array_type (TYPE).  */
2247
2248 static struct type *
2249 decode_constrained_packed_array_type (struct type *type)
2250 {
2251   const char *raw_name = ada_type_name (ada_check_typedef (type));
2252   char *name;
2253   const char *tail;
2254   struct type *shadow_type;
2255   long bits;
2256
2257   if (!raw_name)
2258     raw_name = ada_type_name (desc_base_type (type));
2259
2260   if (!raw_name)
2261     return NULL;
2262
2263   name = (char *) alloca (strlen (raw_name) + 1);
2264   tail = strstr (raw_name, "___XP");
2265   type = desc_base_type (type);
2266
2267   memcpy (name, raw_name, tail - raw_name);
2268   name[tail - raw_name] = '\000';
2269
2270   shadow_type = ada_find_parallel_type_with_name (type, name);
2271
2272   if (shadow_type == NULL)
2273     {
2274       lim_warning (_("could not find bounds information on packed array"));
2275       return NULL;
2276     }
2277   shadow_type = check_typedef (shadow_type);
2278
2279   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2280     {
2281       lim_warning (_("could not understand bounds "
2282                      "information on packed array"));
2283       return NULL;
2284     }
2285
2286   bits = decode_packed_array_bitsize (type);
2287   return constrained_packed_array_type (shadow_type, &bits);
2288 }
2289
2290 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2291    array, returns a simple array that denotes that array.  Its type is a
2292    standard GDB array type except that the BITSIZEs of the array
2293    target types are set to the number of bits in each element, and the
2294    type length is set appropriately.  */
2295
2296 static struct value *
2297 decode_constrained_packed_array (struct value *arr)
2298 {
2299   struct type *type;
2300
2301   /* If our value is a pointer, then dereference it. Likewise if
2302      the value is a reference.  Make sure that this operation does not
2303      cause the target type to be fixed, as this would indirectly cause
2304      this array to be decoded.  The rest of the routine assumes that
2305      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2306      and "value_ind" routines to perform the dereferencing, as opposed
2307      to using "ada_coerce_ref" or "ada_value_ind".  */
2308   arr = coerce_ref (arr);
2309   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2310     arr = value_ind (arr);
2311
2312   type = decode_constrained_packed_array_type (value_type (arr));
2313   if (type == NULL)
2314     {
2315       error (_("can't unpack array"));
2316       return NULL;
2317     }
2318
2319   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2320       && ada_is_modular_type (value_type (arr)))
2321     {
2322        /* This is a (right-justified) modular type representing a packed
2323          array with no wrapper.  In order to interpret the value through
2324          the (left-justified) packed array type we just built, we must
2325          first left-justify it.  */
2326       int bit_size, bit_pos;
2327       ULONGEST mod;
2328
2329       mod = ada_modulus (value_type (arr)) - 1;
2330       bit_size = 0;
2331       while (mod > 0)
2332         {
2333           bit_size += 1;
2334           mod >>= 1;
2335         }
2336       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2337       arr = ada_value_primitive_packed_val (arr, NULL,
2338                                             bit_pos / HOST_CHAR_BIT,
2339                                             bit_pos % HOST_CHAR_BIT,
2340                                             bit_size,
2341                                             type);
2342     }
2343
2344   return coerce_unspec_val_to_type (arr, type);
2345 }
2346
2347
2348 /* The value of the element of packed array ARR at the ARITY indices
2349    given in IND.   ARR must be a simple array.  */
2350
2351 static struct value *
2352 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2353 {
2354   int i;
2355   int bits, elt_off, bit_off;
2356   long elt_total_bit_offset;
2357   struct type *elt_type;
2358   struct value *v;
2359
2360   bits = 0;
2361   elt_total_bit_offset = 0;
2362   elt_type = ada_check_typedef (value_type (arr));
2363   for (i = 0; i < arity; i += 1)
2364     {
2365       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2366           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2367         error
2368           (_("attempt to do packed indexing of "
2369              "something other than a packed array"));
2370       else
2371         {
2372           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2373           LONGEST lowerbound, upperbound;
2374           LONGEST idx;
2375
2376           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2377             {
2378               lim_warning (_("don't know bounds of array"));
2379               lowerbound = upperbound = 0;
2380             }
2381
2382           idx = pos_atr (ind[i]);
2383           if (idx < lowerbound || idx > upperbound)
2384             lim_warning (_("packed array index %ld out of bounds"),
2385                          (long) idx);
2386           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2387           elt_total_bit_offset += (idx - lowerbound) * bits;
2388           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2389         }
2390     }
2391   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2392   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2393
2394   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2395                                       bits, elt_type);
2396   return v;
2397 }
2398
2399 /* Non-zero iff TYPE includes negative integer values.  */
2400
2401 static int
2402 has_negatives (struct type *type)
2403 {
2404   switch (TYPE_CODE (type))
2405     {
2406     default:
2407       return 0;
2408     case TYPE_CODE_INT:
2409       return !TYPE_UNSIGNED (type);
2410     case TYPE_CODE_RANGE:
2411       return TYPE_LOW_BOUND (type) < 0;
2412     }
2413 }
2414
2415 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2416    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2417    the unpacked buffer.
2418
2419    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2420    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2421
2422    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2423    zero otherwise.
2424
2425    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2426
2427    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2428
2429 static void
2430 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2431                           gdb_byte *unpacked, int unpacked_len,
2432                           int is_big_endian, int is_signed_type,
2433                           int is_scalar)
2434 {
2435   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2436   int src_idx;                  /* Index into the source area */
2437   int src_bytes_left;           /* Number of source bytes left to process.  */
2438   int srcBitsLeft;              /* Number of source bits left to move */
2439   int unusedLS;                 /* Number of bits in next significant
2440                                    byte of source that are unused */
2441
2442   int unpacked_idx;             /* Index into the unpacked buffer */
2443   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2444
2445   unsigned long accum;          /* Staging area for bits being transferred */
2446   int accumSize;                /* Number of meaningful bits in accum */
2447   unsigned char sign;
2448
2449   /* Transmit bytes from least to most significant; delta is the direction
2450      the indices move.  */
2451   int delta = is_big_endian ? -1 : 1;
2452
2453   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2454      bits from SRC.  .*/
2455   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2456     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2457            bit_size, unpacked_len);
2458
2459   srcBitsLeft = bit_size;
2460   src_bytes_left = src_len;
2461   unpacked_bytes_left = unpacked_len;
2462   sign = 0;
2463
2464   if (is_big_endian)
2465     {
2466       src_idx = src_len - 1;
2467       if (is_signed_type
2468           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2469         sign = ~0;
2470
2471       unusedLS =
2472         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2473         % HOST_CHAR_BIT;
2474
2475       if (is_scalar)
2476         {
2477           accumSize = 0;
2478           unpacked_idx = unpacked_len - 1;
2479         }
2480       else
2481         {
2482           /* Non-scalar values must be aligned at a byte boundary...  */
2483           accumSize =
2484             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2485           /* ... And are placed at the beginning (most-significant) bytes
2486              of the target.  */
2487           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2488           unpacked_bytes_left = unpacked_idx + 1;
2489         }
2490     }
2491   else
2492     {
2493       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2494
2495       src_idx = unpacked_idx = 0;
2496       unusedLS = bit_offset;
2497       accumSize = 0;
2498
2499       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2500         sign = ~0;
2501     }
2502
2503   accum = 0;
2504   while (src_bytes_left > 0)
2505     {
2506       /* Mask for removing bits of the next source byte that are not
2507          part of the value.  */
2508       unsigned int unusedMSMask =
2509         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2510         1;
2511       /* Sign-extend bits for this byte.  */
2512       unsigned int signMask = sign & ~unusedMSMask;
2513
2514       accum |=
2515         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2516       accumSize += HOST_CHAR_BIT - unusedLS;
2517       if (accumSize >= HOST_CHAR_BIT)
2518         {
2519           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2520           accumSize -= HOST_CHAR_BIT;
2521           accum >>= HOST_CHAR_BIT;
2522           unpacked_bytes_left -= 1;
2523           unpacked_idx += delta;
2524         }
2525       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2526       unusedLS = 0;
2527       src_bytes_left -= 1;
2528       src_idx += delta;
2529     }
2530   while (unpacked_bytes_left > 0)
2531     {
2532       accum |= sign << accumSize;
2533       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2534       accumSize -= HOST_CHAR_BIT;
2535       if (accumSize < 0)
2536         accumSize = 0;
2537       accum >>= HOST_CHAR_BIT;
2538       unpacked_bytes_left -= 1;
2539       unpacked_idx += delta;
2540     }
2541 }
2542
2543 /* Create a new value of type TYPE from the contents of OBJ starting
2544    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2545    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2546    assigning through the result will set the field fetched from.
2547    VALADDR is ignored unless OBJ is NULL, in which case,
2548    VALADDR+OFFSET must address the start of storage containing the 
2549    packed value.  The value returned  in this case is never an lval.
2550    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2551
2552 struct value *
2553 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2554                                 long offset, int bit_offset, int bit_size,
2555                                 struct type *type)
2556 {
2557   struct value *v;
2558   const gdb_byte *src;                /* First byte containing data to unpack */
2559   gdb_byte *unpacked;
2560   const int is_scalar = is_scalar_type (type);
2561   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2562   gdb::byte_vector staging;
2563
2564   type = ada_check_typedef (type);
2565
2566   if (obj == NULL)
2567     src = valaddr + offset;
2568   else
2569     src = value_contents (obj) + offset;
2570
2571   if (is_dynamic_type (type))
2572     {
2573       /* The length of TYPE might by dynamic, so we need to resolve
2574          TYPE in order to know its actual size, which we then use
2575          to create the contents buffer of the value we return.
2576          The difficulty is that the data containing our object is
2577          packed, and therefore maybe not at a byte boundary.  So, what
2578          we do, is unpack the data into a byte-aligned buffer, and then
2579          use that buffer as our object's value for resolving the type.  */
2580       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2581       staging.resize (staging_len);
2582
2583       ada_unpack_from_contents (src, bit_offset, bit_size,
2584                                 staging.data (), staging.size (),
2585                                 is_big_endian, has_negatives (type),
2586                                 is_scalar);
2587       type = resolve_dynamic_type (type, staging.data (), 0);
2588       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2589         {
2590           /* This happens when the length of the object is dynamic,
2591              and is actually smaller than the space reserved for it.
2592              For instance, in an array of variant records, the bit_size
2593              we're given is the array stride, which is constant and
2594              normally equal to the maximum size of its element.
2595              But, in reality, each element only actually spans a portion
2596              of that stride.  */
2597           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2598         }
2599     }
2600
2601   if (obj == NULL)
2602     {
2603       v = allocate_value (type);
2604       src = valaddr + offset;
2605     }
2606   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2607     {
2608       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2609       gdb_byte *buf;
2610
2611       v = value_at (type, value_address (obj) + offset);
2612       buf = (gdb_byte *) alloca (src_len);
2613       read_memory (value_address (v), buf, src_len);
2614       src = buf;
2615     }
2616   else
2617     {
2618       v = allocate_value (type);
2619       src = value_contents (obj) + offset;
2620     }
2621
2622   if (obj != NULL)
2623     {
2624       long new_offset = offset;
2625
2626       set_value_component_location (v, obj);
2627       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2628       set_value_bitsize (v, bit_size);
2629       if (value_bitpos (v) >= HOST_CHAR_BIT)
2630         {
2631           ++new_offset;
2632           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2633         }
2634       set_value_offset (v, new_offset);
2635
2636       /* Also set the parent value.  This is needed when trying to
2637          assign a new value (in inferior memory).  */
2638       set_value_parent (v, obj);
2639     }
2640   else
2641     set_value_bitsize (v, bit_size);
2642   unpacked = value_contents_writeable (v);
2643
2644   if (bit_size == 0)
2645     {
2646       memset (unpacked, 0, TYPE_LENGTH (type));
2647       return v;
2648     }
2649
2650   if (staging.size () == TYPE_LENGTH (type))
2651     {
2652       /* Small short-cut: If we've unpacked the data into a buffer
2653          of the same size as TYPE's length, then we can reuse that,
2654          instead of doing the unpacking again.  */
2655       memcpy (unpacked, staging.data (), staging.size ());
2656     }
2657   else
2658     ada_unpack_from_contents (src, bit_offset, bit_size,
2659                               unpacked, TYPE_LENGTH (type),
2660                               is_big_endian, has_negatives (type), is_scalar);
2661
2662   return v;
2663 }
2664
2665 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2666    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2667    not overlap.  */
2668 static void
2669 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2670            int src_offset, int n, int bits_big_endian_p)
2671 {
2672   unsigned int accum, mask;
2673   int accum_bits, chunk_size;
2674
2675   target += targ_offset / HOST_CHAR_BIT;
2676   targ_offset %= HOST_CHAR_BIT;
2677   source += src_offset / HOST_CHAR_BIT;
2678   src_offset %= HOST_CHAR_BIT;
2679   if (bits_big_endian_p)
2680     {
2681       accum = (unsigned char) *source;
2682       source += 1;
2683       accum_bits = HOST_CHAR_BIT - src_offset;
2684
2685       while (n > 0)
2686         {
2687           int unused_right;
2688
2689           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2690           accum_bits += HOST_CHAR_BIT;
2691           source += 1;
2692           chunk_size = HOST_CHAR_BIT - targ_offset;
2693           if (chunk_size > n)
2694             chunk_size = n;
2695           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2696           mask = ((1 << chunk_size) - 1) << unused_right;
2697           *target =
2698             (*target & ~mask)
2699             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2700           n -= chunk_size;
2701           accum_bits -= chunk_size;
2702           target += 1;
2703           targ_offset = 0;
2704         }
2705     }
2706   else
2707     {
2708       accum = (unsigned char) *source >> src_offset;
2709       source += 1;
2710       accum_bits = HOST_CHAR_BIT - src_offset;
2711
2712       while (n > 0)
2713         {
2714           accum = accum + ((unsigned char) *source << accum_bits);
2715           accum_bits += HOST_CHAR_BIT;
2716           source += 1;
2717           chunk_size = HOST_CHAR_BIT - targ_offset;
2718           if (chunk_size > n)
2719             chunk_size = n;
2720           mask = ((1 << chunk_size) - 1) << targ_offset;
2721           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2722           n -= chunk_size;
2723           accum_bits -= chunk_size;
2724           accum >>= chunk_size;
2725           target += 1;
2726           targ_offset = 0;
2727         }
2728     }
2729 }
2730
2731 /* Store the contents of FROMVAL into the location of TOVAL.
2732    Return a new value with the location of TOVAL and contents of
2733    FROMVAL.   Handles assignment into packed fields that have
2734    floating-point or non-scalar types.  */
2735
2736 static struct value *
2737 ada_value_assign (struct value *toval, struct value *fromval)
2738 {
2739   struct type *type = value_type (toval);
2740   int bits = value_bitsize (toval);
2741
2742   toval = ada_coerce_ref (toval);
2743   fromval = ada_coerce_ref (fromval);
2744
2745   if (ada_is_direct_array_type (value_type (toval)))
2746     toval = ada_coerce_to_simple_array (toval);
2747   if (ada_is_direct_array_type (value_type (fromval)))
2748     fromval = ada_coerce_to_simple_array (fromval);
2749
2750   if (!deprecated_value_modifiable (toval))
2751     error (_("Left operand of assignment is not a modifiable lvalue."));
2752
2753   if (VALUE_LVAL (toval) == lval_memory
2754       && bits > 0
2755       && (TYPE_CODE (type) == TYPE_CODE_FLT
2756           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2757     {
2758       int len = (value_bitpos (toval)
2759                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2760       int from_size;
2761       gdb_byte *buffer = (gdb_byte *) alloca (len);
2762       struct value *val;
2763       CORE_ADDR to_addr = value_address (toval);
2764
2765       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2766         fromval = value_cast (type, fromval);
2767
2768       read_memory (to_addr, buffer, len);
2769       from_size = value_bitsize (fromval);
2770       if (from_size == 0)
2771         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2772       if (gdbarch_bits_big_endian (get_type_arch (type)))
2773         move_bits (buffer, value_bitpos (toval),
2774                    value_contents (fromval), from_size - bits, bits, 1);
2775       else
2776         move_bits (buffer, value_bitpos (toval),
2777                    value_contents (fromval), 0, bits, 0);
2778       write_memory_with_notification (to_addr, buffer, len);
2779
2780       val = value_copy (toval);
2781       memcpy (value_contents_raw (val), value_contents (fromval),
2782               TYPE_LENGTH (type));
2783       deprecated_set_value_type (val, type);
2784
2785       return val;
2786     }
2787
2788   return value_assign (toval, fromval);
2789 }
2790
2791
2792 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2793    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2794    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2795    COMPONENT, and not the inferior's memory.  The current contents
2796    of COMPONENT are ignored.
2797
2798    Although not part of the initial design, this function also works
2799    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2800    had a null address, and COMPONENT had an address which is equal to
2801    its offset inside CONTAINER.  */
2802
2803 static void
2804 value_assign_to_component (struct value *container, struct value *component,
2805                            struct value *val)
2806 {
2807   LONGEST offset_in_container =
2808     (LONGEST)  (value_address (component) - value_address (container));
2809   int bit_offset_in_container =
2810     value_bitpos (component) - value_bitpos (container);
2811   int bits;
2812
2813   val = value_cast (value_type (component), val);
2814
2815   if (value_bitsize (component) == 0)
2816     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2817   else
2818     bits = value_bitsize (component);
2819
2820   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2821     move_bits (value_contents_writeable (container) + offset_in_container,
2822                value_bitpos (container) + bit_offset_in_container,
2823                value_contents (val),
2824                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2825                bits, 1);
2826   else
2827     move_bits (value_contents_writeable (container) + offset_in_container,
2828                value_bitpos (container) + bit_offset_in_container,
2829                value_contents (val), 0, bits, 0);
2830 }
2831
2832 /* The value of the element of array ARR at the ARITY indices given in IND.
2833    ARR may be either a simple array, GNAT array descriptor, or pointer
2834    thereto.  */
2835
2836 struct value *
2837 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2838 {
2839   int k;
2840   struct value *elt;
2841   struct type *elt_type;
2842
2843   elt = ada_coerce_to_simple_array (arr);
2844
2845   elt_type = ada_check_typedef (value_type (elt));
2846   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2847       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2848     return value_subscript_packed (elt, arity, ind);
2849
2850   for (k = 0; k < arity; k += 1)
2851     {
2852       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2853         error (_("too many subscripts (%d expected)"), k);
2854       elt = value_subscript (elt, pos_atr (ind[k]));
2855     }
2856   return elt;
2857 }
2858
2859 /* Assuming ARR is a pointer to a GDB array, the value of the element
2860    of *ARR at the ARITY indices given in IND.
2861    Does not read the entire array into memory.
2862
2863    Note: Unlike what one would expect, this function is used instead of
2864    ada_value_subscript for basically all non-packed array types.  The reason
2865    for this is that a side effect of doing our own pointer arithmetics instead
2866    of relying on value_subscript is that there is no implicit typedef peeling.
2867    This is important for arrays of array accesses, where it allows us to
2868    preserve the fact that the array's element is an array access, where the
2869    access part os encoded in a typedef layer.  */
2870
2871 static struct value *
2872 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2873 {
2874   int k;
2875   struct value *array_ind = ada_value_ind (arr);
2876   struct type *type
2877     = check_typedef (value_enclosing_type (array_ind));
2878
2879   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2880       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2881     return value_subscript_packed (array_ind, arity, ind);
2882
2883   for (k = 0; k < arity; k += 1)
2884     {
2885       LONGEST lwb, upb;
2886       struct value *lwb_value;
2887
2888       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2889         error (_("too many subscripts (%d expected)"), k);
2890       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2891                         value_copy (arr));
2892       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2893       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2894       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2895       type = TYPE_TARGET_TYPE (type);
2896     }
2897
2898   return value_ind (arr);
2899 }
2900
2901 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2902    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2903    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2904    this array is LOW, as per Ada rules.  */
2905 static struct value *
2906 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2907                           int low, int high)
2908 {
2909   struct type *type0 = ada_check_typedef (type);
2910   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2911   struct type *index_type
2912     = create_static_range_type (NULL, base_index_type, low, high);
2913   struct type *slice_type = create_array_type_with_stride
2914                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2915                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2916                                TYPE_FIELD_BITSIZE (type0, 0));
2917   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2918   LONGEST base_low_pos, low_pos;
2919   CORE_ADDR base;
2920
2921   if (!discrete_position (base_index_type, low, &low_pos)
2922       || !discrete_position (base_index_type, base_low, &base_low_pos))
2923     {
2924       warning (_("unable to get positions in slice, use bounds instead"));
2925       low_pos = low;
2926       base_low_pos = base_low;
2927     }
2928
2929   base = value_as_address (array_ptr)
2930     + ((low_pos - base_low_pos)
2931        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2932   return value_at_lazy (slice_type, base);
2933 }
2934
2935
2936 static struct value *
2937 ada_value_slice (struct value *array, int low, int high)
2938 {
2939   struct type *type = ada_check_typedef (value_type (array));
2940   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2941   struct type *index_type
2942     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2943   struct type *slice_type = create_array_type_with_stride
2944                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2945                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2946                                TYPE_FIELD_BITSIZE (type, 0));
2947   LONGEST low_pos, high_pos;
2948
2949   if (!discrete_position (base_index_type, low, &low_pos)
2950       || !discrete_position (base_index_type, high, &high_pos))
2951     {
2952       warning (_("unable to get positions in slice, use bounds instead"));
2953       low_pos = low;
2954       high_pos = high;
2955     }
2956
2957   return value_cast (slice_type,
2958                      value_slice (array, low, high_pos - low_pos + 1));
2959 }
2960
2961 /* If type is a record type in the form of a standard GNAT array
2962    descriptor, returns the number of dimensions for type.  If arr is a
2963    simple array, returns the number of "array of"s that prefix its
2964    type designation.  Otherwise, returns 0.  */
2965
2966 int
2967 ada_array_arity (struct type *type)
2968 {
2969   int arity;
2970
2971   if (type == NULL)
2972     return 0;
2973
2974   type = desc_base_type (type);
2975
2976   arity = 0;
2977   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2978     return desc_arity (desc_bounds_type (type));
2979   else
2980     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2981       {
2982         arity += 1;
2983         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2984       }
2985
2986   return arity;
2987 }
2988
2989 /* If TYPE is a record type in the form of a standard GNAT array
2990    descriptor or a simple array type, returns the element type for
2991    TYPE after indexing by NINDICES indices, or by all indices if
2992    NINDICES is -1.  Otherwise, returns NULL.  */
2993
2994 struct type *
2995 ada_array_element_type (struct type *type, int nindices)
2996 {
2997   type = desc_base_type (type);
2998
2999   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3000     {
3001       int k;
3002       struct type *p_array_type;
3003
3004       p_array_type = desc_data_target_type (type);
3005
3006       k = ada_array_arity (type);
3007       if (k == 0)
3008         return NULL;
3009
3010       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3011       if (nindices >= 0 && k > nindices)
3012         k = nindices;
3013       while (k > 0 && p_array_type != NULL)
3014         {
3015           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3016           k -= 1;
3017         }
3018       return p_array_type;
3019     }
3020   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3021     {
3022       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3023         {
3024           type = TYPE_TARGET_TYPE (type);
3025           nindices -= 1;
3026         }
3027       return type;
3028     }
3029
3030   return NULL;
3031 }
3032
3033 /* The type of nth index in arrays of given type (n numbering from 1).
3034    Does not examine memory.  Throws an error if N is invalid or TYPE
3035    is not an array type.  NAME is the name of the Ada attribute being
3036    evaluated ('range, 'first, 'last, or 'length); it is used in building
3037    the error message.  */
3038
3039 static struct type *
3040 ada_index_type (struct type *type, int n, const char *name)
3041 {
3042   struct type *result_type;
3043
3044   type = desc_base_type (type);
3045
3046   if (n < 0 || n > ada_array_arity (type))
3047     error (_("invalid dimension number to '%s"), name);
3048
3049   if (ada_is_simple_array_type (type))
3050     {
3051       int i;
3052
3053       for (i = 1; i < n; i += 1)
3054         type = TYPE_TARGET_TYPE (type);
3055       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3056       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3057          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3058          perhaps stabsread.c would make more sense.  */
3059       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3060         result_type = NULL;
3061     }
3062   else
3063     {
3064       result_type = desc_index_type (desc_bounds_type (type), n);
3065       if (result_type == NULL)
3066         error (_("attempt to take bound of something that is not an array"));
3067     }
3068
3069   return result_type;
3070 }
3071
3072 /* Given that arr is an array type, returns the lower bound of the
3073    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3074    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3075    array-descriptor type.  It works for other arrays with bounds supplied
3076    by run-time quantities other than discriminants.  */
3077
3078 static LONGEST
3079 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3080 {
3081   struct type *type, *index_type_desc, *index_type;
3082   int i;
3083
3084   gdb_assert (which == 0 || which == 1);
3085
3086   if (ada_is_constrained_packed_array_type (arr_type))
3087     arr_type = decode_constrained_packed_array_type (arr_type);
3088
3089   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3090     return (LONGEST) - which;
3091
3092   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3093     type = TYPE_TARGET_TYPE (arr_type);
3094   else
3095     type = arr_type;
3096
3097   if (TYPE_FIXED_INSTANCE (type))
3098     {
3099       /* The array has already been fixed, so we do not need to
3100          check the parallel ___XA type again.  That encoding has
3101          already been applied, so ignore it now.  */
3102       index_type_desc = NULL;
3103     }
3104   else
3105     {
3106       index_type_desc = ada_find_parallel_type (type, "___XA");
3107       ada_fixup_array_indexes_type (index_type_desc);
3108     }
3109
3110   if (index_type_desc != NULL)
3111     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3112                                       NULL);
3113   else
3114     {
3115       struct type *elt_type = check_typedef (type);
3116
3117       for (i = 1; i < n; i++)
3118         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3119
3120       index_type = TYPE_INDEX_TYPE (elt_type);
3121     }
3122
3123   return
3124     (LONGEST) (which == 0
3125                ? ada_discrete_type_low_bound (index_type)
3126                : ada_discrete_type_high_bound (index_type));
3127 }
3128
3129 /* Given that arr is an array value, returns the lower bound of the
3130    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3131    WHICH is 1.  This routine will also work for arrays with bounds
3132    supplied by run-time quantities other than discriminants.  */
3133
3134 static LONGEST
3135 ada_array_bound (struct value *arr, int n, int which)
3136 {
3137   struct type *arr_type;
3138
3139   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3140     arr = value_ind (arr);
3141   arr_type = value_enclosing_type (arr);
3142
3143   if (ada_is_constrained_packed_array_type (arr_type))
3144     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3145   else if (ada_is_simple_array_type (arr_type))
3146     return ada_array_bound_from_type (arr_type, n, which);
3147   else
3148     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3149 }
3150
3151 /* Given that arr is an array value, returns the length of the
3152    nth index.  This routine will also work for arrays with bounds
3153    supplied by run-time quantities other than discriminants.
3154    Does not work for arrays indexed by enumeration types with representation
3155    clauses at the moment.  */
3156
3157 static LONGEST
3158 ada_array_length (struct value *arr, int n)
3159 {
3160   struct type *arr_type, *index_type;
3161   int low, high;
3162
3163   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3164     arr = value_ind (arr);
3165   arr_type = value_enclosing_type (arr);
3166
3167   if (ada_is_constrained_packed_array_type (arr_type))
3168     return ada_array_length (decode_constrained_packed_array (arr), n);
3169
3170   if (ada_is_simple_array_type (arr_type))
3171     {
3172       low = ada_array_bound_from_type (arr_type, n, 0);
3173       high = ada_array_bound_from_type (arr_type, n, 1);
3174     }
3175   else
3176     {
3177       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3178       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3179     }
3180
3181   arr_type = check_typedef (arr_type);
3182   index_type = TYPE_INDEX_TYPE (arr_type);
3183   if (index_type != NULL)
3184     {
3185       struct type *base_type;
3186       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3187         base_type = TYPE_TARGET_TYPE (index_type);
3188       else
3189         base_type = index_type;
3190
3191       low = pos_atr (value_from_longest (base_type, low));
3192       high = pos_atr (value_from_longest (base_type, high));
3193     }
3194   return high - low + 1;
3195 }
3196
3197 /* An empty array whose type is that of ARR_TYPE (an array type),
3198    with bounds LOW to LOW-1.  */
3199
3200 static struct value *
3201 empty_array (struct type *arr_type, int low)
3202 {
3203   struct type *arr_type0 = ada_check_typedef (arr_type);
3204   struct type *index_type
3205     = create_static_range_type
3206         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3207   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3208
3209   return allocate_value (create_array_type (NULL, elt_type, index_type));
3210 }
3211 \f
3212
3213                                 /* Name resolution */
3214
3215 /* The "decoded" name for the user-definable Ada operator corresponding
3216    to OP.  */
3217
3218 static const char *
3219 ada_decoded_op_name (enum exp_opcode op)
3220 {
3221   int i;
3222
3223   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3224     {
3225       if (ada_opname_table[i].op == op)
3226         return ada_opname_table[i].decoded;
3227     }
3228   error (_("Could not find operator name for opcode"));
3229 }
3230
3231
3232 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3233    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3234    undefined namespace) and converts operators that are
3235    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3236    non-null, it provides a preferred result type [at the moment, only
3237    type void has any effect---causing procedures to be preferred over
3238    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3239    return type is preferred.  May change (expand) *EXP.  */
3240
3241 static void
3242 resolve (expression_up *expp, int void_context_p)
3243 {
3244   struct type *context_type = NULL;
3245   int pc = 0;
3246
3247   if (void_context_p)
3248     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3249
3250   resolve_subexp (expp, &pc, 1, context_type);
3251 }
3252
3253 /* Resolve the operator of the subexpression beginning at
3254    position *POS of *EXPP.  "Resolving" consists of replacing
3255    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3256    with their resolutions, replacing built-in operators with
3257    function calls to user-defined operators, where appropriate, and,
3258    when DEPROCEDURE_P is non-zero, converting function-valued variables
3259    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3260    are as in ada_resolve, above.  */
3261
3262 static struct value *
3263 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3264                 struct type *context_type)
3265 {
3266   int pc = *pos;
3267   int i;
3268   struct expression *exp;       /* Convenience: == *expp.  */
3269   enum exp_opcode op = (*expp)->elts[pc].opcode;
3270   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3271   int nargs;                    /* Number of operands.  */
3272   int oplen;
3273   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
3274
3275   argvec = NULL;
3276   nargs = 0;
3277   exp = expp->get ();
3278
3279   /* Pass one: resolve operands, saving their types and updating *pos,
3280      if needed.  */
3281   switch (op)
3282     {
3283     case OP_FUNCALL:
3284       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3285           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3286         *pos += 7;
3287       else
3288         {
3289           *pos += 3;
3290           resolve_subexp (expp, pos, 0, NULL);
3291         }
3292       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3293       break;
3294
3295     case UNOP_ADDR:
3296       *pos += 1;
3297       resolve_subexp (expp, pos, 0, NULL);
3298       break;
3299
3300     case UNOP_QUAL:
3301       *pos += 3;
3302       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3303       break;
3304
3305     case OP_ATR_MODULUS:
3306     case OP_ATR_SIZE:
3307     case OP_ATR_TAG:
3308     case OP_ATR_FIRST:
3309     case OP_ATR_LAST:
3310     case OP_ATR_LENGTH:
3311     case OP_ATR_POS:
3312     case OP_ATR_VAL:
3313     case OP_ATR_MIN:
3314     case OP_ATR_MAX:
3315     case TERNOP_IN_RANGE:
3316     case BINOP_IN_BOUNDS:
3317     case UNOP_IN_RANGE:
3318     case OP_AGGREGATE:
3319     case OP_OTHERS:
3320     case OP_CHOICES:
3321     case OP_POSITIONAL:
3322     case OP_DISCRETE_RANGE:
3323     case OP_NAME:
3324       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3325       *pos += oplen;
3326       break;
3327
3328     case BINOP_ASSIGN:
3329       {
3330         struct value *arg1;
3331
3332         *pos += 1;
3333         arg1 = resolve_subexp (expp, pos, 0, NULL);
3334         if (arg1 == NULL)
3335           resolve_subexp (expp, pos, 1, NULL);
3336         else
3337           resolve_subexp (expp, pos, 1, value_type (arg1));
3338         break;
3339       }
3340
3341     case UNOP_CAST:
3342       *pos += 3;
3343       nargs = 1;
3344       break;
3345
3346     case BINOP_ADD:
3347     case BINOP_SUB:
3348     case BINOP_MUL:
3349     case BINOP_DIV:
3350     case BINOP_REM:
3351     case BINOP_MOD:
3352     case BINOP_EXP:
3353     case BINOP_CONCAT:
3354     case BINOP_LOGICAL_AND:
3355     case BINOP_LOGICAL_OR:
3356     case BINOP_BITWISE_AND:
3357     case BINOP_BITWISE_IOR:
3358     case BINOP_BITWISE_XOR:
3359
3360     case BINOP_EQUAL:
3361     case BINOP_NOTEQUAL:
3362     case BINOP_LESS:
3363     case BINOP_GTR:
3364     case BINOP_LEQ:
3365     case BINOP_GEQ:
3366
3367     case BINOP_REPEAT:
3368     case BINOP_SUBSCRIPT:
3369     case BINOP_COMMA:
3370       *pos += 1;
3371       nargs = 2;
3372       break;
3373
3374     case UNOP_NEG:
3375     case UNOP_PLUS:
3376     case UNOP_LOGICAL_NOT:
3377     case UNOP_ABS:
3378     case UNOP_IND:
3379       *pos += 1;
3380       nargs = 1;
3381       break;
3382
3383     case OP_LONG:
3384     case OP_FLOAT:
3385     case OP_VAR_VALUE:
3386     case OP_VAR_MSYM_VALUE:
3387       *pos += 4;
3388       break;
3389
3390     case OP_TYPE:
3391     case OP_BOOL:
3392     case OP_LAST:
3393     case OP_INTERNALVAR:
3394       *pos += 3;
3395       break;
3396
3397     case UNOP_MEMVAL:
3398       *pos += 3;
3399       nargs = 1;
3400       break;
3401
3402     case OP_REGISTER:
3403       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3404       break;
3405
3406     case STRUCTOP_STRUCT:
3407       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3408       nargs = 1;
3409       break;
3410
3411     case TERNOP_SLICE:
3412       *pos += 1;
3413       nargs = 3;
3414       break;
3415
3416     case OP_STRING:
3417       break;
3418
3419     default:
3420       error (_("Unexpected operator during name resolution"));
3421     }
3422
3423   argvec = XALLOCAVEC (struct value *, nargs + 1);
3424   for (i = 0; i < nargs; i += 1)
3425     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3426   argvec[i] = NULL;
3427   exp = expp->get ();
3428
3429   /* Pass two: perform any resolution on principal operator.  */
3430   switch (op)
3431     {
3432     default:
3433       break;
3434
3435     case OP_VAR_VALUE:
3436       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3437         {
3438           struct block_symbol *candidates;
3439           int n_candidates;
3440
3441           n_candidates =
3442             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3443                                     (exp->elts[pc + 2].symbol),
3444                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3445                                     &candidates);
3446           make_cleanup (xfree, candidates);
3447
3448           if (n_candidates > 1)
3449             {
3450               /* Types tend to get re-introduced locally, so if there
3451                  are any local symbols that are not types, first filter
3452                  out all types.  */
3453               int j;
3454               for (j = 0; j < n_candidates; j += 1)
3455                 switch (SYMBOL_CLASS (candidates[j].symbol))
3456                   {
3457                   case LOC_REGISTER:
3458                   case LOC_ARG:
3459                   case LOC_REF_ARG:
3460                   case LOC_REGPARM_ADDR:
3461                   case LOC_LOCAL:
3462                   case LOC_COMPUTED:
3463                     goto FoundNonType;
3464                   default:
3465                     break;
3466                   }
3467             FoundNonType:
3468               if (j < n_candidates)
3469                 {
3470                   j = 0;
3471                   while (j < n_candidates)
3472                     {
3473                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3474                         {
3475                           candidates[j] = candidates[n_candidates - 1];
3476                           n_candidates -= 1;
3477                         }
3478                       else
3479                         j += 1;
3480                     }
3481                 }
3482             }
3483
3484           if (n_candidates == 0)
3485             error (_("No definition found for %s"),
3486                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3487           else if (n_candidates == 1)
3488             i = 0;
3489           else if (deprocedure_p
3490                    && !is_nonfunction (candidates, n_candidates))
3491             {
3492               i = ada_resolve_function
3493                 (candidates, n_candidates, NULL, 0,
3494                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3495                  context_type);
3496               if (i < 0)
3497                 error (_("Could not find a match for %s"),
3498                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3499             }
3500           else
3501             {
3502               printf_filtered (_("Multiple matches for %s\n"),
3503                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3504               user_select_syms (candidates, n_candidates, 1);
3505               i = 0;
3506             }
3507
3508           exp->elts[pc + 1].block = candidates[i].block;
3509           exp->elts[pc + 2].symbol = candidates[i].symbol;
3510           if (innermost_block == NULL
3511               || contained_in (candidates[i].block, innermost_block))
3512             innermost_block = candidates[i].block;
3513         }
3514
3515       if (deprocedure_p
3516           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3517               == TYPE_CODE_FUNC))
3518         {
3519           replace_operator_with_call (expp, pc, 0, 0,
3520                                       exp->elts[pc + 2].symbol,
3521                                       exp->elts[pc + 1].block);
3522           exp = expp->get ();
3523         }
3524       break;
3525
3526     case OP_FUNCALL:
3527       {
3528         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3529             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3530           {
3531             struct block_symbol *candidates;
3532             int n_candidates;
3533
3534             n_candidates =
3535               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3536                                       (exp->elts[pc + 5].symbol),
3537                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3538                                       &candidates);
3539             make_cleanup (xfree, candidates);
3540
3541             if (n_candidates == 1)
3542               i = 0;
3543             else
3544               {
3545                 i = ada_resolve_function
3546                   (candidates, n_candidates,
3547                    argvec, nargs,
3548                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3549                    context_type);
3550                 if (i < 0)
3551                   error (_("Could not find a match for %s"),
3552                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3553               }
3554
3555             exp->elts[pc + 4].block = candidates[i].block;
3556             exp->elts[pc + 5].symbol = candidates[i].symbol;
3557             if (innermost_block == NULL
3558                 || contained_in (candidates[i].block, innermost_block))
3559               innermost_block = candidates[i].block;
3560           }
3561       }
3562       break;
3563     case BINOP_ADD:
3564     case BINOP_SUB:
3565     case BINOP_MUL:
3566     case BINOP_DIV:
3567     case BINOP_REM:
3568     case BINOP_MOD:
3569     case BINOP_CONCAT:
3570     case BINOP_BITWISE_AND:
3571     case BINOP_BITWISE_IOR:
3572     case BINOP_BITWISE_XOR:
3573     case BINOP_EQUAL:
3574     case BINOP_NOTEQUAL:
3575     case BINOP_LESS:
3576     case BINOP_GTR:
3577     case BINOP_LEQ:
3578     case BINOP_GEQ:
3579     case BINOP_EXP:
3580     case UNOP_NEG:
3581     case UNOP_PLUS:
3582     case UNOP_LOGICAL_NOT:
3583     case UNOP_ABS:
3584       if (possible_user_operator_p (op, argvec))
3585         {
3586           struct block_symbol *candidates;
3587           int n_candidates;
3588
3589           n_candidates =
3590             ada_lookup_symbol_list (ada_decoded_op_name (op),
3591                                     (struct block *) NULL, VAR_DOMAIN,
3592                                     &candidates);
3593           make_cleanup (xfree, candidates);
3594
3595           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3596                                     ada_decoded_op_name (op), NULL);
3597           if (i < 0)
3598             break;
3599
3600           replace_operator_with_call (expp, pc, nargs, 1,
3601                                       candidates[i].symbol,
3602                                       candidates[i].block);
3603           exp = expp->get ();
3604         }
3605       break;
3606
3607     case OP_TYPE:
3608     case OP_REGISTER:
3609       do_cleanups (old_chain);
3610       return NULL;
3611     }
3612
3613   *pos = pc;
3614   do_cleanups (old_chain);
3615   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3616     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3617                                     exp->elts[pc + 1].objfile,
3618                                     exp->elts[pc + 2].msymbol);
3619   else
3620     return evaluate_subexp_type (exp, pos);
3621 }
3622
3623 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3624    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3625    a non-pointer.  */
3626 /* The term "match" here is rather loose.  The match is heuristic and
3627    liberal.  */
3628
3629 static int
3630 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3631 {
3632   ftype = ada_check_typedef (ftype);
3633   atype = ada_check_typedef (atype);
3634
3635   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3636     ftype = TYPE_TARGET_TYPE (ftype);
3637   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3638     atype = TYPE_TARGET_TYPE (atype);
3639
3640   switch (TYPE_CODE (ftype))
3641     {
3642     default:
3643       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3644     case TYPE_CODE_PTR:
3645       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3646         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3647                                TYPE_TARGET_TYPE (atype), 0);
3648       else
3649         return (may_deref
3650                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3651     case TYPE_CODE_INT:
3652     case TYPE_CODE_ENUM:
3653     case TYPE_CODE_RANGE:
3654       switch (TYPE_CODE (atype))
3655         {
3656         case TYPE_CODE_INT:
3657         case TYPE_CODE_ENUM:
3658         case TYPE_CODE_RANGE:
3659           return 1;
3660         default:
3661           return 0;
3662         }
3663
3664     case TYPE_CODE_ARRAY:
3665       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3666               || ada_is_array_descriptor_type (atype));
3667
3668     case TYPE_CODE_STRUCT:
3669       if (ada_is_array_descriptor_type (ftype))
3670         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3671                 || ada_is_array_descriptor_type (atype));
3672       else
3673         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3674                 && !ada_is_array_descriptor_type (atype));
3675
3676     case TYPE_CODE_UNION:
3677     case TYPE_CODE_FLT:
3678       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3679     }
3680 }
3681
3682 /* Return non-zero if the formals of FUNC "sufficiently match" the
3683    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3684    may also be an enumeral, in which case it is treated as a 0-
3685    argument function.  */
3686
3687 static int
3688 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3689 {
3690   int i;
3691   struct type *func_type = SYMBOL_TYPE (func);
3692
3693   if (SYMBOL_CLASS (func) == LOC_CONST
3694       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3695     return (n_actuals == 0);
3696   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3697     return 0;
3698
3699   if (TYPE_NFIELDS (func_type) != n_actuals)
3700     return 0;
3701
3702   for (i = 0; i < n_actuals; i += 1)
3703     {
3704       if (actuals[i] == NULL)
3705         return 0;
3706       else
3707         {
3708           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3709                                                                    i));
3710           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3711
3712           if (!ada_type_match (ftype, atype, 1))
3713             return 0;
3714         }
3715     }
3716   return 1;
3717 }
3718
3719 /* False iff function type FUNC_TYPE definitely does not produce a value
3720    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3721    FUNC_TYPE is not a valid function type with a non-null return type
3722    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3723
3724 static int
3725 return_match (struct type *func_type, struct type *context_type)
3726 {
3727   struct type *return_type;
3728
3729   if (func_type == NULL)
3730     return 1;
3731
3732   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3733     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3734   else
3735     return_type = get_base_type (func_type);
3736   if (return_type == NULL)
3737     return 1;
3738
3739   context_type = get_base_type (context_type);
3740
3741   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3742     return context_type == NULL || return_type == context_type;
3743   else if (context_type == NULL)
3744     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3745   else
3746     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3747 }
3748
3749
3750 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3751    function (if any) that matches the types of the NARGS arguments in
3752    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3753    that returns that type, then eliminate matches that don't.  If
3754    CONTEXT_TYPE is void and there is at least one match that does not
3755    return void, eliminate all matches that do.
3756
3757    Asks the user if there is more than one match remaining.  Returns -1
3758    if there is no such symbol or none is selected.  NAME is used
3759    solely for messages.  May re-arrange and modify SYMS in
3760    the process; the index returned is for the modified vector.  */
3761
3762 static int
3763 ada_resolve_function (struct block_symbol syms[],
3764                       int nsyms, struct value **args, int nargs,
3765                       const char *name, struct type *context_type)
3766 {
3767   int fallback;
3768   int k;
3769   int m;                        /* Number of hits */
3770
3771   m = 0;
3772   /* In the first pass of the loop, we only accept functions matching
3773      context_type.  If none are found, we add a second pass of the loop
3774      where every function is accepted.  */
3775   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3776     {
3777       for (k = 0; k < nsyms; k += 1)
3778         {
3779           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3780
3781           if (ada_args_match (syms[k].symbol, args, nargs)
3782               && (fallback || return_match (type, context_type)))
3783             {
3784               syms[m] = syms[k];
3785               m += 1;
3786             }
3787         }
3788     }
3789
3790   /* If we got multiple matches, ask the user which one to use.  Don't do this
3791      interactive thing during completion, though, as the purpose of the
3792      completion is providing a list of all possible matches.  Prompting the
3793      user to filter it down would be completely unexpected in this case.  */
3794   if (m == 0)
3795     return -1;
3796   else if (m > 1 && !parse_completion)
3797     {
3798       printf_filtered (_("Multiple matches for %s\n"), name);
3799       user_select_syms (syms, m, 1);
3800       return 0;
3801     }
3802   return 0;
3803 }
3804
3805 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3806    in a listing of choices during disambiguation (see sort_choices, below).
3807    The idea is that overloadings of a subprogram name from the
3808    same package should sort in their source order.  We settle for ordering
3809    such symbols by their trailing number (__N  or $N).  */
3810
3811 static int
3812 encoded_ordered_before (const char *N0, const char *N1)
3813 {
3814   if (N1 == NULL)
3815     return 0;
3816   else if (N0 == NULL)
3817     return 1;
3818   else
3819     {
3820       int k0, k1;
3821
3822       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3823         ;
3824       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3825         ;
3826       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3827           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3828         {
3829           int n0, n1;
3830
3831           n0 = k0;
3832           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3833             n0 -= 1;
3834           n1 = k1;
3835           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3836             n1 -= 1;
3837           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3838             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3839         }
3840       return (strcmp (N0, N1) < 0);
3841     }
3842 }
3843
3844 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3845    encoded names.  */
3846
3847 static void
3848 sort_choices (struct block_symbol syms[], int nsyms)
3849 {
3850   int i;
3851
3852   for (i = 1; i < nsyms; i += 1)
3853     {
3854       struct block_symbol sym = syms[i];
3855       int j;
3856
3857       for (j = i - 1; j >= 0; j -= 1)
3858         {
3859           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3860                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3861             break;
3862           syms[j + 1] = syms[j];
3863         }
3864       syms[j + 1] = sym;
3865     }
3866 }
3867
3868 /* Whether GDB should display formals and return types for functions in the
3869    overloads selection menu.  */
3870 static int print_signatures = 1;
3871
3872 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3873    all but functions, the signature is just the name of the symbol.  For
3874    functions, this is the name of the function, the list of types for formals
3875    and the return type (if any).  */
3876
3877 static void
3878 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3879                             const struct type_print_options *flags)
3880 {
3881   struct type *type = SYMBOL_TYPE (sym);
3882
3883   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3884   if (!print_signatures
3885       || type == NULL
3886       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3887     return;
3888
3889   if (TYPE_NFIELDS (type) > 0)
3890     {
3891       int i;
3892
3893       fprintf_filtered (stream, " (");
3894       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3895         {
3896           if (i > 0)
3897             fprintf_filtered (stream, "; ");
3898           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3899                           flags);
3900         }
3901       fprintf_filtered (stream, ")");
3902     }
3903   if (TYPE_TARGET_TYPE (type) != NULL
3904       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3905     {
3906       fprintf_filtered (stream, " return ");
3907       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3908     }
3909 }
3910
3911 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3912    by asking the user (if necessary), returning the number selected, 
3913    and setting the first elements of SYMS items.  Error if no symbols
3914    selected.  */
3915
3916 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3917    to be re-integrated one of these days.  */
3918
3919 int
3920 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3921 {
3922   int i;
3923   int *chosen = XALLOCAVEC (int , nsyms);
3924   int n_chosen;
3925   int first_choice = (max_results == 1) ? 1 : 2;
3926   const char *select_mode = multiple_symbols_select_mode ();
3927
3928   if (max_results < 1)
3929     error (_("Request to select 0 symbols!"));
3930   if (nsyms <= 1)
3931     return nsyms;
3932
3933   if (select_mode == multiple_symbols_cancel)
3934     error (_("\
3935 canceled because the command is ambiguous\n\
3936 See set/show multiple-symbol."));
3937   
3938   /* If select_mode is "all", then return all possible symbols.
3939      Only do that if more than one symbol can be selected, of course.
3940      Otherwise, display the menu as usual.  */
3941   if (select_mode == multiple_symbols_all && max_results > 1)
3942     return nsyms;
3943
3944   printf_unfiltered (_("[0] cancel\n"));
3945   if (max_results > 1)
3946     printf_unfiltered (_("[1] all\n"));
3947
3948   sort_choices (syms, nsyms);
3949
3950   for (i = 0; i < nsyms; i += 1)
3951     {
3952       if (syms[i].symbol == NULL)
3953         continue;
3954
3955       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3956         {
3957           struct symtab_and_line sal =
3958             find_function_start_sal (syms[i].symbol, 1);
3959
3960           printf_unfiltered ("[%d] ", i + first_choice);
3961           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3962                                       &type_print_raw_options);
3963           if (sal.symtab == NULL)
3964             printf_unfiltered (_(" at <no source file available>:%d\n"),
3965                                sal.line);
3966           else
3967             printf_unfiltered (_(" at %s:%d\n"),
3968                                symtab_to_filename_for_display (sal.symtab),
3969                                sal.line);
3970           continue;
3971         }
3972       else
3973         {
3974           int is_enumeral =
3975             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3976              && SYMBOL_TYPE (syms[i].symbol) != NULL
3977              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3978           struct symtab *symtab = NULL;
3979
3980           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3981             symtab = symbol_symtab (syms[i].symbol);
3982
3983           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3984             {
3985               printf_unfiltered ("[%d] ", i + first_choice);
3986               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3987                                           &type_print_raw_options);
3988               printf_unfiltered (_(" at %s:%d\n"),
3989                                  symtab_to_filename_for_display (symtab),
3990                                  SYMBOL_LINE (syms[i].symbol));
3991             }
3992           else if (is_enumeral
3993                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3994             {
3995               printf_unfiltered (("[%d] "), i + first_choice);
3996               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3997                               gdb_stdout, -1, 0, &type_print_raw_options);
3998               printf_unfiltered (_("'(%s) (enumeral)\n"),
3999                                  SYMBOL_PRINT_NAME (syms[i].symbol));
4000             }
4001           else
4002             {
4003               printf_unfiltered ("[%d] ", i + first_choice);
4004               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
4005                                           &type_print_raw_options);
4006
4007               if (symtab != NULL)
4008                 printf_unfiltered (is_enumeral
4009                                    ? _(" in %s (enumeral)\n")
4010                                    : _(" at %s:?\n"),
4011                                    symtab_to_filename_for_display (symtab));
4012               else
4013                 printf_unfiltered (is_enumeral
4014                                    ? _(" (enumeral)\n")
4015                                    : _(" at ?\n"));
4016             }
4017         }
4018     }
4019
4020   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4021                              "overload-choice");
4022
4023   for (i = 0; i < n_chosen; i += 1)
4024     syms[i] = syms[chosen[i]];
4025
4026   return n_chosen;
4027 }
4028
4029 /* Read and validate a set of numeric choices from the user in the
4030    range 0 .. N_CHOICES-1.  Place the results in increasing
4031    order in CHOICES[0 .. N-1], and return N.
4032
4033    The user types choices as a sequence of numbers on one line
4034    separated by blanks, encoding them as follows:
4035
4036      + A choice of 0 means to cancel the selection, throwing an error.
4037      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4038      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4039
4040    The user is not allowed to choose more than MAX_RESULTS values.
4041
4042    ANNOTATION_SUFFIX, if present, is used to annotate the input
4043    prompts (for use with the -f switch).  */
4044
4045 int
4046 get_selections (int *choices, int n_choices, int max_results,
4047                 int is_all_choice, const char *annotation_suffix)
4048 {
4049   char *args;
4050   const char *prompt;
4051   int n_chosen;
4052   int first_choice = is_all_choice ? 2 : 1;
4053
4054   prompt = getenv ("PS2");
4055   if (prompt == NULL)
4056     prompt = "> ";
4057
4058   args = command_line_input (prompt, 0, annotation_suffix);
4059
4060   if (args == NULL)
4061     error_no_arg (_("one or more choice numbers"));
4062
4063   n_chosen = 0;
4064
4065   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4066      order, as given in args.  Choices are validated.  */
4067   while (1)
4068     {
4069       char *args2;
4070       int choice, j;
4071
4072       args = skip_spaces (args);
4073       if (*args == '\0' && n_chosen == 0)
4074         error_no_arg (_("one or more choice numbers"));
4075       else if (*args == '\0')
4076         break;
4077
4078       choice = strtol (args, &args2, 10);
4079       if (args == args2 || choice < 0
4080           || choice > n_choices + first_choice - 1)
4081         error (_("Argument must be choice number"));
4082       args = args2;
4083
4084       if (choice == 0)
4085         error (_("cancelled"));
4086
4087       if (choice < first_choice)
4088         {
4089           n_chosen = n_choices;
4090           for (j = 0; j < n_choices; j += 1)
4091             choices[j] = j;
4092           break;
4093         }
4094       choice -= first_choice;
4095
4096       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4097         {
4098         }
4099
4100       if (j < 0 || choice != choices[j])
4101         {
4102           int k;
4103
4104           for (k = n_chosen - 1; k > j; k -= 1)
4105             choices[k + 1] = choices[k];
4106           choices[j + 1] = choice;
4107           n_chosen += 1;
4108         }
4109     }
4110
4111   if (n_chosen > max_results)
4112     error (_("Select no more than %d of the above"), max_results);
4113
4114   return n_chosen;
4115 }
4116
4117 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4118    on the function identified by SYM and BLOCK, and taking NARGS
4119    arguments.  Update *EXPP as needed to hold more space.  */
4120
4121 static void
4122 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4123                             int oplen, struct symbol *sym,
4124                             const struct block *block)
4125 {
4126   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4127      symbol, -oplen for operator being replaced).  */
4128   struct expression *newexp = (struct expression *)
4129     xzalloc (sizeof (struct expression)
4130              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4131   struct expression *exp = expp->get ();
4132
4133   newexp->nelts = exp->nelts + 7 - oplen;
4134   newexp->language_defn = exp->language_defn;
4135   newexp->gdbarch = exp->gdbarch;
4136   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4137   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4138           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4139
4140   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4141   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4142
4143   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4144   newexp->elts[pc + 4].block = block;
4145   newexp->elts[pc + 5].symbol = sym;
4146
4147   expp->reset (newexp);
4148 }
4149
4150 /* Type-class predicates */
4151
4152 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4153    or FLOAT).  */
4154
4155 static int
4156 numeric_type_p (struct type *type)
4157 {
4158   if (type == NULL)
4159     return 0;
4160   else
4161     {
4162       switch (TYPE_CODE (type))
4163         {
4164         case TYPE_CODE_INT:
4165         case TYPE_CODE_FLT:
4166           return 1;
4167         case TYPE_CODE_RANGE:
4168           return (type == TYPE_TARGET_TYPE (type)
4169                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4170         default:
4171           return 0;
4172         }
4173     }
4174 }
4175
4176 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4177
4178 static int
4179 integer_type_p (struct type *type)
4180 {
4181   if (type == NULL)
4182     return 0;
4183   else
4184     {
4185       switch (TYPE_CODE (type))
4186         {
4187         case TYPE_CODE_INT:
4188           return 1;
4189         case TYPE_CODE_RANGE:
4190           return (type == TYPE_TARGET_TYPE (type)
4191                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4192         default:
4193           return 0;
4194         }
4195     }
4196 }
4197
4198 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4199
4200 static int
4201 scalar_type_p (struct type *type)
4202 {
4203   if (type == NULL)
4204     return 0;
4205   else
4206     {
4207       switch (TYPE_CODE (type))
4208         {
4209         case TYPE_CODE_INT:
4210         case TYPE_CODE_RANGE:
4211         case TYPE_CODE_ENUM:
4212         case TYPE_CODE_FLT:
4213           return 1;
4214         default:
4215           return 0;
4216         }
4217     }
4218 }
4219
4220 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4221
4222 static int
4223 discrete_type_p (struct type *type)
4224 {
4225   if (type == NULL)
4226     return 0;
4227   else
4228     {
4229       switch (TYPE_CODE (type))
4230         {
4231         case TYPE_CODE_INT:
4232         case TYPE_CODE_RANGE:
4233         case TYPE_CODE_ENUM:
4234         case TYPE_CODE_BOOL:
4235           return 1;
4236         default:
4237           return 0;
4238         }
4239     }
4240 }
4241
4242 /* Returns non-zero if OP with operands in the vector ARGS could be
4243    a user-defined function.  Errs on the side of pre-defined operators
4244    (i.e., result 0).  */
4245
4246 static int
4247 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4248 {
4249   struct type *type0 =
4250     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4251   struct type *type1 =
4252     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4253
4254   if (type0 == NULL)
4255     return 0;
4256
4257   switch (op)
4258     {
4259     default:
4260       return 0;
4261
4262     case BINOP_ADD:
4263     case BINOP_SUB:
4264     case BINOP_MUL:
4265     case BINOP_DIV:
4266       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4267
4268     case BINOP_REM:
4269     case BINOP_MOD:
4270     case BINOP_BITWISE_AND:
4271     case BINOP_BITWISE_IOR:
4272     case BINOP_BITWISE_XOR:
4273       return (!(integer_type_p (type0) && integer_type_p (type1)));
4274
4275     case BINOP_EQUAL:
4276     case BINOP_NOTEQUAL:
4277     case BINOP_LESS:
4278     case BINOP_GTR:
4279     case BINOP_LEQ:
4280     case BINOP_GEQ:
4281       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4282
4283     case BINOP_CONCAT:
4284       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4285
4286     case BINOP_EXP:
4287       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4288
4289     case UNOP_NEG:
4290     case UNOP_PLUS:
4291     case UNOP_LOGICAL_NOT:
4292     case UNOP_ABS:
4293       return (!numeric_type_p (type0));
4294
4295     }
4296 }
4297 \f
4298                                 /* Renaming */
4299
4300 /* NOTES: 
4301
4302    1. In the following, we assume that a renaming type's name may
4303       have an ___XD suffix.  It would be nice if this went away at some
4304       point.
4305    2. We handle both the (old) purely type-based representation of 
4306       renamings and the (new) variable-based encoding.  At some point,
4307       it is devoutly to be hoped that the former goes away 
4308       (FIXME: hilfinger-2007-07-09).
4309    3. Subprogram renamings are not implemented, although the XRS
4310       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4311
4312 /* If SYM encodes a renaming, 
4313
4314        <renaming> renames <renamed entity>,
4315
4316    sets *LEN to the length of the renamed entity's name,
4317    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4318    the string describing the subcomponent selected from the renamed
4319    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4320    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4321    are undefined).  Otherwise, returns a value indicating the category
4322    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4323    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4324    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4325    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4326    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4327    may be NULL, in which case they are not assigned.
4328
4329    [Currently, however, GCC does not generate subprogram renamings.]  */
4330
4331 enum ada_renaming_category
4332 ada_parse_renaming (struct symbol *sym,
4333                     const char **renamed_entity, int *len, 
4334                     const char **renaming_expr)
4335 {
4336   enum ada_renaming_category kind;
4337   const char *info;
4338   const char *suffix;
4339
4340   if (sym == NULL)
4341     return ADA_NOT_RENAMING;
4342   switch (SYMBOL_CLASS (sym)) 
4343     {
4344     default:
4345       return ADA_NOT_RENAMING;
4346     case LOC_TYPEDEF:
4347       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4348                                        renamed_entity, len, renaming_expr);
4349     case LOC_LOCAL:
4350     case LOC_STATIC:
4351     case LOC_COMPUTED:
4352     case LOC_OPTIMIZED_OUT:
4353       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4354       if (info == NULL)
4355         return ADA_NOT_RENAMING;
4356       switch (info[5])
4357         {
4358         case '_':
4359           kind = ADA_OBJECT_RENAMING;
4360           info += 6;
4361           break;
4362         case 'E':
4363           kind = ADA_EXCEPTION_RENAMING;
4364           info += 7;
4365           break;
4366         case 'P':
4367           kind = ADA_PACKAGE_RENAMING;
4368           info += 7;
4369           break;
4370         case 'S':
4371           kind = ADA_SUBPROGRAM_RENAMING;
4372           info += 7;
4373           break;
4374         default:
4375           return ADA_NOT_RENAMING;
4376         }
4377     }
4378
4379   if (renamed_entity != NULL)
4380     *renamed_entity = info;
4381   suffix = strstr (info, "___XE");
4382   if (suffix == NULL || suffix == info)
4383     return ADA_NOT_RENAMING;
4384   if (len != NULL)
4385     *len = strlen (info) - strlen (suffix);
4386   suffix += 5;
4387   if (renaming_expr != NULL)
4388     *renaming_expr = suffix;
4389   return kind;
4390 }
4391
4392 /* Assuming TYPE encodes a renaming according to the old encoding in
4393    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4394    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4395    ADA_NOT_RENAMING otherwise.  */
4396 static enum ada_renaming_category
4397 parse_old_style_renaming (struct type *type,
4398                           const char **renamed_entity, int *len, 
4399                           const char **renaming_expr)
4400 {
4401   enum ada_renaming_category kind;
4402   const char *name;
4403   const char *info;
4404   const char *suffix;
4405
4406   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4407       || TYPE_NFIELDS (type) != 1)
4408     return ADA_NOT_RENAMING;
4409
4410   name = type_name_no_tag (type);
4411   if (name == NULL)
4412     return ADA_NOT_RENAMING;
4413   
4414   name = strstr (name, "___XR");
4415   if (name == NULL)
4416     return ADA_NOT_RENAMING;
4417   switch (name[5])
4418     {
4419     case '\0':
4420     case '_':
4421       kind = ADA_OBJECT_RENAMING;
4422       break;
4423     case 'E':
4424       kind = ADA_EXCEPTION_RENAMING;
4425       break;
4426     case 'P':
4427       kind = ADA_PACKAGE_RENAMING;
4428       break;
4429     case 'S':
4430       kind = ADA_SUBPROGRAM_RENAMING;
4431       break;
4432     default:
4433       return ADA_NOT_RENAMING;
4434     }
4435
4436   info = TYPE_FIELD_NAME (type, 0);
4437   if (info == NULL)
4438     return ADA_NOT_RENAMING;
4439   if (renamed_entity != NULL)
4440     *renamed_entity = info;
4441   suffix = strstr (info, "___XE");
4442   if (renaming_expr != NULL)
4443     *renaming_expr = suffix + 5;
4444   if (suffix == NULL || suffix == info)
4445     return ADA_NOT_RENAMING;
4446   if (len != NULL)
4447     *len = suffix - info;
4448   return kind;
4449 }
4450
4451 /* Compute the value of the given RENAMING_SYM, which is expected to
4452    be a symbol encoding a renaming expression.  BLOCK is the block
4453    used to evaluate the renaming.  */
4454
4455 static struct value *
4456 ada_read_renaming_var_value (struct symbol *renaming_sym,
4457                              const struct block *block)
4458 {
4459   const char *sym_name;
4460
4461   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4462   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4463   return evaluate_expression (expr.get ());
4464 }
4465 \f
4466
4467                                 /* Evaluation: Function Calls */
4468
4469 /* Return an lvalue containing the value VAL.  This is the identity on
4470    lvalues, and otherwise has the side-effect of allocating memory
4471    in the inferior where a copy of the value contents is copied.  */
4472
4473 static struct value *
4474 ensure_lval (struct value *val)
4475 {
4476   if (VALUE_LVAL (val) == not_lval
4477       || VALUE_LVAL (val) == lval_internalvar)
4478     {
4479       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4480       const CORE_ADDR addr =
4481         value_as_long (value_allocate_space_in_inferior (len));
4482
4483       VALUE_LVAL (val) = lval_memory;
4484       set_value_address (val, addr);
4485       write_memory (addr, value_contents (val), len);
4486     }
4487
4488   return val;
4489 }
4490
4491 /* Return the value ACTUAL, converted to be an appropriate value for a
4492    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4493    allocating any necessary descriptors (fat pointers), or copies of
4494    values not residing in memory, updating it as needed.  */
4495
4496 struct value *
4497 ada_convert_actual (struct value *actual, struct type *formal_type0)
4498 {
4499   struct type *actual_type = ada_check_typedef (value_type (actual));
4500   struct type *formal_type = ada_check_typedef (formal_type0);
4501   struct type *formal_target =
4502     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4503     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4504   struct type *actual_target =
4505     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4506     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4507
4508   if (ada_is_array_descriptor_type (formal_target)
4509       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4510     return make_array_descriptor (formal_type, actual);
4511   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4512            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4513     {
4514       struct value *result;
4515
4516       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4517           && ada_is_array_descriptor_type (actual_target))
4518         result = desc_data (actual);
4519       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4520         {
4521           if (VALUE_LVAL (actual) != lval_memory)
4522             {
4523               struct value *val;
4524
4525               actual_type = ada_check_typedef (value_type (actual));
4526               val = allocate_value (actual_type);
4527               memcpy ((char *) value_contents_raw (val),
4528                       (char *) value_contents (actual),
4529                       TYPE_LENGTH (actual_type));
4530               actual = ensure_lval (val);
4531             }
4532           result = value_addr (actual);
4533         }
4534       else
4535         return actual;
4536       return value_cast_pointers (formal_type, result, 0);
4537     }
4538   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4539     return ada_value_ind (actual);
4540   else if (ada_is_aligner_type (formal_type))
4541     {
4542       /* We need to turn this parameter into an aligner type
4543          as well.  */
4544       struct value *aligner = allocate_value (formal_type);
4545       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4546
4547       value_assign_to_component (aligner, component, actual);
4548       return aligner;
4549     }
4550
4551   return actual;
4552 }
4553
4554 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4555    type TYPE.  This is usually an inefficient no-op except on some targets
4556    (such as AVR) where the representation of a pointer and an address
4557    differs.  */
4558
4559 static CORE_ADDR
4560 value_pointer (struct value *value, struct type *type)
4561 {
4562   struct gdbarch *gdbarch = get_type_arch (type);
4563   unsigned len = TYPE_LENGTH (type);
4564   gdb_byte *buf = (gdb_byte *) alloca (len);
4565   CORE_ADDR addr;
4566
4567   addr = value_address (value);
4568   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4569   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4570   return addr;
4571 }
4572
4573
4574 /* Push a descriptor of type TYPE for array value ARR on the stack at
4575    *SP, updating *SP to reflect the new descriptor.  Return either
4576    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4577    to-descriptor type rather than a descriptor type), a struct value *
4578    representing a pointer to this descriptor.  */
4579
4580 static struct value *
4581 make_array_descriptor (struct type *type, struct value *arr)
4582 {
4583   struct type *bounds_type = desc_bounds_type (type);
4584   struct type *desc_type = desc_base_type (type);
4585   struct value *descriptor = allocate_value (desc_type);
4586   struct value *bounds = allocate_value (bounds_type);
4587   int i;
4588
4589   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4590        i > 0; i -= 1)
4591     {
4592       modify_field (value_type (bounds), value_contents_writeable (bounds),
4593                     ada_array_bound (arr, i, 0),
4594                     desc_bound_bitpos (bounds_type, i, 0),
4595                     desc_bound_bitsize (bounds_type, i, 0));
4596       modify_field (value_type (bounds), value_contents_writeable (bounds),
4597                     ada_array_bound (arr, i, 1),
4598                     desc_bound_bitpos (bounds_type, i, 1),
4599                     desc_bound_bitsize (bounds_type, i, 1));
4600     }
4601
4602   bounds = ensure_lval (bounds);
4603
4604   modify_field (value_type (descriptor),
4605                 value_contents_writeable (descriptor),
4606                 value_pointer (ensure_lval (arr),
4607                                TYPE_FIELD_TYPE (desc_type, 0)),
4608                 fat_pntr_data_bitpos (desc_type),
4609                 fat_pntr_data_bitsize (desc_type));
4610
4611   modify_field (value_type (descriptor),
4612                 value_contents_writeable (descriptor),
4613                 value_pointer (bounds,
4614                                TYPE_FIELD_TYPE (desc_type, 1)),
4615                 fat_pntr_bounds_bitpos (desc_type),
4616                 fat_pntr_bounds_bitsize (desc_type));
4617
4618   descriptor = ensure_lval (descriptor);
4619
4620   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4621     return value_addr (descriptor);
4622   else
4623     return descriptor;
4624 }
4625 \f
4626                                 /* Symbol Cache Module */
4627
4628 /* Performance measurements made as of 2010-01-15 indicate that
4629    this cache does bring some noticeable improvements.  Depending
4630    on the type of entity being printed, the cache can make it as much
4631    as an order of magnitude faster than without it.
4632
4633    The descriptive type DWARF extension has significantly reduced
4634    the need for this cache, at least when DWARF is being used.  However,
4635    even in this case, some expensive name-based symbol searches are still
4636    sometimes necessary - to find an XVZ variable, mostly.  */
4637
4638 /* Initialize the contents of SYM_CACHE.  */
4639
4640 static void
4641 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4642 {
4643   obstack_init (&sym_cache->cache_space);
4644   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4645 }
4646
4647 /* Free the memory used by SYM_CACHE.  */
4648
4649 static void
4650 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4651 {
4652   obstack_free (&sym_cache->cache_space, NULL);
4653   xfree (sym_cache);
4654 }
4655
4656 /* Return the symbol cache associated to the given program space PSPACE.
4657    If not allocated for this PSPACE yet, allocate and initialize one.  */
4658
4659 static struct ada_symbol_cache *
4660 ada_get_symbol_cache (struct program_space *pspace)
4661 {
4662   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4663
4664   if (pspace_data->sym_cache == NULL)
4665     {
4666       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4667       ada_init_symbol_cache (pspace_data->sym_cache);
4668     }
4669
4670   return pspace_data->sym_cache;
4671 }
4672
4673 /* Clear all entries from the symbol cache.  */
4674
4675 static void
4676 ada_clear_symbol_cache (void)
4677 {
4678   struct ada_symbol_cache *sym_cache
4679     = ada_get_symbol_cache (current_program_space);
4680
4681   obstack_free (&sym_cache->cache_space, NULL);
4682   ada_init_symbol_cache (sym_cache);
4683 }
4684
4685 /* Search our cache for an entry matching NAME and DOMAIN.
4686    Return it if found, or NULL otherwise.  */
4687
4688 static struct cache_entry **
4689 find_entry (const char *name, domain_enum domain)
4690 {
4691   struct ada_symbol_cache *sym_cache
4692     = ada_get_symbol_cache (current_program_space);
4693   int h = msymbol_hash (name) % HASH_SIZE;
4694   struct cache_entry **e;
4695
4696   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4697     {
4698       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4699         return e;
4700     }
4701   return NULL;
4702 }
4703
4704 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4705    Return 1 if found, 0 otherwise.
4706
4707    If an entry was found and SYM is not NULL, set *SYM to the entry's
4708    SYM.  Same principle for BLOCK if not NULL.  */
4709
4710 static int
4711 lookup_cached_symbol (const char *name, domain_enum domain,
4712                       struct symbol **sym, const struct block **block)
4713 {
4714   struct cache_entry **e = find_entry (name, domain);
4715
4716   if (e == NULL)
4717     return 0;
4718   if (sym != NULL)
4719     *sym = (*e)->sym;
4720   if (block != NULL)
4721     *block = (*e)->block;
4722   return 1;
4723 }
4724
4725 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4726    in domain DOMAIN, save this result in our symbol cache.  */
4727
4728 static void
4729 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4730               const struct block *block)
4731 {
4732   struct ada_symbol_cache *sym_cache
4733     = ada_get_symbol_cache (current_program_space);
4734   int h;
4735   char *copy;
4736   struct cache_entry *e;
4737
4738   /* Symbols for builtin types don't have a block.
4739      For now don't cache such symbols.  */
4740   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4741     return;
4742
4743   /* If the symbol is a local symbol, then do not cache it, as a search
4744      for that symbol depends on the context.  To determine whether
4745      the symbol is local or not, we check the block where we found it
4746      against the global and static blocks of its associated symtab.  */
4747   if (sym
4748       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4749                             GLOBAL_BLOCK) != block
4750       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4751                             STATIC_BLOCK) != block)
4752     return;
4753
4754   h = msymbol_hash (name) % HASH_SIZE;
4755   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4756                                             sizeof (*e));
4757   e->next = sym_cache->root[h];
4758   sym_cache->root[h] = e;
4759   e->name = copy
4760     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4761   strcpy (copy, name);
4762   e->sym = sym;
4763   e->domain = domain;
4764   e->block = block;
4765 }
4766 \f
4767                                 /* Symbol Lookup */
4768
4769 /* Return the symbol name match type that should be used used when
4770    searching for all symbols matching LOOKUP_NAME.
4771
4772    LOOKUP_NAME is expected to be a symbol name after transformation
4773    for Ada lookups (see ada_name_for_lookup).  */
4774
4775 static symbol_name_match_type
4776 name_match_type_from_name (const char *lookup_name)
4777 {
4778   return (strstr (lookup_name, "__") == NULL
4779           ? symbol_name_match_type::WILD
4780           : symbol_name_match_type::FULL);
4781 }
4782
4783 /* Return the result of a standard (literal, C-like) lookup of NAME in
4784    given DOMAIN, visible from lexical block BLOCK.  */
4785
4786 static struct symbol *
4787 standard_lookup (const char *name, const struct block *block,
4788                  domain_enum domain)
4789 {
4790   /* Initialize it just to avoid a GCC false warning.  */
4791   struct block_symbol sym = {NULL, NULL};
4792
4793   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4794     return sym.symbol;
4795   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4796   cache_symbol (name, domain, sym.symbol, sym.block);
4797   return sym.symbol;
4798 }
4799
4800
4801 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4802    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4803    since they contend in overloading in the same way.  */
4804 static int
4805 is_nonfunction (struct block_symbol syms[], int n)
4806 {
4807   int i;
4808
4809   for (i = 0; i < n; i += 1)
4810     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4811         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4812             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4813       return 1;
4814
4815   return 0;
4816 }
4817
4818 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4819    struct types.  Otherwise, they may not.  */
4820
4821 static int
4822 equiv_types (struct type *type0, struct type *type1)
4823 {
4824   if (type0 == type1)
4825     return 1;
4826   if (type0 == NULL || type1 == NULL
4827       || TYPE_CODE (type0) != TYPE_CODE (type1))
4828     return 0;
4829   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4830        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4831       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4832       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4833     return 1;
4834
4835   return 0;
4836 }
4837
4838 /* True iff SYM0 represents the same entity as SYM1, or one that is
4839    no more defined than that of SYM1.  */
4840
4841 static int
4842 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4843 {
4844   if (sym0 == sym1)
4845     return 1;
4846   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4847       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4848     return 0;
4849
4850   switch (SYMBOL_CLASS (sym0))
4851     {
4852     case LOC_UNDEF:
4853       return 1;
4854     case LOC_TYPEDEF:
4855       {
4856         struct type *type0 = SYMBOL_TYPE (sym0);
4857         struct type *type1 = SYMBOL_TYPE (sym1);
4858         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4859         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4860         int len0 = strlen (name0);
4861
4862         return
4863           TYPE_CODE (type0) == TYPE_CODE (type1)
4864           && (equiv_types (type0, type1)
4865               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4866                   && startswith (name1 + len0, "___XV")));
4867       }
4868     case LOC_CONST:
4869       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4870         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4871     default:
4872       return 0;
4873     }
4874 }
4875
4876 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4877    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4878
4879 static void
4880 add_defn_to_vec (struct obstack *obstackp,
4881                  struct symbol *sym,
4882                  const struct block *block)
4883 {
4884   int i;
4885   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4886
4887   /* Do not try to complete stub types, as the debugger is probably
4888      already scanning all symbols matching a certain name at the
4889      time when this function is called.  Trying to replace the stub
4890      type by its associated full type will cause us to restart a scan
4891      which may lead to an infinite recursion.  Instead, the client
4892      collecting the matching symbols will end up collecting several
4893      matches, with at least one of them complete.  It can then filter
4894      out the stub ones if needed.  */
4895
4896   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4897     {
4898       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4899         return;
4900       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4901         {
4902           prevDefns[i].symbol = sym;
4903           prevDefns[i].block = block;
4904           return;
4905         }
4906     }
4907
4908   {
4909     struct block_symbol info;
4910
4911     info.symbol = sym;
4912     info.block = block;
4913     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4914   }
4915 }
4916
4917 /* Number of block_symbol structures currently collected in current vector in
4918    OBSTACKP.  */
4919
4920 static int
4921 num_defns_collected (struct obstack *obstackp)
4922 {
4923   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4924 }
4925
4926 /* Vector of block_symbol structures currently collected in current vector in
4927    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4928
4929 static struct block_symbol *
4930 defns_collected (struct obstack *obstackp, int finish)
4931 {
4932   if (finish)
4933     return (struct block_symbol *) obstack_finish (obstackp);
4934   else
4935     return (struct block_symbol *) obstack_base (obstackp);
4936 }
4937
4938 /* Return a bound minimal symbol matching NAME according to Ada
4939    decoding rules.  Returns an invalid symbol if there is no such
4940    minimal symbol.  Names prefixed with "standard__" are handled
4941    specially: "standard__" is first stripped off, and only static and
4942    global symbols are searched.  */
4943
4944 struct bound_minimal_symbol
4945 ada_lookup_simple_minsym (const char *name)
4946 {
4947   struct bound_minimal_symbol result;
4948   struct objfile *objfile;
4949   struct minimal_symbol *msymbol;
4950
4951   memset (&result, 0, sizeof (result));
4952
4953   symbol_name_match_type match_type = name_match_type_from_name (name);
4954   lookup_name_info lookup_name (name, match_type);
4955
4956   symbol_name_matcher_ftype *match_name
4957     = ada_get_symbol_name_matcher (lookup_name);
4958
4959   ALL_MSYMBOLS (objfile, msymbol)
4960   {
4961     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4962         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4963       {
4964         result.minsym = msymbol;
4965         result.objfile = objfile;
4966         break;
4967       }
4968   }
4969
4970   return result;
4971 }
4972
4973 /* For all subprograms that statically enclose the subprogram of the
4974    selected frame, add symbols matching identifier NAME in DOMAIN
4975    and their blocks to the list of data in OBSTACKP, as for
4976    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4977    with a wildcard prefix.  */
4978
4979 static void
4980 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4981                                   const lookup_name_info &lookup_name,
4982                                   domain_enum domain)
4983 {
4984 }
4985
4986 /* True if TYPE is definitely an artificial type supplied to a symbol
4987    for which no debugging information was given in the symbol file.  */
4988
4989 static int
4990 is_nondebugging_type (struct type *type)
4991 {
4992   const char *name = ada_type_name (type);
4993
4994   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4995 }
4996
4997 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4998    that are deemed "identical" for practical purposes.
4999
5000    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5001    types and that their number of enumerals is identical (in other
5002    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5003
5004 static int
5005 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5006 {
5007   int i;
5008
5009   /* The heuristic we use here is fairly conservative.  We consider
5010      that 2 enumerate types are identical if they have the same
5011      number of enumerals and that all enumerals have the same
5012      underlying value and name.  */
5013
5014   /* All enums in the type should have an identical underlying value.  */
5015   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5016     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5017       return 0;
5018
5019   /* All enumerals should also have the same name (modulo any numerical
5020      suffix).  */
5021   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5022     {
5023       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5024       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5025       int len_1 = strlen (name_1);
5026       int len_2 = strlen (name_2);
5027
5028       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5029       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5030       if (len_1 != len_2
5031           || strncmp (TYPE_FIELD_NAME (type1, i),
5032                       TYPE_FIELD_NAME (type2, i),
5033                       len_1) != 0)
5034         return 0;
5035     }
5036
5037   return 1;
5038 }
5039
5040 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5041    that are deemed "identical" for practical purposes.  Sometimes,
5042    enumerals are not strictly identical, but their types are so similar
5043    that they can be considered identical.
5044
5045    For instance, consider the following code:
5046
5047       type Color is (Black, Red, Green, Blue, White);
5048       type RGB_Color is new Color range Red .. Blue;
5049
5050    Type RGB_Color is a subrange of an implicit type which is a copy
5051    of type Color. If we call that implicit type RGB_ColorB ("B" is
5052    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5053    As a result, when an expression references any of the enumeral
5054    by name (Eg. "print green"), the expression is technically
5055    ambiguous and the user should be asked to disambiguate. But
5056    doing so would only hinder the user, since it wouldn't matter
5057    what choice he makes, the outcome would always be the same.
5058    So, for practical purposes, we consider them as the same.  */
5059
5060 static int
5061 symbols_are_identical_enums (struct block_symbol *syms, int nsyms)
5062 {
5063   int i;
5064
5065   /* Before performing a thorough comparison check of each type,
5066      we perform a series of inexpensive checks.  We expect that these
5067      checks will quickly fail in the vast majority of cases, and thus
5068      help prevent the unnecessary use of a more expensive comparison.
5069      Said comparison also expects us to make some of these checks
5070      (see ada_identical_enum_types_p).  */
5071
5072   /* Quick check: All symbols should have an enum type.  */
5073   for (i = 0; i < nsyms; i++)
5074     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5075       return 0;
5076
5077   /* Quick check: They should all have the same value.  */
5078   for (i = 1; i < nsyms; i++)
5079     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5080       return 0;
5081
5082   /* Quick check: They should all have the same number of enumerals.  */
5083   for (i = 1; i < nsyms; i++)
5084     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5085         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5086       return 0;
5087
5088   /* All the sanity checks passed, so we might have a set of
5089      identical enumeration types.  Perform a more complete
5090      comparison of the type of each symbol.  */
5091   for (i = 1; i < nsyms; i++)
5092     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5093                                      SYMBOL_TYPE (syms[0].symbol)))
5094       return 0;
5095
5096   return 1;
5097 }
5098
5099 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
5100    duplicate other symbols in the list (The only case I know of where
5101    this happens is when object files containing stabs-in-ecoff are
5102    linked with files containing ordinary ecoff debugging symbols (or no
5103    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5104    Returns the number of items in the modified list.  */
5105
5106 static int
5107 remove_extra_symbols (struct block_symbol *syms, int nsyms)
5108 {
5109   int i, j;
5110
5111   /* We should never be called with less than 2 symbols, as there
5112      cannot be any extra symbol in that case.  But it's easy to
5113      handle, since we have nothing to do in that case.  */
5114   if (nsyms < 2)
5115     return nsyms;
5116
5117   i = 0;
5118   while (i < nsyms)
5119     {
5120       int remove_p = 0;
5121
5122       /* If two symbols have the same name and one of them is a stub type,
5123          the get rid of the stub.  */
5124
5125       if (TYPE_STUB (SYMBOL_TYPE (syms[i].symbol))
5126           && SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL)
5127         {
5128           for (j = 0; j < nsyms; j++)
5129             {
5130               if (j != i
5131                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].symbol))
5132                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5133                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5134                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0)
5135                 remove_p = 1;
5136             }
5137         }
5138
5139       /* Two symbols with the same name, same class and same address
5140          should be identical.  */
5141
5142       else if (SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL
5143           && SYMBOL_CLASS (syms[i].symbol) == LOC_STATIC
5144           && is_nondebugging_type (SYMBOL_TYPE (syms[i].symbol)))
5145         {
5146           for (j = 0; j < nsyms; j += 1)
5147             {
5148               if (i != j
5149                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5150                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5151                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0
5152                   && SYMBOL_CLASS (syms[i].symbol)
5153                        == SYMBOL_CLASS (syms[j].symbol)
5154                   && SYMBOL_VALUE_ADDRESS (syms[i].symbol)
5155                   == SYMBOL_VALUE_ADDRESS (syms[j].symbol))
5156                 remove_p = 1;
5157             }
5158         }
5159       
5160       if (remove_p)
5161         {
5162           for (j = i + 1; j < nsyms; j += 1)
5163             syms[j - 1] = syms[j];
5164           nsyms -= 1;
5165         }
5166
5167       i += 1;
5168     }
5169
5170   /* If all the remaining symbols are identical enumerals, then
5171      just keep the first one and discard the rest.
5172
5173      Unlike what we did previously, we do not discard any entry
5174      unless they are ALL identical.  This is because the symbol
5175      comparison is not a strict comparison, but rather a practical
5176      comparison.  If all symbols are considered identical, then
5177      we can just go ahead and use the first one and discard the rest.
5178      But if we cannot reduce the list to a single element, we have
5179      to ask the user to disambiguate anyways.  And if we have to
5180      present a multiple-choice menu, it's less confusing if the list
5181      isn't missing some choices that were identical and yet distinct.  */
5182   if (symbols_are_identical_enums (syms, nsyms))
5183     nsyms = 1;
5184
5185   return nsyms;
5186 }
5187
5188 /* Given a type that corresponds to a renaming entity, use the type name
5189    to extract the scope (package name or function name, fully qualified,
5190    and following the GNAT encoding convention) where this renaming has been
5191    defined.  The string returned needs to be deallocated after use.  */
5192
5193 static char *
5194 xget_renaming_scope (struct type *renaming_type)
5195 {
5196   /* The renaming types adhere to the following convention:
5197      <scope>__<rename>___<XR extension>.
5198      So, to extract the scope, we search for the "___XR" extension,
5199      and then backtrack until we find the first "__".  */
5200
5201   const char *name = type_name_no_tag (renaming_type);
5202   const char *suffix = strstr (name, "___XR");
5203   const char *last;
5204   int scope_len;
5205   char *scope;
5206
5207   /* Now, backtrack a bit until we find the first "__".  Start looking
5208      at suffix - 3, as the <rename> part is at least one character long.  */
5209
5210   for (last = suffix - 3; last > name; last--)
5211     if (last[0] == '_' && last[1] == '_')
5212       break;
5213
5214   /* Make a copy of scope and return it.  */
5215
5216   scope_len = last - name;
5217   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
5218
5219   strncpy (scope, name, scope_len);
5220   scope[scope_len] = '\0';
5221
5222   return scope;
5223 }
5224
5225 /* Return nonzero if NAME corresponds to a package name.  */
5226
5227 static int
5228 is_package_name (const char *name)
5229 {
5230   /* Here, We take advantage of the fact that no symbols are generated
5231      for packages, while symbols are generated for each function.
5232      So the condition for NAME represent a package becomes equivalent
5233      to NAME not existing in our list of symbols.  There is only one
5234      small complication with library-level functions (see below).  */
5235
5236   char *fun_name;
5237
5238   /* If it is a function that has not been defined at library level,
5239      then we should be able to look it up in the symbols.  */
5240   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5241     return 0;
5242
5243   /* Library-level function names start with "_ada_".  See if function
5244      "_ada_" followed by NAME can be found.  */
5245
5246   /* Do a quick check that NAME does not contain "__", since library-level
5247      functions names cannot contain "__" in them.  */
5248   if (strstr (name, "__") != NULL)
5249     return 0;
5250
5251   fun_name = xstrprintf ("_ada_%s", name);
5252
5253   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
5254 }
5255
5256 /* Return nonzero if SYM corresponds to a renaming entity that is
5257    not visible from FUNCTION_NAME.  */
5258
5259 static int
5260 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5261 {
5262   char *scope;
5263   struct cleanup *old_chain;
5264
5265   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5266     return 0;
5267
5268   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5269   old_chain = make_cleanup (xfree, scope);
5270
5271   /* If the rename has been defined in a package, then it is visible.  */
5272   if (is_package_name (scope))
5273     {
5274       do_cleanups (old_chain);
5275       return 0;
5276     }
5277
5278   /* Check that the rename is in the current function scope by checking
5279      that its name starts with SCOPE.  */
5280
5281   /* If the function name starts with "_ada_", it means that it is
5282      a library-level function.  Strip this prefix before doing the
5283      comparison, as the encoding for the renaming does not contain
5284      this prefix.  */
5285   if (startswith (function_name, "_ada_"))
5286     function_name += 5;
5287
5288   {
5289     int is_invisible = !startswith (function_name, scope);
5290
5291     do_cleanups (old_chain);
5292     return is_invisible;
5293   }
5294 }
5295
5296 /* Remove entries from SYMS that corresponds to a renaming entity that
5297    is not visible from the function associated with CURRENT_BLOCK or
5298    that is superfluous due to the presence of more specific renaming
5299    information.  Places surviving symbols in the initial entries of
5300    SYMS and returns the number of surviving symbols.
5301    
5302    Rationale:
5303    First, in cases where an object renaming is implemented as a
5304    reference variable, GNAT may produce both the actual reference
5305    variable and the renaming encoding.  In this case, we discard the
5306    latter.
5307
5308    Second, GNAT emits a type following a specified encoding for each renaming
5309    entity.  Unfortunately, STABS currently does not support the definition
5310    of types that are local to a given lexical block, so all renamings types
5311    are emitted at library level.  As a consequence, if an application
5312    contains two renaming entities using the same name, and a user tries to
5313    print the value of one of these entities, the result of the ada symbol
5314    lookup will also contain the wrong renaming type.
5315
5316    This function partially covers for this limitation by attempting to
5317    remove from the SYMS list renaming symbols that should be visible
5318    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5319    method with the current information available.  The implementation
5320    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5321    
5322       - When the user tries to print a rename in a function while there
5323         is another rename entity defined in a package:  Normally, the
5324         rename in the function has precedence over the rename in the
5325         package, so the latter should be removed from the list.  This is
5326         currently not the case.
5327         
5328       - This function will incorrectly remove valid renames if
5329         the CURRENT_BLOCK corresponds to a function which symbol name
5330         has been changed by an "Export" pragma.  As a consequence,
5331         the user will be unable to print such rename entities.  */
5332
5333 static int
5334 remove_irrelevant_renamings (struct block_symbol *syms,
5335                              int nsyms, const struct block *current_block)
5336 {
5337   struct symbol *current_function;
5338   const char *current_function_name;
5339   int i;
5340   int is_new_style_renaming;
5341
5342   /* If there is both a renaming foo___XR... encoded as a variable and
5343      a simple variable foo in the same block, discard the latter.
5344      First, zero out such symbols, then compress.  */
5345   is_new_style_renaming = 0;
5346   for (i = 0; i < nsyms; i += 1)
5347     {
5348       struct symbol *sym = syms[i].symbol;
5349       const struct block *block = syms[i].block;
5350       const char *name;
5351       const char *suffix;
5352
5353       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5354         continue;
5355       name = SYMBOL_LINKAGE_NAME (sym);
5356       suffix = strstr (name, "___XR");
5357
5358       if (suffix != NULL)
5359         {
5360           int name_len = suffix - name;
5361           int j;
5362
5363           is_new_style_renaming = 1;
5364           for (j = 0; j < nsyms; j += 1)
5365             if (i != j && syms[j].symbol != NULL
5366                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].symbol),
5367                             name_len) == 0
5368                 && block == syms[j].block)
5369               syms[j].symbol = NULL;
5370         }
5371     }
5372   if (is_new_style_renaming)
5373     {
5374       int j, k;
5375
5376       for (j = k = 0; j < nsyms; j += 1)
5377         if (syms[j].symbol != NULL)
5378             {
5379               syms[k] = syms[j];
5380               k += 1;
5381             }
5382       return k;
5383     }
5384
5385   /* Extract the function name associated to CURRENT_BLOCK.
5386      Abort if unable to do so.  */
5387
5388   if (current_block == NULL)
5389     return nsyms;
5390
5391   current_function = block_linkage_function (current_block);
5392   if (current_function == NULL)
5393     return nsyms;
5394
5395   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5396   if (current_function_name == NULL)
5397     return nsyms;
5398
5399   /* Check each of the symbols, and remove it from the list if it is
5400      a type corresponding to a renaming that is out of the scope of
5401      the current block.  */
5402
5403   i = 0;
5404   while (i < nsyms)
5405     {
5406       if (ada_parse_renaming (syms[i].symbol, NULL, NULL, NULL)
5407           == ADA_OBJECT_RENAMING
5408           && old_renaming_is_invisible (syms[i].symbol, current_function_name))
5409         {
5410           int j;
5411
5412           for (j = i + 1; j < nsyms; j += 1)
5413             syms[j - 1] = syms[j];
5414           nsyms -= 1;
5415         }
5416       else
5417         i += 1;
5418     }
5419
5420   return nsyms;
5421 }
5422
5423 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5424    whose name and domain match NAME and DOMAIN respectively.
5425    If no match was found, then extend the search to "enclosing"
5426    routines (in other words, if we're inside a nested function,
5427    search the symbols defined inside the enclosing functions).
5428    If WILD_MATCH_P is nonzero, perform the naming matching in
5429    "wild" mode (see function "wild_match" for more info).
5430
5431    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5432
5433 static void
5434 ada_add_local_symbols (struct obstack *obstackp,
5435                        const lookup_name_info &lookup_name,
5436                        const struct block *block, domain_enum domain)
5437 {
5438   int block_depth = 0;
5439
5440   while (block != NULL)
5441     {
5442       block_depth += 1;
5443       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5444
5445       /* If we found a non-function match, assume that's the one.  */
5446       if (is_nonfunction (defns_collected (obstackp, 0),
5447                           num_defns_collected (obstackp)))
5448         return;
5449
5450       block = BLOCK_SUPERBLOCK (block);
5451     }
5452
5453   /* If no luck so far, try to find NAME as a local symbol in some lexically
5454      enclosing subprogram.  */
5455   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5456     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5457 }
5458
5459 /* An object of this type is used as the user_data argument when
5460    calling the map_matching_symbols method.  */
5461
5462 struct match_data
5463 {
5464   struct objfile *objfile;
5465   struct obstack *obstackp;
5466   struct symbol *arg_sym;
5467   int found_sym;
5468 };
5469
5470 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5471    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5472    containing the obstack that collects the symbol list, the file that SYM
5473    must come from, a flag indicating whether a non-argument symbol has
5474    been found in the current block, and the last argument symbol
5475    passed in SYM within the current block (if any).  When SYM is null,
5476    marking the end of a block, the argument symbol is added if no
5477    other has been found.  */
5478
5479 static int
5480 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5481 {
5482   struct match_data *data = (struct match_data *) data0;
5483   
5484   if (sym == NULL)
5485     {
5486       if (!data->found_sym && data->arg_sym != NULL) 
5487         add_defn_to_vec (data->obstackp,
5488                          fixup_symbol_section (data->arg_sym, data->objfile),
5489                          block);
5490       data->found_sym = 0;
5491       data->arg_sym = NULL;
5492     }
5493   else 
5494     {
5495       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5496         return 0;
5497       else if (SYMBOL_IS_ARGUMENT (sym))
5498         data->arg_sym = sym;
5499       else
5500         {
5501           data->found_sym = 1;
5502           add_defn_to_vec (data->obstackp,
5503                            fixup_symbol_section (sym, data->objfile),
5504                            block);
5505         }
5506     }
5507   return 0;
5508 }
5509
5510 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5511    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5512    symbols to OBSTACKP.  Return whether we found such symbols.  */
5513
5514 static int
5515 ada_add_block_renamings (struct obstack *obstackp,
5516                          const struct block *block,
5517                          const lookup_name_info &lookup_name,
5518                          domain_enum domain)
5519 {
5520   struct using_direct *renaming;
5521   int defns_mark = num_defns_collected (obstackp);
5522
5523   symbol_name_matcher_ftype *name_match
5524     = ada_get_symbol_name_matcher (lookup_name);
5525
5526   for (renaming = block_using (block);
5527        renaming != NULL;
5528        renaming = renaming->next)
5529     {
5530       const char *r_name;
5531
5532       /* Avoid infinite recursions: skip this renaming if we are actually
5533          already traversing it.
5534
5535          Currently, symbol lookup in Ada don't use the namespace machinery from
5536          C++/Fortran support: skip namespace imports that use them.  */
5537       if (renaming->searched
5538           || (renaming->import_src != NULL
5539               && renaming->import_src[0] != '\0')
5540           || (renaming->import_dest != NULL
5541               && renaming->import_dest[0] != '\0'))
5542         continue;
5543       renaming->searched = 1;
5544
5545       /* TODO: here, we perform another name-based symbol lookup, which can
5546          pull its own multiple overloads.  In theory, we should be able to do
5547          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5548          not a simple name.  But in order to do this, we would need to enhance
5549          the DWARF reader to associate a symbol to this renaming, instead of a
5550          name.  So, for now, we do something simpler: re-use the C++/Fortran
5551          namespace machinery.  */
5552       r_name = (renaming->alias != NULL
5553                 ? renaming->alias
5554                 : renaming->declaration);
5555       if (name_match (r_name, lookup_name, NULL))
5556         {
5557           lookup_name_info decl_lookup_name (renaming->declaration,
5558                                              lookup_name.match_type ());
5559           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5560                                1, NULL);
5561         }
5562       renaming->searched = 0;
5563     }
5564   return num_defns_collected (obstackp) != defns_mark;
5565 }
5566
5567 /* Implements compare_names, but only applying the comparision using
5568    the given CASING.  */
5569
5570 static int
5571 compare_names_with_case (const char *string1, const char *string2,
5572                          enum case_sensitivity casing)
5573 {
5574   while (*string1 != '\0' && *string2 != '\0')
5575     {
5576       char c1, c2;
5577
5578       if (isspace (*string1) || isspace (*string2))
5579         return strcmp_iw_ordered (string1, string2);
5580
5581       if (casing == case_sensitive_off)
5582         {
5583           c1 = tolower (*string1);
5584           c2 = tolower (*string2);
5585         }
5586       else
5587         {
5588           c1 = *string1;
5589           c2 = *string2;
5590         }
5591       if (c1 != c2)
5592         break;
5593
5594       string1 += 1;
5595       string2 += 1;
5596     }
5597
5598   switch (*string1)
5599     {
5600     case '(':
5601       return strcmp_iw_ordered (string1, string2);
5602     case '_':
5603       if (*string2 == '\0')
5604         {
5605           if (is_name_suffix (string1))
5606             return 0;
5607           else
5608             return 1;
5609         }
5610       /* FALLTHROUGH */
5611     default:
5612       if (*string2 == '(')
5613         return strcmp_iw_ordered (string1, string2);
5614       else
5615         {
5616           if (casing == case_sensitive_off)
5617             return tolower (*string1) - tolower (*string2);
5618           else
5619             return *string1 - *string2;
5620         }
5621     }
5622 }
5623
5624 /* Compare STRING1 to STRING2, with results as for strcmp.
5625    Compatible with strcmp_iw_ordered in that...
5626
5627        strcmp_iw_ordered (STRING1, STRING2) <= 0
5628
5629    ... implies...
5630
5631        compare_names (STRING1, STRING2) <= 0
5632
5633    (they may differ as to what symbols compare equal).  */
5634
5635 static int
5636 compare_names (const char *string1, const char *string2)
5637 {
5638   int result;
5639
5640   /* Similar to what strcmp_iw_ordered does, we need to perform
5641      a case-insensitive comparison first, and only resort to
5642      a second, case-sensitive, comparison if the first one was
5643      not sufficient to differentiate the two strings.  */
5644
5645   result = compare_names_with_case (string1, string2, case_sensitive_off);
5646   if (result == 0)
5647     result = compare_names_with_case (string1, string2, case_sensitive_on);
5648
5649   return result;
5650 }
5651
5652 /* Convenience function to get at the Ada encoded lookup name for
5653    LOOKUP_NAME, as a C string.  */
5654
5655 static const char *
5656 ada_lookup_name (const lookup_name_info &lookup_name)
5657 {
5658   return lookup_name.ada ().lookup_name ().c_str ();
5659 }
5660
5661 /* Add to OBSTACKP all non-local symbols whose name and domain match
5662    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5663    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5664    symbols otherwise.  */
5665
5666 static void
5667 add_nonlocal_symbols (struct obstack *obstackp,
5668                       const lookup_name_info &lookup_name,
5669                       domain_enum domain, int global)
5670 {
5671   struct objfile *objfile;
5672   struct compunit_symtab *cu;
5673   struct match_data data;
5674
5675   memset (&data, 0, sizeof data);
5676   data.obstackp = obstackp;
5677
5678   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5679
5680   ALL_OBJFILES (objfile)
5681     {
5682       data.objfile = objfile;
5683
5684       if (is_wild_match)
5685         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5686                                                domain, global,
5687                                                aux_add_nonlocal_symbols, &data,
5688                                                symbol_name_match_type::WILD,
5689                                                NULL);
5690       else
5691         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5692                                                domain, global,
5693                                                aux_add_nonlocal_symbols, &data,
5694                                                symbol_name_match_type::FULL,
5695                                                compare_names);
5696
5697       ALL_OBJFILE_COMPUNITS (objfile, cu)
5698         {
5699           const struct block *global_block
5700             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5701
5702           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5703                                        domain))
5704             data.found_sym = 1;
5705         }
5706     }
5707
5708   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5709     {
5710       const char *name = ada_lookup_name (lookup_name);
5711       std::string name1 = std::string ("<_ada_") + name + '>';
5712
5713       ALL_OBJFILES (objfile)
5714         {
5715           data.objfile = objfile;
5716           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5717                                                  domain, global,
5718                                                  aux_add_nonlocal_symbols,
5719                                                  &data,
5720                                                  symbol_name_match_type::FULL,
5721                                                  compare_names);
5722         }
5723     }           
5724 }
5725
5726 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5727    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5728    returning the number of matches.  Add these to OBSTACKP.
5729
5730    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5731    symbol match within the nest of blocks whose innermost member is BLOCK,
5732    is the one match returned (no other matches in that or
5733    enclosing blocks is returned).  If there are any matches in or
5734    surrounding BLOCK, then these alone are returned.
5735
5736    Names prefixed with "standard__" are handled specially:
5737    "standard__" is first stripped off (by the lookup_name
5738    constructor), and only static and global symbols are searched.
5739
5740    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5741    to lookup global symbols.  */
5742
5743 static void
5744 ada_add_all_symbols (struct obstack *obstackp,
5745                      const struct block *block,
5746                      const lookup_name_info &lookup_name,
5747                      domain_enum domain,
5748                      int full_search,
5749                      int *made_global_lookup_p)
5750 {
5751   struct symbol *sym;
5752
5753   if (made_global_lookup_p)
5754     *made_global_lookup_p = 0;
5755
5756   /* Special case: If the user specifies a symbol name inside package
5757      Standard, do a non-wild matching of the symbol name without
5758      the "standard__" prefix.  This was primarily introduced in order
5759      to allow the user to specifically access the standard exceptions
5760      using, for instance, Standard.Constraint_Error when Constraint_Error
5761      is ambiguous (due to the user defining its own Constraint_Error
5762      entity inside its program).  */
5763   if (lookup_name.ada ().standard_p ())
5764     block = NULL;
5765
5766   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5767
5768   if (block != NULL)
5769     {
5770       if (full_search)
5771         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5772       else
5773         {
5774           /* In the !full_search case we're are being called by
5775              ada_iterate_over_symbols, and we don't want to search
5776              superblocks.  */
5777           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5778         }
5779       if (num_defns_collected (obstackp) > 0 || !full_search)
5780         return;
5781     }
5782
5783   /* No non-global symbols found.  Check our cache to see if we have
5784      already performed this search before.  If we have, then return
5785      the same result.  */
5786
5787   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5788                             domain, &sym, &block))
5789     {
5790       if (sym != NULL)
5791         add_defn_to_vec (obstackp, sym, block);
5792       return;
5793     }
5794
5795   if (made_global_lookup_p)
5796     *made_global_lookup_p = 1;
5797
5798   /* Search symbols from all global blocks.  */
5799  
5800   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5801
5802   /* Now add symbols from all per-file blocks if we've gotten no hits
5803      (not strictly correct, but perhaps better than an error).  */
5804
5805   if (num_defns_collected (obstackp) == 0)
5806     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5807 }
5808
5809 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5810    is non-zero, enclosing scope and in global scopes, returning the number of
5811    matches.
5812    Sets *RESULTS to point to a newly allocated vector of (SYM,BLOCK) tuples,
5813    indicating the symbols found and the blocks and symbol tables (if
5814    any) in which they were found.  This vector should be freed when
5815    no longer useful.
5816
5817    When full_search is non-zero, any non-function/non-enumeral
5818    symbol match within the nest of blocks whose innermost member is BLOCK,
5819    is the one match returned (no other matches in that or
5820    enclosing blocks is returned).  If there are any matches in or
5821    surrounding BLOCK, then these alone are returned.
5822
5823    Names prefixed with "standard__" are handled specially: "standard__"
5824    is first stripped off, and only static and global symbols are searched.  */
5825
5826 static int
5827 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5828                                const struct block *block,
5829                                domain_enum domain,
5830                                struct block_symbol **results,
5831                                int full_search)
5832 {
5833   int syms_from_global_search;
5834   int ndefns;
5835   int results_size;
5836   auto_obstack obstack;
5837
5838   ada_add_all_symbols (&obstack, block, lookup_name,
5839                        domain, full_search, &syms_from_global_search);
5840
5841   ndefns = num_defns_collected (&obstack);
5842
5843   results_size = obstack_object_size (&obstack);
5844   *results = (struct block_symbol *) malloc (results_size);
5845   memcpy (*results, defns_collected (&obstack, 1), results_size);
5846
5847   ndefns = remove_extra_symbols (*results, ndefns);
5848
5849   if (ndefns == 0 && full_search && syms_from_global_search)
5850     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5851
5852   if (ndefns == 1 && full_search && syms_from_global_search)
5853     cache_symbol (ada_lookup_name (lookup_name), domain,
5854                   (*results)[0].symbol, (*results)[0].block);
5855
5856   ndefns = remove_irrelevant_renamings (*results, ndefns, block);
5857
5858   return ndefns;
5859 }
5860
5861 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5862    in global scopes, returning the number of matches, and setting *RESULTS
5863    to a newly-allocated vector of (SYM,BLOCK) tuples.  This newly-allocated
5864    vector should be freed when no longer useful.
5865
5866    See ada_lookup_symbol_list_worker for further details.  */
5867
5868 int
5869 ada_lookup_symbol_list (const char *name, const struct block *block,
5870                         domain_enum domain, struct block_symbol **results)
5871 {
5872   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5873   lookup_name_info lookup_name (name, name_match_type);
5874
5875   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5876 }
5877
5878 /* Implementation of the la_iterate_over_symbols method.  */
5879
5880 static void
5881 ada_iterate_over_symbols
5882   (const struct block *block, const lookup_name_info &name,
5883    domain_enum domain,
5884    gdb::function_view<symbol_found_callback_ftype> callback)
5885 {
5886   int ndefs, i;
5887   struct block_symbol *results;
5888   struct cleanup *old_chain;
5889
5890   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5891   old_chain = make_cleanup (xfree, results);
5892
5893   for (i = 0; i < ndefs; ++i)
5894     {
5895       if (!callback (results[i].symbol))
5896         break;
5897     }
5898
5899   do_cleanups (old_chain);
5900 }
5901
5902 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5903    to 1, but choosing the first symbol found if there are multiple
5904    choices.
5905
5906    The result is stored in *INFO, which must be non-NULL.
5907    If no match is found, INFO->SYM is set to NULL.  */
5908
5909 void
5910 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5911                            domain_enum domain,
5912                            struct block_symbol *info)
5913 {
5914   struct block_symbol *candidates;
5915   int n_candidates;
5916   struct cleanup *old_chain;
5917
5918   /* Since we already have an encoded name, wrap it in '<>' to force a
5919      verbatim match.  Otherwise, if the name happens to not look like
5920      an encoded name (because it doesn't include a "__"),
5921      ada_lookup_name_info would re-encode/fold it again, and that
5922      would e.g., incorrectly lowercase object renaming names like
5923      "R28b" -> "r28b".  */
5924   std::string verbatim = std::string ("<") + name + '>';
5925
5926   gdb_assert (info != NULL);
5927   memset (info, 0, sizeof (struct block_symbol));
5928
5929   n_candidates = ada_lookup_symbol_list (verbatim.c_str (), block,
5930                                          domain, &candidates);
5931   old_chain = make_cleanup (xfree, candidates);
5932
5933   if (n_candidates == 0)
5934     {
5935       do_cleanups (old_chain);
5936       return;
5937     }
5938
5939   *info = candidates[0];
5940   info->symbol = fixup_symbol_section (info->symbol, NULL);
5941
5942   do_cleanups (old_chain);
5943 }
5944
5945 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5946    scope and in global scopes, or NULL if none.  NAME is folded and
5947    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5948    choosing the first symbol if there are multiple choices.
5949    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5950
5951 struct block_symbol
5952 ada_lookup_symbol (const char *name, const struct block *block0,
5953                    domain_enum domain, int *is_a_field_of_this)
5954 {
5955   struct block_symbol info;
5956
5957   if (is_a_field_of_this != NULL)
5958     *is_a_field_of_this = 0;
5959
5960   ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)),
5961                              block0, domain, &info);
5962   return info;
5963 }
5964
5965 static struct block_symbol
5966 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5967                             const char *name,
5968                             const struct block *block,
5969                             const domain_enum domain)
5970 {
5971   struct block_symbol sym;
5972
5973   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5974   if (sym.symbol != NULL)
5975     return sym;
5976
5977   /* If we haven't found a match at this point, try the primitive
5978      types.  In other languages, this search is performed before
5979      searching for global symbols in order to short-circuit that
5980      global-symbol search if it happens that the name corresponds
5981      to a primitive type.  But we cannot do the same in Ada, because
5982      it is perfectly legitimate for a program to declare a type which
5983      has the same name as a standard type.  If looking up a type in
5984      that situation, we have traditionally ignored the primitive type
5985      in favor of user-defined types.  This is why, unlike most other
5986      languages, we search the primitive types this late and only after
5987      having searched the global symbols without success.  */
5988
5989   if (domain == VAR_DOMAIN)
5990     {
5991       struct gdbarch *gdbarch;
5992
5993       if (block == NULL)
5994         gdbarch = target_gdbarch ();
5995       else
5996         gdbarch = block_gdbarch (block);
5997       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5998       if (sym.symbol != NULL)
5999         return sym;
6000     }
6001
6002   return (struct block_symbol) {NULL, NULL};
6003 }
6004
6005
6006 /* True iff STR is a possible encoded suffix of a normal Ada name
6007    that is to be ignored for matching purposes.  Suffixes of parallel
6008    names (e.g., XVE) are not included here.  Currently, the possible suffixes
6009    are given by any of the regular expressions:
6010
6011    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
6012    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
6013    TKB              [subprogram suffix for task bodies]
6014    _E[0-9]+[bs]$    [protected object entry suffixes]
6015    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
6016
6017    Also, any leading "__[0-9]+" sequence is skipped before the suffix
6018    match is performed.  This sequence is used to differentiate homonyms,
6019    is an optional part of a valid name suffix.  */
6020
6021 static int
6022 is_name_suffix (const char *str)
6023 {
6024   int k;
6025   const char *matching;
6026   const int len = strlen (str);
6027
6028   /* Skip optional leading __[0-9]+.  */
6029
6030   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
6031     {
6032       str += 3;
6033       while (isdigit (str[0]))
6034         str += 1;
6035     }
6036   
6037   /* [.$][0-9]+ */
6038
6039   if (str[0] == '.' || str[0] == '$')
6040     {
6041       matching = str + 1;
6042       while (isdigit (matching[0]))
6043         matching += 1;
6044       if (matching[0] == '\0')
6045         return 1;
6046     }
6047
6048   /* ___[0-9]+ */
6049
6050   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6051     {
6052       matching = str + 3;
6053       while (isdigit (matching[0]))
6054         matching += 1;
6055       if (matching[0] == '\0')
6056         return 1;
6057     }
6058
6059   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6060
6061   if (strcmp (str, "TKB") == 0)
6062     return 1;
6063
6064 #if 0
6065   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6066      with a N at the end.  Unfortunately, the compiler uses the same
6067      convention for other internal types it creates.  So treating
6068      all entity names that end with an "N" as a name suffix causes
6069      some regressions.  For instance, consider the case of an enumerated
6070      type.  To support the 'Image attribute, it creates an array whose
6071      name ends with N.
6072      Having a single character like this as a suffix carrying some
6073      information is a bit risky.  Perhaps we should change the encoding
6074      to be something like "_N" instead.  In the meantime, do not do
6075      the following check.  */
6076   /* Protected Object Subprograms */
6077   if (len == 1 && str [0] == 'N')
6078     return 1;
6079 #endif
6080
6081   /* _E[0-9]+[bs]$ */
6082   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6083     {
6084       matching = str + 3;
6085       while (isdigit (matching[0]))
6086         matching += 1;
6087       if ((matching[0] == 'b' || matching[0] == 's')
6088           && matching [1] == '\0')
6089         return 1;
6090     }
6091
6092   /* ??? We should not modify STR directly, as we are doing below.  This
6093      is fine in this case, but may become problematic later if we find
6094      that this alternative did not work, and want to try matching
6095      another one from the begining of STR.  Since we modified it, we
6096      won't be able to find the begining of the string anymore!  */
6097   if (str[0] == 'X')
6098     {
6099       str += 1;
6100       while (str[0] != '_' && str[0] != '\0')
6101         {
6102           if (str[0] != 'n' && str[0] != 'b')
6103             return 0;
6104           str += 1;
6105         }
6106     }
6107
6108   if (str[0] == '\000')
6109     return 1;
6110
6111   if (str[0] == '_')
6112     {
6113       if (str[1] != '_' || str[2] == '\000')
6114         return 0;
6115       if (str[2] == '_')
6116         {
6117           if (strcmp (str + 3, "JM") == 0)
6118             return 1;
6119           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6120              the LJM suffix in favor of the JM one.  But we will
6121              still accept LJM as a valid suffix for a reasonable
6122              amount of time, just to allow ourselves to debug programs
6123              compiled using an older version of GNAT.  */
6124           if (strcmp (str + 3, "LJM") == 0)
6125             return 1;
6126           if (str[3] != 'X')
6127             return 0;
6128           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6129               || str[4] == 'U' || str[4] == 'P')
6130             return 1;
6131           if (str[4] == 'R' && str[5] != 'T')
6132             return 1;
6133           return 0;
6134         }
6135       if (!isdigit (str[2]))
6136         return 0;
6137       for (k = 3; str[k] != '\0'; k += 1)
6138         if (!isdigit (str[k]) && str[k] != '_')
6139           return 0;
6140       return 1;
6141     }
6142   if (str[0] == '$' && isdigit (str[1]))
6143     {
6144       for (k = 2; str[k] != '\0'; k += 1)
6145         if (!isdigit (str[k]) && str[k] != '_')
6146           return 0;
6147       return 1;
6148     }
6149   return 0;
6150 }
6151
6152 /* Return non-zero if the string starting at NAME and ending before
6153    NAME_END contains no capital letters.  */
6154
6155 static int
6156 is_valid_name_for_wild_match (const char *name0)
6157 {
6158   const char *decoded_name = ada_decode (name0);
6159   int i;
6160
6161   /* If the decoded name starts with an angle bracket, it means that
6162      NAME0 does not follow the GNAT encoding format.  It should then
6163      not be allowed as a possible wild match.  */
6164   if (decoded_name[0] == '<')
6165     return 0;
6166
6167   for (i=0; decoded_name[i] != '\0'; i++)
6168     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6169       return 0;
6170
6171   return 1;
6172 }
6173
6174 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6175    that could start a simple name.  Assumes that *NAMEP points into
6176    the string beginning at NAME0.  */
6177
6178 static int
6179 advance_wild_match (const char **namep, const char *name0, int target0)
6180 {
6181   const char *name = *namep;
6182
6183   while (1)
6184     {
6185       int t0, t1;
6186
6187       t0 = *name;
6188       if (t0 == '_')
6189         {
6190           t1 = name[1];
6191           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6192             {
6193               name += 1;
6194               if (name == name0 + 5 && startswith (name0, "_ada"))
6195                 break;
6196               else
6197                 name += 1;
6198             }
6199           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6200                                  || name[2] == target0))
6201             {
6202               name += 2;
6203               break;
6204             }
6205           else
6206             return 0;
6207         }
6208       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6209         name += 1;
6210       else
6211         return 0;
6212     }
6213
6214   *namep = name;
6215   return 1;
6216 }
6217
6218 /* Return true iff NAME encodes a name of the form prefix.PATN.
6219    Ignores any informational suffixes of NAME (i.e., for which
6220    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6221    simple name.  */
6222
6223 static bool
6224 wild_match (const char *name, const char *patn)
6225 {
6226   const char *p;
6227   const char *name0 = name;
6228
6229   while (1)
6230     {
6231       const char *match = name;
6232
6233       if (*name == *patn)
6234         {
6235           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6236             if (*p != *name)
6237               break;
6238           if (*p == '\0' && is_name_suffix (name))
6239             return match == name0 || is_valid_name_for_wild_match (name0);
6240
6241           if (name[-1] == '_')
6242             name -= 1;
6243         }
6244       if (!advance_wild_match (&name, name0, *patn))
6245         return false;
6246     }
6247 }
6248
6249 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6250    any trailing suffixes that encode debugging information or leading
6251    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6252    information that is ignored).  */
6253
6254 static bool
6255 full_match (const char *sym_name, const char *search_name)
6256 {
6257   size_t search_name_len = strlen (search_name);
6258
6259   if (strncmp (sym_name, search_name, search_name_len) == 0
6260       && is_name_suffix (sym_name + search_name_len))
6261     return true;
6262
6263   if (startswith (sym_name, "_ada_")
6264       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6265       && is_name_suffix (sym_name + search_name_len + 5))
6266     return true;
6267
6268   return false;
6269 }
6270
6271 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6272    *defn_symbols, updating the list of symbols in OBSTACKP (if
6273    necessary).  OBJFILE is the section containing BLOCK.  */
6274
6275 static void
6276 ada_add_block_symbols (struct obstack *obstackp,
6277                        const struct block *block,
6278                        const lookup_name_info &lookup_name,
6279                        domain_enum domain, struct objfile *objfile)
6280 {
6281   struct block_iterator iter;
6282   /* A matching argument symbol, if any.  */
6283   struct symbol *arg_sym;
6284   /* Set true when we find a matching non-argument symbol.  */
6285   int found_sym;
6286   struct symbol *sym;
6287
6288   arg_sym = NULL;
6289   found_sym = 0;
6290   for (sym = block_iter_match_first (block, lookup_name, &iter);
6291        sym != NULL;
6292        sym = block_iter_match_next (lookup_name, &iter))
6293     {
6294       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6295                                  SYMBOL_DOMAIN (sym), domain))
6296         {
6297           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6298             {
6299               if (SYMBOL_IS_ARGUMENT (sym))
6300                 arg_sym = sym;
6301               else
6302                 {
6303                   found_sym = 1;
6304                   add_defn_to_vec (obstackp,
6305                                    fixup_symbol_section (sym, objfile),
6306                                    block);
6307                 }
6308             }
6309         }
6310     }
6311
6312   /* Handle renamings.  */
6313
6314   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6315     found_sym = 1;
6316
6317   if (!found_sym && arg_sym != NULL)
6318     {
6319       add_defn_to_vec (obstackp,
6320                        fixup_symbol_section (arg_sym, objfile),
6321                        block);
6322     }
6323
6324   if (!lookup_name.ada ().wild_match_p ())
6325     {
6326       arg_sym = NULL;
6327       found_sym = 0;
6328       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6329       const char *name = ada_lookup_name.c_str ();
6330       size_t name_len = ada_lookup_name.size ();
6331
6332       ALL_BLOCK_SYMBOLS (block, iter, sym)
6333       {
6334         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6335                                    SYMBOL_DOMAIN (sym), domain))
6336           {
6337             int cmp;
6338
6339             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6340             if (cmp == 0)
6341               {
6342                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6343                 if (cmp == 0)
6344                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6345                                  name_len);
6346               }
6347
6348             if (cmp == 0
6349                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6350               {
6351                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6352                   {
6353                     if (SYMBOL_IS_ARGUMENT (sym))
6354                       arg_sym = sym;
6355                     else
6356                       {
6357                         found_sym = 1;
6358                         add_defn_to_vec (obstackp,
6359                                          fixup_symbol_section (sym, objfile),
6360                                          block);
6361                       }
6362                   }
6363               }
6364           }
6365       }
6366
6367       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6368          They aren't parameters, right?  */
6369       if (!found_sym && arg_sym != NULL)
6370         {
6371           add_defn_to_vec (obstackp,
6372                            fixup_symbol_section (arg_sym, objfile),
6373                            block);
6374         }
6375     }
6376 }
6377 \f
6378
6379                                 /* Symbol Completion */
6380
6381 /* See symtab.h.  */
6382
6383 bool
6384 ada_lookup_name_info::matches
6385   (const char *sym_name,
6386    symbol_name_match_type match_type,
6387    completion_match_result *comp_match_res) const
6388 {
6389   bool match = false;
6390   const char *text = m_encoded_name.c_str ();
6391   size_t text_len = m_encoded_name.size ();
6392
6393   /* First, test against the fully qualified name of the symbol.  */
6394
6395   if (strncmp (sym_name, text, text_len) == 0)
6396     match = true;
6397
6398   if (match && !m_encoded_p)
6399     {
6400       /* One needed check before declaring a positive match is to verify
6401          that iff we are doing a verbatim match, the decoded version
6402          of the symbol name starts with '<'.  Otherwise, this symbol name
6403          is not a suitable completion.  */
6404       const char *sym_name_copy = sym_name;
6405       bool has_angle_bracket;
6406
6407       sym_name = ada_decode (sym_name);
6408       has_angle_bracket = (sym_name[0] == '<');
6409       match = (has_angle_bracket == m_verbatim_p);
6410       sym_name = sym_name_copy;
6411     }
6412
6413   if (match && !m_verbatim_p)
6414     {
6415       /* When doing non-verbatim match, another check that needs to
6416          be done is to verify that the potentially matching symbol name
6417          does not include capital letters, because the ada-mode would
6418          not be able to understand these symbol names without the
6419          angle bracket notation.  */
6420       const char *tmp;
6421
6422       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6423       if (*tmp != '\0')
6424         match = false;
6425     }
6426
6427   /* Second: Try wild matching...  */
6428
6429   if (!match && m_wild_match_p)
6430     {
6431       /* Since we are doing wild matching, this means that TEXT
6432          may represent an unqualified symbol name.  We therefore must
6433          also compare TEXT against the unqualified name of the symbol.  */
6434       sym_name = ada_unqualified_name (ada_decode (sym_name));
6435
6436       if (strncmp (sym_name, text, text_len) == 0)
6437         match = true;
6438     }
6439
6440   /* Finally: If we found a match, prepare the result to return.  */
6441
6442   if (!match)
6443     return false;
6444
6445   if (comp_match_res != NULL)
6446     {
6447       std::string &match_str = comp_match_res->match.storage ();
6448
6449       if (!m_encoded_p)
6450         match_str = ada_decode (sym_name);
6451       else
6452         {
6453           if (m_verbatim_p)
6454             match_str = add_angle_brackets (sym_name);
6455           else
6456             match_str = sym_name;
6457
6458         }
6459
6460       comp_match_res->set_match (match_str.c_str ());
6461     }
6462
6463   return true;
6464 }
6465
6466 /* Add the list of possible symbol names completing TEXT to TRACKER.
6467    WORD is the entire command on which completion is made.  */
6468
6469 static void
6470 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6471                                        complete_symbol_mode mode,
6472                                        symbol_name_match_type name_match_type,
6473                                        const char *text, const char *word,
6474                                        enum type_code code)
6475 {
6476   struct symbol *sym;
6477   struct compunit_symtab *s;
6478   struct minimal_symbol *msymbol;
6479   struct objfile *objfile;
6480   const struct block *b, *surrounding_static_block = 0;
6481   struct block_iterator iter;
6482   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6483
6484   gdb_assert (code == TYPE_CODE_UNDEF);
6485
6486   lookup_name_info lookup_name (text, name_match_type, true);
6487
6488   /* First, look at the partial symtab symbols.  */
6489   expand_symtabs_matching (NULL,
6490                            lookup_name,
6491                            NULL,
6492                            NULL,
6493                            ALL_DOMAIN);
6494
6495   /* At this point scan through the misc symbol vectors and add each
6496      symbol you find to the list.  Eventually we want to ignore
6497      anything that isn't a text symbol (everything else will be
6498      handled by the psymtab code above).  */
6499
6500   ALL_MSYMBOLS (objfile, msymbol)
6501   {
6502     QUIT;
6503
6504     if (completion_skip_symbol (mode, msymbol))
6505       continue;
6506
6507     completion_list_add_name (tracker,
6508                               MSYMBOL_LANGUAGE (msymbol),
6509                               MSYMBOL_LINKAGE_NAME (msymbol),
6510                               lookup_name, text, word);
6511   }
6512
6513   /* Search upwards from currently selected frame (so that we can
6514      complete on local vars.  */
6515
6516   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6517     {
6518       if (!BLOCK_SUPERBLOCK (b))
6519         surrounding_static_block = b;   /* For elmin of dups */
6520
6521       ALL_BLOCK_SYMBOLS (b, iter, sym)
6522       {
6523         if (completion_skip_symbol (mode, sym))
6524           continue;
6525
6526         completion_list_add_name (tracker,
6527                                   SYMBOL_LANGUAGE (sym),
6528                                   SYMBOL_LINKAGE_NAME (sym),
6529                                   lookup_name, text, word);
6530       }
6531     }
6532
6533   /* Go through the symtabs and check the externs and statics for
6534      symbols which match.  */
6535
6536   ALL_COMPUNITS (objfile, s)
6537   {
6538     QUIT;
6539     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6540     ALL_BLOCK_SYMBOLS (b, iter, sym)
6541     {
6542       if (completion_skip_symbol (mode, sym))
6543         continue;
6544
6545       completion_list_add_name (tracker,
6546                                 SYMBOL_LANGUAGE (sym),
6547                                 SYMBOL_LINKAGE_NAME (sym),
6548                                 lookup_name, text, word);
6549     }
6550   }
6551
6552   ALL_COMPUNITS (objfile, s)
6553   {
6554     QUIT;
6555     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6556     /* Don't do this block twice.  */
6557     if (b == surrounding_static_block)
6558       continue;
6559     ALL_BLOCK_SYMBOLS (b, iter, sym)
6560     {
6561       if (completion_skip_symbol (mode, sym))
6562         continue;
6563
6564       completion_list_add_name (tracker,
6565                                 SYMBOL_LANGUAGE (sym),
6566                                 SYMBOL_LINKAGE_NAME (sym),
6567                                 lookup_name, text, word);
6568     }
6569   }
6570
6571   do_cleanups (old_chain);
6572 }
6573
6574                                 /* Field Access */
6575
6576 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6577    for tagged types.  */
6578
6579 static int
6580 ada_is_dispatch_table_ptr_type (struct type *type)
6581 {
6582   const char *name;
6583
6584   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6585     return 0;
6586
6587   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6588   if (name == NULL)
6589     return 0;
6590
6591   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6592 }
6593
6594 /* Return non-zero if TYPE is an interface tag.  */
6595
6596 static int
6597 ada_is_interface_tag (struct type *type)
6598 {
6599   const char *name = TYPE_NAME (type);
6600
6601   if (name == NULL)
6602     return 0;
6603
6604   return (strcmp (name, "ada__tags__interface_tag") == 0);
6605 }
6606
6607 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6608    to be invisible to users.  */
6609
6610 int
6611 ada_is_ignored_field (struct type *type, int field_num)
6612 {
6613   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6614     return 1;
6615
6616   /* Check the name of that field.  */
6617   {
6618     const char *name = TYPE_FIELD_NAME (type, field_num);
6619
6620     /* Anonymous field names should not be printed.
6621        brobecker/2007-02-20: I don't think this can actually happen
6622        but we don't want to print the value of annonymous fields anyway.  */
6623     if (name == NULL)
6624       return 1;
6625
6626     /* Normally, fields whose name start with an underscore ("_")
6627        are fields that have been internally generated by the compiler,
6628        and thus should not be printed.  The "_parent" field is special,
6629        however: This is a field internally generated by the compiler
6630        for tagged types, and it contains the components inherited from
6631        the parent type.  This field should not be printed as is, but
6632        should not be ignored either.  */
6633     if (name[0] == '_' && !startswith (name, "_parent"))
6634       return 1;
6635   }
6636
6637   /* If this is the dispatch table of a tagged type or an interface tag,
6638      then ignore.  */
6639   if (ada_is_tagged_type (type, 1)
6640       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6641           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6642     return 1;
6643
6644   /* Not a special field, so it should not be ignored.  */
6645   return 0;
6646 }
6647
6648 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6649    pointer or reference type whose ultimate target has a tag field.  */
6650
6651 int
6652 ada_is_tagged_type (struct type *type, int refok)
6653 {
6654   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6655 }
6656
6657 /* True iff TYPE represents the type of X'Tag */
6658
6659 int
6660 ada_is_tag_type (struct type *type)
6661 {
6662   type = ada_check_typedef (type);
6663
6664   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6665     return 0;
6666   else
6667     {
6668       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6669
6670       return (name != NULL
6671               && strcmp (name, "ada__tags__dispatch_table") == 0);
6672     }
6673 }
6674
6675 /* The type of the tag on VAL.  */
6676
6677 struct type *
6678 ada_tag_type (struct value *val)
6679 {
6680   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6681 }
6682
6683 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6684    retired at Ada 05).  */
6685
6686 static int
6687 is_ada95_tag (struct value *tag)
6688 {
6689   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6690 }
6691
6692 /* The value of the tag on VAL.  */
6693
6694 struct value *
6695 ada_value_tag (struct value *val)
6696 {
6697   return ada_value_struct_elt (val, "_tag", 0);
6698 }
6699
6700 /* The value of the tag on the object of type TYPE whose contents are
6701    saved at VALADDR, if it is non-null, or is at memory address
6702    ADDRESS.  */
6703
6704 static struct value *
6705 value_tag_from_contents_and_address (struct type *type,
6706                                      const gdb_byte *valaddr,
6707                                      CORE_ADDR address)
6708 {
6709   int tag_byte_offset;
6710   struct type *tag_type;
6711
6712   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6713                          NULL, NULL, NULL))
6714     {
6715       const gdb_byte *valaddr1 = ((valaddr == NULL)
6716                                   ? NULL
6717                                   : valaddr + tag_byte_offset);
6718       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6719
6720       return value_from_contents_and_address (tag_type, valaddr1, address1);
6721     }
6722   return NULL;
6723 }
6724
6725 static struct type *
6726 type_from_tag (struct value *tag)
6727 {
6728   const char *type_name = ada_tag_name (tag);
6729
6730   if (type_name != NULL)
6731     return ada_find_any_type (ada_encode (type_name));
6732   return NULL;
6733 }
6734
6735 /* Given a value OBJ of a tagged type, return a value of this
6736    type at the base address of the object.  The base address, as
6737    defined in Ada.Tags, it is the address of the primary tag of
6738    the object, and therefore where the field values of its full
6739    view can be fetched.  */
6740
6741 struct value *
6742 ada_tag_value_at_base_address (struct value *obj)
6743 {
6744   struct value *val;
6745   LONGEST offset_to_top = 0;
6746   struct type *ptr_type, *obj_type;
6747   struct value *tag;
6748   CORE_ADDR base_address;
6749
6750   obj_type = value_type (obj);
6751
6752   /* It is the responsability of the caller to deref pointers.  */
6753
6754   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6755       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6756     return obj;
6757
6758   tag = ada_value_tag (obj);
6759   if (!tag)
6760     return obj;
6761
6762   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6763
6764   if (is_ada95_tag (tag))
6765     return obj;
6766
6767   ptr_type = language_lookup_primitive_type
6768     (language_def (language_ada), target_gdbarch(), "storage_offset");
6769   ptr_type = lookup_pointer_type (ptr_type);
6770   val = value_cast (ptr_type, tag);
6771   if (!val)
6772     return obj;
6773
6774   /* It is perfectly possible that an exception be raised while
6775      trying to determine the base address, just like for the tag;
6776      see ada_tag_name for more details.  We do not print the error
6777      message for the same reason.  */
6778
6779   TRY
6780     {
6781       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6782     }
6783
6784   CATCH (e, RETURN_MASK_ERROR)
6785     {
6786       return obj;
6787     }
6788   END_CATCH
6789
6790   /* If offset is null, nothing to do.  */
6791
6792   if (offset_to_top == 0)
6793     return obj;
6794
6795   /* -1 is a special case in Ada.Tags; however, what should be done
6796      is not quite clear from the documentation.  So do nothing for
6797      now.  */
6798
6799   if (offset_to_top == -1)
6800     return obj;
6801
6802   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6803      from the base address.  This was however incompatible with
6804      C++ dispatch table: C++ uses a *negative* value to *add*
6805      to the base address.  Ada's convention has therefore been
6806      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6807      use the same convention.  Here, we support both cases by
6808      checking the sign of OFFSET_TO_TOP.  */
6809
6810   if (offset_to_top > 0)
6811     offset_to_top = -offset_to_top;
6812
6813   base_address = value_address (obj) + offset_to_top;
6814   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6815
6816   /* Make sure that we have a proper tag at the new address.
6817      Otherwise, offset_to_top is bogus (which can happen when
6818      the object is not initialized yet).  */
6819
6820   if (!tag)
6821     return obj;
6822
6823   obj_type = type_from_tag (tag);
6824
6825   if (!obj_type)
6826     return obj;
6827
6828   return value_from_contents_and_address (obj_type, NULL, base_address);
6829 }
6830
6831 /* Return the "ada__tags__type_specific_data" type.  */
6832
6833 static struct type *
6834 ada_get_tsd_type (struct inferior *inf)
6835 {
6836   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6837
6838   if (data->tsd_type == 0)
6839     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6840   return data->tsd_type;
6841 }
6842
6843 /* Return the TSD (type-specific data) associated to the given TAG.
6844    TAG is assumed to be the tag of a tagged-type entity.
6845
6846    May return NULL if we are unable to get the TSD.  */
6847
6848 static struct value *
6849 ada_get_tsd_from_tag (struct value *tag)
6850 {
6851   struct value *val;
6852   struct type *type;
6853
6854   /* First option: The TSD is simply stored as a field of our TAG.
6855      Only older versions of GNAT would use this format, but we have
6856      to test it first, because there are no visible markers for
6857      the current approach except the absence of that field.  */
6858
6859   val = ada_value_struct_elt (tag, "tsd", 1);
6860   if (val)
6861     return val;
6862
6863   /* Try the second representation for the dispatch table (in which
6864      there is no explicit 'tsd' field in the referent of the tag pointer,
6865      and instead the tsd pointer is stored just before the dispatch
6866      table.  */
6867
6868   type = ada_get_tsd_type (current_inferior());
6869   if (type == NULL)
6870     return NULL;
6871   type = lookup_pointer_type (lookup_pointer_type (type));
6872   val = value_cast (type, tag);
6873   if (val == NULL)
6874     return NULL;
6875   return value_ind (value_ptradd (val, -1));
6876 }
6877
6878 /* Given the TSD of a tag (type-specific data), return a string
6879    containing the name of the associated type.
6880
6881    The returned value is good until the next call.  May return NULL
6882    if we are unable to determine the tag name.  */
6883
6884 static char *
6885 ada_tag_name_from_tsd (struct value *tsd)
6886 {
6887   static char name[1024];
6888   char *p;
6889   struct value *val;
6890
6891   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6892   if (val == NULL)
6893     return NULL;
6894   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6895   for (p = name; *p != '\0'; p += 1)
6896     if (isalpha (*p))
6897       *p = tolower (*p);
6898   return name;
6899 }
6900
6901 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6902    a C string.
6903
6904    Return NULL if the TAG is not an Ada tag, or if we were unable to
6905    determine the name of that tag.  The result is good until the next
6906    call.  */
6907
6908 const char *
6909 ada_tag_name (struct value *tag)
6910 {
6911   char *name = NULL;
6912
6913   if (!ada_is_tag_type (value_type (tag)))
6914     return NULL;
6915
6916   /* It is perfectly possible that an exception be raised while trying
6917      to determine the TAG's name, even under normal circumstances:
6918      The associated variable may be uninitialized or corrupted, for
6919      instance. We do not let any exception propagate past this point.
6920      instead we return NULL.
6921
6922      We also do not print the error message either (which often is very
6923      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6924      the caller print a more meaningful message if necessary.  */
6925   TRY
6926     {
6927       struct value *tsd = ada_get_tsd_from_tag (tag);
6928
6929       if (tsd != NULL)
6930         name = ada_tag_name_from_tsd (tsd);
6931     }
6932   CATCH (e, RETURN_MASK_ERROR)
6933     {
6934     }
6935   END_CATCH
6936
6937   return name;
6938 }
6939
6940 /* The parent type of TYPE, or NULL if none.  */
6941
6942 struct type *
6943 ada_parent_type (struct type *type)
6944 {
6945   int i;
6946
6947   type = ada_check_typedef (type);
6948
6949   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6950     return NULL;
6951
6952   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6953     if (ada_is_parent_field (type, i))
6954       {
6955         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6956
6957         /* If the _parent field is a pointer, then dereference it.  */
6958         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6959           parent_type = TYPE_TARGET_TYPE (parent_type);
6960         /* If there is a parallel XVS type, get the actual base type.  */
6961         parent_type = ada_get_base_type (parent_type);
6962
6963         return ada_check_typedef (parent_type);
6964       }
6965
6966   return NULL;
6967 }
6968
6969 /* True iff field number FIELD_NUM of structure type TYPE contains the
6970    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6971    a structure type with at least FIELD_NUM+1 fields.  */
6972
6973 int
6974 ada_is_parent_field (struct type *type, int field_num)
6975 {
6976   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6977
6978   return (name != NULL
6979           && (startswith (name, "PARENT")
6980               || startswith (name, "_parent")));
6981 }
6982
6983 /* True iff field number FIELD_NUM of structure type TYPE is a
6984    transparent wrapper field (which should be silently traversed when doing
6985    field selection and flattened when printing).  Assumes TYPE is a
6986    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6987    structures.  */
6988
6989 int
6990 ada_is_wrapper_field (struct type *type, int field_num)
6991 {
6992   const char *name = TYPE_FIELD_NAME (type, field_num);
6993
6994   if (name != NULL && strcmp (name, "RETVAL") == 0)
6995     {
6996       /* This happens in functions with "out" or "in out" parameters
6997          which are passed by copy.  For such functions, GNAT describes
6998          the function's return type as being a struct where the return
6999          value is in a field called RETVAL, and where the other "out"
7000          or "in out" parameters are fields of that struct.  This is not
7001          a wrapper.  */
7002       return 0;
7003     }
7004
7005   return (name != NULL
7006           && (startswith (name, "PARENT")
7007               || strcmp (name, "REP") == 0
7008               || startswith (name, "_parent")
7009               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
7010 }
7011
7012 /* True iff field number FIELD_NUM of structure or union type TYPE
7013    is a variant wrapper.  Assumes TYPE is a structure type with at least
7014    FIELD_NUM+1 fields.  */
7015
7016 int
7017 ada_is_variant_part (struct type *type, int field_num)
7018 {
7019   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7020
7021   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7022           || (is_dynamic_field (type, field_num)
7023               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7024                   == TYPE_CODE_UNION)));
7025 }
7026
7027 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7028    whose discriminants are contained in the record type OUTER_TYPE,
7029    returns the type of the controlling discriminant for the variant.
7030    May return NULL if the type could not be found.  */
7031
7032 struct type *
7033 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7034 {
7035   const char *name = ada_variant_discrim_name (var_type);
7036
7037   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7038 }
7039
7040 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7041    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7042    represents a 'when others' clause; otherwise 0.  */
7043
7044 int
7045 ada_is_others_clause (struct type *type, int field_num)
7046 {
7047   const char *name = TYPE_FIELD_NAME (type, field_num);
7048
7049   return (name != NULL && name[0] == 'O');
7050 }
7051
7052 /* Assuming that TYPE0 is the type of the variant part of a record,
7053    returns the name of the discriminant controlling the variant.
7054    The value is valid until the next call to ada_variant_discrim_name.  */
7055
7056 const char *
7057 ada_variant_discrim_name (struct type *type0)
7058 {
7059   static char *result = NULL;
7060   static size_t result_len = 0;
7061   struct type *type;
7062   const char *name;
7063   const char *discrim_end;
7064   const char *discrim_start;
7065
7066   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7067     type = TYPE_TARGET_TYPE (type0);
7068   else
7069     type = type0;
7070
7071   name = ada_type_name (type);
7072
7073   if (name == NULL || name[0] == '\000')
7074     return "";
7075
7076   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7077        discrim_end -= 1)
7078     {
7079       if (startswith (discrim_end, "___XVN"))
7080         break;
7081     }
7082   if (discrim_end == name)
7083     return "";
7084
7085   for (discrim_start = discrim_end; discrim_start != name + 3;
7086        discrim_start -= 1)
7087     {
7088       if (discrim_start == name + 1)
7089         return "";
7090       if ((discrim_start > name + 3
7091            && startswith (discrim_start - 3, "___"))
7092           || discrim_start[-1] == '.')
7093         break;
7094     }
7095
7096   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7097   strncpy (result, discrim_start, discrim_end - discrim_start);
7098   result[discrim_end - discrim_start] = '\0';
7099   return result;
7100 }
7101
7102 /* Scan STR for a subtype-encoded number, beginning at position K.
7103    Put the position of the character just past the number scanned in
7104    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7105    Return 1 if there was a valid number at the given position, and 0
7106    otherwise.  A "subtype-encoded" number consists of the absolute value
7107    in decimal, followed by the letter 'm' to indicate a negative number.
7108    Assumes 0m does not occur.  */
7109
7110 int
7111 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7112 {
7113   ULONGEST RU;
7114
7115   if (!isdigit (str[k]))
7116     return 0;
7117
7118   /* Do it the hard way so as not to make any assumption about
7119      the relationship of unsigned long (%lu scan format code) and
7120      LONGEST.  */
7121   RU = 0;
7122   while (isdigit (str[k]))
7123     {
7124       RU = RU * 10 + (str[k] - '0');
7125       k += 1;
7126     }
7127
7128   if (str[k] == 'm')
7129     {
7130       if (R != NULL)
7131         *R = (-(LONGEST) (RU - 1)) - 1;
7132       k += 1;
7133     }
7134   else if (R != NULL)
7135     *R = (LONGEST) RU;
7136
7137   /* NOTE on the above: Technically, C does not say what the results of
7138      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7139      number representable as a LONGEST (although either would probably work
7140      in most implementations).  When RU>0, the locution in the then branch
7141      above is always equivalent to the negative of RU.  */
7142
7143   if (new_k != NULL)
7144     *new_k = k;
7145   return 1;
7146 }
7147
7148 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7149    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7150    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7151
7152 int
7153 ada_in_variant (LONGEST val, struct type *type, int field_num)
7154 {
7155   const char *name = TYPE_FIELD_NAME (type, field_num);
7156   int p;
7157
7158   p = 0;
7159   while (1)
7160     {
7161       switch (name[p])
7162         {
7163         case '\0':
7164           return 0;
7165         case 'S':
7166           {
7167             LONGEST W;
7168
7169             if (!ada_scan_number (name, p + 1, &W, &p))
7170               return 0;
7171             if (val == W)
7172               return 1;
7173             break;
7174           }
7175         case 'R':
7176           {
7177             LONGEST L, U;
7178
7179             if (!ada_scan_number (name, p + 1, &L, &p)
7180                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7181               return 0;
7182             if (val >= L && val <= U)
7183               return 1;
7184             break;
7185           }
7186         case 'O':
7187           return 1;
7188         default:
7189           return 0;
7190         }
7191     }
7192 }
7193
7194 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7195
7196 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7197    ARG_TYPE, extract and return the value of one of its (non-static)
7198    fields.  FIELDNO says which field.   Differs from value_primitive_field
7199    only in that it can handle packed values of arbitrary type.  */
7200
7201 static struct value *
7202 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7203                            struct type *arg_type)
7204 {
7205   struct type *type;
7206
7207   arg_type = ada_check_typedef (arg_type);
7208   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7209
7210   /* Handle packed fields.  */
7211
7212   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7213     {
7214       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7215       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7216
7217       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7218                                              offset + bit_pos / 8,
7219                                              bit_pos % 8, bit_size, type);
7220     }
7221   else
7222     return value_primitive_field (arg1, offset, fieldno, arg_type);
7223 }
7224
7225 /* Find field with name NAME in object of type TYPE.  If found, 
7226    set the following for each argument that is non-null:
7227     - *FIELD_TYPE_P to the field's type; 
7228     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7229       an object of that type;
7230     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7231     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7232       0 otherwise;
7233    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7234    fields up to but not including the desired field, or by the total
7235    number of fields if not found.   A NULL value of NAME never
7236    matches; the function just counts visible fields in this case.
7237    
7238    Notice that we need to handle when a tagged record hierarchy
7239    has some components with the same name, like in this scenario:
7240
7241       type Top_T is tagged record
7242          N : Integer := 1;
7243          U : Integer := 974;
7244          A : Integer := 48;
7245       end record;
7246
7247       type Middle_T is new Top.Top_T with record
7248          N : Character := 'a';
7249          C : Integer := 3;
7250       end record;
7251
7252      type Bottom_T is new Middle.Middle_T with record
7253         N : Float := 4.0;
7254         C : Character := '5';
7255         X : Integer := 6;
7256         A : Character := 'J';
7257      end record;
7258
7259    Let's say we now have a variable declared and initialized as follow:
7260
7261      TC : Top_A := new Bottom_T;
7262
7263    And then we use this variable to call this function
7264
7265      procedure Assign (Obj: in out Top_T; TV : Integer);
7266
7267    as follow:
7268
7269       Assign (Top_T (B), 12);
7270
7271    Now, we're in the debugger, and we're inside that procedure
7272    then and we want to print the value of obj.c:
7273
7274    Usually, the tagged record or one of the parent type owns the
7275    component to print and there's no issue but in this particular
7276    case, what does it mean to ask for Obj.C? Since the actual
7277    type for object is type Bottom_T, it could mean two things: type
7278    component C from the Middle_T view, but also component C from
7279    Bottom_T.  So in that "undefined" case, when the component is
7280    not found in the non-resolved type (which includes all the
7281    components of the parent type), then resolve it and see if we
7282    get better luck once expanded.
7283
7284    In the case of homonyms in the derived tagged type, we don't
7285    guaranty anything, and pick the one that's easiest for us
7286    to program.
7287
7288    Returns 1 if found, 0 otherwise.  */
7289
7290 static int
7291 find_struct_field (const char *name, struct type *type, int offset,
7292                    struct type **field_type_p,
7293                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7294                    int *index_p)
7295 {
7296   int i;
7297   int parent_offset = -1;
7298
7299   type = ada_check_typedef (type);
7300
7301   if (field_type_p != NULL)
7302     *field_type_p = NULL;
7303   if (byte_offset_p != NULL)
7304     *byte_offset_p = 0;
7305   if (bit_offset_p != NULL)
7306     *bit_offset_p = 0;
7307   if (bit_size_p != NULL)
7308     *bit_size_p = 0;
7309
7310   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7311     {
7312       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7313       int fld_offset = offset + bit_pos / 8;
7314       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7315
7316       if (t_field_name == NULL)
7317         continue;
7318
7319       else if (ada_is_parent_field (type, i))
7320         {
7321           /* This is a field pointing us to the parent type of a tagged
7322              type.  As hinted in this function's documentation, we give
7323              preference to fields in the current record first, so what
7324              we do here is just record the index of this field before
7325              we skip it.  If it turns out we couldn't find our field
7326              in the current record, then we'll get back to it and search
7327              inside it whether the field might exist in the parent.  */
7328
7329           parent_offset = i;
7330           continue;
7331         }
7332
7333       else if (name != NULL && field_name_match (t_field_name, name))
7334         {
7335           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7336
7337           if (field_type_p != NULL)
7338             *field_type_p = TYPE_FIELD_TYPE (type, i);
7339           if (byte_offset_p != NULL)
7340             *byte_offset_p = fld_offset;
7341           if (bit_offset_p != NULL)
7342             *bit_offset_p = bit_pos % 8;
7343           if (bit_size_p != NULL)
7344             *bit_size_p = bit_size;
7345           return 1;
7346         }
7347       else if (ada_is_wrapper_field (type, i))
7348         {
7349           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7350                                  field_type_p, byte_offset_p, bit_offset_p,
7351                                  bit_size_p, index_p))
7352             return 1;
7353         }
7354       else if (ada_is_variant_part (type, i))
7355         {
7356           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7357              fixed type?? */
7358           int j;
7359           struct type *field_type
7360             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7361
7362           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7363             {
7364               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7365                                      fld_offset
7366                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7367                                      field_type_p, byte_offset_p,
7368                                      bit_offset_p, bit_size_p, index_p))
7369                 return 1;
7370             }
7371         }
7372       else if (index_p != NULL)
7373         *index_p += 1;
7374     }
7375
7376   /* Field not found so far.  If this is a tagged type which
7377      has a parent, try finding that field in the parent now.  */
7378
7379   if (parent_offset != -1)
7380     {
7381       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7382       int fld_offset = offset + bit_pos / 8;
7383
7384       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7385                              fld_offset, field_type_p, byte_offset_p,
7386                              bit_offset_p, bit_size_p, index_p))
7387         return 1;
7388     }
7389
7390   return 0;
7391 }
7392
7393 /* Number of user-visible fields in record type TYPE.  */
7394
7395 static int
7396 num_visible_fields (struct type *type)
7397 {
7398   int n;
7399
7400   n = 0;
7401   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7402   return n;
7403 }
7404
7405 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7406    and search in it assuming it has (class) type TYPE.
7407    If found, return value, else return NULL.
7408
7409    Searches recursively through wrapper fields (e.g., '_parent').
7410
7411    In the case of homonyms in the tagged types, please refer to the
7412    long explanation in find_struct_field's function documentation.  */
7413
7414 static struct value *
7415 ada_search_struct_field (const char *name, struct value *arg, int offset,
7416                          struct type *type)
7417 {
7418   int i;
7419   int parent_offset = -1;
7420
7421   type = ada_check_typedef (type);
7422   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7423     {
7424       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7425
7426       if (t_field_name == NULL)
7427         continue;
7428
7429       else if (ada_is_parent_field (type, i))
7430         {
7431           /* This is a field pointing us to the parent type of a tagged
7432              type.  As hinted in this function's documentation, we give
7433              preference to fields in the current record first, so what
7434              we do here is just record the index of this field before
7435              we skip it.  If it turns out we couldn't find our field
7436              in the current record, then we'll get back to it and search
7437              inside it whether the field might exist in the parent.  */
7438
7439           parent_offset = i;
7440           continue;
7441         }
7442
7443       else if (field_name_match (t_field_name, name))
7444         return ada_value_primitive_field (arg, offset, i, type);
7445
7446       else if (ada_is_wrapper_field (type, i))
7447         {
7448           struct value *v =     /* Do not let indent join lines here.  */
7449             ada_search_struct_field (name, arg,
7450                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7451                                      TYPE_FIELD_TYPE (type, i));
7452
7453           if (v != NULL)
7454             return v;
7455         }
7456
7457       else if (ada_is_variant_part (type, i))
7458         {
7459           /* PNH: Do we ever get here?  See find_struct_field.  */
7460           int j;
7461           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7462                                                                         i));
7463           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7464
7465           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7466             {
7467               struct value *v = ada_search_struct_field /* Force line
7468                                                            break.  */
7469                 (name, arg,
7470                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7471                  TYPE_FIELD_TYPE (field_type, j));
7472
7473               if (v != NULL)
7474                 return v;
7475             }
7476         }
7477     }
7478
7479   /* Field not found so far.  If this is a tagged type which
7480      has a parent, try finding that field in the parent now.  */
7481
7482   if (parent_offset != -1)
7483     {
7484       struct value *v = ada_search_struct_field (
7485         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7486         TYPE_FIELD_TYPE (type, parent_offset));
7487
7488       if (v != NULL)
7489         return v;
7490     }
7491
7492   return NULL;
7493 }
7494
7495 static struct value *ada_index_struct_field_1 (int *, struct value *,
7496                                                int, struct type *);
7497
7498
7499 /* Return field #INDEX in ARG, where the index is that returned by
7500  * find_struct_field through its INDEX_P argument.  Adjust the address
7501  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7502  * If found, return value, else return NULL.  */
7503
7504 static struct value *
7505 ada_index_struct_field (int index, struct value *arg, int offset,
7506                         struct type *type)
7507 {
7508   return ada_index_struct_field_1 (&index, arg, offset, type);
7509 }
7510
7511
7512 /* Auxiliary function for ada_index_struct_field.  Like
7513  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7514  * *INDEX_P.  */
7515
7516 static struct value *
7517 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7518                           struct type *type)
7519 {
7520   int i;
7521   type = ada_check_typedef (type);
7522
7523   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7524     {
7525       if (TYPE_FIELD_NAME (type, i) == NULL)
7526         continue;
7527       else if (ada_is_wrapper_field (type, i))
7528         {
7529           struct value *v =     /* Do not let indent join lines here.  */
7530             ada_index_struct_field_1 (index_p, arg,
7531                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7532                                       TYPE_FIELD_TYPE (type, i));
7533
7534           if (v != NULL)
7535             return v;
7536         }
7537
7538       else if (ada_is_variant_part (type, i))
7539         {
7540           /* PNH: Do we ever get here?  See ada_search_struct_field,
7541              find_struct_field.  */
7542           error (_("Cannot assign this kind of variant record"));
7543         }
7544       else if (*index_p == 0)
7545         return ada_value_primitive_field (arg, offset, i, type);
7546       else
7547         *index_p -= 1;
7548     }
7549   return NULL;
7550 }
7551
7552 /* Given ARG, a value of type (pointer or reference to a)*
7553    structure/union, extract the component named NAME from the ultimate
7554    target structure/union and return it as a value with its
7555    appropriate type.
7556
7557    The routine searches for NAME among all members of the structure itself
7558    and (recursively) among all members of any wrapper members
7559    (e.g., '_parent').
7560
7561    If NO_ERR, then simply return NULL in case of error, rather than 
7562    calling error.  */
7563
7564 struct value *
7565 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7566 {
7567   struct type *t, *t1;
7568   struct value *v;
7569
7570   v = NULL;
7571   t1 = t = ada_check_typedef (value_type (arg));
7572   if (TYPE_CODE (t) == TYPE_CODE_REF)
7573     {
7574       t1 = TYPE_TARGET_TYPE (t);
7575       if (t1 == NULL)
7576         goto BadValue;
7577       t1 = ada_check_typedef (t1);
7578       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7579         {
7580           arg = coerce_ref (arg);
7581           t = t1;
7582         }
7583     }
7584
7585   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7586     {
7587       t1 = TYPE_TARGET_TYPE (t);
7588       if (t1 == NULL)
7589         goto BadValue;
7590       t1 = ada_check_typedef (t1);
7591       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7592         {
7593           arg = value_ind (arg);
7594           t = t1;
7595         }
7596       else
7597         break;
7598     }
7599
7600   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7601     goto BadValue;
7602
7603   if (t1 == t)
7604     v = ada_search_struct_field (name, arg, 0, t);
7605   else
7606     {
7607       int bit_offset, bit_size, byte_offset;
7608       struct type *field_type;
7609       CORE_ADDR address;
7610
7611       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7612         address = value_address (ada_value_ind (arg));
7613       else
7614         address = value_address (ada_coerce_ref (arg));
7615
7616       /* Check to see if this is a tagged type.  We also need to handle
7617          the case where the type is a reference to a tagged type, but
7618          we have to be careful to exclude pointers to tagged types.
7619          The latter should be shown as usual (as a pointer), whereas
7620          a reference should mostly be transparent to the user.  */
7621
7622       if (ada_is_tagged_type (t1, 0)
7623           || (TYPE_CODE (t1) == TYPE_CODE_REF
7624               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7625         {
7626           /* We first try to find the searched field in the current type.
7627              If not found then let's look in the fixed type.  */
7628
7629           if (!find_struct_field (name, t1, 0,
7630                                   &field_type, &byte_offset, &bit_offset,
7631                                   &bit_size, NULL))
7632             t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7633                                     address, NULL, 1);
7634         }
7635       else
7636         t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7637                                 address, NULL, 1);
7638
7639       if (find_struct_field (name, t1, 0,
7640                              &field_type, &byte_offset, &bit_offset,
7641                              &bit_size, NULL))
7642         {
7643           if (bit_size != 0)
7644             {
7645               if (TYPE_CODE (t) == TYPE_CODE_REF)
7646                 arg = ada_coerce_ref (arg);
7647               else
7648                 arg = ada_value_ind (arg);
7649               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7650                                                   bit_offset, bit_size,
7651                                                   field_type);
7652             }
7653           else
7654             v = value_at_lazy (field_type, address + byte_offset);
7655         }
7656     }
7657
7658   if (v != NULL || no_err)
7659     return v;
7660   else
7661     error (_("There is no member named %s."), name);
7662
7663  BadValue:
7664   if (no_err)
7665     return NULL;
7666   else
7667     error (_("Attempt to extract a component of "
7668              "a value that is not a record."));
7669 }
7670
7671 /* Return a string representation of type TYPE.  */
7672
7673 static std::string
7674 type_as_string (struct type *type)
7675 {
7676   string_file tmp_stream;
7677
7678   type_print (type, "", &tmp_stream, -1);
7679
7680   return std::move (tmp_stream.string ());
7681 }
7682
7683 /* Given a type TYPE, look up the type of the component of type named NAME.
7684    If DISPP is non-null, add its byte displacement from the beginning of a
7685    structure (pointed to by a value) of type TYPE to *DISPP (does not
7686    work for packed fields).
7687
7688    Matches any field whose name has NAME as a prefix, possibly
7689    followed by "___".
7690
7691    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7692    be a (pointer or reference)+ to a struct or union, and the
7693    ultimate target type will be searched.
7694
7695    Looks recursively into variant clauses and parent types.
7696
7697    In the case of homonyms in the tagged types, please refer to the
7698    long explanation in find_struct_field's function documentation.
7699
7700    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7701    TYPE is not a type of the right kind.  */
7702
7703 static struct type *
7704 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7705                             int noerr)
7706 {
7707   int i;
7708   int parent_offset = -1;
7709
7710   if (name == NULL)
7711     goto BadName;
7712
7713   if (refok && type != NULL)
7714     while (1)
7715       {
7716         type = ada_check_typedef (type);
7717         if (TYPE_CODE (type) != TYPE_CODE_PTR
7718             && TYPE_CODE (type) != TYPE_CODE_REF)
7719           break;
7720         type = TYPE_TARGET_TYPE (type);
7721       }
7722
7723   if (type == NULL
7724       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7725           && TYPE_CODE (type) != TYPE_CODE_UNION))
7726     {
7727       if (noerr)
7728         return NULL;
7729
7730       error (_("Type %s is not a structure or union type"),
7731              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7732     }
7733
7734   type = to_static_fixed_type (type);
7735
7736   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7737     {
7738       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7739       struct type *t;
7740
7741       if (t_field_name == NULL)
7742         continue;
7743
7744       else if (ada_is_parent_field (type, i))
7745         {
7746           /* This is a field pointing us to the parent type of a tagged
7747              type.  As hinted in this function's documentation, we give
7748              preference to fields in the current record first, so what
7749              we do here is just record the index of this field before
7750              we skip it.  If it turns out we couldn't find our field
7751              in the current record, then we'll get back to it and search
7752              inside it whether the field might exist in the parent.  */
7753
7754           parent_offset = i;
7755           continue;
7756         }
7757
7758       else if (field_name_match (t_field_name, name))
7759         return TYPE_FIELD_TYPE (type, i);
7760
7761       else if (ada_is_wrapper_field (type, i))
7762         {
7763           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7764                                           0, 1);
7765           if (t != NULL)
7766             return t;
7767         }
7768
7769       else if (ada_is_variant_part (type, i))
7770         {
7771           int j;
7772           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7773                                                                         i));
7774
7775           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7776             {
7777               /* FIXME pnh 2008/01/26: We check for a field that is
7778                  NOT wrapped in a struct, since the compiler sometimes
7779                  generates these for unchecked variant types.  Revisit
7780                  if the compiler changes this practice.  */
7781               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7782
7783               if (v_field_name != NULL 
7784                   && field_name_match (v_field_name, name))
7785                 t = TYPE_FIELD_TYPE (field_type, j);
7786               else
7787                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7788                                                                  j),
7789                                                 name, 0, 1);
7790
7791               if (t != NULL)
7792                 return t;
7793             }
7794         }
7795
7796     }
7797
7798     /* Field not found so far.  If this is a tagged type which
7799        has a parent, try finding that field in the parent now.  */
7800
7801     if (parent_offset != -1)
7802       {
7803         struct type *t;
7804
7805         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7806                                         name, 0, 1);
7807         if (t != NULL)
7808           return t;
7809       }
7810
7811 BadName:
7812   if (!noerr)
7813     {
7814       const char *name_str = name != NULL ? name : _("<null>");
7815
7816       error (_("Type %s has no component named %s"),
7817              type_as_string (type).c_str (), name_str);
7818     }
7819
7820   return NULL;
7821 }
7822
7823 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7824    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7825    represents an unchecked union (that is, the variant part of a
7826    record that is named in an Unchecked_Union pragma).  */
7827
7828 static int
7829 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7830 {
7831   const char *discrim_name = ada_variant_discrim_name (var_type);
7832
7833   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7834 }
7835
7836
7837 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7838    within a value of type OUTER_TYPE that is stored in GDB at
7839    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7840    numbering from 0) is applicable.  Returns -1 if none are.  */
7841
7842 int
7843 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7844                            const gdb_byte *outer_valaddr)
7845 {
7846   int others_clause;
7847   int i;
7848   const char *discrim_name = ada_variant_discrim_name (var_type);
7849   struct value *outer;
7850   struct value *discrim;
7851   LONGEST discrim_val;
7852
7853   /* Using plain value_from_contents_and_address here causes problems
7854      because we will end up trying to resolve a type that is currently
7855      being constructed.  */
7856   outer = value_from_contents_and_address_unresolved (outer_type,
7857                                                       outer_valaddr, 0);
7858   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7859   if (discrim == NULL)
7860     return -1;
7861   discrim_val = value_as_long (discrim);
7862
7863   others_clause = -1;
7864   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7865     {
7866       if (ada_is_others_clause (var_type, i))
7867         others_clause = i;
7868       else if (ada_in_variant (discrim_val, var_type, i))
7869         return i;
7870     }
7871
7872   return others_clause;
7873 }
7874 \f
7875
7876
7877                                 /* Dynamic-Sized Records */
7878
7879 /* Strategy: The type ostensibly attached to a value with dynamic size
7880    (i.e., a size that is not statically recorded in the debugging
7881    data) does not accurately reflect the size or layout of the value.
7882    Our strategy is to convert these values to values with accurate,
7883    conventional types that are constructed on the fly.  */
7884
7885 /* There is a subtle and tricky problem here.  In general, we cannot
7886    determine the size of dynamic records without its data.  However,
7887    the 'struct value' data structure, which GDB uses to represent
7888    quantities in the inferior process (the target), requires the size
7889    of the type at the time of its allocation in order to reserve space
7890    for GDB's internal copy of the data.  That's why the
7891    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7892    rather than struct value*s.
7893
7894    However, GDB's internal history variables ($1, $2, etc.) are
7895    struct value*s containing internal copies of the data that are not, in
7896    general, the same as the data at their corresponding addresses in
7897    the target.  Fortunately, the types we give to these values are all
7898    conventional, fixed-size types (as per the strategy described
7899    above), so that we don't usually have to perform the
7900    'to_fixed_xxx_type' conversions to look at their values.
7901    Unfortunately, there is one exception: if one of the internal
7902    history variables is an array whose elements are unconstrained
7903    records, then we will need to create distinct fixed types for each
7904    element selected.  */
7905
7906 /* The upshot of all of this is that many routines take a (type, host
7907    address, target address) triple as arguments to represent a value.
7908    The host address, if non-null, is supposed to contain an internal
7909    copy of the relevant data; otherwise, the program is to consult the
7910    target at the target address.  */
7911
7912 /* Assuming that VAL0 represents a pointer value, the result of
7913    dereferencing it.  Differs from value_ind in its treatment of
7914    dynamic-sized types.  */
7915
7916 struct value *
7917 ada_value_ind (struct value *val0)
7918 {
7919   struct value *val = value_ind (val0);
7920
7921   if (ada_is_tagged_type (value_type (val), 0))
7922     val = ada_tag_value_at_base_address (val);
7923
7924   return ada_to_fixed_value (val);
7925 }
7926
7927 /* The value resulting from dereferencing any "reference to"
7928    qualifiers on VAL0.  */
7929
7930 static struct value *
7931 ada_coerce_ref (struct value *val0)
7932 {
7933   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7934     {
7935       struct value *val = val0;
7936
7937       val = coerce_ref (val);
7938
7939       if (ada_is_tagged_type (value_type (val), 0))
7940         val = ada_tag_value_at_base_address (val);
7941
7942       return ada_to_fixed_value (val);
7943     }
7944   else
7945     return val0;
7946 }
7947
7948 /* Return OFF rounded upward if necessary to a multiple of
7949    ALIGNMENT (a power of 2).  */
7950
7951 static unsigned int
7952 align_value (unsigned int off, unsigned int alignment)
7953 {
7954   return (off + alignment - 1) & ~(alignment - 1);
7955 }
7956
7957 /* Return the bit alignment required for field #F of template type TYPE.  */
7958
7959 static unsigned int
7960 field_alignment (struct type *type, int f)
7961 {
7962   const char *name = TYPE_FIELD_NAME (type, f);
7963   int len;
7964   int align_offset;
7965
7966   /* The field name should never be null, unless the debugging information
7967      is somehow malformed.  In this case, we assume the field does not
7968      require any alignment.  */
7969   if (name == NULL)
7970     return 1;
7971
7972   len = strlen (name);
7973
7974   if (!isdigit (name[len - 1]))
7975     return 1;
7976
7977   if (isdigit (name[len - 2]))
7978     align_offset = len - 2;
7979   else
7980     align_offset = len - 1;
7981
7982   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7983     return TARGET_CHAR_BIT;
7984
7985   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7986 }
7987
7988 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7989
7990 static struct symbol *
7991 ada_find_any_type_symbol (const char *name)
7992 {
7993   struct symbol *sym;
7994
7995   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7996   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7997     return sym;
7998
7999   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
8000   return sym;
8001 }
8002
8003 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
8004    solely for types defined by debug info, it will not search the GDB
8005    primitive types.  */
8006
8007 static struct type *
8008 ada_find_any_type (const char *name)
8009 {
8010   struct symbol *sym = ada_find_any_type_symbol (name);
8011
8012   if (sym != NULL)
8013     return SYMBOL_TYPE (sym);
8014
8015   return NULL;
8016 }
8017
8018 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8019    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8020    symbol, in which case it is returned.  Otherwise, this looks for
8021    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8022    Return symbol if found, and NULL otherwise.  */
8023
8024 struct symbol *
8025 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8026 {
8027   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8028   struct symbol *sym;
8029
8030   if (strstr (name, "___XR") != NULL)
8031      return name_sym;
8032
8033   sym = find_old_style_renaming_symbol (name, block);
8034
8035   if (sym != NULL)
8036     return sym;
8037
8038   /* Not right yet.  FIXME pnh 7/20/2007.  */
8039   sym = ada_find_any_type_symbol (name);
8040   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8041     return sym;
8042   else
8043     return NULL;
8044 }
8045
8046 static struct symbol *
8047 find_old_style_renaming_symbol (const char *name, const struct block *block)
8048 {
8049   const struct symbol *function_sym = block_linkage_function (block);
8050   char *rename;
8051
8052   if (function_sym != NULL)
8053     {
8054       /* If the symbol is defined inside a function, NAME is not fully
8055          qualified.  This means we need to prepend the function name
8056          as well as adding the ``___XR'' suffix to build the name of
8057          the associated renaming symbol.  */
8058       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8059       /* Function names sometimes contain suffixes used
8060          for instance to qualify nested subprograms.  When building
8061          the XR type name, we need to make sure that this suffix is
8062          not included.  So do not include any suffix in the function
8063          name length below.  */
8064       int function_name_len = ada_name_prefix_len (function_name);
8065       const int rename_len = function_name_len + 2      /*  "__" */
8066         + strlen (name) + 6 /* "___XR\0" */ ;
8067
8068       /* Strip the suffix if necessary.  */
8069       ada_remove_trailing_digits (function_name, &function_name_len);
8070       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8071       ada_remove_Xbn_suffix (function_name, &function_name_len);
8072
8073       /* Library-level functions are a special case, as GNAT adds
8074          a ``_ada_'' prefix to the function name to avoid namespace
8075          pollution.  However, the renaming symbols themselves do not
8076          have this prefix, so we need to skip this prefix if present.  */
8077       if (function_name_len > 5 /* "_ada_" */
8078           && strstr (function_name, "_ada_") == function_name)
8079         {
8080           function_name += 5;
8081           function_name_len -= 5;
8082         }
8083
8084       rename = (char *) alloca (rename_len * sizeof (char));
8085       strncpy (rename, function_name, function_name_len);
8086       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8087                  "__%s___XR", name);
8088     }
8089   else
8090     {
8091       const int rename_len = strlen (name) + 6;
8092
8093       rename = (char *) alloca (rename_len * sizeof (char));
8094       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8095     }
8096
8097   return ada_find_any_type_symbol (rename);
8098 }
8099
8100 /* Because of GNAT encoding conventions, several GDB symbols may match a
8101    given type name.  If the type denoted by TYPE0 is to be preferred to
8102    that of TYPE1 for purposes of type printing, return non-zero;
8103    otherwise return 0.  */
8104
8105 int
8106 ada_prefer_type (struct type *type0, struct type *type1)
8107 {
8108   if (type1 == NULL)
8109     return 1;
8110   else if (type0 == NULL)
8111     return 0;
8112   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8113     return 1;
8114   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8115     return 0;
8116   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8117     return 1;
8118   else if (ada_is_constrained_packed_array_type (type0))
8119     return 1;
8120   else if (ada_is_array_descriptor_type (type0)
8121            && !ada_is_array_descriptor_type (type1))
8122     return 1;
8123   else
8124     {
8125       const char *type0_name = type_name_no_tag (type0);
8126       const char *type1_name = type_name_no_tag (type1);
8127
8128       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8129           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8130         return 1;
8131     }
8132   return 0;
8133 }
8134
8135 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
8136    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
8137
8138 const char *
8139 ada_type_name (struct type *type)
8140 {
8141   if (type == NULL)
8142     return NULL;
8143   else if (TYPE_NAME (type) != NULL)
8144     return TYPE_NAME (type);
8145   else
8146     return TYPE_TAG_NAME (type);
8147 }
8148
8149 /* Search the list of "descriptive" types associated to TYPE for a type
8150    whose name is NAME.  */
8151
8152 static struct type *
8153 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8154 {
8155   struct type *result, *tmp;
8156
8157   if (ada_ignore_descriptive_types_p)
8158     return NULL;
8159
8160   /* If there no descriptive-type info, then there is no parallel type
8161      to be found.  */
8162   if (!HAVE_GNAT_AUX_INFO (type))
8163     return NULL;
8164
8165   result = TYPE_DESCRIPTIVE_TYPE (type);
8166   while (result != NULL)
8167     {
8168       const char *result_name = ada_type_name (result);
8169
8170       if (result_name == NULL)
8171         {
8172           warning (_("unexpected null name on descriptive type"));
8173           return NULL;
8174         }
8175
8176       /* If the names match, stop.  */
8177       if (strcmp (result_name, name) == 0)
8178         break;
8179
8180       /* Otherwise, look at the next item on the list, if any.  */
8181       if (HAVE_GNAT_AUX_INFO (result))
8182         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8183       else
8184         tmp = NULL;
8185
8186       /* If not found either, try after having resolved the typedef.  */
8187       if (tmp != NULL)
8188         result = tmp;
8189       else
8190         {
8191           result = check_typedef (result);
8192           if (HAVE_GNAT_AUX_INFO (result))
8193             result = TYPE_DESCRIPTIVE_TYPE (result);
8194           else
8195             result = NULL;
8196         }
8197     }
8198
8199   /* If we didn't find a match, see whether this is a packed array.  With
8200      older compilers, the descriptive type information is either absent or
8201      irrelevant when it comes to packed arrays so the above lookup fails.
8202      Fall back to using a parallel lookup by name in this case.  */
8203   if (result == NULL && ada_is_constrained_packed_array_type (type))
8204     return ada_find_any_type (name);
8205
8206   return result;
8207 }
8208
8209 /* Find a parallel type to TYPE with the specified NAME, using the
8210    descriptive type taken from the debugging information, if available,
8211    and otherwise using the (slower) name-based method.  */
8212
8213 static struct type *
8214 ada_find_parallel_type_with_name (struct type *type, const char *name)
8215 {
8216   struct type *result = NULL;
8217
8218   if (HAVE_GNAT_AUX_INFO (type))
8219     result = find_parallel_type_by_descriptive_type (type, name);
8220   else
8221     result = ada_find_any_type (name);
8222
8223   return result;
8224 }
8225
8226 /* Same as above, but specify the name of the parallel type by appending
8227    SUFFIX to the name of TYPE.  */
8228
8229 struct type *
8230 ada_find_parallel_type (struct type *type, const char *suffix)
8231 {
8232   char *name;
8233   const char *type_name = ada_type_name (type);
8234   int len;
8235
8236   if (type_name == NULL)
8237     return NULL;
8238
8239   len = strlen (type_name);
8240
8241   name = (char *) alloca (len + strlen (suffix) + 1);
8242
8243   strcpy (name, type_name);
8244   strcpy (name + len, suffix);
8245
8246   return ada_find_parallel_type_with_name (type, name);
8247 }
8248
8249 /* If TYPE is a variable-size record type, return the corresponding template
8250    type describing its fields.  Otherwise, return NULL.  */
8251
8252 static struct type *
8253 dynamic_template_type (struct type *type)
8254 {
8255   type = ada_check_typedef (type);
8256
8257   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8258       || ada_type_name (type) == NULL)
8259     return NULL;
8260   else
8261     {
8262       int len = strlen (ada_type_name (type));
8263
8264       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8265         return type;
8266       else
8267         return ada_find_parallel_type (type, "___XVE");
8268     }
8269 }
8270
8271 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8272    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8273
8274 static int
8275 is_dynamic_field (struct type *templ_type, int field_num)
8276 {
8277   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8278
8279   return name != NULL
8280     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8281     && strstr (name, "___XVL") != NULL;
8282 }
8283
8284 /* The index of the variant field of TYPE, or -1 if TYPE does not
8285    represent a variant record type.  */
8286
8287 static int
8288 variant_field_index (struct type *type)
8289 {
8290   int f;
8291
8292   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8293     return -1;
8294
8295   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8296     {
8297       if (ada_is_variant_part (type, f))
8298         return f;
8299     }
8300   return -1;
8301 }
8302
8303 /* A record type with no fields.  */
8304
8305 static struct type *
8306 empty_record (struct type *templ)
8307 {
8308   struct type *type = alloc_type_copy (templ);
8309
8310   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8311   TYPE_NFIELDS (type) = 0;
8312   TYPE_FIELDS (type) = NULL;
8313   INIT_CPLUS_SPECIFIC (type);
8314   TYPE_NAME (type) = "<empty>";
8315   TYPE_TAG_NAME (type) = NULL;
8316   TYPE_LENGTH (type) = 0;
8317   return type;
8318 }
8319
8320 /* An ordinary record type (with fixed-length fields) that describes
8321    the value of type TYPE at VALADDR or ADDRESS (see comments at
8322    the beginning of this section) VAL according to GNAT conventions.
8323    DVAL0 should describe the (portion of a) record that contains any
8324    necessary discriminants.  It should be NULL if value_type (VAL) is
8325    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8326    variant field (unless unchecked) is replaced by a particular branch
8327    of the variant.
8328
8329    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8330    length are not statically known are discarded.  As a consequence,
8331    VALADDR, ADDRESS and DVAL0 are ignored.
8332
8333    NOTE: Limitations: For now, we assume that dynamic fields and
8334    variants occupy whole numbers of bytes.  However, they need not be
8335    byte-aligned.  */
8336
8337 struct type *
8338 ada_template_to_fixed_record_type_1 (struct type *type,
8339                                      const gdb_byte *valaddr,
8340                                      CORE_ADDR address, struct value *dval0,
8341                                      int keep_dynamic_fields)
8342 {
8343   struct value *mark = value_mark ();
8344   struct value *dval;
8345   struct type *rtype;
8346   int nfields, bit_len;
8347   int variant_field;
8348   long off;
8349   int fld_bit_len;
8350   int f;
8351
8352   /* Compute the number of fields in this record type that are going
8353      to be processed: unless keep_dynamic_fields, this includes only
8354      fields whose position and length are static will be processed.  */
8355   if (keep_dynamic_fields)
8356     nfields = TYPE_NFIELDS (type);
8357   else
8358     {
8359       nfields = 0;
8360       while (nfields < TYPE_NFIELDS (type)
8361              && !ada_is_variant_part (type, nfields)
8362              && !is_dynamic_field (type, nfields))
8363         nfields++;
8364     }
8365
8366   rtype = alloc_type_copy (type);
8367   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8368   INIT_CPLUS_SPECIFIC (rtype);
8369   TYPE_NFIELDS (rtype) = nfields;
8370   TYPE_FIELDS (rtype) = (struct field *)
8371     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8372   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8373   TYPE_NAME (rtype) = ada_type_name (type);
8374   TYPE_TAG_NAME (rtype) = NULL;
8375   TYPE_FIXED_INSTANCE (rtype) = 1;
8376
8377   off = 0;
8378   bit_len = 0;
8379   variant_field = -1;
8380
8381   for (f = 0; f < nfields; f += 1)
8382     {
8383       off = align_value (off, field_alignment (type, f))
8384         + TYPE_FIELD_BITPOS (type, f);
8385       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8386       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8387
8388       if (ada_is_variant_part (type, f))
8389         {
8390           variant_field = f;
8391           fld_bit_len = 0;
8392         }
8393       else if (is_dynamic_field (type, f))
8394         {
8395           const gdb_byte *field_valaddr = valaddr;
8396           CORE_ADDR field_address = address;
8397           struct type *field_type =
8398             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8399
8400           if (dval0 == NULL)
8401             {
8402               /* rtype's length is computed based on the run-time
8403                  value of discriminants.  If the discriminants are not
8404                  initialized, the type size may be completely bogus and
8405                  GDB may fail to allocate a value for it.  So check the
8406                  size first before creating the value.  */
8407               ada_ensure_varsize_limit (rtype);
8408               /* Using plain value_from_contents_and_address here
8409                  causes problems because we will end up trying to
8410                  resolve a type that is currently being
8411                  constructed.  */
8412               dval = value_from_contents_and_address_unresolved (rtype,
8413                                                                  valaddr,
8414                                                                  address);
8415               rtype = value_type (dval);
8416             }
8417           else
8418             dval = dval0;
8419
8420           /* If the type referenced by this field is an aligner type, we need
8421              to unwrap that aligner type, because its size might not be set.
8422              Keeping the aligner type would cause us to compute the wrong
8423              size for this field, impacting the offset of the all the fields
8424              that follow this one.  */
8425           if (ada_is_aligner_type (field_type))
8426             {
8427               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8428
8429               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8430               field_address = cond_offset_target (field_address, field_offset);
8431               field_type = ada_aligned_type (field_type);
8432             }
8433
8434           field_valaddr = cond_offset_host (field_valaddr,
8435                                             off / TARGET_CHAR_BIT);
8436           field_address = cond_offset_target (field_address,
8437                                               off / TARGET_CHAR_BIT);
8438
8439           /* Get the fixed type of the field.  Note that, in this case,
8440              we do not want to get the real type out of the tag: if
8441              the current field is the parent part of a tagged record,
8442              we will get the tag of the object.  Clearly wrong: the real
8443              type of the parent is not the real type of the child.  We
8444              would end up in an infinite loop.  */
8445           field_type = ada_get_base_type (field_type);
8446           field_type = ada_to_fixed_type (field_type, field_valaddr,
8447                                           field_address, dval, 0);
8448           /* If the field size is already larger than the maximum
8449              object size, then the record itself will necessarily
8450              be larger than the maximum object size.  We need to make
8451              this check now, because the size might be so ridiculously
8452              large (due to an uninitialized variable in the inferior)
8453              that it would cause an overflow when adding it to the
8454              record size.  */
8455           ada_ensure_varsize_limit (field_type);
8456
8457           TYPE_FIELD_TYPE (rtype, f) = field_type;
8458           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8459           /* The multiplication can potentially overflow.  But because
8460              the field length has been size-checked just above, and
8461              assuming that the maximum size is a reasonable value,
8462              an overflow should not happen in practice.  So rather than
8463              adding overflow recovery code to this already complex code,
8464              we just assume that it's not going to happen.  */
8465           fld_bit_len =
8466             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8467         }
8468       else
8469         {
8470           /* Note: If this field's type is a typedef, it is important
8471              to preserve the typedef layer.
8472
8473              Otherwise, we might be transforming a typedef to a fat
8474              pointer (encoding a pointer to an unconstrained array),
8475              into a basic fat pointer (encoding an unconstrained
8476              array).  As both types are implemented using the same
8477              structure, the typedef is the only clue which allows us
8478              to distinguish between the two options.  Stripping it
8479              would prevent us from printing this field appropriately.  */
8480           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8481           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8482           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8483             fld_bit_len =
8484               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8485           else
8486             {
8487               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8488
8489               /* We need to be careful of typedefs when computing
8490                  the length of our field.  If this is a typedef,
8491                  get the length of the target type, not the length
8492                  of the typedef.  */
8493               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8494                 field_type = ada_typedef_target_type (field_type);
8495
8496               fld_bit_len =
8497                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8498             }
8499         }
8500       if (off + fld_bit_len > bit_len)
8501         bit_len = off + fld_bit_len;
8502       off += fld_bit_len;
8503       TYPE_LENGTH (rtype) =
8504         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8505     }
8506
8507   /* We handle the variant part, if any, at the end because of certain
8508      odd cases in which it is re-ordered so as NOT to be the last field of
8509      the record.  This can happen in the presence of representation
8510      clauses.  */
8511   if (variant_field >= 0)
8512     {
8513       struct type *branch_type;
8514
8515       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8516
8517       if (dval0 == NULL)
8518         {
8519           /* Using plain value_from_contents_and_address here causes
8520              problems because we will end up trying to resolve a type
8521              that is currently being constructed.  */
8522           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8523                                                              address);
8524           rtype = value_type (dval);
8525         }
8526       else
8527         dval = dval0;
8528
8529       branch_type =
8530         to_fixed_variant_branch_type
8531         (TYPE_FIELD_TYPE (type, variant_field),
8532          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8533          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8534       if (branch_type == NULL)
8535         {
8536           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8537             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8538           TYPE_NFIELDS (rtype) -= 1;
8539         }
8540       else
8541         {
8542           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8543           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8544           fld_bit_len =
8545             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8546             TARGET_CHAR_BIT;
8547           if (off + fld_bit_len > bit_len)
8548             bit_len = off + fld_bit_len;
8549           TYPE_LENGTH (rtype) =
8550             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8551         }
8552     }
8553
8554   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8555      should contain the alignment of that record, which should be a strictly
8556      positive value.  If null or negative, then something is wrong, most
8557      probably in the debug info.  In that case, we don't round up the size
8558      of the resulting type.  If this record is not part of another structure,
8559      the current RTYPE length might be good enough for our purposes.  */
8560   if (TYPE_LENGTH (type) <= 0)
8561     {
8562       if (TYPE_NAME (rtype))
8563         warning (_("Invalid type size for `%s' detected: %d."),
8564                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8565       else
8566         warning (_("Invalid type size for <unnamed> detected: %d."),
8567                  TYPE_LENGTH (type));
8568     }
8569   else
8570     {
8571       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8572                                          TYPE_LENGTH (type));
8573     }
8574
8575   value_free_to_mark (mark);
8576   if (TYPE_LENGTH (rtype) > varsize_limit)
8577     error (_("record type with dynamic size is larger than varsize-limit"));
8578   return rtype;
8579 }
8580
8581 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8582    of 1.  */
8583
8584 static struct type *
8585 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8586                                CORE_ADDR address, struct value *dval0)
8587 {
8588   return ada_template_to_fixed_record_type_1 (type, valaddr,
8589                                               address, dval0, 1);
8590 }
8591
8592 /* An ordinary record type in which ___XVL-convention fields and
8593    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8594    static approximations, containing all possible fields.  Uses
8595    no runtime values.  Useless for use in values, but that's OK,
8596    since the results are used only for type determinations.   Works on both
8597    structs and unions.  Representation note: to save space, we memorize
8598    the result of this function in the TYPE_TARGET_TYPE of the
8599    template type.  */
8600
8601 static struct type *
8602 template_to_static_fixed_type (struct type *type0)
8603 {
8604   struct type *type;
8605   int nfields;
8606   int f;
8607
8608   /* No need no do anything if the input type is already fixed.  */
8609   if (TYPE_FIXED_INSTANCE (type0))
8610     return type0;
8611
8612   /* Likewise if we already have computed the static approximation.  */
8613   if (TYPE_TARGET_TYPE (type0) != NULL)
8614     return TYPE_TARGET_TYPE (type0);
8615
8616   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8617   type = type0;
8618   nfields = TYPE_NFIELDS (type0);
8619
8620   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8621      recompute all over next time.  */
8622   TYPE_TARGET_TYPE (type0) = type;
8623
8624   for (f = 0; f < nfields; f += 1)
8625     {
8626       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8627       struct type *new_type;
8628
8629       if (is_dynamic_field (type0, f))
8630         {
8631           field_type = ada_check_typedef (field_type);
8632           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8633         }
8634       else
8635         new_type = static_unwrap_type (field_type);
8636
8637       if (new_type != field_type)
8638         {
8639           /* Clone TYPE0 only the first time we get a new field type.  */
8640           if (type == type0)
8641             {
8642               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8643               TYPE_CODE (type) = TYPE_CODE (type0);
8644               INIT_CPLUS_SPECIFIC (type);
8645               TYPE_NFIELDS (type) = nfields;
8646               TYPE_FIELDS (type) = (struct field *)
8647                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8648               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8649                       sizeof (struct field) * nfields);
8650               TYPE_NAME (type) = ada_type_name (type0);
8651               TYPE_TAG_NAME (type) = NULL;
8652               TYPE_FIXED_INSTANCE (type) = 1;
8653               TYPE_LENGTH (type) = 0;
8654             }
8655           TYPE_FIELD_TYPE (type, f) = new_type;
8656           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8657         }
8658     }
8659
8660   return type;
8661 }
8662
8663 /* Given an object of type TYPE whose contents are at VALADDR and
8664    whose address in memory is ADDRESS, returns a revision of TYPE,
8665    which should be a non-dynamic-sized record, in which the variant
8666    part, if any, is replaced with the appropriate branch.  Looks
8667    for discriminant values in DVAL0, which can be NULL if the record
8668    contains the necessary discriminant values.  */
8669
8670 static struct type *
8671 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8672                                    CORE_ADDR address, struct value *dval0)
8673 {
8674   struct value *mark = value_mark ();
8675   struct value *dval;
8676   struct type *rtype;
8677   struct type *branch_type;
8678   int nfields = TYPE_NFIELDS (type);
8679   int variant_field = variant_field_index (type);
8680
8681   if (variant_field == -1)
8682     return type;
8683
8684   if (dval0 == NULL)
8685     {
8686       dval = value_from_contents_and_address (type, valaddr, address);
8687       type = value_type (dval);
8688     }
8689   else
8690     dval = dval0;
8691
8692   rtype = alloc_type_copy (type);
8693   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8694   INIT_CPLUS_SPECIFIC (rtype);
8695   TYPE_NFIELDS (rtype) = nfields;
8696   TYPE_FIELDS (rtype) =
8697     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8698   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8699           sizeof (struct field) * nfields);
8700   TYPE_NAME (rtype) = ada_type_name (type);
8701   TYPE_TAG_NAME (rtype) = NULL;
8702   TYPE_FIXED_INSTANCE (rtype) = 1;
8703   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8704
8705   branch_type = to_fixed_variant_branch_type
8706     (TYPE_FIELD_TYPE (type, variant_field),
8707      cond_offset_host (valaddr,
8708                        TYPE_FIELD_BITPOS (type, variant_field)
8709                        / TARGET_CHAR_BIT),
8710      cond_offset_target (address,
8711                          TYPE_FIELD_BITPOS (type, variant_field)
8712                          / TARGET_CHAR_BIT), dval);
8713   if (branch_type == NULL)
8714     {
8715       int f;
8716
8717       for (f = variant_field + 1; f < nfields; f += 1)
8718         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8719       TYPE_NFIELDS (rtype) -= 1;
8720     }
8721   else
8722     {
8723       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8724       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8725       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8726       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8727     }
8728   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8729
8730   value_free_to_mark (mark);
8731   return rtype;
8732 }
8733
8734 /* An ordinary record type (with fixed-length fields) that describes
8735    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8736    beginning of this section].   Any necessary discriminants' values
8737    should be in DVAL, a record value; it may be NULL if the object
8738    at ADDR itself contains any necessary discriminant values.
8739    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8740    values from the record are needed.  Except in the case that DVAL,
8741    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8742    unchecked) is replaced by a particular branch of the variant.
8743
8744    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8745    is questionable and may be removed.  It can arise during the
8746    processing of an unconstrained-array-of-record type where all the
8747    variant branches have exactly the same size.  This is because in
8748    such cases, the compiler does not bother to use the XVS convention
8749    when encoding the record.  I am currently dubious of this
8750    shortcut and suspect the compiler should be altered.  FIXME.  */
8751
8752 static struct type *
8753 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8754                       CORE_ADDR address, struct value *dval)
8755 {
8756   struct type *templ_type;
8757
8758   if (TYPE_FIXED_INSTANCE (type0))
8759     return type0;
8760
8761   templ_type = dynamic_template_type (type0);
8762
8763   if (templ_type != NULL)
8764     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8765   else if (variant_field_index (type0) >= 0)
8766     {
8767       if (dval == NULL && valaddr == NULL && address == 0)
8768         return type0;
8769       return to_record_with_fixed_variant_part (type0, valaddr, address,
8770                                                 dval);
8771     }
8772   else
8773     {
8774       TYPE_FIXED_INSTANCE (type0) = 1;
8775       return type0;
8776     }
8777
8778 }
8779
8780 /* An ordinary record type (with fixed-length fields) that describes
8781    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8782    union type.  Any necessary discriminants' values should be in DVAL,
8783    a record value.  That is, this routine selects the appropriate
8784    branch of the union at ADDR according to the discriminant value
8785    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8786    it represents a variant subject to a pragma Unchecked_Union.  */
8787
8788 static struct type *
8789 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8790                               CORE_ADDR address, struct value *dval)
8791 {
8792   int which;
8793   struct type *templ_type;
8794   struct type *var_type;
8795
8796   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8797     var_type = TYPE_TARGET_TYPE (var_type0);
8798   else
8799     var_type = var_type0;
8800
8801   templ_type = ada_find_parallel_type (var_type, "___XVU");
8802
8803   if (templ_type != NULL)
8804     var_type = templ_type;
8805
8806   if (is_unchecked_variant (var_type, value_type (dval)))
8807       return var_type0;
8808   which =
8809     ada_which_variant_applies (var_type,
8810                                value_type (dval), value_contents (dval));
8811
8812   if (which < 0)
8813     return empty_record (var_type);
8814   else if (is_dynamic_field (var_type, which))
8815     return to_fixed_record_type
8816       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8817        valaddr, address, dval);
8818   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8819     return
8820       to_fixed_record_type
8821       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8822   else
8823     return TYPE_FIELD_TYPE (var_type, which);
8824 }
8825
8826 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8827    ENCODING_TYPE, a type following the GNAT conventions for discrete
8828    type encodings, only carries redundant information.  */
8829
8830 static int
8831 ada_is_redundant_range_encoding (struct type *range_type,
8832                                  struct type *encoding_type)
8833 {
8834   const char *bounds_str;
8835   int n;
8836   LONGEST lo, hi;
8837
8838   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8839
8840   if (TYPE_CODE (get_base_type (range_type))
8841       != TYPE_CODE (get_base_type (encoding_type)))
8842     {
8843       /* The compiler probably used a simple base type to describe
8844          the range type instead of the range's actual base type,
8845          expecting us to get the real base type from the encoding
8846          anyway.  In this situation, the encoding cannot be ignored
8847          as redundant.  */
8848       return 0;
8849     }
8850
8851   if (is_dynamic_type (range_type))
8852     return 0;
8853
8854   if (TYPE_NAME (encoding_type) == NULL)
8855     return 0;
8856
8857   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8858   if (bounds_str == NULL)
8859     return 0;
8860
8861   n = 8; /* Skip "___XDLU_".  */
8862   if (!ada_scan_number (bounds_str, n, &lo, &n))
8863     return 0;
8864   if (TYPE_LOW_BOUND (range_type) != lo)
8865     return 0;
8866
8867   n += 2; /* Skip the "__" separator between the two bounds.  */
8868   if (!ada_scan_number (bounds_str, n, &hi, &n))
8869     return 0;
8870   if (TYPE_HIGH_BOUND (range_type) != hi)
8871     return 0;
8872
8873   return 1;
8874 }
8875
8876 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8877    a type following the GNAT encoding for describing array type
8878    indices, only carries redundant information.  */
8879
8880 static int
8881 ada_is_redundant_index_type_desc (struct type *array_type,
8882                                   struct type *desc_type)
8883 {
8884   struct type *this_layer = check_typedef (array_type);
8885   int i;
8886
8887   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8888     {
8889       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8890                                             TYPE_FIELD_TYPE (desc_type, i)))
8891         return 0;
8892       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8893     }
8894
8895   return 1;
8896 }
8897
8898 /* Assuming that TYPE0 is an array type describing the type of a value
8899    at ADDR, and that DVAL describes a record containing any
8900    discriminants used in TYPE0, returns a type for the value that
8901    contains no dynamic components (that is, no components whose sizes
8902    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8903    true, gives an error message if the resulting type's size is over
8904    varsize_limit.  */
8905
8906 static struct type *
8907 to_fixed_array_type (struct type *type0, struct value *dval,
8908                      int ignore_too_big)
8909 {
8910   struct type *index_type_desc;
8911   struct type *result;
8912   int constrained_packed_array_p;
8913   static const char *xa_suffix = "___XA";
8914
8915   type0 = ada_check_typedef (type0);
8916   if (TYPE_FIXED_INSTANCE (type0))
8917     return type0;
8918
8919   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8920   if (constrained_packed_array_p)
8921     type0 = decode_constrained_packed_array_type (type0);
8922
8923   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8924
8925   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8926      encoding suffixed with 'P' may still be generated.  If so,
8927      it should be used to find the XA type.  */
8928
8929   if (index_type_desc == NULL)
8930     {
8931       const char *type_name = ada_type_name (type0);
8932
8933       if (type_name != NULL)
8934         {
8935           const int len = strlen (type_name);
8936           char *name = (char *) alloca (len + strlen (xa_suffix));
8937
8938           if (type_name[len - 1] == 'P')
8939             {
8940               strcpy (name, type_name);
8941               strcpy (name + len - 1, xa_suffix);
8942               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8943             }
8944         }
8945     }
8946
8947   ada_fixup_array_indexes_type (index_type_desc);
8948   if (index_type_desc != NULL
8949       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8950     {
8951       /* Ignore this ___XA parallel type, as it does not bring any
8952          useful information.  This allows us to avoid creating fixed
8953          versions of the array's index types, which would be identical
8954          to the original ones.  This, in turn, can also help avoid
8955          the creation of fixed versions of the array itself.  */
8956       index_type_desc = NULL;
8957     }
8958
8959   if (index_type_desc == NULL)
8960     {
8961       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8962
8963       /* NOTE: elt_type---the fixed version of elt_type0---should never
8964          depend on the contents of the array in properly constructed
8965          debugging data.  */
8966       /* Create a fixed version of the array element type.
8967          We're not providing the address of an element here,
8968          and thus the actual object value cannot be inspected to do
8969          the conversion.  This should not be a problem, since arrays of
8970          unconstrained objects are not allowed.  In particular, all
8971          the elements of an array of a tagged type should all be of
8972          the same type specified in the debugging info.  No need to
8973          consult the object tag.  */
8974       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8975
8976       /* Make sure we always create a new array type when dealing with
8977          packed array types, since we're going to fix-up the array
8978          type length and element bitsize a little further down.  */
8979       if (elt_type0 == elt_type && !constrained_packed_array_p)
8980         result = type0;
8981       else
8982         result = create_array_type (alloc_type_copy (type0),
8983                                     elt_type, TYPE_INDEX_TYPE (type0));
8984     }
8985   else
8986     {
8987       int i;
8988       struct type *elt_type0;
8989
8990       elt_type0 = type0;
8991       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8992         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8993
8994       /* NOTE: result---the fixed version of elt_type0---should never
8995          depend on the contents of the array in properly constructed
8996          debugging data.  */
8997       /* Create a fixed version of the array element type.
8998          We're not providing the address of an element here,
8999          and thus the actual object value cannot be inspected to do
9000          the conversion.  This should not be a problem, since arrays of
9001          unconstrained objects are not allowed.  In particular, all
9002          the elements of an array of a tagged type should all be of
9003          the same type specified in the debugging info.  No need to
9004          consult the object tag.  */
9005       result =
9006         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
9007
9008       elt_type0 = type0;
9009       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
9010         {
9011           struct type *range_type =
9012             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
9013
9014           result = create_array_type (alloc_type_copy (elt_type0),
9015                                       result, range_type);
9016           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
9017         }
9018       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
9019         error (_("array type with dynamic size is larger than varsize-limit"));
9020     }
9021
9022   /* We want to preserve the type name.  This can be useful when
9023      trying to get the type name of a value that has already been
9024      printed (for instance, if the user did "print VAR; whatis $".  */
9025   TYPE_NAME (result) = TYPE_NAME (type0);
9026
9027   if (constrained_packed_array_p)
9028     {
9029       /* So far, the resulting type has been created as if the original
9030          type was a regular (non-packed) array type.  As a result, the
9031          bitsize of the array elements needs to be set again, and the array
9032          length needs to be recomputed based on that bitsize.  */
9033       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9034       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9035
9036       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9037       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9038       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9039         TYPE_LENGTH (result)++;
9040     }
9041
9042   TYPE_FIXED_INSTANCE (result) = 1;
9043   return result;
9044 }
9045
9046
9047 /* A standard type (containing no dynamically sized components)
9048    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9049    DVAL describes a record containing any discriminants used in TYPE0,
9050    and may be NULL if there are none, or if the object of type TYPE at
9051    ADDRESS or in VALADDR contains these discriminants.
9052    
9053    If CHECK_TAG is not null, in the case of tagged types, this function
9054    attempts to locate the object's tag and use it to compute the actual
9055    type.  However, when ADDRESS is null, we cannot use it to determine the
9056    location of the tag, and therefore compute the tagged type's actual type.
9057    So we return the tagged type without consulting the tag.  */
9058    
9059 static struct type *
9060 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9061                    CORE_ADDR address, struct value *dval, int check_tag)
9062 {
9063   type = ada_check_typedef (type);
9064   switch (TYPE_CODE (type))
9065     {
9066     default:
9067       return type;
9068     case TYPE_CODE_STRUCT:
9069       {
9070         struct type *static_type = to_static_fixed_type (type);
9071         struct type *fixed_record_type =
9072           to_fixed_record_type (type, valaddr, address, NULL);
9073
9074         /* If STATIC_TYPE is a tagged type and we know the object's address,
9075            then we can determine its tag, and compute the object's actual
9076            type from there.  Note that we have to use the fixed record
9077            type (the parent part of the record may have dynamic fields
9078            and the way the location of _tag is expressed may depend on
9079            them).  */
9080
9081         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9082           {
9083             struct value *tag =
9084               value_tag_from_contents_and_address
9085               (fixed_record_type,
9086                valaddr,
9087                address);
9088             struct type *real_type = type_from_tag (tag);
9089             struct value *obj =
9090               value_from_contents_and_address (fixed_record_type,
9091                                                valaddr,
9092                                                address);
9093             fixed_record_type = value_type (obj);
9094             if (real_type != NULL)
9095               return to_fixed_record_type
9096                 (real_type, NULL,
9097                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9098           }
9099
9100         /* Check to see if there is a parallel ___XVZ variable.
9101            If there is, then it provides the actual size of our type.  */
9102         else if (ada_type_name (fixed_record_type) != NULL)
9103           {
9104             const char *name = ada_type_name (fixed_record_type);
9105             char *xvz_name
9106               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9107             bool xvz_found = false;
9108             LONGEST size;
9109
9110             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9111             TRY
9112               {
9113                 xvz_found = get_int_var_value (xvz_name, size);
9114               }
9115             CATCH (except, RETURN_MASK_ERROR)
9116               {
9117                 /* We found the variable, but somehow failed to read
9118                    its value.  Rethrow the same error, but with a little
9119                    bit more information, to help the user understand
9120                    what went wrong (Eg: the variable might have been
9121                    optimized out).  */
9122                 throw_error (except.error,
9123                              _("unable to read value of %s (%s)"),
9124                              xvz_name, except.message);
9125               }
9126             END_CATCH
9127
9128             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9129               {
9130                 fixed_record_type = copy_type (fixed_record_type);
9131                 TYPE_LENGTH (fixed_record_type) = size;
9132
9133                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9134                    observed this when the debugging info is STABS, and
9135                    apparently it is something that is hard to fix.
9136
9137                    In practice, we don't need the actual type definition
9138                    at all, because the presence of the XVZ variable allows us
9139                    to assume that there must be a XVS type as well, which we
9140                    should be able to use later, when we need the actual type
9141                    definition.
9142
9143                    In the meantime, pretend that the "fixed" type we are
9144                    returning is NOT a stub, because this can cause trouble
9145                    when using this type to create new types targeting it.
9146                    Indeed, the associated creation routines often check
9147                    whether the target type is a stub and will try to replace
9148                    it, thus using a type with the wrong size.  This, in turn,
9149                    might cause the new type to have the wrong size too.
9150                    Consider the case of an array, for instance, where the size
9151                    of the array is computed from the number of elements in
9152                    our array multiplied by the size of its element.  */
9153                 TYPE_STUB (fixed_record_type) = 0;
9154               }
9155           }
9156         return fixed_record_type;
9157       }
9158     case TYPE_CODE_ARRAY:
9159       return to_fixed_array_type (type, dval, 1);
9160     case TYPE_CODE_UNION:
9161       if (dval == NULL)
9162         return type;
9163       else
9164         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9165     }
9166 }
9167
9168 /* The same as ada_to_fixed_type_1, except that it preserves the type
9169    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9170
9171    The typedef layer needs be preserved in order to differentiate between
9172    arrays and array pointers when both types are implemented using the same
9173    fat pointer.  In the array pointer case, the pointer is encoded as
9174    a typedef of the pointer type.  For instance, considering:
9175
9176           type String_Access is access String;
9177           S1 : String_Access := null;
9178
9179    To the debugger, S1 is defined as a typedef of type String.  But
9180    to the user, it is a pointer.  So if the user tries to print S1,
9181    we should not dereference the array, but print the array address
9182    instead.
9183
9184    If we didn't preserve the typedef layer, we would lose the fact that
9185    the type is to be presented as a pointer (needs de-reference before
9186    being printed).  And we would also use the source-level type name.  */
9187
9188 struct type *
9189 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9190                    CORE_ADDR address, struct value *dval, int check_tag)
9191
9192 {
9193   struct type *fixed_type =
9194     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9195
9196   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9197       then preserve the typedef layer.
9198
9199       Implementation note: We can only check the main-type portion of
9200       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9201       from TYPE now returns a type that has the same instance flags
9202       as TYPE.  For instance, if TYPE is a "typedef const", and its
9203       target type is a "struct", then the typedef elimination will return
9204       a "const" version of the target type.  See check_typedef for more
9205       details about how the typedef layer elimination is done.
9206
9207       brobecker/2010-11-19: It seems to me that the only case where it is
9208       useful to preserve the typedef layer is when dealing with fat pointers.
9209       Perhaps, we could add a check for that and preserve the typedef layer
9210       only in that situation.  But this seems unecessary so far, probably
9211       because we call check_typedef/ada_check_typedef pretty much everywhere.
9212       */
9213   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9214       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9215           == TYPE_MAIN_TYPE (fixed_type)))
9216     return type;
9217
9218   return fixed_type;
9219 }
9220
9221 /* A standard (static-sized) type corresponding as well as possible to
9222    TYPE0, but based on no runtime data.  */
9223
9224 static struct type *
9225 to_static_fixed_type (struct type *type0)
9226 {
9227   struct type *type;
9228
9229   if (type0 == NULL)
9230     return NULL;
9231
9232   if (TYPE_FIXED_INSTANCE (type0))
9233     return type0;
9234
9235   type0 = ada_check_typedef (type0);
9236
9237   switch (TYPE_CODE (type0))
9238     {
9239     default:
9240       return type0;
9241     case TYPE_CODE_STRUCT:
9242       type = dynamic_template_type (type0);
9243       if (type != NULL)
9244         return template_to_static_fixed_type (type);
9245       else
9246         return template_to_static_fixed_type (type0);
9247     case TYPE_CODE_UNION:
9248       type = ada_find_parallel_type (type0, "___XVU");
9249       if (type != NULL)
9250         return template_to_static_fixed_type (type);
9251       else
9252         return template_to_static_fixed_type (type0);
9253     }
9254 }
9255
9256 /* A static approximation of TYPE with all type wrappers removed.  */
9257
9258 static struct type *
9259 static_unwrap_type (struct type *type)
9260 {
9261   if (ada_is_aligner_type (type))
9262     {
9263       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9264       if (ada_type_name (type1) == NULL)
9265         TYPE_NAME (type1) = ada_type_name (type);
9266
9267       return static_unwrap_type (type1);
9268     }
9269   else
9270     {
9271       struct type *raw_real_type = ada_get_base_type (type);
9272
9273       if (raw_real_type == type)
9274         return type;
9275       else
9276         return to_static_fixed_type (raw_real_type);
9277     }
9278 }
9279
9280 /* In some cases, incomplete and private types require
9281    cross-references that are not resolved as records (for example,
9282       type Foo;
9283       type FooP is access Foo;
9284       V: FooP;
9285       type Foo is array ...;
9286    ).  In these cases, since there is no mechanism for producing
9287    cross-references to such types, we instead substitute for FooP a
9288    stub enumeration type that is nowhere resolved, and whose tag is
9289    the name of the actual type.  Call these types "non-record stubs".  */
9290
9291 /* A type equivalent to TYPE that is not a non-record stub, if one
9292    exists, otherwise TYPE.  */
9293
9294 struct type *
9295 ada_check_typedef (struct type *type)
9296 {
9297   if (type == NULL)
9298     return NULL;
9299
9300   /* If our type is a typedef type of a fat pointer, then we're done.
9301      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9302      what allows us to distinguish between fat pointers that represent
9303      array types, and fat pointers that represent array access types
9304      (in both cases, the compiler implements them as fat pointers).  */
9305   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9306       && is_thick_pntr (ada_typedef_target_type (type)))
9307     return type;
9308
9309   type = check_typedef (type);
9310   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9311       || !TYPE_STUB (type)
9312       || TYPE_TAG_NAME (type) == NULL)
9313     return type;
9314   else
9315     {
9316       const char *name = TYPE_TAG_NAME (type);
9317       struct type *type1 = ada_find_any_type (name);
9318
9319       if (type1 == NULL)
9320         return type;
9321
9322       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9323          stubs pointing to arrays, as we don't create symbols for array
9324          types, only for the typedef-to-array types).  If that's the case,
9325          strip the typedef layer.  */
9326       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9327         type1 = ada_check_typedef (type1);
9328
9329       return type1;
9330     }
9331 }
9332
9333 /* A value representing the data at VALADDR/ADDRESS as described by
9334    type TYPE0, but with a standard (static-sized) type that correctly
9335    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9336    type, then return VAL0 [this feature is simply to avoid redundant
9337    creation of struct values].  */
9338
9339 static struct value *
9340 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9341                            struct value *val0)
9342 {
9343   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9344
9345   if (type == type0 && val0 != NULL)
9346     return val0;
9347   else
9348     return value_from_contents_and_address (type, 0, address);
9349 }
9350
9351 /* A value representing VAL, but with a standard (static-sized) type
9352    that correctly describes it.  Does not necessarily create a new
9353    value.  */
9354
9355 struct value *
9356 ada_to_fixed_value (struct value *val)
9357 {
9358   val = unwrap_value (val);
9359   val = ada_to_fixed_value_create (value_type (val),
9360                                       value_address (val),
9361                                       val);
9362   return val;
9363 }
9364 \f
9365
9366 /* Attributes */
9367
9368 /* Table mapping attribute numbers to names.
9369    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9370
9371 static const char *attribute_names[] = {
9372   "<?>",
9373
9374   "first",
9375   "last",
9376   "length",
9377   "image",
9378   "max",
9379   "min",
9380   "modulus",
9381   "pos",
9382   "size",
9383   "tag",
9384   "val",
9385   0
9386 };
9387
9388 const char *
9389 ada_attribute_name (enum exp_opcode n)
9390 {
9391   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9392     return attribute_names[n - OP_ATR_FIRST + 1];
9393   else
9394     return attribute_names[0];
9395 }
9396
9397 /* Evaluate the 'POS attribute applied to ARG.  */
9398
9399 static LONGEST
9400 pos_atr (struct value *arg)
9401 {
9402   struct value *val = coerce_ref (arg);
9403   struct type *type = value_type (val);
9404   LONGEST result;
9405
9406   if (!discrete_type_p (type))
9407     error (_("'POS only defined on discrete types"));
9408
9409   if (!discrete_position (type, value_as_long (val), &result))
9410     error (_("enumeration value is invalid: can't find 'POS"));
9411
9412   return result;
9413 }
9414
9415 static struct value *
9416 value_pos_atr (struct type *type, struct value *arg)
9417 {
9418   return value_from_longest (type, pos_atr (arg));
9419 }
9420
9421 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9422
9423 static struct value *
9424 value_val_atr (struct type *type, struct value *arg)
9425 {
9426   if (!discrete_type_p (type))
9427     error (_("'VAL only defined on discrete types"));
9428   if (!integer_type_p (value_type (arg)))
9429     error (_("'VAL requires integral argument"));
9430
9431   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9432     {
9433       long pos = value_as_long (arg);
9434
9435       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9436         error (_("argument to 'VAL out of range"));
9437       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9438     }
9439   else
9440     return value_from_longest (type, value_as_long (arg));
9441 }
9442 \f
9443
9444                                 /* Evaluation */
9445
9446 /* True if TYPE appears to be an Ada character type.
9447    [At the moment, this is true only for Character and Wide_Character;
9448    It is a heuristic test that could stand improvement].  */
9449
9450 int
9451 ada_is_character_type (struct type *type)
9452 {
9453   const char *name;
9454
9455   /* If the type code says it's a character, then assume it really is,
9456      and don't check any further.  */
9457   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9458     return 1;
9459   
9460   /* Otherwise, assume it's a character type iff it is a discrete type
9461      with a known character type name.  */
9462   name = ada_type_name (type);
9463   return (name != NULL
9464           && (TYPE_CODE (type) == TYPE_CODE_INT
9465               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9466           && (strcmp (name, "character") == 0
9467               || strcmp (name, "wide_character") == 0
9468               || strcmp (name, "wide_wide_character") == 0
9469               || strcmp (name, "unsigned char") == 0));
9470 }
9471
9472 /* True if TYPE appears to be an Ada string type.  */
9473
9474 int
9475 ada_is_string_type (struct type *type)
9476 {
9477   type = ada_check_typedef (type);
9478   if (type != NULL
9479       && TYPE_CODE (type) != TYPE_CODE_PTR
9480       && (ada_is_simple_array_type (type)
9481           || ada_is_array_descriptor_type (type))
9482       && ada_array_arity (type) == 1)
9483     {
9484       struct type *elttype = ada_array_element_type (type, 1);
9485
9486       return ada_is_character_type (elttype);
9487     }
9488   else
9489     return 0;
9490 }
9491
9492 /* The compiler sometimes provides a parallel XVS type for a given
9493    PAD type.  Normally, it is safe to follow the PAD type directly,
9494    but older versions of the compiler have a bug that causes the offset
9495    of its "F" field to be wrong.  Following that field in that case
9496    would lead to incorrect results, but this can be worked around
9497    by ignoring the PAD type and using the associated XVS type instead.
9498
9499    Set to True if the debugger should trust the contents of PAD types.
9500    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9501 static int trust_pad_over_xvs = 1;
9502
9503 /* True if TYPE is a struct type introduced by the compiler to force the
9504    alignment of a value.  Such types have a single field with a
9505    distinctive name.  */
9506
9507 int
9508 ada_is_aligner_type (struct type *type)
9509 {
9510   type = ada_check_typedef (type);
9511
9512   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9513     return 0;
9514
9515   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9516           && TYPE_NFIELDS (type) == 1
9517           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9518 }
9519
9520 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9521    the parallel type.  */
9522
9523 struct type *
9524 ada_get_base_type (struct type *raw_type)
9525 {
9526   struct type *real_type_namer;
9527   struct type *raw_real_type;
9528
9529   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9530     return raw_type;
9531
9532   if (ada_is_aligner_type (raw_type))
9533     /* The encoding specifies that we should always use the aligner type.
9534        So, even if this aligner type has an associated XVS type, we should
9535        simply ignore it.
9536
9537        According to the compiler gurus, an XVS type parallel to an aligner
9538        type may exist because of a stabs limitation.  In stabs, aligner
9539        types are empty because the field has a variable-sized type, and
9540        thus cannot actually be used as an aligner type.  As a result,
9541        we need the associated parallel XVS type to decode the type.
9542        Since the policy in the compiler is to not change the internal
9543        representation based on the debugging info format, we sometimes
9544        end up having a redundant XVS type parallel to the aligner type.  */
9545     return raw_type;
9546
9547   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9548   if (real_type_namer == NULL
9549       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9550       || TYPE_NFIELDS (real_type_namer) != 1)
9551     return raw_type;
9552
9553   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9554     {
9555       /* This is an older encoding form where the base type needs to be
9556          looked up by name.  We prefer the newer enconding because it is
9557          more efficient.  */
9558       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9559       if (raw_real_type == NULL)
9560         return raw_type;
9561       else
9562         return raw_real_type;
9563     }
9564
9565   /* The field in our XVS type is a reference to the base type.  */
9566   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9567 }
9568
9569 /* The type of value designated by TYPE, with all aligners removed.  */
9570
9571 struct type *
9572 ada_aligned_type (struct type *type)
9573 {
9574   if (ada_is_aligner_type (type))
9575     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9576   else
9577     return ada_get_base_type (type);
9578 }
9579
9580
9581 /* The address of the aligned value in an object at address VALADDR
9582    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9583
9584 const gdb_byte *
9585 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9586 {
9587   if (ada_is_aligner_type (type))
9588     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9589                                    valaddr +
9590                                    TYPE_FIELD_BITPOS (type,
9591                                                       0) / TARGET_CHAR_BIT);
9592   else
9593     return valaddr;
9594 }
9595
9596
9597
9598 /* The printed representation of an enumeration literal with encoded
9599    name NAME.  The value is good to the next call of ada_enum_name.  */
9600 const char *
9601 ada_enum_name (const char *name)
9602 {
9603   static char *result;
9604   static size_t result_len = 0;
9605   const char *tmp;
9606
9607   /* First, unqualify the enumeration name:
9608      1. Search for the last '.' character.  If we find one, then skip
9609      all the preceding characters, the unqualified name starts
9610      right after that dot.
9611      2. Otherwise, we may be debugging on a target where the compiler
9612      translates dots into "__".  Search forward for double underscores,
9613      but stop searching when we hit an overloading suffix, which is
9614      of the form "__" followed by digits.  */
9615
9616   tmp = strrchr (name, '.');
9617   if (tmp != NULL)
9618     name = tmp + 1;
9619   else
9620     {
9621       while ((tmp = strstr (name, "__")) != NULL)
9622         {
9623           if (isdigit (tmp[2]))
9624             break;
9625           else
9626             name = tmp + 2;
9627         }
9628     }
9629
9630   if (name[0] == 'Q')
9631     {
9632       int v;
9633
9634       if (name[1] == 'U' || name[1] == 'W')
9635         {
9636           if (sscanf (name + 2, "%x", &v) != 1)
9637             return name;
9638         }
9639       else
9640         return name;
9641
9642       GROW_VECT (result, result_len, 16);
9643       if (isascii (v) && isprint (v))
9644         xsnprintf (result, result_len, "'%c'", v);
9645       else if (name[1] == 'U')
9646         xsnprintf (result, result_len, "[\"%02x\"]", v);
9647       else
9648         xsnprintf (result, result_len, "[\"%04x\"]", v);
9649
9650       return result;
9651     }
9652   else
9653     {
9654       tmp = strstr (name, "__");
9655       if (tmp == NULL)
9656         tmp = strstr (name, "$");
9657       if (tmp != NULL)
9658         {
9659           GROW_VECT (result, result_len, tmp - name + 1);
9660           strncpy (result, name, tmp - name);
9661           result[tmp - name] = '\0';
9662           return result;
9663         }
9664
9665       return name;
9666     }
9667 }
9668
9669 /* Evaluate the subexpression of EXP starting at *POS as for
9670    evaluate_type, updating *POS to point just past the evaluated
9671    expression.  */
9672
9673 static struct value *
9674 evaluate_subexp_type (struct expression *exp, int *pos)
9675 {
9676   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9677 }
9678
9679 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9680    value it wraps.  */
9681
9682 static struct value *
9683 unwrap_value (struct value *val)
9684 {
9685   struct type *type = ada_check_typedef (value_type (val));
9686
9687   if (ada_is_aligner_type (type))
9688     {
9689       struct value *v = ada_value_struct_elt (val, "F", 0);
9690       struct type *val_type = ada_check_typedef (value_type (v));
9691
9692       if (ada_type_name (val_type) == NULL)
9693         TYPE_NAME (val_type) = ada_type_name (type);
9694
9695       return unwrap_value (v);
9696     }
9697   else
9698     {
9699       struct type *raw_real_type =
9700         ada_check_typedef (ada_get_base_type (type));
9701
9702       /* If there is no parallel XVS or XVE type, then the value is
9703          already unwrapped.  Return it without further modification.  */
9704       if ((type == raw_real_type)
9705           && ada_find_parallel_type (type, "___XVE") == NULL)
9706         return val;
9707
9708       return
9709         coerce_unspec_val_to_type
9710         (val, ada_to_fixed_type (raw_real_type, 0,
9711                                  value_address (val),
9712                                  NULL, 1));
9713     }
9714 }
9715
9716 static struct value *
9717 cast_from_fixed (struct type *type, struct value *arg)
9718 {
9719   struct value *scale = ada_scaling_factor (value_type (arg));
9720   arg = value_cast (value_type (scale), arg);
9721
9722   arg = value_binop (arg, scale, BINOP_MUL);
9723   return value_cast (type, arg);
9724 }
9725
9726 static struct value *
9727 cast_to_fixed (struct type *type, struct value *arg)
9728 {
9729   if (type == value_type (arg))
9730     return arg;
9731
9732   struct value *scale = ada_scaling_factor (type);
9733   if (ada_is_fixed_point_type (value_type (arg)))
9734     arg = cast_from_fixed (value_type (scale), arg);
9735   else
9736     arg = value_cast (value_type (scale), arg);
9737
9738   arg = value_binop (arg, scale, BINOP_DIV);
9739   return value_cast (type, arg);
9740 }
9741
9742 /* Given two array types T1 and T2, return nonzero iff both arrays
9743    contain the same number of elements.  */
9744
9745 static int
9746 ada_same_array_size_p (struct type *t1, struct type *t2)
9747 {
9748   LONGEST lo1, hi1, lo2, hi2;
9749
9750   /* Get the array bounds in order to verify that the size of
9751      the two arrays match.  */
9752   if (!get_array_bounds (t1, &lo1, &hi1)
9753       || !get_array_bounds (t2, &lo2, &hi2))
9754     error (_("unable to determine array bounds"));
9755
9756   /* To make things easier for size comparison, normalize a bit
9757      the case of empty arrays by making sure that the difference
9758      between upper bound and lower bound is always -1.  */
9759   if (lo1 > hi1)
9760     hi1 = lo1 - 1;
9761   if (lo2 > hi2)
9762     hi2 = lo2 - 1;
9763
9764   return (hi1 - lo1 == hi2 - lo2);
9765 }
9766
9767 /* Assuming that VAL is an array of integrals, and TYPE represents
9768    an array with the same number of elements, but with wider integral
9769    elements, return an array "casted" to TYPE.  In practice, this
9770    means that the returned array is built by casting each element
9771    of the original array into TYPE's (wider) element type.  */
9772
9773 static struct value *
9774 ada_promote_array_of_integrals (struct type *type, struct value *val)
9775 {
9776   struct type *elt_type = TYPE_TARGET_TYPE (type);
9777   LONGEST lo, hi;
9778   struct value *res;
9779   LONGEST i;
9780
9781   /* Verify that both val and type are arrays of scalars, and
9782      that the size of val's elements is smaller than the size
9783      of type's element.  */
9784   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9785   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9786   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9787   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9788   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9789               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9790
9791   if (!get_array_bounds (type, &lo, &hi))
9792     error (_("unable to determine array bounds"));
9793
9794   res = allocate_value (type);
9795
9796   /* Promote each array element.  */
9797   for (i = 0; i < hi - lo + 1; i++)
9798     {
9799       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9800
9801       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9802               value_contents_all (elt), TYPE_LENGTH (elt_type));
9803     }
9804
9805   return res;
9806 }
9807
9808 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9809    return the converted value.  */
9810
9811 static struct value *
9812 coerce_for_assign (struct type *type, struct value *val)
9813 {
9814   struct type *type2 = value_type (val);
9815
9816   if (type == type2)
9817     return val;
9818
9819   type2 = ada_check_typedef (type2);
9820   type = ada_check_typedef (type);
9821
9822   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9823       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9824     {
9825       val = ada_value_ind (val);
9826       type2 = value_type (val);
9827     }
9828
9829   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9830       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9831     {
9832       if (!ada_same_array_size_p (type, type2))
9833         error (_("cannot assign arrays of different length"));
9834
9835       if (is_integral_type (TYPE_TARGET_TYPE (type))
9836           && is_integral_type (TYPE_TARGET_TYPE (type2))
9837           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9838                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9839         {
9840           /* Allow implicit promotion of the array elements to
9841              a wider type.  */
9842           return ada_promote_array_of_integrals (type, val);
9843         }
9844
9845       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9846           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9847         error (_("Incompatible types in assignment"));
9848       deprecated_set_value_type (val, type);
9849     }
9850   return val;
9851 }
9852
9853 static struct value *
9854 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9855 {
9856   struct value *val;
9857   struct type *type1, *type2;
9858   LONGEST v, v1, v2;
9859
9860   arg1 = coerce_ref (arg1);
9861   arg2 = coerce_ref (arg2);
9862   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9863   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9864
9865   if (TYPE_CODE (type1) != TYPE_CODE_INT
9866       || TYPE_CODE (type2) != TYPE_CODE_INT)
9867     return value_binop (arg1, arg2, op);
9868
9869   switch (op)
9870     {
9871     case BINOP_MOD:
9872     case BINOP_DIV:
9873     case BINOP_REM:
9874       break;
9875     default:
9876       return value_binop (arg1, arg2, op);
9877     }
9878
9879   v2 = value_as_long (arg2);
9880   if (v2 == 0)
9881     error (_("second operand of %s must not be zero."), op_string (op));
9882
9883   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9884     return value_binop (arg1, arg2, op);
9885
9886   v1 = value_as_long (arg1);
9887   switch (op)
9888     {
9889     case BINOP_DIV:
9890       v = v1 / v2;
9891       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9892         v += v > 0 ? -1 : 1;
9893       break;
9894     case BINOP_REM:
9895       v = v1 % v2;
9896       if (v * v1 < 0)
9897         v -= v2;
9898       break;
9899     default:
9900       /* Should not reach this point.  */
9901       v = 0;
9902     }
9903
9904   val = allocate_value (type1);
9905   store_unsigned_integer (value_contents_raw (val),
9906                           TYPE_LENGTH (value_type (val)),
9907                           gdbarch_byte_order (get_type_arch (type1)), v);
9908   return val;
9909 }
9910
9911 static int
9912 ada_value_equal (struct value *arg1, struct value *arg2)
9913 {
9914   if (ada_is_direct_array_type (value_type (arg1))
9915       || ada_is_direct_array_type (value_type (arg2)))
9916     {
9917       struct type *arg1_type, *arg2_type;
9918
9919       /* Automatically dereference any array reference before
9920          we attempt to perform the comparison.  */
9921       arg1 = ada_coerce_ref (arg1);
9922       arg2 = ada_coerce_ref (arg2);
9923
9924       arg1 = ada_coerce_to_simple_array (arg1);
9925       arg2 = ada_coerce_to_simple_array (arg2);
9926
9927       arg1_type = ada_check_typedef (value_type (arg1));
9928       arg2_type = ada_check_typedef (value_type (arg2));
9929
9930       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9931           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9932         error (_("Attempt to compare array with non-array"));
9933       /* FIXME: The following works only for types whose
9934          representations use all bits (no padding or undefined bits)
9935          and do not have user-defined equality.  */
9936       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9937               && memcmp (value_contents (arg1), value_contents (arg2),
9938                          TYPE_LENGTH (arg1_type)) == 0);
9939     }
9940   return value_equal (arg1, arg2);
9941 }
9942
9943 /* Total number of component associations in the aggregate starting at
9944    index PC in EXP.  Assumes that index PC is the start of an
9945    OP_AGGREGATE.  */
9946
9947 static int
9948 num_component_specs (struct expression *exp, int pc)
9949 {
9950   int n, m, i;
9951
9952   m = exp->elts[pc + 1].longconst;
9953   pc += 3;
9954   n = 0;
9955   for (i = 0; i < m; i += 1)
9956     {
9957       switch (exp->elts[pc].opcode) 
9958         {
9959         default:
9960           n += 1;
9961           break;
9962         case OP_CHOICES:
9963           n += exp->elts[pc + 1].longconst;
9964           break;
9965         }
9966       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9967     }
9968   return n;
9969 }
9970
9971 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9972    component of LHS (a simple array or a record), updating *POS past
9973    the expression, assuming that LHS is contained in CONTAINER.  Does
9974    not modify the inferior's memory, nor does it modify LHS (unless
9975    LHS == CONTAINER).  */
9976
9977 static void
9978 assign_component (struct value *container, struct value *lhs, LONGEST index,
9979                   struct expression *exp, int *pos)
9980 {
9981   struct value *mark = value_mark ();
9982   struct value *elt;
9983   struct type *lhs_type = check_typedef (value_type (lhs));
9984
9985   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9986     {
9987       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9988       struct value *index_val = value_from_longest (index_type, index);
9989
9990       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9991     }
9992   else
9993     {
9994       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9995       elt = ada_to_fixed_value (elt);
9996     }
9997
9998   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9999     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
10000   else
10001     value_assign_to_component (container, elt, 
10002                                ada_evaluate_subexp (NULL, exp, pos, 
10003                                                     EVAL_NORMAL));
10004
10005   value_free_to_mark (mark);
10006 }
10007
10008 /* Assuming that LHS represents an lvalue having a record or array
10009    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
10010    of that aggregate's value to LHS, advancing *POS past the
10011    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10012    lvalue containing LHS (possibly LHS itself).  Does not modify
10013    the inferior's memory, nor does it modify the contents of 
10014    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10015
10016 static struct value *
10017 assign_aggregate (struct value *container, 
10018                   struct value *lhs, struct expression *exp, 
10019                   int *pos, enum noside noside)
10020 {
10021   struct type *lhs_type;
10022   int n = exp->elts[*pos+1].longconst;
10023   LONGEST low_index, high_index;
10024   int num_specs;
10025   LONGEST *indices;
10026   int max_indices, num_indices;
10027   int i;
10028
10029   *pos += 3;
10030   if (noside != EVAL_NORMAL)
10031     {
10032       for (i = 0; i < n; i += 1)
10033         ada_evaluate_subexp (NULL, exp, pos, noside);
10034       return container;
10035     }
10036
10037   container = ada_coerce_ref (container);
10038   if (ada_is_direct_array_type (value_type (container)))
10039     container = ada_coerce_to_simple_array (container);
10040   lhs = ada_coerce_ref (lhs);
10041   if (!deprecated_value_modifiable (lhs))
10042     error (_("Left operand of assignment is not a modifiable lvalue."));
10043
10044   lhs_type = check_typedef (value_type (lhs));
10045   if (ada_is_direct_array_type (lhs_type))
10046     {
10047       lhs = ada_coerce_to_simple_array (lhs);
10048       lhs_type = check_typedef (value_type (lhs));
10049       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10050       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10051     }
10052   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10053     {
10054       low_index = 0;
10055       high_index = num_visible_fields (lhs_type) - 1;
10056     }
10057   else
10058     error (_("Left-hand side must be array or record."));
10059
10060   num_specs = num_component_specs (exp, *pos - 3);
10061   max_indices = 4 * num_specs + 4;
10062   indices = XALLOCAVEC (LONGEST, max_indices);
10063   indices[0] = indices[1] = low_index - 1;
10064   indices[2] = indices[3] = high_index + 1;
10065   num_indices = 4;
10066
10067   for (i = 0; i < n; i += 1)
10068     {
10069       switch (exp->elts[*pos].opcode)
10070         {
10071           case OP_CHOICES:
10072             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10073                                            &num_indices, max_indices,
10074                                            low_index, high_index);
10075             break;
10076           case OP_POSITIONAL:
10077             aggregate_assign_positional (container, lhs, exp, pos, indices,
10078                                          &num_indices, max_indices,
10079                                          low_index, high_index);
10080             break;
10081           case OP_OTHERS:
10082             if (i != n-1)
10083               error (_("Misplaced 'others' clause"));
10084             aggregate_assign_others (container, lhs, exp, pos, indices, 
10085                                      num_indices, low_index, high_index);
10086             break;
10087           default:
10088             error (_("Internal error: bad aggregate clause"));
10089         }
10090     }
10091
10092   return container;
10093 }
10094               
10095 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10096    construct at *POS, updating *POS past the construct, given that
10097    the positions are relative to lower bound LOW, where HIGH is the 
10098    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10099    updating *NUM_INDICES as needed.  CONTAINER is as for
10100    assign_aggregate.  */
10101 static void
10102 aggregate_assign_positional (struct value *container,
10103                              struct value *lhs, struct expression *exp,
10104                              int *pos, LONGEST *indices, int *num_indices,
10105                              int max_indices, LONGEST low, LONGEST high) 
10106 {
10107   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10108   
10109   if (ind - 1 == high)
10110     warning (_("Extra components in aggregate ignored."));
10111   if (ind <= high)
10112     {
10113       add_component_interval (ind, ind, indices, num_indices, max_indices);
10114       *pos += 3;
10115       assign_component (container, lhs, ind, exp, pos);
10116     }
10117   else
10118     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10119 }
10120
10121 /* Assign into the components of LHS indexed by the OP_CHOICES
10122    construct at *POS, updating *POS past the construct, given that
10123    the allowable indices are LOW..HIGH.  Record the indices assigned
10124    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10125    needed.  CONTAINER is as for assign_aggregate.  */
10126 static void
10127 aggregate_assign_from_choices (struct value *container,
10128                                struct value *lhs, struct expression *exp,
10129                                int *pos, LONGEST *indices, int *num_indices,
10130                                int max_indices, LONGEST low, LONGEST high) 
10131 {
10132   int j;
10133   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10134   int choice_pos, expr_pc;
10135   int is_array = ada_is_direct_array_type (value_type (lhs));
10136
10137   choice_pos = *pos += 3;
10138
10139   for (j = 0; j < n_choices; j += 1)
10140     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10141   expr_pc = *pos;
10142   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10143   
10144   for (j = 0; j < n_choices; j += 1)
10145     {
10146       LONGEST lower, upper;
10147       enum exp_opcode op = exp->elts[choice_pos].opcode;
10148
10149       if (op == OP_DISCRETE_RANGE)
10150         {
10151           choice_pos += 1;
10152           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10153                                                       EVAL_NORMAL));
10154           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10155                                                       EVAL_NORMAL));
10156         }
10157       else if (is_array)
10158         {
10159           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10160                                                       EVAL_NORMAL));
10161           upper = lower;
10162         }
10163       else
10164         {
10165           int ind;
10166           const char *name;
10167
10168           switch (op)
10169             {
10170             case OP_NAME:
10171               name = &exp->elts[choice_pos + 2].string;
10172               break;
10173             case OP_VAR_VALUE:
10174               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10175               break;
10176             default:
10177               error (_("Invalid record component association."));
10178             }
10179           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10180           ind = 0;
10181           if (! find_struct_field (name, value_type (lhs), 0, 
10182                                    NULL, NULL, NULL, NULL, &ind))
10183             error (_("Unknown component name: %s."), name);
10184           lower = upper = ind;
10185         }
10186
10187       if (lower <= upper && (lower < low || upper > high))
10188         error (_("Index in component association out of bounds."));
10189
10190       add_component_interval (lower, upper, indices, num_indices,
10191                               max_indices);
10192       while (lower <= upper)
10193         {
10194           int pos1;
10195
10196           pos1 = expr_pc;
10197           assign_component (container, lhs, lower, exp, &pos1);
10198           lower += 1;
10199         }
10200     }
10201 }
10202
10203 /* Assign the value of the expression in the OP_OTHERS construct in
10204    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10205    have not been previously assigned.  The index intervals already assigned
10206    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10207    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10208 static void
10209 aggregate_assign_others (struct value *container,
10210                          struct value *lhs, struct expression *exp,
10211                          int *pos, LONGEST *indices, int num_indices,
10212                          LONGEST low, LONGEST high) 
10213 {
10214   int i;
10215   int expr_pc = *pos + 1;
10216   
10217   for (i = 0; i < num_indices - 2; i += 2)
10218     {
10219       LONGEST ind;
10220
10221       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10222         {
10223           int localpos;
10224
10225           localpos = expr_pc;
10226           assign_component (container, lhs, ind, exp, &localpos);
10227         }
10228     }
10229   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10230 }
10231
10232 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10233    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10234    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10235    MAX_SIZE.  The resulting intervals do not overlap.  */
10236 static void
10237 add_component_interval (LONGEST low, LONGEST high, 
10238                         LONGEST* indices, int *size, int max_size)
10239 {
10240   int i, j;
10241
10242   for (i = 0; i < *size; i += 2) {
10243     if (high >= indices[i] && low <= indices[i + 1])
10244       {
10245         int kh;
10246
10247         for (kh = i + 2; kh < *size; kh += 2)
10248           if (high < indices[kh])
10249             break;
10250         if (low < indices[i])
10251           indices[i] = low;
10252         indices[i + 1] = indices[kh - 1];
10253         if (high > indices[i + 1])
10254           indices[i + 1] = high;
10255         memcpy (indices + i + 2, indices + kh, *size - kh);
10256         *size -= kh - i - 2;
10257         return;
10258       }
10259     else if (high < indices[i])
10260       break;
10261   }
10262         
10263   if (*size == max_size)
10264     error (_("Internal error: miscounted aggregate components."));
10265   *size += 2;
10266   for (j = *size-1; j >= i+2; j -= 1)
10267     indices[j] = indices[j - 2];
10268   indices[i] = low;
10269   indices[i + 1] = high;
10270 }
10271
10272 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10273    is different.  */
10274
10275 static struct value *
10276 ada_value_cast (struct type *type, struct value *arg2)
10277 {
10278   if (type == ada_check_typedef (value_type (arg2)))
10279     return arg2;
10280
10281   if (ada_is_fixed_point_type (type))
10282     return (cast_to_fixed (type, arg2));
10283
10284   if (ada_is_fixed_point_type (value_type (arg2)))
10285     return cast_from_fixed (type, arg2);
10286
10287   return value_cast (type, arg2);
10288 }
10289
10290 /*  Evaluating Ada expressions, and printing their result.
10291     ------------------------------------------------------
10292
10293     1. Introduction:
10294     ----------------
10295
10296     We usually evaluate an Ada expression in order to print its value.
10297     We also evaluate an expression in order to print its type, which
10298     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10299     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10300     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10301     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10302     similar.
10303
10304     Evaluating expressions is a little more complicated for Ada entities
10305     than it is for entities in languages such as C.  The main reason for
10306     this is that Ada provides types whose definition might be dynamic.
10307     One example of such types is variant records.  Or another example
10308     would be an array whose bounds can only be known at run time.
10309
10310     The following description is a general guide as to what should be
10311     done (and what should NOT be done) in order to evaluate an expression
10312     involving such types, and when.  This does not cover how the semantic
10313     information is encoded by GNAT as this is covered separatly.  For the
10314     document used as the reference for the GNAT encoding, see exp_dbug.ads
10315     in the GNAT sources.
10316
10317     Ideally, we should embed each part of this description next to its
10318     associated code.  Unfortunately, the amount of code is so vast right
10319     now that it's hard to see whether the code handling a particular
10320     situation might be duplicated or not.  One day, when the code is
10321     cleaned up, this guide might become redundant with the comments
10322     inserted in the code, and we might want to remove it.
10323
10324     2. ``Fixing'' an Entity, the Simple Case:
10325     -----------------------------------------
10326
10327     When evaluating Ada expressions, the tricky issue is that they may
10328     reference entities whose type contents and size are not statically
10329     known.  Consider for instance a variant record:
10330
10331        type Rec (Empty : Boolean := True) is record
10332           case Empty is
10333              when True => null;
10334              when False => Value : Integer;
10335           end case;
10336        end record;
10337        Yes : Rec := (Empty => False, Value => 1);
10338        No  : Rec := (empty => True);
10339
10340     The size and contents of that record depends on the value of the
10341     descriminant (Rec.Empty).  At this point, neither the debugging
10342     information nor the associated type structure in GDB are able to
10343     express such dynamic types.  So what the debugger does is to create
10344     "fixed" versions of the type that applies to the specific object.
10345     We also informally refer to this opperation as "fixing" an object,
10346     which means creating its associated fixed type.
10347
10348     Example: when printing the value of variable "Yes" above, its fixed
10349     type would look like this:
10350
10351        type Rec is record
10352           Empty : Boolean;
10353           Value : Integer;
10354        end record;
10355
10356     On the other hand, if we printed the value of "No", its fixed type
10357     would become:
10358
10359        type Rec is record
10360           Empty : Boolean;
10361        end record;
10362
10363     Things become a little more complicated when trying to fix an entity
10364     with a dynamic type that directly contains another dynamic type,
10365     such as an array of variant records, for instance.  There are
10366     two possible cases: Arrays, and records.
10367
10368     3. ``Fixing'' Arrays:
10369     ---------------------
10370
10371     The type structure in GDB describes an array in terms of its bounds,
10372     and the type of its elements.  By design, all elements in the array
10373     have the same type and we cannot represent an array of variant elements
10374     using the current type structure in GDB.  When fixing an array,
10375     we cannot fix the array element, as we would potentially need one
10376     fixed type per element of the array.  As a result, the best we can do
10377     when fixing an array is to produce an array whose bounds and size
10378     are correct (allowing us to read it from memory), but without having
10379     touched its element type.  Fixing each element will be done later,
10380     when (if) necessary.
10381
10382     Arrays are a little simpler to handle than records, because the same
10383     amount of memory is allocated for each element of the array, even if
10384     the amount of space actually used by each element differs from element
10385     to element.  Consider for instance the following array of type Rec:
10386
10387        type Rec_Array is array (1 .. 2) of Rec;
10388
10389     The actual amount of memory occupied by each element might be different
10390     from element to element, depending on the value of their discriminant.
10391     But the amount of space reserved for each element in the array remains
10392     fixed regardless.  So we simply need to compute that size using
10393     the debugging information available, from which we can then determine
10394     the array size (we multiply the number of elements of the array by
10395     the size of each element).
10396
10397     The simplest case is when we have an array of a constrained element
10398     type. For instance, consider the following type declarations:
10399
10400         type Bounded_String (Max_Size : Integer) is
10401            Length : Integer;
10402            Buffer : String (1 .. Max_Size);
10403         end record;
10404         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10405
10406     In this case, the compiler describes the array as an array of
10407     variable-size elements (identified by its XVS suffix) for which
10408     the size can be read in the parallel XVZ variable.
10409
10410     In the case of an array of an unconstrained element type, the compiler
10411     wraps the array element inside a private PAD type.  This type should not
10412     be shown to the user, and must be "unwrap"'ed before printing.  Note
10413     that we also use the adjective "aligner" in our code to designate
10414     these wrapper types.
10415
10416     In some cases, the size allocated for each element is statically
10417     known.  In that case, the PAD type already has the correct size,
10418     and the array element should remain unfixed.
10419
10420     But there are cases when this size is not statically known.
10421     For instance, assuming that "Five" is an integer variable:
10422
10423         type Dynamic is array (1 .. Five) of Integer;
10424         type Wrapper (Has_Length : Boolean := False) is record
10425            Data : Dynamic;
10426            case Has_Length is
10427               when True => Length : Integer;
10428               when False => null;
10429            end case;
10430         end record;
10431         type Wrapper_Array is array (1 .. 2) of Wrapper;
10432
10433         Hello : Wrapper_Array := (others => (Has_Length => True,
10434                                              Data => (others => 17),
10435                                              Length => 1));
10436
10437
10438     The debugging info would describe variable Hello as being an
10439     array of a PAD type.  The size of that PAD type is not statically
10440     known, but can be determined using a parallel XVZ variable.
10441     In that case, a copy of the PAD type with the correct size should
10442     be used for the fixed array.
10443
10444     3. ``Fixing'' record type objects:
10445     ----------------------------------
10446
10447     Things are slightly different from arrays in the case of dynamic
10448     record types.  In this case, in order to compute the associated
10449     fixed type, we need to determine the size and offset of each of
10450     its components.  This, in turn, requires us to compute the fixed
10451     type of each of these components.
10452
10453     Consider for instance the example:
10454
10455         type Bounded_String (Max_Size : Natural) is record
10456            Str : String (1 .. Max_Size);
10457            Length : Natural;
10458         end record;
10459         My_String : Bounded_String (Max_Size => 10);
10460
10461     In that case, the position of field "Length" depends on the size
10462     of field Str, which itself depends on the value of the Max_Size
10463     discriminant.  In order to fix the type of variable My_String,
10464     we need to fix the type of field Str.  Therefore, fixing a variant
10465     record requires us to fix each of its components.
10466
10467     However, if a component does not have a dynamic size, the component
10468     should not be fixed.  In particular, fields that use a PAD type
10469     should not fixed.  Here is an example where this might happen
10470     (assuming type Rec above):
10471
10472        type Container (Big : Boolean) is record
10473           First : Rec;
10474           After : Integer;
10475           case Big is
10476              when True => Another : Integer;
10477              when False => null;
10478           end case;
10479        end record;
10480        My_Container : Container := (Big => False,
10481                                     First => (Empty => True),
10482                                     After => 42);
10483
10484     In that example, the compiler creates a PAD type for component First,
10485     whose size is constant, and then positions the component After just
10486     right after it.  The offset of component After is therefore constant
10487     in this case.
10488
10489     The debugger computes the position of each field based on an algorithm
10490     that uses, among other things, the actual position and size of the field
10491     preceding it.  Let's now imagine that the user is trying to print
10492     the value of My_Container.  If the type fixing was recursive, we would
10493     end up computing the offset of field After based on the size of the
10494     fixed version of field First.  And since in our example First has
10495     only one actual field, the size of the fixed type is actually smaller
10496     than the amount of space allocated to that field, and thus we would
10497     compute the wrong offset of field After.
10498
10499     To make things more complicated, we need to watch out for dynamic
10500     components of variant records (identified by the ___XVL suffix in
10501     the component name).  Even if the target type is a PAD type, the size
10502     of that type might not be statically known.  So the PAD type needs
10503     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10504     we might end up with the wrong size for our component.  This can be
10505     observed with the following type declarations:
10506
10507         type Octal is new Integer range 0 .. 7;
10508         type Octal_Array is array (Positive range <>) of Octal;
10509         pragma Pack (Octal_Array);
10510
10511         type Octal_Buffer (Size : Positive) is record
10512            Buffer : Octal_Array (1 .. Size);
10513            Length : Integer;
10514         end record;
10515
10516     In that case, Buffer is a PAD type whose size is unset and needs
10517     to be computed by fixing the unwrapped type.
10518
10519     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10520     ----------------------------------------------------------
10521
10522     Lastly, when should the sub-elements of an entity that remained unfixed
10523     thus far, be actually fixed?
10524
10525     The answer is: Only when referencing that element.  For instance
10526     when selecting one component of a record, this specific component
10527     should be fixed at that point in time.  Or when printing the value
10528     of a record, each component should be fixed before its value gets
10529     printed.  Similarly for arrays, the element of the array should be
10530     fixed when printing each element of the array, or when extracting
10531     one element out of that array.  On the other hand, fixing should
10532     not be performed on the elements when taking a slice of an array!
10533
10534     Note that one of the side effects of miscomputing the offset and
10535     size of each field is that we end up also miscomputing the size
10536     of the containing type.  This can have adverse results when computing
10537     the value of an entity.  GDB fetches the value of an entity based
10538     on the size of its type, and thus a wrong size causes GDB to fetch
10539     the wrong amount of memory.  In the case where the computed size is
10540     too small, GDB fetches too little data to print the value of our
10541     entity.  Results in this case are unpredictable, as we usually read
10542     past the buffer containing the data =:-o.  */
10543
10544 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10545    for that subexpression cast to TO_TYPE.  Advance *POS over the
10546    subexpression.  */
10547
10548 static value *
10549 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10550                               enum noside noside, struct type *to_type)
10551 {
10552   int pc = *pos;
10553
10554   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10555       || exp->elts[pc].opcode == OP_VAR_VALUE)
10556     {
10557       (*pos) += 4;
10558
10559       value *val;
10560       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10561         {
10562           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10563             return value_zero (to_type, not_lval);
10564
10565           val = evaluate_var_msym_value (noside,
10566                                          exp->elts[pc + 1].objfile,
10567                                          exp->elts[pc + 2].msymbol);
10568         }
10569       else
10570         val = evaluate_var_value (noside,
10571                                   exp->elts[pc + 1].block,
10572                                   exp->elts[pc + 2].symbol);
10573
10574       if (noside == EVAL_SKIP)
10575         return eval_skip_value (exp);
10576
10577       val = ada_value_cast (to_type, val);
10578
10579       /* Follow the Ada language semantics that do not allow taking
10580          an address of the result of a cast (view conversion in Ada).  */
10581       if (VALUE_LVAL (val) == lval_memory)
10582         {
10583           if (value_lazy (val))
10584             value_fetch_lazy (val);
10585           VALUE_LVAL (val) = not_lval;
10586         }
10587       return val;
10588     }
10589
10590   value *val = evaluate_subexp (to_type, exp, pos, noside);
10591   if (noside == EVAL_SKIP)
10592     return eval_skip_value (exp);
10593   return ada_value_cast (to_type, val);
10594 }
10595
10596 /* Implement the evaluate_exp routine in the exp_descriptor structure
10597    for the Ada language.  */
10598
10599 static struct value *
10600 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10601                      int *pos, enum noside noside)
10602 {
10603   enum exp_opcode op;
10604   int tem;
10605   int pc;
10606   int preeval_pos;
10607   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10608   struct type *type;
10609   int nargs, oplen;
10610   struct value **argvec;
10611
10612   pc = *pos;
10613   *pos += 1;
10614   op = exp->elts[pc].opcode;
10615
10616   switch (op)
10617     {
10618     default:
10619       *pos -= 1;
10620       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10621
10622       if (noside == EVAL_NORMAL)
10623         arg1 = unwrap_value (arg1);
10624
10625       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10626          then we need to perform the conversion manually, because
10627          evaluate_subexp_standard doesn't do it.  This conversion is
10628          necessary in Ada because the different kinds of float/fixed
10629          types in Ada have different representations.
10630
10631          Similarly, we need to perform the conversion from OP_LONG
10632          ourselves.  */
10633       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10634         arg1 = ada_value_cast (expect_type, arg1);
10635
10636       return arg1;
10637
10638     case OP_STRING:
10639       {
10640         struct value *result;
10641
10642         *pos -= 1;
10643         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10644         /* The result type will have code OP_STRING, bashed there from 
10645            OP_ARRAY.  Bash it back.  */
10646         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10647           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10648         return result;
10649       }
10650
10651     case UNOP_CAST:
10652       (*pos) += 2;
10653       type = exp->elts[pc + 1].type;
10654       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10655
10656     case UNOP_QUAL:
10657       (*pos) += 2;
10658       type = exp->elts[pc + 1].type;
10659       return ada_evaluate_subexp (type, exp, pos, noside);
10660
10661     case BINOP_ASSIGN:
10662       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10663       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10664         {
10665           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10666           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10667             return arg1;
10668           return ada_value_assign (arg1, arg1);
10669         }
10670       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10671          except if the lhs of our assignment is a convenience variable.
10672          In the case of assigning to a convenience variable, the lhs
10673          should be exactly the result of the evaluation of the rhs.  */
10674       type = value_type (arg1);
10675       if (VALUE_LVAL (arg1) == lval_internalvar)
10676          type = NULL;
10677       arg2 = evaluate_subexp (type, exp, pos, noside);
10678       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10679         return arg1;
10680       if (ada_is_fixed_point_type (value_type (arg1)))
10681         arg2 = cast_to_fixed (value_type (arg1), arg2);
10682       else if (ada_is_fixed_point_type (value_type (arg2)))
10683         error
10684           (_("Fixed-point values must be assigned to fixed-point variables"));
10685       else
10686         arg2 = coerce_for_assign (value_type (arg1), arg2);
10687       return ada_value_assign (arg1, arg2);
10688
10689     case BINOP_ADD:
10690       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10691       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10692       if (noside == EVAL_SKIP)
10693         goto nosideret;
10694       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10695         return (value_from_longest
10696                  (value_type (arg1),
10697                   value_as_long (arg1) + value_as_long (arg2)));
10698       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10699         return (value_from_longest
10700                  (value_type (arg2),
10701                   value_as_long (arg1) + value_as_long (arg2)));
10702       if ((ada_is_fixed_point_type (value_type (arg1))
10703            || ada_is_fixed_point_type (value_type (arg2)))
10704           && value_type (arg1) != value_type (arg2))
10705         error (_("Operands of fixed-point addition must have the same type"));
10706       /* Do the addition, and cast the result to the type of the first
10707          argument.  We cannot cast the result to a reference type, so if
10708          ARG1 is a reference type, find its underlying type.  */
10709       type = value_type (arg1);
10710       while (TYPE_CODE (type) == TYPE_CODE_REF)
10711         type = TYPE_TARGET_TYPE (type);
10712       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10713       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10714
10715     case BINOP_SUB:
10716       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10717       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10718       if (noside == EVAL_SKIP)
10719         goto nosideret;
10720       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10721         return (value_from_longest
10722                  (value_type (arg1),
10723                   value_as_long (arg1) - value_as_long (arg2)));
10724       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10725         return (value_from_longest
10726                  (value_type (arg2),
10727                   value_as_long (arg1) - value_as_long (arg2)));
10728       if ((ada_is_fixed_point_type (value_type (arg1))
10729            || ada_is_fixed_point_type (value_type (arg2)))
10730           && value_type (arg1) != value_type (arg2))
10731         error (_("Operands of fixed-point subtraction "
10732                  "must have the same type"));
10733       /* Do the substraction, and cast the result to the type of the first
10734          argument.  We cannot cast the result to a reference type, so if
10735          ARG1 is a reference type, find its underlying type.  */
10736       type = value_type (arg1);
10737       while (TYPE_CODE (type) == TYPE_CODE_REF)
10738         type = TYPE_TARGET_TYPE (type);
10739       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10740       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10741
10742     case BINOP_MUL:
10743     case BINOP_DIV:
10744     case BINOP_REM:
10745     case BINOP_MOD:
10746       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10747       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10748       if (noside == EVAL_SKIP)
10749         goto nosideret;
10750       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10751         {
10752           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10753           return value_zero (value_type (arg1), not_lval);
10754         }
10755       else
10756         {
10757           type = builtin_type (exp->gdbarch)->builtin_double;
10758           if (ada_is_fixed_point_type (value_type (arg1)))
10759             arg1 = cast_from_fixed (type, arg1);
10760           if (ada_is_fixed_point_type (value_type (arg2)))
10761             arg2 = cast_from_fixed (type, arg2);
10762           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10763           return ada_value_binop (arg1, arg2, op);
10764         }
10765
10766     case BINOP_EQUAL:
10767     case BINOP_NOTEQUAL:
10768       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10769       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10770       if (noside == EVAL_SKIP)
10771         goto nosideret;
10772       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10773         tem = 0;
10774       else
10775         {
10776           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10777           tem = ada_value_equal (arg1, arg2);
10778         }
10779       if (op == BINOP_NOTEQUAL)
10780         tem = !tem;
10781       type = language_bool_type (exp->language_defn, exp->gdbarch);
10782       return value_from_longest (type, (LONGEST) tem);
10783
10784     case UNOP_NEG:
10785       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10786       if (noside == EVAL_SKIP)
10787         goto nosideret;
10788       else if (ada_is_fixed_point_type (value_type (arg1)))
10789         return value_cast (value_type (arg1), value_neg (arg1));
10790       else
10791         {
10792           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10793           return value_neg (arg1);
10794         }
10795
10796     case BINOP_LOGICAL_AND:
10797     case BINOP_LOGICAL_OR:
10798     case UNOP_LOGICAL_NOT:
10799       {
10800         struct value *val;
10801
10802         *pos -= 1;
10803         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10804         type = language_bool_type (exp->language_defn, exp->gdbarch);
10805         return value_cast (type, val);
10806       }
10807
10808     case BINOP_BITWISE_AND:
10809     case BINOP_BITWISE_IOR:
10810     case BINOP_BITWISE_XOR:
10811       {
10812         struct value *val;
10813
10814         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10815         *pos = pc;
10816         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10817
10818         return value_cast (value_type (arg1), val);
10819       }
10820
10821     case OP_VAR_VALUE:
10822       *pos -= 1;
10823
10824       if (noside == EVAL_SKIP)
10825         {
10826           *pos += 4;
10827           goto nosideret;
10828         }
10829
10830       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10831         /* Only encountered when an unresolved symbol occurs in a
10832            context other than a function call, in which case, it is
10833            invalid.  */
10834         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10835                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10836
10837       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10838         {
10839           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10840           /* Check to see if this is a tagged type.  We also need to handle
10841              the case where the type is a reference to a tagged type, but
10842              we have to be careful to exclude pointers to tagged types.
10843              The latter should be shown as usual (as a pointer), whereas
10844              a reference should mostly be transparent to the user.  */
10845           if (ada_is_tagged_type (type, 0)
10846               || (TYPE_CODE (type) == TYPE_CODE_REF
10847                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10848             {
10849               /* Tagged types are a little special in the fact that the real
10850                  type is dynamic and can only be determined by inspecting the
10851                  object's tag.  This means that we need to get the object's
10852                  value first (EVAL_NORMAL) and then extract the actual object
10853                  type from its tag.
10854
10855                  Note that we cannot skip the final step where we extract
10856                  the object type from its tag, because the EVAL_NORMAL phase
10857                  results in dynamic components being resolved into fixed ones.
10858                  This can cause problems when trying to print the type
10859                  description of tagged types whose parent has a dynamic size:
10860                  We use the type name of the "_parent" component in order
10861                  to print the name of the ancestor type in the type description.
10862                  If that component had a dynamic size, the resolution into
10863                  a fixed type would result in the loss of that type name,
10864                  thus preventing us from printing the name of the ancestor
10865                  type in the type description.  */
10866               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10867
10868               if (TYPE_CODE (type) != TYPE_CODE_REF)
10869                 {
10870                   struct type *actual_type;
10871
10872                   actual_type = type_from_tag (ada_value_tag (arg1));
10873                   if (actual_type == NULL)
10874                     /* If, for some reason, we were unable to determine
10875                        the actual type from the tag, then use the static
10876                        approximation that we just computed as a fallback.
10877                        This can happen if the debugging information is
10878                        incomplete, for instance.  */
10879                     actual_type = type;
10880                   return value_zero (actual_type, not_lval);
10881                 }
10882               else
10883                 {
10884                   /* In the case of a ref, ada_coerce_ref takes care
10885                      of determining the actual type.  But the evaluation
10886                      should return a ref as it should be valid to ask
10887                      for its address; so rebuild a ref after coerce.  */
10888                   arg1 = ada_coerce_ref (arg1);
10889                   return value_ref (arg1, TYPE_CODE_REF);
10890                 }
10891             }
10892
10893           /* Records and unions for which GNAT encodings have been
10894              generated need to be statically fixed as well.
10895              Otherwise, non-static fixing produces a type where
10896              all dynamic properties are removed, which prevents "ptype"
10897              from being able to completely describe the type.
10898              For instance, a case statement in a variant record would be
10899              replaced by the relevant components based on the actual
10900              value of the discriminants.  */
10901           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10902                && dynamic_template_type (type) != NULL)
10903               || (TYPE_CODE (type) == TYPE_CODE_UNION
10904                   && ada_find_parallel_type (type, "___XVU") != NULL))
10905             {
10906               *pos += 4;
10907               return value_zero (to_static_fixed_type (type), not_lval);
10908             }
10909         }
10910
10911       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10912       return ada_to_fixed_value (arg1);
10913
10914     case OP_FUNCALL:
10915       (*pos) += 2;
10916
10917       /* Allocate arg vector, including space for the function to be
10918          called in argvec[0] and a terminating NULL.  */
10919       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10920       argvec = XALLOCAVEC (struct value *, nargs + 2);
10921
10922       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10923           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10924         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10925                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10926       else
10927         {
10928           for (tem = 0; tem <= nargs; tem += 1)
10929             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10930           argvec[tem] = 0;
10931
10932           if (noside == EVAL_SKIP)
10933             goto nosideret;
10934         }
10935
10936       if (ada_is_constrained_packed_array_type
10937           (desc_base_type (value_type (argvec[0]))))
10938         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10939       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10940                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10941         /* This is a packed array that has already been fixed, and
10942            therefore already coerced to a simple array.  Nothing further
10943            to do.  */
10944         ;
10945       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10946         {
10947           /* Make sure we dereference references so that all the code below
10948              feels like it's really handling the referenced value.  Wrapping
10949              types (for alignment) may be there, so make sure we strip them as
10950              well.  */
10951           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10952         }
10953       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10954                && VALUE_LVAL (argvec[0]) == lval_memory)
10955         argvec[0] = value_addr (argvec[0]);
10956
10957       type = ada_check_typedef (value_type (argvec[0]));
10958
10959       /* Ada allows us to implicitly dereference arrays when subscripting
10960          them.  So, if this is an array typedef (encoding use for array
10961          access types encoded as fat pointers), strip it now.  */
10962       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10963         type = ada_typedef_target_type (type);
10964
10965       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10966         {
10967           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10968             {
10969             case TYPE_CODE_FUNC:
10970               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10971               break;
10972             case TYPE_CODE_ARRAY:
10973               break;
10974             case TYPE_CODE_STRUCT:
10975               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10976                 argvec[0] = ada_value_ind (argvec[0]);
10977               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10978               break;
10979             default:
10980               error (_("cannot subscript or call something of type `%s'"),
10981                      ada_type_name (value_type (argvec[0])));
10982               break;
10983             }
10984         }
10985
10986       switch (TYPE_CODE (type))
10987         {
10988         case TYPE_CODE_FUNC:
10989           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10990             {
10991               if (TYPE_TARGET_TYPE (type) == NULL)
10992                 error_call_unknown_return_type (NULL);
10993               return allocate_value (TYPE_TARGET_TYPE (type));
10994             }
10995           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
10996         case TYPE_CODE_INTERNAL_FUNCTION:
10997           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10998             /* We don't know anything about what the internal
10999                function might return, but we have to return
11000                something.  */
11001             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11002                                not_lval);
11003           else
11004             return call_internal_function (exp->gdbarch, exp->language_defn,
11005                                            argvec[0], nargs, argvec + 1);
11006
11007         case TYPE_CODE_STRUCT:
11008           {
11009             int arity;
11010
11011             arity = ada_array_arity (type);
11012             type = ada_array_element_type (type, nargs);
11013             if (type == NULL)
11014               error (_("cannot subscript or call a record"));
11015             if (arity != nargs)
11016               error (_("wrong number of subscripts; expecting %d"), arity);
11017             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11018               return value_zero (ada_aligned_type (type), lval_memory);
11019             return
11020               unwrap_value (ada_value_subscript
11021                             (argvec[0], nargs, argvec + 1));
11022           }
11023         case TYPE_CODE_ARRAY:
11024           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11025             {
11026               type = ada_array_element_type (type, nargs);
11027               if (type == NULL)
11028                 error (_("element type of array unknown"));
11029               else
11030                 return value_zero (ada_aligned_type (type), lval_memory);
11031             }
11032           return
11033             unwrap_value (ada_value_subscript
11034                           (ada_coerce_to_simple_array (argvec[0]),
11035                            nargs, argvec + 1));
11036         case TYPE_CODE_PTR:     /* Pointer to array */
11037           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11038             {
11039               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11040               type = ada_array_element_type (type, nargs);
11041               if (type == NULL)
11042                 error (_("element type of array unknown"));
11043               else
11044                 return value_zero (ada_aligned_type (type), lval_memory);
11045             }
11046           return
11047             unwrap_value (ada_value_ptr_subscript (argvec[0],
11048                                                    nargs, argvec + 1));
11049
11050         default:
11051           error (_("Attempt to index or call something other than an "
11052                    "array or function"));
11053         }
11054
11055     case TERNOP_SLICE:
11056       {
11057         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11058         struct value *low_bound_val =
11059           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11060         struct value *high_bound_val =
11061           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11062         LONGEST low_bound;
11063         LONGEST high_bound;
11064
11065         low_bound_val = coerce_ref (low_bound_val);
11066         high_bound_val = coerce_ref (high_bound_val);
11067         low_bound = value_as_long (low_bound_val);
11068         high_bound = value_as_long (high_bound_val);
11069
11070         if (noside == EVAL_SKIP)
11071           goto nosideret;
11072
11073         /* If this is a reference to an aligner type, then remove all
11074            the aligners.  */
11075         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11076             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11077           TYPE_TARGET_TYPE (value_type (array)) =
11078             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11079
11080         if (ada_is_constrained_packed_array_type (value_type (array)))
11081           error (_("cannot slice a packed array"));
11082
11083         /* If this is a reference to an array or an array lvalue,
11084            convert to a pointer.  */
11085         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11086             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11087                 && VALUE_LVAL (array) == lval_memory))
11088           array = value_addr (array);
11089
11090         if (noside == EVAL_AVOID_SIDE_EFFECTS
11091             && ada_is_array_descriptor_type (ada_check_typedef
11092                                              (value_type (array))))
11093           return empty_array (ada_type_of_array (array, 0), low_bound);
11094
11095         array = ada_coerce_to_simple_array_ptr (array);
11096
11097         /* If we have more than one level of pointer indirection,
11098            dereference the value until we get only one level.  */
11099         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11100                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11101                      == TYPE_CODE_PTR))
11102           array = value_ind (array);
11103
11104         /* Make sure we really do have an array type before going further,
11105            to avoid a SEGV when trying to get the index type or the target
11106            type later down the road if the debug info generated by
11107            the compiler is incorrect or incomplete.  */
11108         if (!ada_is_simple_array_type (value_type (array)))
11109           error (_("cannot take slice of non-array"));
11110
11111         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11112             == TYPE_CODE_PTR)
11113           {
11114             struct type *type0 = ada_check_typedef (value_type (array));
11115
11116             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11117               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11118             else
11119               {
11120                 struct type *arr_type0 =
11121                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11122
11123                 return ada_value_slice_from_ptr (array, arr_type0,
11124                                                  longest_to_int (low_bound),
11125                                                  longest_to_int (high_bound));
11126               }
11127           }
11128         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11129           return array;
11130         else if (high_bound < low_bound)
11131           return empty_array (value_type (array), low_bound);
11132         else
11133           return ada_value_slice (array, longest_to_int (low_bound),
11134                                   longest_to_int (high_bound));
11135       }
11136
11137     case UNOP_IN_RANGE:
11138       (*pos) += 2;
11139       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11140       type = check_typedef (exp->elts[pc + 1].type);
11141
11142       if (noside == EVAL_SKIP)
11143         goto nosideret;
11144
11145       switch (TYPE_CODE (type))
11146         {
11147         default:
11148           lim_warning (_("Membership test incompletely implemented; "
11149                          "always returns true"));
11150           type = language_bool_type (exp->language_defn, exp->gdbarch);
11151           return value_from_longest (type, (LONGEST) 1);
11152
11153         case TYPE_CODE_RANGE:
11154           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11155           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11156           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11157           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11158           type = language_bool_type (exp->language_defn, exp->gdbarch);
11159           return
11160             value_from_longest (type,
11161                                 (value_less (arg1, arg3)
11162                                  || value_equal (arg1, arg3))
11163                                 && (value_less (arg2, arg1)
11164                                     || value_equal (arg2, arg1)));
11165         }
11166
11167     case BINOP_IN_BOUNDS:
11168       (*pos) += 2;
11169       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11170       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11171
11172       if (noside == EVAL_SKIP)
11173         goto nosideret;
11174
11175       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11176         {
11177           type = language_bool_type (exp->language_defn, exp->gdbarch);
11178           return value_zero (type, not_lval);
11179         }
11180
11181       tem = longest_to_int (exp->elts[pc + 1].longconst);
11182
11183       type = ada_index_type (value_type (arg2), tem, "range");
11184       if (!type)
11185         type = value_type (arg1);
11186
11187       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11188       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11189
11190       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11191       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11192       type = language_bool_type (exp->language_defn, exp->gdbarch);
11193       return
11194         value_from_longest (type,
11195                             (value_less (arg1, arg3)
11196                              || value_equal (arg1, arg3))
11197                             && (value_less (arg2, arg1)
11198                                 || value_equal (arg2, arg1)));
11199
11200     case TERNOP_IN_RANGE:
11201       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11202       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11203       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11204
11205       if (noside == EVAL_SKIP)
11206         goto nosideret;
11207
11208       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11209       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11210       type = language_bool_type (exp->language_defn, exp->gdbarch);
11211       return
11212         value_from_longest (type,
11213                             (value_less (arg1, arg3)
11214                              || value_equal (arg1, arg3))
11215                             && (value_less (arg2, arg1)
11216                                 || value_equal (arg2, arg1)));
11217
11218     case OP_ATR_FIRST:
11219     case OP_ATR_LAST:
11220     case OP_ATR_LENGTH:
11221       {
11222         struct type *type_arg;
11223
11224         if (exp->elts[*pos].opcode == OP_TYPE)
11225           {
11226             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11227             arg1 = NULL;
11228             type_arg = check_typedef (exp->elts[pc + 2].type);
11229           }
11230         else
11231           {
11232             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11233             type_arg = NULL;
11234           }
11235
11236         if (exp->elts[*pos].opcode != OP_LONG)
11237           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11238         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11239         *pos += 4;
11240
11241         if (noside == EVAL_SKIP)
11242           goto nosideret;
11243
11244         if (type_arg == NULL)
11245           {
11246             arg1 = ada_coerce_ref (arg1);
11247
11248             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11249               arg1 = ada_coerce_to_simple_array (arg1);
11250
11251             if (op == OP_ATR_LENGTH)
11252               type = builtin_type (exp->gdbarch)->builtin_int;
11253             else
11254               {
11255                 type = ada_index_type (value_type (arg1), tem,
11256                                        ada_attribute_name (op));
11257                 if (type == NULL)
11258                   type = builtin_type (exp->gdbarch)->builtin_int;
11259               }
11260
11261             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11262               return allocate_value (type);
11263
11264             switch (op)
11265               {
11266               default:          /* Should never happen.  */
11267                 error (_("unexpected attribute encountered"));
11268               case OP_ATR_FIRST:
11269                 return value_from_longest
11270                         (type, ada_array_bound (arg1, tem, 0));
11271               case OP_ATR_LAST:
11272                 return value_from_longest
11273                         (type, ada_array_bound (arg1, tem, 1));
11274               case OP_ATR_LENGTH:
11275                 return value_from_longest
11276                         (type, ada_array_length (arg1, tem));
11277               }
11278           }
11279         else if (discrete_type_p (type_arg))
11280           {
11281             struct type *range_type;
11282             const char *name = ada_type_name (type_arg);
11283
11284             range_type = NULL;
11285             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11286               range_type = to_fixed_range_type (type_arg, NULL);
11287             if (range_type == NULL)
11288               range_type = type_arg;
11289             switch (op)
11290               {
11291               default:
11292                 error (_("unexpected attribute encountered"));
11293               case OP_ATR_FIRST:
11294                 return value_from_longest 
11295                   (range_type, ada_discrete_type_low_bound (range_type));
11296               case OP_ATR_LAST:
11297                 return value_from_longest
11298                   (range_type, ada_discrete_type_high_bound (range_type));
11299               case OP_ATR_LENGTH:
11300                 error (_("the 'length attribute applies only to array types"));
11301               }
11302           }
11303         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11304           error (_("unimplemented type attribute"));
11305         else
11306           {
11307             LONGEST low, high;
11308
11309             if (ada_is_constrained_packed_array_type (type_arg))
11310               type_arg = decode_constrained_packed_array_type (type_arg);
11311
11312             if (op == OP_ATR_LENGTH)
11313               type = builtin_type (exp->gdbarch)->builtin_int;
11314             else
11315               {
11316                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11317                 if (type == NULL)
11318                   type = builtin_type (exp->gdbarch)->builtin_int;
11319               }
11320
11321             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11322               return allocate_value (type);
11323
11324             switch (op)
11325               {
11326               default:
11327                 error (_("unexpected attribute encountered"));
11328               case OP_ATR_FIRST:
11329                 low = ada_array_bound_from_type (type_arg, tem, 0);
11330                 return value_from_longest (type, low);
11331               case OP_ATR_LAST:
11332                 high = ada_array_bound_from_type (type_arg, tem, 1);
11333                 return value_from_longest (type, high);
11334               case OP_ATR_LENGTH:
11335                 low = ada_array_bound_from_type (type_arg, tem, 0);
11336                 high = ada_array_bound_from_type (type_arg, tem, 1);
11337                 return value_from_longest (type, high - low + 1);
11338               }
11339           }
11340       }
11341
11342     case OP_ATR_TAG:
11343       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11344       if (noside == EVAL_SKIP)
11345         goto nosideret;
11346
11347       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11348         return value_zero (ada_tag_type (arg1), not_lval);
11349
11350       return ada_value_tag (arg1);
11351
11352     case OP_ATR_MIN:
11353     case OP_ATR_MAX:
11354       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11355       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11356       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11357       if (noside == EVAL_SKIP)
11358         goto nosideret;
11359       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11360         return value_zero (value_type (arg1), not_lval);
11361       else
11362         {
11363           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11364           return value_binop (arg1, arg2,
11365                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11366         }
11367
11368     case OP_ATR_MODULUS:
11369       {
11370         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11371
11372         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11373         if (noside == EVAL_SKIP)
11374           goto nosideret;
11375
11376         if (!ada_is_modular_type (type_arg))
11377           error (_("'modulus must be applied to modular type"));
11378
11379         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11380                                    ada_modulus (type_arg));
11381       }
11382
11383
11384     case OP_ATR_POS:
11385       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11386       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11387       if (noside == EVAL_SKIP)
11388         goto nosideret;
11389       type = builtin_type (exp->gdbarch)->builtin_int;
11390       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11391         return value_zero (type, not_lval);
11392       else
11393         return value_pos_atr (type, arg1);
11394
11395     case OP_ATR_SIZE:
11396       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11397       type = value_type (arg1);
11398
11399       /* If the argument is a reference, then dereference its type, since
11400          the user is really asking for the size of the actual object,
11401          not the size of the pointer.  */
11402       if (TYPE_CODE (type) == TYPE_CODE_REF)
11403         type = TYPE_TARGET_TYPE (type);
11404
11405       if (noside == EVAL_SKIP)
11406         goto nosideret;
11407       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11408         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11409       else
11410         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11411                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11412
11413     case OP_ATR_VAL:
11414       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11415       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11416       type = exp->elts[pc + 2].type;
11417       if (noside == EVAL_SKIP)
11418         goto nosideret;
11419       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11420         return value_zero (type, not_lval);
11421       else
11422         return value_val_atr (type, arg1);
11423
11424     case BINOP_EXP:
11425       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11426       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11427       if (noside == EVAL_SKIP)
11428         goto nosideret;
11429       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11430         return value_zero (value_type (arg1), not_lval);
11431       else
11432         {
11433           /* For integer exponentiation operations,
11434              only promote the first argument.  */
11435           if (is_integral_type (value_type (arg2)))
11436             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11437           else
11438             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11439
11440           return value_binop (arg1, arg2, op);
11441         }
11442
11443     case UNOP_PLUS:
11444       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11445       if (noside == EVAL_SKIP)
11446         goto nosideret;
11447       else
11448         return arg1;
11449
11450     case UNOP_ABS:
11451       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11452       if (noside == EVAL_SKIP)
11453         goto nosideret;
11454       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11455       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11456         return value_neg (arg1);
11457       else
11458         return arg1;
11459
11460     case UNOP_IND:
11461       preeval_pos = *pos;
11462       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11463       if (noside == EVAL_SKIP)
11464         goto nosideret;
11465       type = ada_check_typedef (value_type (arg1));
11466       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11467         {
11468           if (ada_is_array_descriptor_type (type))
11469             /* GDB allows dereferencing GNAT array descriptors.  */
11470             {
11471               struct type *arrType = ada_type_of_array (arg1, 0);
11472
11473               if (arrType == NULL)
11474                 error (_("Attempt to dereference null array pointer."));
11475               return value_at_lazy (arrType, 0);
11476             }
11477           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11478                    || TYPE_CODE (type) == TYPE_CODE_REF
11479                    /* In C you can dereference an array to get the 1st elt.  */
11480                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11481             {
11482             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11483                only be determined by inspecting the object's tag.
11484                This means that we need to evaluate completely the
11485                expression in order to get its type.  */
11486
11487               if ((TYPE_CODE (type) == TYPE_CODE_REF
11488                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11489                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11490                 {
11491                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11492                                           EVAL_NORMAL);
11493                   type = value_type (ada_value_ind (arg1));
11494                 }
11495               else
11496                 {
11497                   type = to_static_fixed_type
11498                     (ada_aligned_type
11499                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11500                 }
11501               ada_ensure_varsize_limit (type);
11502               return value_zero (type, lval_memory);
11503             }
11504           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11505             {
11506               /* GDB allows dereferencing an int.  */
11507               if (expect_type == NULL)
11508                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11509                                    lval_memory);
11510               else
11511                 {
11512                   expect_type = 
11513                     to_static_fixed_type (ada_aligned_type (expect_type));
11514                   return value_zero (expect_type, lval_memory);
11515                 }
11516             }
11517           else
11518             error (_("Attempt to take contents of a non-pointer value."));
11519         }
11520       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11521       type = ada_check_typedef (value_type (arg1));
11522
11523       if (TYPE_CODE (type) == TYPE_CODE_INT)
11524           /* GDB allows dereferencing an int.  If we were given
11525              the expect_type, then use that as the target type.
11526              Otherwise, assume that the target type is an int.  */
11527         {
11528           if (expect_type != NULL)
11529             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11530                                               arg1));
11531           else
11532             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11533                                   (CORE_ADDR) value_as_address (arg1));
11534         }
11535
11536       if (ada_is_array_descriptor_type (type))
11537         /* GDB allows dereferencing GNAT array descriptors.  */
11538         return ada_coerce_to_simple_array (arg1);
11539       else
11540         return ada_value_ind (arg1);
11541
11542     case STRUCTOP_STRUCT:
11543       tem = longest_to_int (exp->elts[pc + 1].longconst);
11544       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11545       preeval_pos = *pos;
11546       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11547       if (noside == EVAL_SKIP)
11548         goto nosideret;
11549       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11550         {
11551           struct type *type1 = value_type (arg1);
11552
11553           if (ada_is_tagged_type (type1, 1))
11554             {
11555               type = ada_lookup_struct_elt_type (type1,
11556                                                  &exp->elts[pc + 2].string,
11557                                                  1, 1);
11558
11559               /* If the field is not found, check if it exists in the
11560                  extension of this object's type. This means that we
11561                  need to evaluate completely the expression.  */
11562
11563               if (type == NULL)
11564                 {
11565                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11566                                           EVAL_NORMAL);
11567                   arg1 = ada_value_struct_elt (arg1,
11568                                                &exp->elts[pc + 2].string,
11569                                                0);
11570                   arg1 = unwrap_value (arg1);
11571                   type = value_type (ada_to_fixed_value (arg1));
11572                 }
11573             }
11574           else
11575             type =
11576               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11577                                           0);
11578
11579           return value_zero (ada_aligned_type (type), lval_memory);
11580         }
11581       else
11582         {
11583           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11584           arg1 = unwrap_value (arg1);
11585           return ada_to_fixed_value (arg1);
11586         }
11587
11588     case OP_TYPE:
11589       /* The value is not supposed to be used.  This is here to make it
11590          easier to accommodate expressions that contain types.  */
11591       (*pos) += 2;
11592       if (noside == EVAL_SKIP)
11593         goto nosideret;
11594       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11595         return allocate_value (exp->elts[pc + 1].type);
11596       else
11597         error (_("Attempt to use a type name as an expression"));
11598
11599     case OP_AGGREGATE:
11600     case OP_CHOICES:
11601     case OP_OTHERS:
11602     case OP_DISCRETE_RANGE:
11603     case OP_POSITIONAL:
11604     case OP_NAME:
11605       if (noside == EVAL_NORMAL)
11606         switch (op) 
11607           {
11608           case OP_NAME:
11609             error (_("Undefined name, ambiguous name, or renaming used in "
11610                      "component association: %s."), &exp->elts[pc+2].string);
11611           case OP_AGGREGATE:
11612             error (_("Aggregates only allowed on the right of an assignment"));
11613           default:
11614             internal_error (__FILE__, __LINE__,
11615                             _("aggregate apparently mangled"));
11616           }
11617
11618       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11619       *pos += oplen - 1;
11620       for (tem = 0; tem < nargs; tem += 1) 
11621         ada_evaluate_subexp (NULL, exp, pos, noside);
11622       goto nosideret;
11623     }
11624
11625 nosideret:
11626   return eval_skip_value (exp);
11627 }
11628 \f
11629
11630                                 /* Fixed point */
11631
11632 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11633    type name that encodes the 'small and 'delta information.
11634    Otherwise, return NULL.  */
11635
11636 static const char *
11637 fixed_type_info (struct type *type)
11638 {
11639   const char *name = ada_type_name (type);
11640   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11641
11642   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11643     {
11644       const char *tail = strstr (name, "___XF_");
11645
11646       if (tail == NULL)
11647         return NULL;
11648       else
11649         return tail + 5;
11650     }
11651   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11652     return fixed_type_info (TYPE_TARGET_TYPE (type));
11653   else
11654     return NULL;
11655 }
11656
11657 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11658
11659 int
11660 ada_is_fixed_point_type (struct type *type)
11661 {
11662   return fixed_type_info (type) != NULL;
11663 }
11664
11665 /* Return non-zero iff TYPE represents a System.Address type.  */
11666
11667 int
11668 ada_is_system_address_type (struct type *type)
11669 {
11670   return (TYPE_NAME (type)
11671           && strcmp (TYPE_NAME (type), "system__address") == 0);
11672 }
11673
11674 /* Assuming that TYPE is the representation of an Ada fixed-point
11675    type, return the target floating-point type to be used to represent
11676    of this type during internal computation.  */
11677
11678 static struct type *
11679 ada_scaling_type (struct type *type)
11680 {
11681   return builtin_type (get_type_arch (type))->builtin_long_double;
11682 }
11683
11684 /* Assuming that TYPE is the representation of an Ada fixed-point
11685    type, return its delta, or NULL if the type is malformed and the
11686    delta cannot be determined.  */
11687
11688 struct value *
11689 ada_delta (struct type *type)
11690 {
11691   const char *encoding = fixed_type_info (type);
11692   struct type *scale_type = ada_scaling_type (type);
11693
11694   long long num, den;
11695
11696   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11697     return nullptr;
11698   else
11699     return value_binop (value_from_longest (scale_type, num),
11700                         value_from_longest (scale_type, den), BINOP_DIV);
11701 }
11702
11703 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11704    factor ('SMALL value) associated with the type.  */
11705
11706 struct value *
11707 ada_scaling_factor (struct type *type)
11708 {
11709   const char *encoding = fixed_type_info (type);
11710   struct type *scale_type = ada_scaling_type (type);
11711
11712   long long num0, den0, num1, den1;
11713   int n;
11714
11715   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11716               &num0, &den0, &num1, &den1);
11717
11718   if (n < 2)
11719     return value_from_longest (scale_type, 1);
11720   else if (n == 4)
11721     return value_binop (value_from_longest (scale_type, num1),
11722                         value_from_longest (scale_type, den1), BINOP_DIV);
11723   else
11724     return value_binop (value_from_longest (scale_type, num0),
11725                         value_from_longest (scale_type, den0), BINOP_DIV);
11726 }
11727
11728 \f
11729
11730                                 /* Range types */
11731
11732 /* Scan STR beginning at position K for a discriminant name, and
11733    return the value of that discriminant field of DVAL in *PX.  If
11734    PNEW_K is not null, put the position of the character beyond the
11735    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11736    not alter *PX and *PNEW_K if unsuccessful.  */
11737
11738 static int
11739 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11740                     int *pnew_k)
11741 {
11742   static char *bound_buffer = NULL;
11743   static size_t bound_buffer_len = 0;
11744   const char *pstart, *pend, *bound;
11745   struct value *bound_val;
11746
11747   if (dval == NULL || str == NULL || str[k] == '\0')
11748     return 0;
11749
11750   pstart = str + k;
11751   pend = strstr (pstart, "__");
11752   if (pend == NULL)
11753     {
11754       bound = pstart;
11755       k += strlen (bound);
11756     }
11757   else
11758     {
11759       int len = pend - pstart;
11760
11761       /* Strip __ and beyond.  */
11762       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11763       strncpy (bound_buffer, pstart, len);
11764       bound_buffer[len] = '\0';
11765
11766       bound = bound_buffer;
11767       k = pend - str;
11768     }
11769
11770   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11771   if (bound_val == NULL)
11772     return 0;
11773
11774   *px = value_as_long (bound_val);
11775   if (pnew_k != NULL)
11776     *pnew_k = k;
11777   return 1;
11778 }
11779
11780 /* Value of variable named NAME in the current environment.  If
11781    no such variable found, then if ERR_MSG is null, returns 0, and
11782    otherwise causes an error with message ERR_MSG.  */
11783
11784 static struct value *
11785 get_var_value (const char *name, const char *err_msg)
11786 {
11787   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11788
11789   struct block_symbol *syms;
11790   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11791                                              get_selected_block (0),
11792                                              VAR_DOMAIN, &syms, 1);
11793   struct cleanup *old_chain = make_cleanup (xfree, syms);
11794
11795   if (nsyms != 1)
11796     {
11797       do_cleanups (old_chain);
11798       if (err_msg == NULL)
11799         return 0;
11800       else
11801         error (("%s"), err_msg);
11802     }
11803
11804   struct value *result = value_of_variable (syms[0].symbol, syms[0].block);
11805   do_cleanups (old_chain);
11806   return result;
11807 }
11808
11809 /* Value of integer variable named NAME in the current environment.
11810    If no such variable is found, returns false.  Otherwise, sets VALUE
11811    to the variable's value and returns true.  */
11812
11813 bool
11814 get_int_var_value (const char *name, LONGEST &value)
11815 {
11816   struct value *var_val = get_var_value (name, 0);
11817
11818   if (var_val == 0)
11819     return false;
11820
11821   value = value_as_long (var_val);
11822   return true;
11823 }
11824
11825
11826 /* Return a range type whose base type is that of the range type named
11827    NAME in the current environment, and whose bounds are calculated
11828    from NAME according to the GNAT range encoding conventions.
11829    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11830    corresponding range type from debug information; fall back to using it
11831    if symbol lookup fails.  If a new type must be created, allocate it
11832    like ORIG_TYPE was.  The bounds information, in general, is encoded
11833    in NAME, the base type given in the named range type.  */
11834
11835 static struct type *
11836 to_fixed_range_type (struct type *raw_type, struct value *dval)
11837 {
11838   const char *name;
11839   struct type *base_type;
11840   const char *subtype_info;
11841
11842   gdb_assert (raw_type != NULL);
11843   gdb_assert (TYPE_NAME (raw_type) != NULL);
11844
11845   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11846     base_type = TYPE_TARGET_TYPE (raw_type);
11847   else
11848     base_type = raw_type;
11849
11850   name = TYPE_NAME (raw_type);
11851   subtype_info = strstr (name, "___XD");
11852   if (subtype_info == NULL)
11853     {
11854       LONGEST L = ada_discrete_type_low_bound (raw_type);
11855       LONGEST U = ada_discrete_type_high_bound (raw_type);
11856
11857       if (L < INT_MIN || U > INT_MAX)
11858         return raw_type;
11859       else
11860         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11861                                          L, U);
11862     }
11863   else
11864     {
11865       static char *name_buf = NULL;
11866       static size_t name_len = 0;
11867       int prefix_len = subtype_info - name;
11868       LONGEST L, U;
11869       struct type *type;
11870       const char *bounds_str;
11871       int n;
11872
11873       GROW_VECT (name_buf, name_len, prefix_len + 5);
11874       strncpy (name_buf, name, prefix_len);
11875       name_buf[prefix_len] = '\0';
11876
11877       subtype_info += 5;
11878       bounds_str = strchr (subtype_info, '_');
11879       n = 1;
11880
11881       if (*subtype_info == 'L')
11882         {
11883           if (!ada_scan_number (bounds_str, n, &L, &n)
11884               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11885             return raw_type;
11886           if (bounds_str[n] == '_')
11887             n += 2;
11888           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11889             n += 1;
11890           subtype_info += 1;
11891         }
11892       else
11893         {
11894           strcpy (name_buf + prefix_len, "___L");
11895           if (!get_int_var_value (name_buf, L))
11896             {
11897               lim_warning (_("Unknown lower bound, using 1."));
11898               L = 1;
11899             }
11900         }
11901
11902       if (*subtype_info == 'U')
11903         {
11904           if (!ada_scan_number (bounds_str, n, &U, &n)
11905               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11906             return raw_type;
11907         }
11908       else
11909         {
11910           strcpy (name_buf + prefix_len, "___U");
11911           if (!get_int_var_value (name_buf, U))
11912             {
11913               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11914               U = L;
11915             }
11916         }
11917
11918       type = create_static_range_type (alloc_type_copy (raw_type),
11919                                        base_type, L, U);
11920       /* create_static_range_type alters the resulting type's length
11921          to match the size of the base_type, which is not what we want.
11922          Set it back to the original range type's length.  */
11923       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11924       TYPE_NAME (type) = name;
11925       return type;
11926     }
11927 }
11928
11929 /* True iff NAME is the name of a range type.  */
11930
11931 int
11932 ada_is_range_type_name (const char *name)
11933 {
11934   return (name != NULL && strstr (name, "___XD"));
11935 }
11936 \f
11937
11938                                 /* Modular types */
11939
11940 /* True iff TYPE is an Ada modular type.  */
11941
11942 int
11943 ada_is_modular_type (struct type *type)
11944 {
11945   struct type *subranged_type = get_base_type (type);
11946
11947   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11948           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11949           && TYPE_UNSIGNED (subranged_type));
11950 }
11951
11952 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11953
11954 ULONGEST
11955 ada_modulus (struct type *type)
11956 {
11957   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11958 }
11959 \f
11960
11961 /* Ada exception catchpoint support:
11962    ---------------------------------
11963
11964    We support 3 kinds of exception catchpoints:
11965      . catchpoints on Ada exceptions
11966      . catchpoints on unhandled Ada exceptions
11967      . catchpoints on failed assertions
11968
11969    Exceptions raised during failed assertions, or unhandled exceptions
11970    could perfectly be caught with the general catchpoint on Ada exceptions.
11971    However, we can easily differentiate these two special cases, and having
11972    the option to distinguish these two cases from the rest can be useful
11973    to zero-in on certain situations.
11974
11975    Exception catchpoints are a specialized form of breakpoint,
11976    since they rely on inserting breakpoints inside known routines
11977    of the GNAT runtime.  The implementation therefore uses a standard
11978    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11979    of breakpoint_ops.
11980
11981    Support in the runtime for exception catchpoints have been changed
11982    a few times already, and these changes affect the implementation
11983    of these catchpoints.  In order to be able to support several
11984    variants of the runtime, we use a sniffer that will determine
11985    the runtime variant used by the program being debugged.  */
11986
11987 /* Ada's standard exceptions.
11988
11989    The Ada 83 standard also defined Numeric_Error.  But there so many
11990    situations where it was unclear from the Ada 83 Reference Manual
11991    (RM) whether Constraint_Error or Numeric_Error should be raised,
11992    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11993    Interpretation saying that anytime the RM says that Numeric_Error
11994    should be raised, the implementation may raise Constraint_Error.
11995    Ada 95 went one step further and pretty much removed Numeric_Error
11996    from the list of standard exceptions (it made it a renaming of
11997    Constraint_Error, to help preserve compatibility when compiling
11998    an Ada83 compiler). As such, we do not include Numeric_Error from
11999    this list of standard exceptions.  */
12000
12001 static const char *standard_exc[] = {
12002   "constraint_error",
12003   "program_error",
12004   "storage_error",
12005   "tasking_error"
12006 };
12007
12008 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
12009
12010 /* A structure that describes how to support exception catchpoints
12011    for a given executable.  */
12012
12013 struct exception_support_info
12014 {
12015    /* The name of the symbol to break on in order to insert
12016       a catchpoint on exceptions.  */
12017    const char *catch_exception_sym;
12018
12019    /* The name of the symbol to break on in order to insert
12020       a catchpoint on unhandled exceptions.  */
12021    const char *catch_exception_unhandled_sym;
12022
12023    /* The name of the symbol to break on in order to insert
12024       a catchpoint on failed assertions.  */
12025    const char *catch_assert_sym;
12026
12027    /* Assuming that the inferior just triggered an unhandled exception
12028       catchpoint, this function is responsible for returning the address
12029       in inferior memory where the name of that exception is stored.
12030       Return zero if the address could not be computed.  */
12031    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12032 };
12033
12034 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12035 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12036
12037 /* The following exception support info structure describes how to
12038    implement exception catchpoints with the latest version of the
12039    Ada runtime (as of 2007-03-06).  */
12040
12041 static const struct exception_support_info default_exception_support_info =
12042 {
12043   "__gnat_debug_raise_exception", /* catch_exception_sym */
12044   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12045   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12046   ada_unhandled_exception_name_addr
12047 };
12048
12049 /* The following exception support info structure describes how to
12050    implement exception catchpoints with a slightly older version
12051    of the Ada runtime.  */
12052
12053 static const struct exception_support_info exception_support_info_fallback =
12054 {
12055   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12056   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12057   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12058   ada_unhandled_exception_name_addr_from_raise
12059 };
12060
12061 /* Return nonzero if we can detect the exception support routines
12062    described in EINFO.
12063
12064    This function errors out if an abnormal situation is detected
12065    (for instance, if we find the exception support routines, but
12066    that support is found to be incomplete).  */
12067
12068 static int
12069 ada_has_this_exception_support (const struct exception_support_info *einfo)
12070 {
12071   struct symbol *sym;
12072
12073   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12074      that should be compiled with debugging information.  As a result, we
12075      expect to find that symbol in the symtabs.  */
12076
12077   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12078   if (sym == NULL)
12079     {
12080       /* Perhaps we did not find our symbol because the Ada runtime was
12081          compiled without debugging info, or simply stripped of it.
12082          It happens on some GNU/Linux distributions for instance, where
12083          users have to install a separate debug package in order to get
12084          the runtime's debugging info.  In that situation, let the user
12085          know why we cannot insert an Ada exception catchpoint.
12086
12087          Note: Just for the purpose of inserting our Ada exception
12088          catchpoint, we could rely purely on the associated minimal symbol.
12089          But we would be operating in degraded mode anyway, since we are
12090          still lacking the debugging info needed later on to extract
12091          the name of the exception being raised (this name is printed in
12092          the catchpoint message, and is also used when trying to catch
12093          a specific exception).  We do not handle this case for now.  */
12094       struct bound_minimal_symbol msym
12095         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12096
12097       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12098         error (_("Your Ada runtime appears to be missing some debugging "
12099                  "information.\nCannot insert Ada exception catchpoint "
12100                  "in this configuration."));
12101
12102       return 0;
12103     }
12104
12105   /* Make sure that the symbol we found corresponds to a function.  */
12106
12107   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12108     error (_("Symbol \"%s\" is not a function (class = %d)"),
12109            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12110
12111   return 1;
12112 }
12113
12114 /* Inspect the Ada runtime and determine which exception info structure
12115    should be used to provide support for exception catchpoints.
12116
12117    This function will always set the per-inferior exception_info,
12118    or raise an error.  */
12119
12120 static void
12121 ada_exception_support_info_sniffer (void)
12122 {
12123   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12124
12125   /* If the exception info is already known, then no need to recompute it.  */
12126   if (data->exception_info != NULL)
12127     return;
12128
12129   /* Check the latest (default) exception support info.  */
12130   if (ada_has_this_exception_support (&default_exception_support_info))
12131     {
12132       data->exception_info = &default_exception_support_info;
12133       return;
12134     }
12135
12136   /* Try our fallback exception suport info.  */
12137   if (ada_has_this_exception_support (&exception_support_info_fallback))
12138     {
12139       data->exception_info = &exception_support_info_fallback;
12140       return;
12141     }
12142
12143   /* Sometimes, it is normal for us to not be able to find the routine
12144      we are looking for.  This happens when the program is linked with
12145      the shared version of the GNAT runtime, and the program has not been
12146      started yet.  Inform the user of these two possible causes if
12147      applicable.  */
12148
12149   if (ada_update_initial_language (language_unknown) != language_ada)
12150     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12151
12152   /* If the symbol does not exist, then check that the program is
12153      already started, to make sure that shared libraries have been
12154      loaded.  If it is not started, this may mean that the symbol is
12155      in a shared library.  */
12156
12157   if (ptid_get_pid (inferior_ptid) == 0)
12158     error (_("Unable to insert catchpoint. Try to start the program first."));
12159
12160   /* At this point, we know that we are debugging an Ada program and
12161      that the inferior has been started, but we still are not able to
12162      find the run-time symbols.  That can mean that we are in
12163      configurable run time mode, or that a-except as been optimized
12164      out by the linker...  In any case, at this point it is not worth
12165      supporting this feature.  */
12166
12167   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12168 }
12169
12170 /* True iff FRAME is very likely to be that of a function that is
12171    part of the runtime system.  This is all very heuristic, but is
12172    intended to be used as advice as to what frames are uninteresting
12173    to most users.  */
12174
12175 static int
12176 is_known_support_routine (struct frame_info *frame)
12177 {
12178   enum language func_lang;
12179   int i;
12180   const char *fullname;
12181
12182   /* If this code does not have any debugging information (no symtab),
12183      This cannot be any user code.  */
12184
12185   symtab_and_line sal = find_frame_sal (frame);
12186   if (sal.symtab == NULL)
12187     return 1;
12188
12189   /* If there is a symtab, but the associated source file cannot be
12190      located, then assume this is not user code:  Selecting a frame
12191      for which we cannot display the code would not be very helpful
12192      for the user.  This should also take care of case such as VxWorks
12193      where the kernel has some debugging info provided for a few units.  */
12194
12195   fullname = symtab_to_fullname (sal.symtab);
12196   if (access (fullname, R_OK) != 0)
12197     return 1;
12198
12199   /* Check the unit filename againt the Ada runtime file naming.
12200      We also check the name of the objfile against the name of some
12201      known system libraries that sometimes come with debugging info
12202      too.  */
12203
12204   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12205     {
12206       re_comp (known_runtime_file_name_patterns[i]);
12207       if (re_exec (lbasename (sal.symtab->filename)))
12208         return 1;
12209       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12210           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12211         return 1;
12212     }
12213
12214   /* Check whether the function is a GNAT-generated entity.  */
12215
12216   gdb::unique_xmalloc_ptr<char> func_name
12217     = find_frame_funname (frame, &func_lang, NULL);
12218   if (func_name == NULL)
12219     return 1;
12220
12221   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12222     {
12223       re_comp (known_auxiliary_function_name_patterns[i]);
12224       if (re_exec (func_name.get ()))
12225         return 1;
12226     }
12227
12228   return 0;
12229 }
12230
12231 /* Find the first frame that contains debugging information and that is not
12232    part of the Ada run-time, starting from FI and moving upward.  */
12233
12234 void
12235 ada_find_printable_frame (struct frame_info *fi)
12236 {
12237   for (; fi != NULL; fi = get_prev_frame (fi))
12238     {
12239       if (!is_known_support_routine (fi))
12240         {
12241           select_frame (fi);
12242           break;
12243         }
12244     }
12245
12246 }
12247
12248 /* Assuming that the inferior just triggered an unhandled exception
12249    catchpoint, return the address in inferior memory where the name
12250    of the exception is stored.
12251    
12252    Return zero if the address could not be computed.  */
12253
12254 static CORE_ADDR
12255 ada_unhandled_exception_name_addr (void)
12256 {
12257   return parse_and_eval_address ("e.full_name");
12258 }
12259
12260 /* Same as ada_unhandled_exception_name_addr, except that this function
12261    should be used when the inferior uses an older version of the runtime,
12262    where the exception name needs to be extracted from a specific frame
12263    several frames up in the callstack.  */
12264
12265 static CORE_ADDR
12266 ada_unhandled_exception_name_addr_from_raise (void)
12267 {
12268   int frame_level;
12269   struct frame_info *fi;
12270   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12271
12272   /* To determine the name of this exception, we need to select
12273      the frame corresponding to RAISE_SYM_NAME.  This frame is
12274      at least 3 levels up, so we simply skip the first 3 frames
12275      without checking the name of their associated function.  */
12276   fi = get_current_frame ();
12277   for (frame_level = 0; frame_level < 3; frame_level += 1)
12278     if (fi != NULL)
12279       fi = get_prev_frame (fi); 
12280
12281   while (fi != NULL)
12282     {
12283       enum language func_lang;
12284
12285       gdb::unique_xmalloc_ptr<char> func_name
12286         = find_frame_funname (fi, &func_lang, NULL);
12287       if (func_name != NULL)
12288         {
12289           if (strcmp (func_name.get (),
12290                       data->exception_info->catch_exception_sym) == 0)
12291             break; /* We found the frame we were looking for...  */
12292           fi = get_prev_frame (fi);
12293         }
12294     }
12295
12296   if (fi == NULL)
12297     return 0;
12298
12299   select_frame (fi);
12300   return parse_and_eval_address ("id.full_name");
12301 }
12302
12303 /* Assuming the inferior just triggered an Ada exception catchpoint
12304    (of any type), return the address in inferior memory where the name
12305    of the exception is stored, if applicable.
12306
12307    Assumes the selected frame is the current frame.
12308
12309    Return zero if the address could not be computed, or if not relevant.  */
12310
12311 static CORE_ADDR
12312 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12313                            struct breakpoint *b)
12314 {
12315   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12316
12317   switch (ex)
12318     {
12319       case ada_catch_exception:
12320         return (parse_and_eval_address ("e.full_name"));
12321         break;
12322
12323       case ada_catch_exception_unhandled:
12324         return data->exception_info->unhandled_exception_name_addr ();
12325         break;
12326       
12327       case ada_catch_assert:
12328         return 0;  /* Exception name is not relevant in this case.  */
12329         break;
12330
12331       default:
12332         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12333         break;
12334     }
12335
12336   return 0; /* Should never be reached.  */
12337 }
12338
12339 /* Assuming the inferior is stopped at an exception catchpoint,
12340    return the message which was associated to the exception, if
12341    available.  Return NULL if the message could not be retrieved.
12342
12343    The caller must xfree the string after use.
12344
12345    Note: The exception message can be associated to an exception
12346    either through the use of the Raise_Exception function, or
12347    more simply (Ada 2005 and later), via:
12348
12349        raise Exception_Name with "exception message";
12350
12351    */
12352
12353 static char *
12354 ada_exception_message_1 (void)
12355 {
12356   struct value *e_msg_val;
12357   char *e_msg = NULL;
12358   int e_msg_len;
12359   struct cleanup *cleanups;
12360
12361   /* For runtimes that support this feature, the exception message
12362      is passed as an unbounded string argument called "message".  */
12363   e_msg_val = parse_and_eval ("message");
12364   if (e_msg_val == NULL)
12365     return NULL; /* Exception message not supported.  */
12366
12367   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12368   gdb_assert (e_msg_val != NULL);
12369   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12370
12371   /* If the message string is empty, then treat it as if there was
12372      no exception message.  */
12373   if (e_msg_len <= 0)
12374     return NULL;
12375
12376   e_msg = (char *) xmalloc (e_msg_len + 1);
12377   cleanups = make_cleanup (xfree, e_msg);
12378   read_memory_string (value_address (e_msg_val), e_msg, e_msg_len + 1);
12379   e_msg[e_msg_len] = '\0';
12380
12381   discard_cleanups (cleanups);
12382   return e_msg;
12383 }
12384
12385 /* Same as ada_exception_message_1, except that all exceptions are
12386    contained here (returning NULL instead).  */
12387
12388 static char *
12389 ada_exception_message (void)
12390 {
12391   char *e_msg = NULL;  /* Avoid a spurious uninitialized warning.  */
12392
12393   TRY
12394     {
12395       e_msg = ada_exception_message_1 ();
12396     }
12397   CATCH (e, RETURN_MASK_ERROR)
12398     {
12399       e_msg = NULL;
12400     }
12401   END_CATCH
12402
12403   return e_msg;
12404 }
12405
12406 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12407    any error that ada_exception_name_addr_1 might cause to be thrown.
12408    When an error is intercepted, a warning with the error message is printed,
12409    and zero is returned.  */
12410
12411 static CORE_ADDR
12412 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12413                          struct breakpoint *b)
12414 {
12415   CORE_ADDR result = 0;
12416
12417   TRY
12418     {
12419       result = ada_exception_name_addr_1 (ex, b);
12420     }
12421
12422   CATCH (e, RETURN_MASK_ERROR)
12423     {
12424       warning (_("failed to get exception name: %s"), e.message);
12425       return 0;
12426     }
12427   END_CATCH
12428
12429   return result;
12430 }
12431
12432 static char *ada_exception_catchpoint_cond_string (const char *excep_string);
12433
12434 /* Ada catchpoints.
12435
12436    In the case of catchpoints on Ada exceptions, the catchpoint will
12437    stop the target on every exception the program throws.  When a user
12438    specifies the name of a specific exception, we translate this
12439    request into a condition expression (in text form), and then parse
12440    it into an expression stored in each of the catchpoint's locations.
12441    We then use this condition to check whether the exception that was
12442    raised is the one the user is interested in.  If not, then the
12443    target is resumed again.  We store the name of the requested
12444    exception, in order to be able to re-set the condition expression
12445    when symbols change.  */
12446
12447 /* An instance of this type is used to represent an Ada catchpoint
12448    breakpoint location.  */
12449
12450 class ada_catchpoint_location : public bp_location
12451 {
12452 public:
12453   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12454     : bp_location (ops, owner)
12455   {}
12456
12457   /* The condition that checks whether the exception that was raised
12458      is the specific exception the user specified on catchpoint
12459      creation.  */
12460   expression_up excep_cond_expr;
12461 };
12462
12463 /* Implement the DTOR method in the bp_location_ops structure for all
12464    Ada exception catchpoint kinds.  */
12465
12466 static void
12467 ada_catchpoint_location_dtor (struct bp_location *bl)
12468 {
12469   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12470
12471   al->excep_cond_expr.reset ();
12472 }
12473
12474 /* The vtable to be used in Ada catchpoint locations.  */
12475
12476 static const struct bp_location_ops ada_catchpoint_location_ops =
12477 {
12478   ada_catchpoint_location_dtor
12479 };
12480
12481 /* An instance of this type is used to represent an Ada catchpoint.  */
12482
12483 struct ada_catchpoint : public breakpoint
12484 {
12485   ~ada_catchpoint () override;
12486
12487   /* The name of the specific exception the user specified.  */
12488   char *excep_string;
12489 };
12490
12491 /* Parse the exception condition string in the context of each of the
12492    catchpoint's locations, and store them for later evaluation.  */
12493
12494 static void
12495 create_excep_cond_exprs (struct ada_catchpoint *c)
12496 {
12497   struct cleanup *old_chain;
12498   struct bp_location *bl;
12499   char *cond_string;
12500
12501   /* Nothing to do if there's no specific exception to catch.  */
12502   if (c->excep_string == NULL)
12503     return;
12504
12505   /* Same if there are no locations... */
12506   if (c->loc == NULL)
12507     return;
12508
12509   /* Compute the condition expression in text form, from the specific
12510      expection we want to catch.  */
12511   cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
12512   old_chain = make_cleanup (xfree, cond_string);
12513
12514   /* Iterate over all the catchpoint's locations, and parse an
12515      expression for each.  */
12516   for (bl = c->loc; bl != NULL; bl = bl->next)
12517     {
12518       struct ada_catchpoint_location *ada_loc
12519         = (struct ada_catchpoint_location *) bl;
12520       expression_up exp;
12521
12522       if (!bl->shlib_disabled)
12523         {
12524           const char *s;
12525
12526           s = cond_string;
12527           TRY
12528             {
12529               exp = parse_exp_1 (&s, bl->address,
12530                                  block_for_pc (bl->address),
12531                                  0);
12532             }
12533           CATCH (e, RETURN_MASK_ERROR)
12534             {
12535               warning (_("failed to reevaluate internal exception condition "
12536                          "for catchpoint %d: %s"),
12537                        c->number, e.message);
12538             }
12539           END_CATCH
12540         }
12541
12542       ada_loc->excep_cond_expr = std::move (exp);
12543     }
12544
12545   do_cleanups (old_chain);
12546 }
12547
12548 /* ada_catchpoint destructor.  */
12549
12550 ada_catchpoint::~ada_catchpoint ()
12551 {
12552   xfree (this->excep_string);
12553 }
12554
12555 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12556    structure for all exception catchpoint kinds.  */
12557
12558 static struct bp_location *
12559 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12560                              struct breakpoint *self)
12561 {
12562   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12563 }
12564
12565 /* Implement the RE_SET method in the breakpoint_ops structure for all
12566    exception catchpoint kinds.  */
12567
12568 static void
12569 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12570 {
12571   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12572
12573   /* Call the base class's method.  This updates the catchpoint's
12574      locations.  */
12575   bkpt_breakpoint_ops.re_set (b);
12576
12577   /* Reparse the exception conditional expressions.  One for each
12578      location.  */
12579   create_excep_cond_exprs (c);
12580 }
12581
12582 /* Returns true if we should stop for this breakpoint hit.  If the
12583    user specified a specific exception, we only want to cause a stop
12584    if the program thrown that exception.  */
12585
12586 static int
12587 should_stop_exception (const struct bp_location *bl)
12588 {
12589   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12590   const struct ada_catchpoint_location *ada_loc
12591     = (const struct ada_catchpoint_location *) bl;
12592   int stop;
12593
12594   /* With no specific exception, should always stop.  */
12595   if (c->excep_string == NULL)
12596     return 1;
12597
12598   if (ada_loc->excep_cond_expr == NULL)
12599     {
12600       /* We will have a NULL expression if back when we were creating
12601          the expressions, this location's had failed to parse.  */
12602       return 1;
12603     }
12604
12605   stop = 1;
12606   TRY
12607     {
12608       struct value *mark;
12609
12610       mark = value_mark ();
12611       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12612       value_free_to_mark (mark);
12613     }
12614   CATCH (ex, RETURN_MASK_ALL)
12615     {
12616       exception_fprintf (gdb_stderr, ex,
12617                          _("Error in testing exception condition:\n"));
12618     }
12619   END_CATCH
12620
12621   return stop;
12622 }
12623
12624 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12625    for all exception catchpoint kinds.  */
12626
12627 static void
12628 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12629 {
12630   bs->stop = should_stop_exception (bs->bp_location_at);
12631 }
12632
12633 /* Implement the PRINT_IT method in the breakpoint_ops structure
12634    for all exception catchpoint kinds.  */
12635
12636 static enum print_stop_action
12637 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12638 {
12639   struct ui_out *uiout = current_uiout;
12640   struct breakpoint *b = bs->breakpoint_at;
12641   char *exception_message;
12642
12643   annotate_catchpoint (b->number);
12644
12645   if (uiout->is_mi_like_p ())
12646     {
12647       uiout->field_string ("reason",
12648                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12649       uiout->field_string ("disp", bpdisp_text (b->disposition));
12650     }
12651
12652   uiout->text (b->disposition == disp_del
12653                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12654   uiout->field_int ("bkptno", b->number);
12655   uiout->text (", ");
12656
12657   /* ada_exception_name_addr relies on the selected frame being the
12658      current frame.  Need to do this here because this function may be
12659      called more than once when printing a stop, and below, we'll
12660      select the first frame past the Ada run-time (see
12661      ada_find_printable_frame).  */
12662   select_frame (get_current_frame ());
12663
12664   switch (ex)
12665     {
12666       case ada_catch_exception:
12667       case ada_catch_exception_unhandled:
12668         {
12669           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12670           char exception_name[256];
12671
12672           if (addr != 0)
12673             {
12674               read_memory (addr, (gdb_byte *) exception_name,
12675                            sizeof (exception_name) - 1);
12676               exception_name [sizeof (exception_name) - 1] = '\0';
12677             }
12678           else
12679             {
12680               /* For some reason, we were unable to read the exception
12681                  name.  This could happen if the Runtime was compiled
12682                  without debugging info, for instance.  In that case,
12683                  just replace the exception name by the generic string
12684                  "exception" - it will read as "an exception" in the
12685                  notification we are about to print.  */
12686               memcpy (exception_name, "exception", sizeof ("exception"));
12687             }
12688           /* In the case of unhandled exception breakpoints, we print
12689              the exception name as "unhandled EXCEPTION_NAME", to make
12690              it clearer to the user which kind of catchpoint just got
12691              hit.  We used ui_out_text to make sure that this extra
12692              info does not pollute the exception name in the MI case.  */
12693           if (ex == ada_catch_exception_unhandled)
12694             uiout->text ("unhandled ");
12695           uiout->field_string ("exception-name", exception_name);
12696         }
12697         break;
12698       case ada_catch_assert:
12699         /* In this case, the name of the exception is not really
12700            important.  Just print "failed assertion" to make it clearer
12701            that his program just hit an assertion-failure catchpoint.
12702            We used ui_out_text because this info does not belong in
12703            the MI output.  */
12704         uiout->text ("failed assertion");
12705         break;
12706     }
12707
12708   exception_message = ada_exception_message ();
12709   if (exception_message != NULL)
12710     {
12711       struct cleanup *cleanups = make_cleanup (xfree, exception_message);
12712
12713       uiout->text (" (");
12714       uiout->field_string ("exception-message", exception_message);
12715       uiout->text (")");
12716
12717       do_cleanups (cleanups);
12718     }
12719
12720   uiout->text (" at ");
12721   ada_find_printable_frame (get_current_frame ());
12722
12723   return PRINT_SRC_AND_LOC;
12724 }
12725
12726 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12727    for all exception catchpoint kinds.  */
12728
12729 static void
12730 print_one_exception (enum ada_exception_catchpoint_kind ex,
12731                      struct breakpoint *b, struct bp_location **last_loc)
12732
12733   struct ui_out *uiout = current_uiout;
12734   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12735   struct value_print_options opts;
12736
12737   get_user_print_options (&opts);
12738   if (opts.addressprint)
12739     {
12740       annotate_field (4);
12741       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12742     }
12743
12744   annotate_field (5);
12745   *last_loc = b->loc;
12746   switch (ex)
12747     {
12748       case ada_catch_exception:
12749         if (c->excep_string != NULL)
12750           {
12751             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12752
12753             uiout->field_string ("what", msg);
12754             xfree (msg);
12755           }
12756         else
12757           uiout->field_string ("what", "all Ada exceptions");
12758         
12759         break;
12760
12761       case ada_catch_exception_unhandled:
12762         uiout->field_string ("what", "unhandled Ada exceptions");
12763         break;
12764       
12765       case ada_catch_assert:
12766         uiout->field_string ("what", "failed Ada assertions");
12767         break;
12768
12769       default:
12770         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12771         break;
12772     }
12773 }
12774
12775 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12776    for all exception catchpoint kinds.  */
12777
12778 static void
12779 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12780                          struct breakpoint *b)
12781 {
12782   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12783   struct ui_out *uiout = current_uiout;
12784
12785   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12786                                                  : _("Catchpoint "));
12787   uiout->field_int ("bkptno", b->number);
12788   uiout->text (": ");
12789
12790   switch (ex)
12791     {
12792       case ada_catch_exception:
12793         if (c->excep_string != NULL)
12794           {
12795             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12796             struct cleanup *old_chain = make_cleanup (xfree, info);
12797
12798             uiout->text (info);
12799             do_cleanups (old_chain);
12800           }
12801         else
12802           uiout->text (_("all Ada exceptions"));
12803         break;
12804
12805       case ada_catch_exception_unhandled:
12806         uiout->text (_("unhandled Ada exceptions"));
12807         break;
12808       
12809       case ada_catch_assert:
12810         uiout->text (_("failed Ada assertions"));
12811         break;
12812
12813       default:
12814         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12815         break;
12816     }
12817 }
12818
12819 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12820    for all exception catchpoint kinds.  */
12821
12822 static void
12823 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12824                           struct breakpoint *b, struct ui_file *fp)
12825 {
12826   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12827
12828   switch (ex)
12829     {
12830       case ada_catch_exception:
12831         fprintf_filtered (fp, "catch exception");
12832         if (c->excep_string != NULL)
12833           fprintf_filtered (fp, " %s", c->excep_string);
12834         break;
12835
12836       case ada_catch_exception_unhandled:
12837         fprintf_filtered (fp, "catch exception unhandled");
12838         break;
12839
12840       case ada_catch_assert:
12841         fprintf_filtered (fp, "catch assert");
12842         break;
12843
12844       default:
12845         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12846     }
12847   print_recreate_thread (b, fp);
12848 }
12849
12850 /* Virtual table for "catch exception" breakpoints.  */
12851
12852 static struct bp_location *
12853 allocate_location_catch_exception (struct breakpoint *self)
12854 {
12855   return allocate_location_exception (ada_catch_exception, self);
12856 }
12857
12858 static void
12859 re_set_catch_exception (struct breakpoint *b)
12860 {
12861   re_set_exception (ada_catch_exception, b);
12862 }
12863
12864 static void
12865 check_status_catch_exception (bpstat bs)
12866 {
12867   check_status_exception (ada_catch_exception, bs);
12868 }
12869
12870 static enum print_stop_action
12871 print_it_catch_exception (bpstat bs)
12872 {
12873   return print_it_exception (ada_catch_exception, bs);
12874 }
12875
12876 static void
12877 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12878 {
12879   print_one_exception (ada_catch_exception, b, last_loc);
12880 }
12881
12882 static void
12883 print_mention_catch_exception (struct breakpoint *b)
12884 {
12885   print_mention_exception (ada_catch_exception, b);
12886 }
12887
12888 static void
12889 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12890 {
12891   print_recreate_exception (ada_catch_exception, b, fp);
12892 }
12893
12894 static struct breakpoint_ops catch_exception_breakpoint_ops;
12895
12896 /* Virtual table for "catch exception unhandled" breakpoints.  */
12897
12898 static struct bp_location *
12899 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12900 {
12901   return allocate_location_exception (ada_catch_exception_unhandled, self);
12902 }
12903
12904 static void
12905 re_set_catch_exception_unhandled (struct breakpoint *b)
12906 {
12907   re_set_exception (ada_catch_exception_unhandled, b);
12908 }
12909
12910 static void
12911 check_status_catch_exception_unhandled (bpstat bs)
12912 {
12913   check_status_exception (ada_catch_exception_unhandled, bs);
12914 }
12915
12916 static enum print_stop_action
12917 print_it_catch_exception_unhandled (bpstat bs)
12918 {
12919   return print_it_exception (ada_catch_exception_unhandled, bs);
12920 }
12921
12922 static void
12923 print_one_catch_exception_unhandled (struct breakpoint *b,
12924                                      struct bp_location **last_loc)
12925 {
12926   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12927 }
12928
12929 static void
12930 print_mention_catch_exception_unhandled (struct breakpoint *b)
12931 {
12932   print_mention_exception (ada_catch_exception_unhandled, b);
12933 }
12934
12935 static void
12936 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12937                                           struct ui_file *fp)
12938 {
12939   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12940 }
12941
12942 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12943
12944 /* Virtual table for "catch assert" breakpoints.  */
12945
12946 static struct bp_location *
12947 allocate_location_catch_assert (struct breakpoint *self)
12948 {
12949   return allocate_location_exception (ada_catch_assert, self);
12950 }
12951
12952 static void
12953 re_set_catch_assert (struct breakpoint *b)
12954 {
12955   re_set_exception (ada_catch_assert, b);
12956 }
12957
12958 static void
12959 check_status_catch_assert (bpstat bs)
12960 {
12961   check_status_exception (ada_catch_assert, bs);
12962 }
12963
12964 static enum print_stop_action
12965 print_it_catch_assert (bpstat bs)
12966 {
12967   return print_it_exception (ada_catch_assert, bs);
12968 }
12969
12970 static void
12971 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12972 {
12973   print_one_exception (ada_catch_assert, b, last_loc);
12974 }
12975
12976 static void
12977 print_mention_catch_assert (struct breakpoint *b)
12978 {
12979   print_mention_exception (ada_catch_assert, b);
12980 }
12981
12982 static void
12983 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12984 {
12985   print_recreate_exception (ada_catch_assert, b, fp);
12986 }
12987
12988 static struct breakpoint_ops catch_assert_breakpoint_ops;
12989
12990 /* Return a newly allocated copy of the first space-separated token
12991    in ARGSP, and then adjust ARGSP to point immediately after that
12992    token.
12993
12994    Return NULL if ARGPS does not contain any more tokens.  */
12995
12996 static char *
12997 ada_get_next_arg (const char **argsp)
12998 {
12999   const char *args = *argsp;
13000   const char *end;
13001   char *result;
13002
13003   args = skip_spaces (args);
13004   if (args[0] == '\0')
13005     return NULL; /* No more arguments.  */
13006   
13007   /* Find the end of the current argument.  */
13008
13009   end = skip_to_space (args);
13010
13011   /* Adjust ARGSP to point to the start of the next argument.  */
13012
13013   *argsp = end;
13014
13015   /* Make a copy of the current argument and return it.  */
13016
13017   result = (char *) xmalloc (end - args + 1);
13018   strncpy (result, args, end - args);
13019   result[end - args] = '\0';
13020   
13021   return result;
13022 }
13023
13024 /* Split the arguments specified in a "catch exception" command.  
13025    Set EX to the appropriate catchpoint type.
13026    Set EXCEP_STRING to the name of the specific exception if
13027    specified by the user.
13028    If a condition is found at the end of the arguments, the condition
13029    expression is stored in COND_STRING (memory must be deallocated
13030    after use).  Otherwise COND_STRING is set to NULL.  */
13031
13032 static void
13033 catch_ada_exception_command_split (const char *args,
13034                                    enum ada_exception_catchpoint_kind *ex,
13035                                    char **excep_string,
13036                                    char **cond_string)
13037 {
13038   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
13039   char *exception_name;
13040   char *cond = NULL;
13041
13042   exception_name = ada_get_next_arg (&args);
13043   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
13044     {
13045       /* This is not an exception name; this is the start of a condition
13046          expression for a catchpoint on all exceptions.  So, "un-get"
13047          this token, and set exception_name to NULL.  */
13048       xfree (exception_name);
13049       exception_name = NULL;
13050       args -= 2;
13051     }
13052   make_cleanup (xfree, exception_name);
13053
13054   /* Check to see if we have a condition.  */
13055
13056   args = skip_spaces (args);
13057   if (startswith (args, "if")
13058       && (isspace (args[2]) || args[2] == '\0'))
13059     {
13060       args += 2;
13061       args = skip_spaces (args);
13062
13063       if (args[0] == '\0')
13064         error (_("Condition missing after `if' keyword"));
13065       cond = xstrdup (args);
13066       make_cleanup (xfree, cond);
13067
13068       args += strlen (args);
13069     }
13070
13071   /* Check that we do not have any more arguments.  Anything else
13072      is unexpected.  */
13073
13074   if (args[0] != '\0')
13075     error (_("Junk at end of expression"));
13076
13077   discard_cleanups (old_chain);
13078
13079   if (exception_name == NULL)
13080     {
13081       /* Catch all exceptions.  */
13082       *ex = ada_catch_exception;
13083       *excep_string = NULL;
13084     }
13085   else if (strcmp (exception_name, "unhandled") == 0)
13086     {
13087       /* Catch unhandled exceptions.  */
13088       *ex = ada_catch_exception_unhandled;
13089       *excep_string = NULL;
13090     }
13091   else
13092     {
13093       /* Catch a specific exception.  */
13094       *ex = ada_catch_exception;
13095       *excep_string = exception_name;
13096     }
13097   *cond_string = cond;
13098 }
13099
13100 /* Return the name of the symbol on which we should break in order to
13101    implement a catchpoint of the EX kind.  */
13102
13103 static const char *
13104 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13105 {
13106   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13107
13108   gdb_assert (data->exception_info != NULL);
13109
13110   switch (ex)
13111     {
13112       case ada_catch_exception:
13113         return (data->exception_info->catch_exception_sym);
13114         break;
13115       case ada_catch_exception_unhandled:
13116         return (data->exception_info->catch_exception_unhandled_sym);
13117         break;
13118       case ada_catch_assert:
13119         return (data->exception_info->catch_assert_sym);
13120         break;
13121       default:
13122         internal_error (__FILE__, __LINE__,
13123                         _("unexpected catchpoint kind (%d)"), ex);
13124     }
13125 }
13126
13127 /* Return the breakpoint ops "virtual table" used for catchpoints
13128    of the EX kind.  */
13129
13130 static const struct breakpoint_ops *
13131 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13132 {
13133   switch (ex)
13134     {
13135       case ada_catch_exception:
13136         return (&catch_exception_breakpoint_ops);
13137         break;
13138       case ada_catch_exception_unhandled:
13139         return (&catch_exception_unhandled_breakpoint_ops);
13140         break;
13141       case ada_catch_assert:
13142         return (&catch_assert_breakpoint_ops);
13143         break;
13144       default:
13145         internal_error (__FILE__, __LINE__,
13146                         _("unexpected catchpoint kind (%d)"), ex);
13147     }
13148 }
13149
13150 /* Return the condition that will be used to match the current exception
13151    being raised with the exception that the user wants to catch.  This
13152    assumes that this condition is used when the inferior just triggered
13153    an exception catchpoint.
13154    
13155    The string returned is a newly allocated string that needs to be
13156    deallocated later.  */
13157
13158 static char *
13159 ada_exception_catchpoint_cond_string (const char *excep_string)
13160 {
13161   int i;
13162
13163   /* The standard exceptions are a special case.  They are defined in
13164      runtime units that have been compiled without debugging info; if
13165      EXCEP_STRING is the not-fully-qualified name of a standard
13166      exception (e.g. "constraint_error") then, during the evaluation
13167      of the condition expression, the symbol lookup on this name would
13168      *not* return this standard exception.  The catchpoint condition
13169      may then be set only on user-defined exceptions which have the
13170      same not-fully-qualified name (e.g. my_package.constraint_error).
13171
13172      To avoid this unexcepted behavior, these standard exceptions are
13173      systematically prefixed by "standard".  This means that "catch
13174      exception constraint_error" is rewritten into "catch exception
13175      standard.constraint_error".
13176
13177      If an exception named contraint_error is defined in another package of
13178      the inferior program, then the only way to specify this exception as a
13179      breakpoint condition is to use its fully-qualified named:
13180      e.g. my_package.constraint_error.  */
13181
13182   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13183     {
13184       if (strcmp (standard_exc [i], excep_string) == 0)
13185         {
13186           return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
13187                              excep_string);
13188         }
13189     }
13190   return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
13191 }
13192
13193 /* Return the symtab_and_line that should be used to insert an exception
13194    catchpoint of the TYPE kind.
13195
13196    EXCEP_STRING should contain the name of a specific exception that
13197    the catchpoint should catch, or NULL otherwise.
13198
13199    ADDR_STRING returns the name of the function where the real
13200    breakpoint that implements the catchpoints is set, depending on the
13201    type of catchpoint we need to create.  */
13202
13203 static struct symtab_and_line
13204 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
13205                    const char **addr_string, const struct breakpoint_ops **ops)
13206 {
13207   const char *sym_name;
13208   struct symbol *sym;
13209
13210   /* First, find out which exception support info to use.  */
13211   ada_exception_support_info_sniffer ();
13212
13213   /* Then lookup the function on which we will break in order to catch
13214      the Ada exceptions requested by the user.  */
13215   sym_name = ada_exception_sym_name (ex);
13216   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13217
13218   /* We can assume that SYM is not NULL at this stage.  If the symbol
13219      did not exist, ada_exception_support_info_sniffer would have
13220      raised an exception.
13221
13222      Also, ada_exception_support_info_sniffer should have already
13223      verified that SYM is a function symbol.  */
13224   gdb_assert (sym != NULL);
13225   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
13226
13227   /* Set ADDR_STRING.  */
13228   *addr_string = xstrdup (sym_name);
13229
13230   /* Set OPS.  */
13231   *ops = ada_exception_breakpoint_ops (ex);
13232
13233   return find_function_start_sal (sym, 1);
13234 }
13235
13236 /* Create an Ada exception catchpoint.
13237
13238    EX_KIND is the kind of exception catchpoint to be created.
13239
13240    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
13241    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13242    of the exception to which this catchpoint applies.  When not NULL,
13243    the string must be allocated on the heap, and its deallocation
13244    is no longer the responsibility of the caller.
13245
13246    COND_STRING, if not NULL, is the catchpoint condition.  This string
13247    must be allocated on the heap, and its deallocation is no longer
13248    the responsibility of the caller.
13249
13250    TEMPFLAG, if nonzero, means that the underlying breakpoint
13251    should be temporary.
13252
13253    FROM_TTY is the usual argument passed to all commands implementations.  */
13254
13255 void
13256 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13257                                  enum ada_exception_catchpoint_kind ex_kind,
13258                                  char *excep_string,
13259                                  char *cond_string,
13260                                  int tempflag,
13261                                  int disabled,
13262                                  int from_tty)
13263 {
13264   const char *addr_string = NULL;
13265   const struct breakpoint_ops *ops = NULL;
13266   struct symtab_and_line sal
13267     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
13268
13269   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13270   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13271                                  ops, tempflag, disabled, from_tty);
13272   c->excep_string = excep_string;
13273   create_excep_cond_exprs (c.get ());
13274   if (cond_string != NULL)
13275     set_breakpoint_condition (c.get (), cond_string, from_tty);
13276   install_breakpoint (0, std::move (c), 1);
13277 }
13278
13279 /* Implement the "catch exception" command.  */
13280
13281 static void
13282 catch_ada_exception_command (const char *arg_entry, int from_tty,
13283                              struct cmd_list_element *command)
13284 {
13285   const char *arg = arg_entry;
13286   struct gdbarch *gdbarch = get_current_arch ();
13287   int tempflag;
13288   enum ada_exception_catchpoint_kind ex_kind;
13289   char *excep_string = NULL;
13290   char *cond_string = NULL;
13291
13292   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13293
13294   if (!arg)
13295     arg = "";
13296   catch_ada_exception_command_split (arg, &ex_kind, &excep_string,
13297                                      &cond_string);
13298   create_ada_exception_catchpoint (gdbarch, ex_kind,
13299                                    excep_string, cond_string,
13300                                    tempflag, 1 /* enabled */,
13301                                    from_tty);
13302 }
13303
13304 /* Split the arguments specified in a "catch assert" command.
13305
13306    ARGS contains the command's arguments (or the empty string if
13307    no arguments were passed).
13308
13309    If ARGS contains a condition, set COND_STRING to that condition
13310    (the memory needs to be deallocated after use).  */
13311
13312 static void
13313 catch_ada_assert_command_split (const char *args, char **cond_string)
13314 {
13315   args = skip_spaces (args);
13316
13317   /* Check whether a condition was provided.  */
13318   if (startswith (args, "if")
13319       && (isspace (args[2]) || args[2] == '\0'))
13320     {
13321       args += 2;
13322       args = skip_spaces (args);
13323       if (args[0] == '\0')
13324         error (_("condition missing after `if' keyword"));
13325       *cond_string = xstrdup (args);
13326     }
13327
13328   /* Otherwise, there should be no other argument at the end of
13329      the command.  */
13330   else if (args[0] != '\0')
13331     error (_("Junk at end of arguments."));
13332 }
13333
13334 /* Implement the "catch assert" command.  */
13335
13336 static void
13337 catch_assert_command (const char *arg_entry, int from_tty,
13338                       struct cmd_list_element *command)
13339 {
13340   const char *arg = arg_entry;
13341   struct gdbarch *gdbarch = get_current_arch ();
13342   int tempflag;
13343   char *cond_string = NULL;
13344
13345   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13346
13347   if (!arg)
13348     arg = "";
13349   catch_ada_assert_command_split (arg, &cond_string);
13350   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13351                                    NULL, cond_string,
13352                                    tempflag, 1 /* enabled */,
13353                                    from_tty);
13354 }
13355
13356 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13357
13358 static int
13359 ada_is_exception_sym (struct symbol *sym)
13360 {
13361   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
13362
13363   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13364           && SYMBOL_CLASS (sym) != LOC_BLOCK
13365           && SYMBOL_CLASS (sym) != LOC_CONST
13366           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13367           && type_name != NULL && strcmp (type_name, "exception") == 0);
13368 }
13369
13370 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13371    Ada exception object.  This matches all exceptions except the ones
13372    defined by the Ada language.  */
13373
13374 static int
13375 ada_is_non_standard_exception_sym (struct symbol *sym)
13376 {
13377   int i;
13378
13379   if (!ada_is_exception_sym (sym))
13380     return 0;
13381
13382   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13383     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13384       return 0;  /* A standard exception.  */
13385
13386   /* Numeric_Error is also a standard exception, so exclude it.
13387      See the STANDARD_EXC description for more details as to why
13388      this exception is not listed in that array.  */
13389   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13390     return 0;
13391
13392   return 1;
13393 }
13394
13395 /* A helper function for std::sort, comparing two struct ada_exc_info
13396    objects.
13397
13398    The comparison is determined first by exception name, and then
13399    by exception address.  */
13400
13401 bool
13402 ada_exc_info::operator< (const ada_exc_info &other) const
13403 {
13404   int result;
13405
13406   result = strcmp (name, other.name);
13407   if (result < 0)
13408     return true;
13409   if (result == 0 && addr < other.addr)
13410     return true;
13411   return false;
13412 }
13413
13414 bool
13415 ada_exc_info::operator== (const ada_exc_info &other) const
13416 {
13417   return addr == other.addr && strcmp (name, other.name) == 0;
13418 }
13419
13420 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13421    routine, but keeping the first SKIP elements untouched.
13422
13423    All duplicates are also removed.  */
13424
13425 static void
13426 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13427                                       int skip)
13428 {
13429   std::sort (exceptions->begin () + skip, exceptions->end ());
13430   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13431                      exceptions->end ());
13432 }
13433
13434 /* Add all exceptions defined by the Ada standard whose name match
13435    a regular expression.
13436
13437    If PREG is not NULL, then this regexp_t object is used to
13438    perform the symbol name matching.  Otherwise, no name-based
13439    filtering is performed.
13440
13441    EXCEPTIONS is a vector of exceptions to which matching exceptions
13442    gets pushed.  */
13443
13444 static void
13445 ada_add_standard_exceptions (compiled_regex *preg,
13446                              std::vector<ada_exc_info> *exceptions)
13447 {
13448   int i;
13449
13450   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13451     {
13452       if (preg == NULL
13453           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13454         {
13455           struct bound_minimal_symbol msymbol
13456             = ada_lookup_simple_minsym (standard_exc[i]);
13457
13458           if (msymbol.minsym != NULL)
13459             {
13460               struct ada_exc_info info
13461                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13462
13463               exceptions->push_back (info);
13464             }
13465         }
13466     }
13467 }
13468
13469 /* Add all Ada exceptions defined locally and accessible from the given
13470    FRAME.
13471
13472    If PREG is not NULL, then this regexp_t object is used to
13473    perform the symbol name matching.  Otherwise, no name-based
13474    filtering is performed.
13475
13476    EXCEPTIONS is a vector of exceptions to which matching exceptions
13477    gets pushed.  */
13478
13479 static void
13480 ada_add_exceptions_from_frame (compiled_regex *preg,
13481                                struct frame_info *frame,
13482                                std::vector<ada_exc_info> *exceptions)
13483 {
13484   const struct block *block = get_frame_block (frame, 0);
13485
13486   while (block != 0)
13487     {
13488       struct block_iterator iter;
13489       struct symbol *sym;
13490
13491       ALL_BLOCK_SYMBOLS (block, iter, sym)
13492         {
13493           switch (SYMBOL_CLASS (sym))
13494             {
13495             case LOC_TYPEDEF:
13496             case LOC_BLOCK:
13497             case LOC_CONST:
13498               break;
13499             default:
13500               if (ada_is_exception_sym (sym))
13501                 {
13502                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13503                                               SYMBOL_VALUE_ADDRESS (sym)};
13504
13505                   exceptions->push_back (info);
13506                 }
13507             }
13508         }
13509       if (BLOCK_FUNCTION (block) != NULL)
13510         break;
13511       block = BLOCK_SUPERBLOCK (block);
13512     }
13513 }
13514
13515 /* Return true if NAME matches PREG or if PREG is NULL.  */
13516
13517 static bool
13518 name_matches_regex (const char *name, compiled_regex *preg)
13519 {
13520   return (preg == NULL
13521           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13522 }
13523
13524 /* Add all exceptions defined globally whose name name match
13525    a regular expression, excluding standard exceptions.
13526
13527    The reason we exclude standard exceptions is that they need
13528    to be handled separately: Standard exceptions are defined inside
13529    a runtime unit which is normally not compiled with debugging info,
13530    and thus usually do not show up in our symbol search.  However,
13531    if the unit was in fact built with debugging info, we need to
13532    exclude them because they would duplicate the entry we found
13533    during the special loop that specifically searches for those
13534    standard exceptions.
13535
13536    If PREG is not NULL, then this regexp_t object is used to
13537    perform the symbol name matching.  Otherwise, no name-based
13538    filtering is performed.
13539
13540    EXCEPTIONS is a vector of exceptions to which matching exceptions
13541    gets pushed.  */
13542
13543 static void
13544 ada_add_global_exceptions (compiled_regex *preg,
13545                            std::vector<ada_exc_info> *exceptions)
13546 {
13547   struct objfile *objfile;
13548   struct compunit_symtab *s;
13549
13550   /* In Ada, the symbol "search name" is a linkage name, whereas the
13551      regular expression used to do the matching refers to the natural
13552      name.  So match against the decoded name.  */
13553   expand_symtabs_matching (NULL,
13554                            lookup_name_info::match_any (),
13555                            [&] (const char *search_name)
13556                            {
13557                              const char *decoded = ada_decode (search_name);
13558                              return name_matches_regex (decoded, preg);
13559                            },
13560                            NULL,
13561                            VARIABLES_DOMAIN);
13562
13563   ALL_COMPUNITS (objfile, s)
13564     {
13565       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13566       int i;
13567
13568       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13569         {
13570           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13571           struct block_iterator iter;
13572           struct symbol *sym;
13573
13574           ALL_BLOCK_SYMBOLS (b, iter, sym)
13575             if (ada_is_non_standard_exception_sym (sym)
13576                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13577               {
13578                 struct ada_exc_info info
13579                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13580
13581                 exceptions->push_back (info);
13582               }
13583         }
13584     }
13585 }
13586
13587 /* Implements ada_exceptions_list with the regular expression passed
13588    as a regex_t, rather than a string.
13589
13590    If not NULL, PREG is used to filter out exceptions whose names
13591    do not match.  Otherwise, all exceptions are listed.  */
13592
13593 static std::vector<ada_exc_info>
13594 ada_exceptions_list_1 (compiled_regex *preg)
13595 {
13596   std::vector<ada_exc_info> result;
13597   int prev_len;
13598
13599   /* First, list the known standard exceptions.  These exceptions
13600      need to be handled separately, as they are usually defined in
13601      runtime units that have been compiled without debugging info.  */
13602
13603   ada_add_standard_exceptions (preg, &result);
13604
13605   /* Next, find all exceptions whose scope is local and accessible
13606      from the currently selected frame.  */
13607
13608   if (has_stack_frames ())
13609     {
13610       prev_len = result.size ();
13611       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13612                                      &result);
13613       if (result.size () > prev_len)
13614         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13615     }
13616
13617   /* Add all exceptions whose scope is global.  */
13618
13619   prev_len = result.size ();
13620   ada_add_global_exceptions (preg, &result);
13621   if (result.size () > prev_len)
13622     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13623
13624   return result;
13625 }
13626
13627 /* Return a vector of ada_exc_info.
13628
13629    If REGEXP is NULL, all exceptions are included in the result.
13630    Otherwise, it should contain a valid regular expression,
13631    and only the exceptions whose names match that regular expression
13632    are included in the result.
13633
13634    The exceptions are sorted in the following order:
13635      - Standard exceptions (defined by the Ada language), in
13636        alphabetical order;
13637      - Exceptions only visible from the current frame, in
13638        alphabetical order;
13639      - Exceptions whose scope is global, in alphabetical order.  */
13640
13641 std::vector<ada_exc_info>
13642 ada_exceptions_list (const char *regexp)
13643 {
13644   if (regexp == NULL)
13645     return ada_exceptions_list_1 (NULL);
13646
13647   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13648   return ada_exceptions_list_1 (&reg);
13649 }
13650
13651 /* Implement the "info exceptions" command.  */
13652
13653 static void
13654 info_exceptions_command (const char *regexp, int from_tty)
13655 {
13656   struct gdbarch *gdbarch = get_current_arch ();
13657
13658   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13659
13660   if (regexp != NULL)
13661     printf_filtered
13662       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13663   else
13664     printf_filtered (_("All defined Ada exceptions:\n"));
13665
13666   for (const ada_exc_info &info : exceptions)
13667     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13668 }
13669
13670                                 /* Operators */
13671 /* Information about operators given special treatment in functions
13672    below.  */
13673 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13674
13675 #define ADA_OPERATORS \
13676     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13677     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13678     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13679     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13680     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13681     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13682     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13683     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13684     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13685     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13686     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13687     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13688     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13689     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13690     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13691     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13692     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13693     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13694     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13695
13696 static void
13697 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13698                      int *argsp)
13699 {
13700   switch (exp->elts[pc - 1].opcode)
13701     {
13702     default:
13703       operator_length_standard (exp, pc, oplenp, argsp);
13704       break;
13705
13706 #define OP_DEFN(op, len, args, binop) \
13707     case op: *oplenp = len; *argsp = args; break;
13708       ADA_OPERATORS;
13709 #undef OP_DEFN
13710
13711     case OP_AGGREGATE:
13712       *oplenp = 3;
13713       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13714       break;
13715
13716     case OP_CHOICES:
13717       *oplenp = 3;
13718       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13719       break;
13720     }
13721 }
13722
13723 /* Implementation of the exp_descriptor method operator_check.  */
13724
13725 static int
13726 ada_operator_check (struct expression *exp, int pos,
13727                     int (*objfile_func) (struct objfile *objfile, void *data),
13728                     void *data)
13729 {
13730   const union exp_element *const elts = exp->elts;
13731   struct type *type = NULL;
13732
13733   switch (elts[pos].opcode)
13734     {
13735       case UNOP_IN_RANGE:
13736       case UNOP_QUAL:
13737         type = elts[pos + 1].type;
13738         break;
13739
13740       default:
13741         return operator_check_standard (exp, pos, objfile_func, data);
13742     }
13743
13744   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13745
13746   if (type && TYPE_OBJFILE (type)
13747       && (*objfile_func) (TYPE_OBJFILE (type), data))
13748     return 1;
13749
13750   return 0;
13751 }
13752
13753 static const char *
13754 ada_op_name (enum exp_opcode opcode)
13755 {
13756   switch (opcode)
13757     {
13758     default:
13759       return op_name_standard (opcode);
13760
13761 #define OP_DEFN(op, len, args, binop) case op: return #op;
13762       ADA_OPERATORS;
13763 #undef OP_DEFN
13764
13765     case OP_AGGREGATE:
13766       return "OP_AGGREGATE";
13767     case OP_CHOICES:
13768       return "OP_CHOICES";
13769     case OP_NAME:
13770       return "OP_NAME";
13771     }
13772 }
13773
13774 /* As for operator_length, but assumes PC is pointing at the first
13775    element of the operator, and gives meaningful results only for the 
13776    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13777
13778 static void
13779 ada_forward_operator_length (struct expression *exp, int pc,
13780                              int *oplenp, int *argsp)
13781 {
13782   switch (exp->elts[pc].opcode)
13783     {
13784     default:
13785       *oplenp = *argsp = 0;
13786       break;
13787
13788 #define OP_DEFN(op, len, args, binop) \
13789     case op: *oplenp = len; *argsp = args; break;
13790       ADA_OPERATORS;
13791 #undef OP_DEFN
13792
13793     case OP_AGGREGATE:
13794       *oplenp = 3;
13795       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13796       break;
13797
13798     case OP_CHOICES:
13799       *oplenp = 3;
13800       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13801       break;
13802
13803     case OP_STRING:
13804     case OP_NAME:
13805       {
13806         int len = longest_to_int (exp->elts[pc + 1].longconst);
13807
13808         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13809         *argsp = 0;
13810         break;
13811       }
13812     }
13813 }
13814
13815 static int
13816 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13817 {
13818   enum exp_opcode op = exp->elts[elt].opcode;
13819   int oplen, nargs;
13820   int pc = elt;
13821   int i;
13822
13823   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13824
13825   switch (op)
13826     {
13827       /* Ada attributes ('Foo).  */
13828     case OP_ATR_FIRST:
13829     case OP_ATR_LAST:
13830     case OP_ATR_LENGTH:
13831     case OP_ATR_IMAGE:
13832     case OP_ATR_MAX:
13833     case OP_ATR_MIN:
13834     case OP_ATR_MODULUS:
13835     case OP_ATR_POS:
13836     case OP_ATR_SIZE:
13837     case OP_ATR_TAG:
13838     case OP_ATR_VAL:
13839       break;
13840
13841     case UNOP_IN_RANGE:
13842     case UNOP_QUAL:
13843       /* XXX: gdb_sprint_host_address, type_sprint */
13844       fprintf_filtered (stream, _("Type @"));
13845       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13846       fprintf_filtered (stream, " (");
13847       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13848       fprintf_filtered (stream, ")");
13849       break;
13850     case BINOP_IN_BOUNDS:
13851       fprintf_filtered (stream, " (%d)",
13852                         longest_to_int (exp->elts[pc + 2].longconst));
13853       break;
13854     case TERNOP_IN_RANGE:
13855       break;
13856
13857     case OP_AGGREGATE:
13858     case OP_OTHERS:
13859     case OP_DISCRETE_RANGE:
13860     case OP_POSITIONAL:
13861     case OP_CHOICES:
13862       break;
13863
13864     case OP_NAME:
13865     case OP_STRING:
13866       {
13867         char *name = &exp->elts[elt + 2].string;
13868         int len = longest_to_int (exp->elts[elt + 1].longconst);
13869
13870         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13871         break;
13872       }
13873
13874     default:
13875       return dump_subexp_body_standard (exp, stream, elt);
13876     }
13877
13878   elt += oplen;
13879   for (i = 0; i < nargs; i += 1)
13880     elt = dump_subexp (exp, stream, elt);
13881
13882   return elt;
13883 }
13884
13885 /* The Ada extension of print_subexp (q.v.).  */
13886
13887 static void
13888 ada_print_subexp (struct expression *exp, int *pos,
13889                   struct ui_file *stream, enum precedence prec)
13890 {
13891   int oplen, nargs, i;
13892   int pc = *pos;
13893   enum exp_opcode op = exp->elts[pc].opcode;
13894
13895   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13896
13897   *pos += oplen;
13898   switch (op)
13899     {
13900     default:
13901       *pos -= oplen;
13902       print_subexp_standard (exp, pos, stream, prec);
13903       return;
13904
13905     case OP_VAR_VALUE:
13906       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13907       return;
13908
13909     case BINOP_IN_BOUNDS:
13910       /* XXX: sprint_subexp */
13911       print_subexp (exp, pos, stream, PREC_SUFFIX);
13912       fputs_filtered (" in ", stream);
13913       print_subexp (exp, pos, stream, PREC_SUFFIX);
13914       fputs_filtered ("'range", stream);
13915       if (exp->elts[pc + 1].longconst > 1)
13916         fprintf_filtered (stream, "(%ld)",
13917                           (long) exp->elts[pc + 1].longconst);
13918       return;
13919
13920     case TERNOP_IN_RANGE:
13921       if (prec >= PREC_EQUAL)
13922         fputs_filtered ("(", stream);
13923       /* XXX: sprint_subexp */
13924       print_subexp (exp, pos, stream, PREC_SUFFIX);
13925       fputs_filtered (" in ", stream);
13926       print_subexp (exp, pos, stream, PREC_EQUAL);
13927       fputs_filtered (" .. ", stream);
13928       print_subexp (exp, pos, stream, PREC_EQUAL);
13929       if (prec >= PREC_EQUAL)
13930         fputs_filtered (")", stream);
13931       return;
13932
13933     case OP_ATR_FIRST:
13934     case OP_ATR_LAST:
13935     case OP_ATR_LENGTH:
13936     case OP_ATR_IMAGE:
13937     case OP_ATR_MAX:
13938     case OP_ATR_MIN:
13939     case OP_ATR_MODULUS:
13940     case OP_ATR_POS:
13941     case OP_ATR_SIZE:
13942     case OP_ATR_TAG:
13943     case OP_ATR_VAL:
13944       if (exp->elts[*pos].opcode == OP_TYPE)
13945         {
13946           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13947             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13948                            &type_print_raw_options);
13949           *pos += 3;
13950         }
13951       else
13952         print_subexp (exp, pos, stream, PREC_SUFFIX);
13953       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13954       if (nargs > 1)
13955         {
13956           int tem;
13957
13958           for (tem = 1; tem < nargs; tem += 1)
13959             {
13960               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13961               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13962             }
13963           fputs_filtered (")", stream);
13964         }
13965       return;
13966
13967     case UNOP_QUAL:
13968       type_print (exp->elts[pc + 1].type, "", stream, 0);
13969       fputs_filtered ("'(", stream);
13970       print_subexp (exp, pos, stream, PREC_PREFIX);
13971       fputs_filtered (")", stream);
13972       return;
13973
13974     case UNOP_IN_RANGE:
13975       /* XXX: sprint_subexp */
13976       print_subexp (exp, pos, stream, PREC_SUFFIX);
13977       fputs_filtered (" in ", stream);
13978       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13979                      &type_print_raw_options);
13980       return;
13981
13982     case OP_DISCRETE_RANGE:
13983       print_subexp (exp, pos, stream, PREC_SUFFIX);
13984       fputs_filtered ("..", stream);
13985       print_subexp (exp, pos, stream, PREC_SUFFIX);
13986       return;
13987
13988     case OP_OTHERS:
13989       fputs_filtered ("others => ", stream);
13990       print_subexp (exp, pos, stream, PREC_SUFFIX);
13991       return;
13992
13993     case OP_CHOICES:
13994       for (i = 0; i < nargs-1; i += 1)
13995         {
13996           if (i > 0)
13997             fputs_filtered ("|", stream);
13998           print_subexp (exp, pos, stream, PREC_SUFFIX);
13999         }
14000       fputs_filtered (" => ", stream);
14001       print_subexp (exp, pos, stream, PREC_SUFFIX);
14002       return;
14003       
14004     case OP_POSITIONAL:
14005       print_subexp (exp, pos, stream, PREC_SUFFIX);
14006       return;
14007
14008     case OP_AGGREGATE:
14009       fputs_filtered ("(", stream);
14010       for (i = 0; i < nargs; i += 1)
14011         {
14012           if (i > 0)
14013             fputs_filtered (", ", stream);
14014           print_subexp (exp, pos, stream, PREC_SUFFIX);
14015         }
14016       fputs_filtered (")", stream);
14017       return;
14018     }
14019 }
14020
14021 /* Table mapping opcodes into strings for printing operators
14022    and precedences of the operators.  */
14023
14024 static const struct op_print ada_op_print_tab[] = {
14025   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14026   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14027   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14028   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14029   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14030   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14031   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14032   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14033   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14034   {">=", BINOP_GEQ, PREC_ORDER, 0},
14035   {">", BINOP_GTR, PREC_ORDER, 0},
14036   {"<", BINOP_LESS, PREC_ORDER, 0},
14037   {">>", BINOP_RSH, PREC_SHIFT, 0},
14038   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14039   {"+", BINOP_ADD, PREC_ADD, 0},
14040   {"-", BINOP_SUB, PREC_ADD, 0},
14041   {"&", BINOP_CONCAT, PREC_ADD, 0},
14042   {"*", BINOP_MUL, PREC_MUL, 0},
14043   {"/", BINOP_DIV, PREC_MUL, 0},
14044   {"rem", BINOP_REM, PREC_MUL, 0},
14045   {"mod", BINOP_MOD, PREC_MUL, 0},
14046   {"**", BINOP_EXP, PREC_REPEAT, 0},
14047   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14048   {"-", UNOP_NEG, PREC_PREFIX, 0},
14049   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14050   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14051   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14052   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14053   {".all", UNOP_IND, PREC_SUFFIX, 1},
14054   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14055   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14056   {NULL, OP_NULL, PREC_SUFFIX, 0}
14057 };
14058 \f
14059 enum ada_primitive_types {
14060   ada_primitive_type_int,
14061   ada_primitive_type_long,
14062   ada_primitive_type_short,
14063   ada_primitive_type_char,
14064   ada_primitive_type_float,
14065   ada_primitive_type_double,
14066   ada_primitive_type_void,
14067   ada_primitive_type_long_long,
14068   ada_primitive_type_long_double,
14069   ada_primitive_type_natural,
14070   ada_primitive_type_positive,
14071   ada_primitive_type_system_address,
14072   ada_primitive_type_storage_offset,
14073   nr_ada_primitive_types
14074 };
14075
14076 static void
14077 ada_language_arch_info (struct gdbarch *gdbarch,
14078                         struct language_arch_info *lai)
14079 {
14080   const struct builtin_type *builtin = builtin_type (gdbarch);
14081
14082   lai->primitive_type_vector
14083     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14084                               struct type *);
14085
14086   lai->primitive_type_vector [ada_primitive_type_int]
14087     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14088                          0, "integer");
14089   lai->primitive_type_vector [ada_primitive_type_long]
14090     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14091                          0, "long_integer");
14092   lai->primitive_type_vector [ada_primitive_type_short]
14093     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14094                          0, "short_integer");
14095   lai->string_char_type
14096     = lai->primitive_type_vector [ada_primitive_type_char]
14097     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14098   lai->primitive_type_vector [ada_primitive_type_float]
14099     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14100                        "float", gdbarch_float_format (gdbarch));
14101   lai->primitive_type_vector [ada_primitive_type_double]
14102     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14103                        "long_float", gdbarch_double_format (gdbarch));
14104   lai->primitive_type_vector [ada_primitive_type_long_long]
14105     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14106                          0, "long_long_integer");
14107   lai->primitive_type_vector [ada_primitive_type_long_double]
14108     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14109                        "long_long_float", gdbarch_long_double_format (gdbarch));
14110   lai->primitive_type_vector [ada_primitive_type_natural]
14111     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14112                          0, "natural");
14113   lai->primitive_type_vector [ada_primitive_type_positive]
14114     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14115                          0, "positive");
14116   lai->primitive_type_vector [ada_primitive_type_void]
14117     = builtin->builtin_void;
14118
14119   lai->primitive_type_vector [ada_primitive_type_system_address]
14120     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14121                                       "void"));
14122   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14123     = "system__address";
14124
14125   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14126      type.  This is a signed integral type whose size is the same as
14127      the size of addresses.  */
14128   {
14129     unsigned int addr_length = TYPE_LENGTH
14130       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14131
14132     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14133       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14134                            "storage_offset");
14135   }
14136
14137   lai->bool_type_symbol = NULL;
14138   lai->bool_type_default = builtin->builtin_bool;
14139 }
14140 \f
14141                                 /* Language vector */
14142
14143 /* Not really used, but needed in the ada_language_defn.  */
14144
14145 static void
14146 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14147 {
14148   ada_emit_char (c, type, stream, quoter, 1);
14149 }
14150
14151 static int
14152 parse (struct parser_state *ps)
14153 {
14154   warnings_issued = 0;
14155   return ada_parse (ps);
14156 }
14157
14158 static const struct exp_descriptor ada_exp_descriptor = {
14159   ada_print_subexp,
14160   ada_operator_length,
14161   ada_operator_check,
14162   ada_op_name,
14163   ada_dump_subexp_body,
14164   ada_evaluate_subexp
14165 };
14166
14167 /* symbol_name_matcher_ftype adapter for wild_match.  */
14168
14169 static bool
14170 do_wild_match (const char *symbol_search_name,
14171                const lookup_name_info &lookup_name,
14172                completion_match_result *comp_match_res)
14173 {
14174   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14175 }
14176
14177 /* symbol_name_matcher_ftype adapter for full_match.  */
14178
14179 static bool
14180 do_full_match (const char *symbol_search_name,
14181                const lookup_name_info &lookup_name,
14182                completion_match_result *comp_match_res)
14183 {
14184   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14185 }
14186
14187 /* Build the Ada lookup name for LOOKUP_NAME.  */
14188
14189 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14190 {
14191   const std::string &user_name = lookup_name.name ();
14192
14193   if (user_name[0] == '<')
14194     {
14195       if (user_name.back () == '>')
14196         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14197       else
14198         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14199       m_encoded_p = true;
14200       m_verbatim_p = true;
14201       m_wild_match_p = false;
14202       m_standard_p = false;
14203     }
14204   else
14205     {
14206       m_verbatim_p = false;
14207
14208       m_encoded_p = user_name.find ("__") != std::string::npos;
14209
14210       if (!m_encoded_p)
14211         {
14212           const char *folded = ada_fold_name (user_name.c_str ());
14213           const char *encoded = ada_encode_1 (folded, false);
14214           if (encoded != NULL)
14215             m_encoded_name = encoded;
14216           else
14217             m_encoded_name = user_name;
14218         }
14219       else
14220         m_encoded_name = user_name;
14221
14222       /* Handle the 'package Standard' special case.  See description
14223          of m_standard_p.  */
14224       if (startswith (m_encoded_name.c_str (), "standard__"))
14225         {
14226           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14227           m_standard_p = true;
14228         }
14229       else
14230         m_standard_p = false;
14231
14232       /* If the name contains a ".", then the user is entering a fully
14233          qualified entity name, and the match must not be done in wild
14234          mode.  Similarly, if the user wants to complete what looks
14235          like an encoded name, the match must not be done in wild
14236          mode.  Also, in the standard__ special case always do
14237          non-wild matching.  */
14238       m_wild_match_p
14239         = (lookup_name.match_type () != symbol_name_match_type::FULL
14240            && !m_encoded_p
14241            && !m_standard_p
14242            && user_name.find ('.') == std::string::npos);
14243     }
14244 }
14245
14246 /* symbol_name_matcher_ftype method for Ada.  This only handles
14247    completion mode.  */
14248
14249 static bool
14250 ada_symbol_name_matches (const char *symbol_search_name,
14251                          const lookup_name_info &lookup_name,
14252                          completion_match_result *comp_match_res)
14253 {
14254   return lookup_name.ada ().matches (symbol_search_name,
14255                                      lookup_name.match_type (),
14256                                      comp_match_res);
14257 }
14258
14259 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14260    Ada.  */
14261
14262 static symbol_name_matcher_ftype *
14263 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14264 {
14265   if (lookup_name.completion_mode ())
14266     return ada_symbol_name_matches;
14267   else
14268     {
14269       if (lookup_name.ada ().wild_match_p ())
14270         return do_wild_match;
14271       else
14272         return do_full_match;
14273     }
14274 }
14275
14276 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14277
14278 static struct value *
14279 ada_read_var_value (struct symbol *var, const struct block *var_block,
14280                     struct frame_info *frame)
14281 {
14282   const struct block *frame_block = NULL;
14283   struct symbol *renaming_sym = NULL;
14284
14285   /* The only case where default_read_var_value is not sufficient
14286      is when VAR is a renaming...  */
14287   if (frame)
14288     frame_block = get_frame_block (frame, NULL);
14289   if (frame_block)
14290     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14291   if (renaming_sym != NULL)
14292     return ada_read_renaming_var_value (renaming_sym, frame_block);
14293
14294   /* This is a typical case where we expect the default_read_var_value
14295      function to work.  */
14296   return default_read_var_value (var, var_block, frame);
14297 }
14298
14299 static const char *ada_extensions[] =
14300 {
14301   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14302 };
14303
14304 extern const struct language_defn ada_language_defn = {
14305   "ada",                        /* Language name */
14306   "Ada",
14307   language_ada,
14308   range_check_off,
14309   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14310                                    that's not quite what this means.  */
14311   array_row_major,
14312   macro_expansion_no,
14313   ada_extensions,
14314   &ada_exp_descriptor,
14315   parse,
14316   ada_yyerror,
14317   resolve,
14318   ada_printchar,                /* Print a character constant */
14319   ada_printstr,                 /* Function to print string constant */
14320   emit_char,                    /* Function to print single char (not used) */
14321   ada_print_type,               /* Print a type using appropriate syntax */
14322   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14323   ada_val_print,                /* Print a value using appropriate syntax */
14324   ada_value_print,              /* Print a top-level value */
14325   ada_read_var_value,           /* la_read_var_value */
14326   NULL,                         /* Language specific skip_trampoline */
14327   NULL,                         /* name_of_this */
14328   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14329   basic_lookup_transparent_type,        /* lookup_transparent_type */
14330   ada_la_decode,                /* Language specific symbol demangler */
14331   ada_sniff_from_mangled_name,
14332   NULL,                         /* Language specific
14333                                    class_name_from_physname */
14334   ada_op_print_tab,             /* expression operators for printing */
14335   0,                            /* c-style arrays */
14336   1,                            /* String lower bound */
14337   ada_get_gdb_completer_word_break_characters,
14338   ada_collect_symbol_completion_matches,
14339   ada_language_arch_info,
14340   ada_print_array_index,
14341   default_pass_by_reference,
14342   c_get_string,
14343   c_watch_location_expression,
14344   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14345   ada_iterate_over_symbols,
14346   default_search_name_hash,
14347   &ada_varobj_ops,
14348   NULL,
14349   NULL,
14350   LANG_MAGIC
14351 };
14352
14353 /* Command-list for the "set/show ada" prefix command.  */
14354 static struct cmd_list_element *set_ada_list;
14355 static struct cmd_list_element *show_ada_list;
14356
14357 /* Implement the "set ada" prefix command.  */
14358
14359 static void
14360 set_ada_command (const char *arg, int from_tty)
14361 {
14362   printf_unfiltered (_(\
14363 "\"set ada\" must be followed by the name of a setting.\n"));
14364   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14365 }
14366
14367 /* Implement the "show ada" prefix command.  */
14368
14369 static void
14370 show_ada_command (const char *args, int from_tty)
14371 {
14372   cmd_show_list (show_ada_list, from_tty, "");
14373 }
14374
14375 static void
14376 initialize_ada_catchpoint_ops (void)
14377 {
14378   struct breakpoint_ops *ops;
14379
14380   initialize_breakpoint_ops ();
14381
14382   ops = &catch_exception_breakpoint_ops;
14383   *ops = bkpt_breakpoint_ops;
14384   ops->allocate_location = allocate_location_catch_exception;
14385   ops->re_set = re_set_catch_exception;
14386   ops->check_status = check_status_catch_exception;
14387   ops->print_it = print_it_catch_exception;
14388   ops->print_one = print_one_catch_exception;
14389   ops->print_mention = print_mention_catch_exception;
14390   ops->print_recreate = print_recreate_catch_exception;
14391
14392   ops = &catch_exception_unhandled_breakpoint_ops;
14393   *ops = bkpt_breakpoint_ops;
14394   ops->allocate_location = allocate_location_catch_exception_unhandled;
14395   ops->re_set = re_set_catch_exception_unhandled;
14396   ops->check_status = check_status_catch_exception_unhandled;
14397   ops->print_it = print_it_catch_exception_unhandled;
14398   ops->print_one = print_one_catch_exception_unhandled;
14399   ops->print_mention = print_mention_catch_exception_unhandled;
14400   ops->print_recreate = print_recreate_catch_exception_unhandled;
14401
14402   ops = &catch_assert_breakpoint_ops;
14403   *ops = bkpt_breakpoint_ops;
14404   ops->allocate_location = allocate_location_catch_assert;
14405   ops->re_set = re_set_catch_assert;
14406   ops->check_status = check_status_catch_assert;
14407   ops->print_it = print_it_catch_assert;
14408   ops->print_one = print_one_catch_assert;
14409   ops->print_mention = print_mention_catch_assert;
14410   ops->print_recreate = print_recreate_catch_assert;
14411 }
14412
14413 /* This module's 'new_objfile' observer.  */
14414
14415 static void
14416 ada_new_objfile_observer (struct objfile *objfile)
14417 {
14418   ada_clear_symbol_cache ();
14419 }
14420
14421 /* This module's 'free_objfile' observer.  */
14422
14423 static void
14424 ada_free_objfile_observer (struct objfile *objfile)
14425 {
14426   ada_clear_symbol_cache ();
14427 }
14428
14429 void
14430 _initialize_ada_language (void)
14431 {
14432   initialize_ada_catchpoint_ops ();
14433
14434   add_prefix_cmd ("ada", no_class, set_ada_command,
14435                   _("Prefix command for changing Ada-specfic settings"),
14436                   &set_ada_list, "set ada ", 0, &setlist);
14437
14438   add_prefix_cmd ("ada", no_class, show_ada_command,
14439                   _("Generic command for showing Ada-specific settings."),
14440                   &show_ada_list, "show ada ", 0, &showlist);
14441
14442   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14443                            &trust_pad_over_xvs, _("\
14444 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14445 Show whether an optimization trusting PAD types over XVS types is activated"),
14446                            _("\
14447 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14448 should normally trust the contents of PAD types, but certain older versions\n\
14449 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14450 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14451 work around this bug.  It is always safe to turn this option \"off\", but\n\
14452 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14453 this option to \"off\" unless necessary."),
14454                             NULL, NULL, &set_ada_list, &show_ada_list);
14455
14456   add_setshow_boolean_cmd ("print-signatures", class_vars,
14457                            &print_signatures, _("\
14458 Enable or disable the output of formal and return types for functions in the \
14459 overloads selection menu"), _("\
14460 Show whether the output of formal and return types for functions in the \
14461 overloads selection menu is activated"),
14462                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14463
14464   add_catch_command ("exception", _("\
14465 Catch Ada exceptions, when raised.\n\
14466 With an argument, catch only exceptions with the given name."),
14467                      catch_ada_exception_command,
14468                      NULL,
14469                      CATCH_PERMANENT,
14470                      CATCH_TEMPORARY);
14471   add_catch_command ("assert", _("\
14472 Catch failed Ada assertions, when raised.\n\
14473 With an argument, catch only exceptions with the given name."),
14474                      catch_assert_command,
14475                      NULL,
14476                      CATCH_PERMANENT,
14477                      CATCH_TEMPORARY);
14478
14479   varsize_limit = 65536;
14480
14481   add_info ("exceptions", info_exceptions_command,
14482             _("\
14483 List all Ada exception names.\n\
14484 If a regular expression is passed as an argument, only those matching\n\
14485 the regular expression are listed."));
14486
14487   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14488                   _("Set Ada maintenance-related variables."),
14489                   &maint_set_ada_cmdlist, "maintenance set ada ",
14490                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14491
14492   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14493                   _("Show Ada maintenance-related variables"),
14494                   &maint_show_ada_cmdlist, "maintenance show ada ",
14495                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14496
14497   add_setshow_boolean_cmd
14498     ("ignore-descriptive-types", class_maintenance,
14499      &ada_ignore_descriptive_types_p,
14500      _("Set whether descriptive types generated by GNAT should be ignored."),
14501      _("Show whether descriptive types generated by GNAT should be ignored."),
14502      _("\
14503 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14504 DWARF attribute."),
14505      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14506
14507   decoded_names_store = htab_create_alloc
14508     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
14509      NULL, xcalloc, xfree);
14510
14511   /* The ada-lang observers.  */
14512   observer_attach_new_objfile (ada_new_objfile_observer);
14513   observer_attach_free_objfile (ada_free_objfile_observer);
14514   observer_attach_inferior_exit (ada_inferior_exit);
14515
14516   /* Setup various context-specific data.  */
14517   ada_inferior_data
14518     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14519   ada_pspace_data_handle
14520     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14521 }