memory error printing component of record from convenience variable
[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
9348   if (VALUE_LVAL (val0) != lval_memory)
9349     {
9350       /* Our value does not live in memory; it could be a convenience
9351          variable, for instance.  Create a not_lval value using val0's
9352          contents.  */
9353       return value_from_contents (type, value_contents (val0));
9354     }
9355
9356   return value_from_contents_and_address (type, 0, address);
9357 }
9358
9359 /* A value representing VAL, but with a standard (static-sized) type
9360    that correctly describes it.  Does not necessarily create a new
9361    value.  */
9362
9363 struct value *
9364 ada_to_fixed_value (struct value *val)
9365 {
9366   val = unwrap_value (val);
9367   val = ada_to_fixed_value_create (value_type (val),
9368                                       value_address (val),
9369                                       val);
9370   return val;
9371 }
9372 \f
9373
9374 /* Attributes */
9375
9376 /* Table mapping attribute numbers to names.
9377    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9378
9379 static const char *attribute_names[] = {
9380   "<?>",
9381
9382   "first",
9383   "last",
9384   "length",
9385   "image",
9386   "max",
9387   "min",
9388   "modulus",
9389   "pos",
9390   "size",
9391   "tag",
9392   "val",
9393   0
9394 };
9395
9396 const char *
9397 ada_attribute_name (enum exp_opcode n)
9398 {
9399   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9400     return attribute_names[n - OP_ATR_FIRST + 1];
9401   else
9402     return attribute_names[0];
9403 }
9404
9405 /* Evaluate the 'POS attribute applied to ARG.  */
9406
9407 static LONGEST
9408 pos_atr (struct value *arg)
9409 {
9410   struct value *val = coerce_ref (arg);
9411   struct type *type = value_type (val);
9412   LONGEST result;
9413
9414   if (!discrete_type_p (type))
9415     error (_("'POS only defined on discrete types"));
9416
9417   if (!discrete_position (type, value_as_long (val), &result))
9418     error (_("enumeration value is invalid: can't find 'POS"));
9419
9420   return result;
9421 }
9422
9423 static struct value *
9424 value_pos_atr (struct type *type, struct value *arg)
9425 {
9426   return value_from_longest (type, pos_atr (arg));
9427 }
9428
9429 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9430
9431 static struct value *
9432 value_val_atr (struct type *type, struct value *arg)
9433 {
9434   if (!discrete_type_p (type))
9435     error (_("'VAL only defined on discrete types"));
9436   if (!integer_type_p (value_type (arg)))
9437     error (_("'VAL requires integral argument"));
9438
9439   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9440     {
9441       long pos = value_as_long (arg);
9442
9443       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9444         error (_("argument to 'VAL out of range"));
9445       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9446     }
9447   else
9448     return value_from_longest (type, value_as_long (arg));
9449 }
9450 \f
9451
9452                                 /* Evaluation */
9453
9454 /* True if TYPE appears to be an Ada character type.
9455    [At the moment, this is true only for Character and Wide_Character;
9456    It is a heuristic test that could stand improvement].  */
9457
9458 int
9459 ada_is_character_type (struct type *type)
9460 {
9461   const char *name;
9462
9463   /* If the type code says it's a character, then assume it really is,
9464      and don't check any further.  */
9465   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9466     return 1;
9467   
9468   /* Otherwise, assume it's a character type iff it is a discrete type
9469      with a known character type name.  */
9470   name = ada_type_name (type);
9471   return (name != NULL
9472           && (TYPE_CODE (type) == TYPE_CODE_INT
9473               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9474           && (strcmp (name, "character") == 0
9475               || strcmp (name, "wide_character") == 0
9476               || strcmp (name, "wide_wide_character") == 0
9477               || strcmp (name, "unsigned char") == 0));
9478 }
9479
9480 /* True if TYPE appears to be an Ada string type.  */
9481
9482 int
9483 ada_is_string_type (struct type *type)
9484 {
9485   type = ada_check_typedef (type);
9486   if (type != NULL
9487       && TYPE_CODE (type) != TYPE_CODE_PTR
9488       && (ada_is_simple_array_type (type)
9489           || ada_is_array_descriptor_type (type))
9490       && ada_array_arity (type) == 1)
9491     {
9492       struct type *elttype = ada_array_element_type (type, 1);
9493
9494       return ada_is_character_type (elttype);
9495     }
9496   else
9497     return 0;
9498 }
9499
9500 /* The compiler sometimes provides a parallel XVS type for a given
9501    PAD type.  Normally, it is safe to follow the PAD type directly,
9502    but older versions of the compiler have a bug that causes the offset
9503    of its "F" field to be wrong.  Following that field in that case
9504    would lead to incorrect results, but this can be worked around
9505    by ignoring the PAD type and using the associated XVS type instead.
9506
9507    Set to True if the debugger should trust the contents of PAD types.
9508    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9509 static int trust_pad_over_xvs = 1;
9510
9511 /* True if TYPE is a struct type introduced by the compiler to force the
9512    alignment of a value.  Such types have a single field with a
9513    distinctive name.  */
9514
9515 int
9516 ada_is_aligner_type (struct type *type)
9517 {
9518   type = ada_check_typedef (type);
9519
9520   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9521     return 0;
9522
9523   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9524           && TYPE_NFIELDS (type) == 1
9525           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9526 }
9527
9528 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9529    the parallel type.  */
9530
9531 struct type *
9532 ada_get_base_type (struct type *raw_type)
9533 {
9534   struct type *real_type_namer;
9535   struct type *raw_real_type;
9536
9537   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9538     return raw_type;
9539
9540   if (ada_is_aligner_type (raw_type))
9541     /* The encoding specifies that we should always use the aligner type.
9542        So, even if this aligner type has an associated XVS type, we should
9543        simply ignore it.
9544
9545        According to the compiler gurus, an XVS type parallel to an aligner
9546        type may exist because of a stabs limitation.  In stabs, aligner
9547        types are empty because the field has a variable-sized type, and
9548        thus cannot actually be used as an aligner type.  As a result,
9549        we need the associated parallel XVS type to decode the type.
9550        Since the policy in the compiler is to not change the internal
9551        representation based on the debugging info format, we sometimes
9552        end up having a redundant XVS type parallel to the aligner type.  */
9553     return raw_type;
9554
9555   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9556   if (real_type_namer == NULL
9557       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9558       || TYPE_NFIELDS (real_type_namer) != 1)
9559     return raw_type;
9560
9561   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9562     {
9563       /* This is an older encoding form where the base type needs to be
9564          looked up by name.  We prefer the newer enconding because it is
9565          more efficient.  */
9566       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9567       if (raw_real_type == NULL)
9568         return raw_type;
9569       else
9570         return raw_real_type;
9571     }
9572
9573   /* The field in our XVS type is a reference to the base type.  */
9574   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9575 }
9576
9577 /* The type of value designated by TYPE, with all aligners removed.  */
9578
9579 struct type *
9580 ada_aligned_type (struct type *type)
9581 {
9582   if (ada_is_aligner_type (type))
9583     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9584   else
9585     return ada_get_base_type (type);
9586 }
9587
9588
9589 /* The address of the aligned value in an object at address VALADDR
9590    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9591
9592 const gdb_byte *
9593 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9594 {
9595   if (ada_is_aligner_type (type))
9596     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9597                                    valaddr +
9598                                    TYPE_FIELD_BITPOS (type,
9599                                                       0) / TARGET_CHAR_BIT);
9600   else
9601     return valaddr;
9602 }
9603
9604
9605
9606 /* The printed representation of an enumeration literal with encoded
9607    name NAME.  The value is good to the next call of ada_enum_name.  */
9608 const char *
9609 ada_enum_name (const char *name)
9610 {
9611   static char *result;
9612   static size_t result_len = 0;
9613   const char *tmp;
9614
9615   /* First, unqualify the enumeration name:
9616      1. Search for the last '.' character.  If we find one, then skip
9617      all the preceding characters, the unqualified name starts
9618      right after that dot.
9619      2. Otherwise, we may be debugging on a target where the compiler
9620      translates dots into "__".  Search forward for double underscores,
9621      but stop searching when we hit an overloading suffix, which is
9622      of the form "__" followed by digits.  */
9623
9624   tmp = strrchr (name, '.');
9625   if (tmp != NULL)
9626     name = tmp + 1;
9627   else
9628     {
9629       while ((tmp = strstr (name, "__")) != NULL)
9630         {
9631           if (isdigit (tmp[2]))
9632             break;
9633           else
9634             name = tmp + 2;
9635         }
9636     }
9637
9638   if (name[0] == 'Q')
9639     {
9640       int v;
9641
9642       if (name[1] == 'U' || name[1] == 'W')
9643         {
9644           if (sscanf (name + 2, "%x", &v) != 1)
9645             return name;
9646         }
9647       else
9648         return name;
9649
9650       GROW_VECT (result, result_len, 16);
9651       if (isascii (v) && isprint (v))
9652         xsnprintf (result, result_len, "'%c'", v);
9653       else if (name[1] == 'U')
9654         xsnprintf (result, result_len, "[\"%02x\"]", v);
9655       else
9656         xsnprintf (result, result_len, "[\"%04x\"]", v);
9657
9658       return result;
9659     }
9660   else
9661     {
9662       tmp = strstr (name, "__");
9663       if (tmp == NULL)
9664         tmp = strstr (name, "$");
9665       if (tmp != NULL)
9666         {
9667           GROW_VECT (result, result_len, tmp - name + 1);
9668           strncpy (result, name, tmp - name);
9669           result[tmp - name] = '\0';
9670           return result;
9671         }
9672
9673       return name;
9674     }
9675 }
9676
9677 /* Evaluate the subexpression of EXP starting at *POS as for
9678    evaluate_type, updating *POS to point just past the evaluated
9679    expression.  */
9680
9681 static struct value *
9682 evaluate_subexp_type (struct expression *exp, int *pos)
9683 {
9684   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9685 }
9686
9687 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9688    value it wraps.  */
9689
9690 static struct value *
9691 unwrap_value (struct value *val)
9692 {
9693   struct type *type = ada_check_typedef (value_type (val));
9694
9695   if (ada_is_aligner_type (type))
9696     {
9697       struct value *v = ada_value_struct_elt (val, "F", 0);
9698       struct type *val_type = ada_check_typedef (value_type (v));
9699
9700       if (ada_type_name (val_type) == NULL)
9701         TYPE_NAME (val_type) = ada_type_name (type);
9702
9703       return unwrap_value (v);
9704     }
9705   else
9706     {
9707       struct type *raw_real_type =
9708         ada_check_typedef (ada_get_base_type (type));
9709
9710       /* If there is no parallel XVS or XVE type, then the value is
9711          already unwrapped.  Return it without further modification.  */
9712       if ((type == raw_real_type)
9713           && ada_find_parallel_type (type, "___XVE") == NULL)
9714         return val;
9715
9716       return
9717         coerce_unspec_val_to_type
9718         (val, ada_to_fixed_type (raw_real_type, 0,
9719                                  value_address (val),
9720                                  NULL, 1));
9721     }
9722 }
9723
9724 static struct value *
9725 cast_from_fixed (struct type *type, struct value *arg)
9726 {
9727   struct value *scale = ada_scaling_factor (value_type (arg));
9728   arg = value_cast (value_type (scale), arg);
9729
9730   arg = value_binop (arg, scale, BINOP_MUL);
9731   return value_cast (type, arg);
9732 }
9733
9734 static struct value *
9735 cast_to_fixed (struct type *type, struct value *arg)
9736 {
9737   if (type == value_type (arg))
9738     return arg;
9739
9740   struct value *scale = ada_scaling_factor (type);
9741   if (ada_is_fixed_point_type (value_type (arg)))
9742     arg = cast_from_fixed (value_type (scale), arg);
9743   else
9744     arg = value_cast (value_type (scale), arg);
9745
9746   arg = value_binop (arg, scale, BINOP_DIV);
9747   return value_cast (type, arg);
9748 }
9749
9750 /* Given two array types T1 and T2, return nonzero iff both arrays
9751    contain the same number of elements.  */
9752
9753 static int
9754 ada_same_array_size_p (struct type *t1, struct type *t2)
9755 {
9756   LONGEST lo1, hi1, lo2, hi2;
9757
9758   /* Get the array bounds in order to verify that the size of
9759      the two arrays match.  */
9760   if (!get_array_bounds (t1, &lo1, &hi1)
9761       || !get_array_bounds (t2, &lo2, &hi2))
9762     error (_("unable to determine array bounds"));
9763
9764   /* To make things easier for size comparison, normalize a bit
9765      the case of empty arrays by making sure that the difference
9766      between upper bound and lower bound is always -1.  */
9767   if (lo1 > hi1)
9768     hi1 = lo1 - 1;
9769   if (lo2 > hi2)
9770     hi2 = lo2 - 1;
9771
9772   return (hi1 - lo1 == hi2 - lo2);
9773 }
9774
9775 /* Assuming that VAL is an array of integrals, and TYPE represents
9776    an array with the same number of elements, but with wider integral
9777    elements, return an array "casted" to TYPE.  In practice, this
9778    means that the returned array is built by casting each element
9779    of the original array into TYPE's (wider) element type.  */
9780
9781 static struct value *
9782 ada_promote_array_of_integrals (struct type *type, struct value *val)
9783 {
9784   struct type *elt_type = TYPE_TARGET_TYPE (type);
9785   LONGEST lo, hi;
9786   struct value *res;
9787   LONGEST i;
9788
9789   /* Verify that both val and type are arrays of scalars, and
9790      that the size of val's elements is smaller than the size
9791      of type's element.  */
9792   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9793   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9794   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9795   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9796   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9797               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9798
9799   if (!get_array_bounds (type, &lo, &hi))
9800     error (_("unable to determine array bounds"));
9801
9802   res = allocate_value (type);
9803
9804   /* Promote each array element.  */
9805   for (i = 0; i < hi - lo + 1; i++)
9806     {
9807       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9808
9809       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9810               value_contents_all (elt), TYPE_LENGTH (elt_type));
9811     }
9812
9813   return res;
9814 }
9815
9816 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9817    return the converted value.  */
9818
9819 static struct value *
9820 coerce_for_assign (struct type *type, struct value *val)
9821 {
9822   struct type *type2 = value_type (val);
9823
9824   if (type == type2)
9825     return val;
9826
9827   type2 = ada_check_typedef (type2);
9828   type = ada_check_typedef (type);
9829
9830   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9831       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9832     {
9833       val = ada_value_ind (val);
9834       type2 = value_type (val);
9835     }
9836
9837   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9838       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9839     {
9840       if (!ada_same_array_size_p (type, type2))
9841         error (_("cannot assign arrays of different length"));
9842
9843       if (is_integral_type (TYPE_TARGET_TYPE (type))
9844           && is_integral_type (TYPE_TARGET_TYPE (type2))
9845           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9846                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9847         {
9848           /* Allow implicit promotion of the array elements to
9849              a wider type.  */
9850           return ada_promote_array_of_integrals (type, val);
9851         }
9852
9853       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9854           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9855         error (_("Incompatible types in assignment"));
9856       deprecated_set_value_type (val, type);
9857     }
9858   return val;
9859 }
9860
9861 static struct value *
9862 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9863 {
9864   struct value *val;
9865   struct type *type1, *type2;
9866   LONGEST v, v1, v2;
9867
9868   arg1 = coerce_ref (arg1);
9869   arg2 = coerce_ref (arg2);
9870   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9871   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9872
9873   if (TYPE_CODE (type1) != TYPE_CODE_INT
9874       || TYPE_CODE (type2) != TYPE_CODE_INT)
9875     return value_binop (arg1, arg2, op);
9876
9877   switch (op)
9878     {
9879     case BINOP_MOD:
9880     case BINOP_DIV:
9881     case BINOP_REM:
9882       break;
9883     default:
9884       return value_binop (arg1, arg2, op);
9885     }
9886
9887   v2 = value_as_long (arg2);
9888   if (v2 == 0)
9889     error (_("second operand of %s must not be zero."), op_string (op));
9890
9891   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9892     return value_binop (arg1, arg2, op);
9893
9894   v1 = value_as_long (arg1);
9895   switch (op)
9896     {
9897     case BINOP_DIV:
9898       v = v1 / v2;
9899       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9900         v += v > 0 ? -1 : 1;
9901       break;
9902     case BINOP_REM:
9903       v = v1 % v2;
9904       if (v * v1 < 0)
9905         v -= v2;
9906       break;
9907     default:
9908       /* Should not reach this point.  */
9909       v = 0;
9910     }
9911
9912   val = allocate_value (type1);
9913   store_unsigned_integer (value_contents_raw (val),
9914                           TYPE_LENGTH (value_type (val)),
9915                           gdbarch_byte_order (get_type_arch (type1)), v);
9916   return val;
9917 }
9918
9919 static int
9920 ada_value_equal (struct value *arg1, struct value *arg2)
9921 {
9922   if (ada_is_direct_array_type (value_type (arg1))
9923       || ada_is_direct_array_type (value_type (arg2)))
9924     {
9925       struct type *arg1_type, *arg2_type;
9926
9927       /* Automatically dereference any array reference before
9928          we attempt to perform the comparison.  */
9929       arg1 = ada_coerce_ref (arg1);
9930       arg2 = ada_coerce_ref (arg2);
9931
9932       arg1 = ada_coerce_to_simple_array (arg1);
9933       arg2 = ada_coerce_to_simple_array (arg2);
9934
9935       arg1_type = ada_check_typedef (value_type (arg1));
9936       arg2_type = ada_check_typedef (value_type (arg2));
9937
9938       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9939           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9940         error (_("Attempt to compare array with non-array"));
9941       /* FIXME: The following works only for types whose
9942          representations use all bits (no padding or undefined bits)
9943          and do not have user-defined equality.  */
9944       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9945               && memcmp (value_contents (arg1), value_contents (arg2),
9946                          TYPE_LENGTH (arg1_type)) == 0);
9947     }
9948   return value_equal (arg1, arg2);
9949 }
9950
9951 /* Total number of component associations in the aggregate starting at
9952    index PC in EXP.  Assumes that index PC is the start of an
9953    OP_AGGREGATE.  */
9954
9955 static int
9956 num_component_specs (struct expression *exp, int pc)
9957 {
9958   int n, m, i;
9959
9960   m = exp->elts[pc + 1].longconst;
9961   pc += 3;
9962   n = 0;
9963   for (i = 0; i < m; i += 1)
9964     {
9965       switch (exp->elts[pc].opcode) 
9966         {
9967         default:
9968           n += 1;
9969           break;
9970         case OP_CHOICES:
9971           n += exp->elts[pc + 1].longconst;
9972           break;
9973         }
9974       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9975     }
9976   return n;
9977 }
9978
9979 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9980    component of LHS (a simple array or a record), updating *POS past
9981    the expression, assuming that LHS is contained in CONTAINER.  Does
9982    not modify the inferior's memory, nor does it modify LHS (unless
9983    LHS == CONTAINER).  */
9984
9985 static void
9986 assign_component (struct value *container, struct value *lhs, LONGEST index,
9987                   struct expression *exp, int *pos)
9988 {
9989   struct value *mark = value_mark ();
9990   struct value *elt;
9991   struct type *lhs_type = check_typedef (value_type (lhs));
9992
9993   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9994     {
9995       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9996       struct value *index_val = value_from_longest (index_type, index);
9997
9998       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9999     }
10000   else
10001     {
10002       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
10003       elt = ada_to_fixed_value (elt);
10004     }
10005
10006   if (exp->elts[*pos].opcode == OP_AGGREGATE)
10007     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
10008   else
10009     value_assign_to_component (container, elt, 
10010                                ada_evaluate_subexp (NULL, exp, pos, 
10011                                                     EVAL_NORMAL));
10012
10013   value_free_to_mark (mark);
10014 }
10015
10016 /* Assuming that LHS represents an lvalue having a record or array
10017    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
10018    of that aggregate's value to LHS, advancing *POS past the
10019    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10020    lvalue containing LHS (possibly LHS itself).  Does not modify
10021    the inferior's memory, nor does it modify the contents of 
10022    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10023
10024 static struct value *
10025 assign_aggregate (struct value *container, 
10026                   struct value *lhs, struct expression *exp, 
10027                   int *pos, enum noside noside)
10028 {
10029   struct type *lhs_type;
10030   int n = exp->elts[*pos+1].longconst;
10031   LONGEST low_index, high_index;
10032   int num_specs;
10033   LONGEST *indices;
10034   int max_indices, num_indices;
10035   int i;
10036
10037   *pos += 3;
10038   if (noside != EVAL_NORMAL)
10039     {
10040       for (i = 0; i < n; i += 1)
10041         ada_evaluate_subexp (NULL, exp, pos, noside);
10042       return container;
10043     }
10044
10045   container = ada_coerce_ref (container);
10046   if (ada_is_direct_array_type (value_type (container)))
10047     container = ada_coerce_to_simple_array (container);
10048   lhs = ada_coerce_ref (lhs);
10049   if (!deprecated_value_modifiable (lhs))
10050     error (_("Left operand of assignment is not a modifiable lvalue."));
10051
10052   lhs_type = check_typedef (value_type (lhs));
10053   if (ada_is_direct_array_type (lhs_type))
10054     {
10055       lhs = ada_coerce_to_simple_array (lhs);
10056       lhs_type = check_typedef (value_type (lhs));
10057       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10058       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10059     }
10060   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10061     {
10062       low_index = 0;
10063       high_index = num_visible_fields (lhs_type) - 1;
10064     }
10065   else
10066     error (_("Left-hand side must be array or record."));
10067
10068   num_specs = num_component_specs (exp, *pos - 3);
10069   max_indices = 4 * num_specs + 4;
10070   indices = XALLOCAVEC (LONGEST, max_indices);
10071   indices[0] = indices[1] = low_index - 1;
10072   indices[2] = indices[3] = high_index + 1;
10073   num_indices = 4;
10074
10075   for (i = 0; i < n; i += 1)
10076     {
10077       switch (exp->elts[*pos].opcode)
10078         {
10079           case OP_CHOICES:
10080             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10081                                            &num_indices, max_indices,
10082                                            low_index, high_index);
10083             break;
10084           case OP_POSITIONAL:
10085             aggregate_assign_positional (container, lhs, exp, pos, indices,
10086                                          &num_indices, max_indices,
10087                                          low_index, high_index);
10088             break;
10089           case OP_OTHERS:
10090             if (i != n-1)
10091               error (_("Misplaced 'others' clause"));
10092             aggregate_assign_others (container, lhs, exp, pos, indices, 
10093                                      num_indices, low_index, high_index);
10094             break;
10095           default:
10096             error (_("Internal error: bad aggregate clause"));
10097         }
10098     }
10099
10100   return container;
10101 }
10102               
10103 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10104    construct at *POS, updating *POS past the construct, given that
10105    the positions are relative to lower bound LOW, where HIGH is the 
10106    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10107    updating *NUM_INDICES as needed.  CONTAINER is as for
10108    assign_aggregate.  */
10109 static void
10110 aggregate_assign_positional (struct value *container,
10111                              struct value *lhs, struct expression *exp,
10112                              int *pos, LONGEST *indices, int *num_indices,
10113                              int max_indices, LONGEST low, LONGEST high) 
10114 {
10115   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10116   
10117   if (ind - 1 == high)
10118     warning (_("Extra components in aggregate ignored."));
10119   if (ind <= high)
10120     {
10121       add_component_interval (ind, ind, indices, num_indices, max_indices);
10122       *pos += 3;
10123       assign_component (container, lhs, ind, exp, pos);
10124     }
10125   else
10126     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10127 }
10128
10129 /* Assign into the components of LHS indexed by the OP_CHOICES
10130    construct at *POS, updating *POS past the construct, given that
10131    the allowable indices are LOW..HIGH.  Record the indices assigned
10132    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10133    needed.  CONTAINER is as for assign_aggregate.  */
10134 static void
10135 aggregate_assign_from_choices (struct value *container,
10136                                struct value *lhs, struct expression *exp,
10137                                int *pos, LONGEST *indices, int *num_indices,
10138                                int max_indices, LONGEST low, LONGEST high) 
10139 {
10140   int j;
10141   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10142   int choice_pos, expr_pc;
10143   int is_array = ada_is_direct_array_type (value_type (lhs));
10144
10145   choice_pos = *pos += 3;
10146
10147   for (j = 0; j < n_choices; j += 1)
10148     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10149   expr_pc = *pos;
10150   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10151   
10152   for (j = 0; j < n_choices; j += 1)
10153     {
10154       LONGEST lower, upper;
10155       enum exp_opcode op = exp->elts[choice_pos].opcode;
10156
10157       if (op == OP_DISCRETE_RANGE)
10158         {
10159           choice_pos += 1;
10160           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10161                                                       EVAL_NORMAL));
10162           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10163                                                       EVAL_NORMAL));
10164         }
10165       else if (is_array)
10166         {
10167           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10168                                                       EVAL_NORMAL));
10169           upper = lower;
10170         }
10171       else
10172         {
10173           int ind;
10174           const char *name;
10175
10176           switch (op)
10177             {
10178             case OP_NAME:
10179               name = &exp->elts[choice_pos + 2].string;
10180               break;
10181             case OP_VAR_VALUE:
10182               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10183               break;
10184             default:
10185               error (_("Invalid record component association."));
10186             }
10187           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10188           ind = 0;
10189           if (! find_struct_field (name, value_type (lhs), 0, 
10190                                    NULL, NULL, NULL, NULL, &ind))
10191             error (_("Unknown component name: %s."), name);
10192           lower = upper = ind;
10193         }
10194
10195       if (lower <= upper && (lower < low || upper > high))
10196         error (_("Index in component association out of bounds."));
10197
10198       add_component_interval (lower, upper, indices, num_indices,
10199                               max_indices);
10200       while (lower <= upper)
10201         {
10202           int pos1;
10203
10204           pos1 = expr_pc;
10205           assign_component (container, lhs, lower, exp, &pos1);
10206           lower += 1;
10207         }
10208     }
10209 }
10210
10211 /* Assign the value of the expression in the OP_OTHERS construct in
10212    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10213    have not been previously assigned.  The index intervals already assigned
10214    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10215    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10216 static void
10217 aggregate_assign_others (struct value *container,
10218                          struct value *lhs, struct expression *exp,
10219                          int *pos, LONGEST *indices, int num_indices,
10220                          LONGEST low, LONGEST high) 
10221 {
10222   int i;
10223   int expr_pc = *pos + 1;
10224   
10225   for (i = 0; i < num_indices - 2; i += 2)
10226     {
10227       LONGEST ind;
10228
10229       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10230         {
10231           int localpos;
10232
10233           localpos = expr_pc;
10234           assign_component (container, lhs, ind, exp, &localpos);
10235         }
10236     }
10237   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10238 }
10239
10240 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10241    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10242    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10243    MAX_SIZE.  The resulting intervals do not overlap.  */
10244 static void
10245 add_component_interval (LONGEST low, LONGEST high, 
10246                         LONGEST* indices, int *size, int max_size)
10247 {
10248   int i, j;
10249
10250   for (i = 0; i < *size; i += 2) {
10251     if (high >= indices[i] && low <= indices[i + 1])
10252       {
10253         int kh;
10254
10255         for (kh = i + 2; kh < *size; kh += 2)
10256           if (high < indices[kh])
10257             break;
10258         if (low < indices[i])
10259           indices[i] = low;
10260         indices[i + 1] = indices[kh - 1];
10261         if (high > indices[i + 1])
10262           indices[i + 1] = high;
10263         memcpy (indices + i + 2, indices + kh, *size - kh);
10264         *size -= kh - i - 2;
10265         return;
10266       }
10267     else if (high < indices[i])
10268       break;
10269   }
10270         
10271   if (*size == max_size)
10272     error (_("Internal error: miscounted aggregate components."));
10273   *size += 2;
10274   for (j = *size-1; j >= i+2; j -= 1)
10275     indices[j] = indices[j - 2];
10276   indices[i] = low;
10277   indices[i + 1] = high;
10278 }
10279
10280 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10281    is different.  */
10282
10283 static struct value *
10284 ada_value_cast (struct type *type, struct value *arg2)
10285 {
10286   if (type == ada_check_typedef (value_type (arg2)))
10287     return arg2;
10288
10289   if (ada_is_fixed_point_type (type))
10290     return (cast_to_fixed (type, arg2));
10291
10292   if (ada_is_fixed_point_type (value_type (arg2)))
10293     return cast_from_fixed (type, arg2);
10294
10295   return value_cast (type, arg2);
10296 }
10297
10298 /*  Evaluating Ada expressions, and printing their result.
10299     ------------------------------------------------------
10300
10301     1. Introduction:
10302     ----------------
10303
10304     We usually evaluate an Ada expression in order to print its value.
10305     We also evaluate an expression in order to print its type, which
10306     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10307     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10308     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10309     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10310     similar.
10311
10312     Evaluating expressions is a little more complicated for Ada entities
10313     than it is for entities in languages such as C.  The main reason for
10314     this is that Ada provides types whose definition might be dynamic.
10315     One example of such types is variant records.  Or another example
10316     would be an array whose bounds can only be known at run time.
10317
10318     The following description is a general guide as to what should be
10319     done (and what should NOT be done) in order to evaluate an expression
10320     involving such types, and when.  This does not cover how the semantic
10321     information is encoded by GNAT as this is covered separatly.  For the
10322     document used as the reference for the GNAT encoding, see exp_dbug.ads
10323     in the GNAT sources.
10324
10325     Ideally, we should embed each part of this description next to its
10326     associated code.  Unfortunately, the amount of code is so vast right
10327     now that it's hard to see whether the code handling a particular
10328     situation might be duplicated or not.  One day, when the code is
10329     cleaned up, this guide might become redundant with the comments
10330     inserted in the code, and we might want to remove it.
10331
10332     2. ``Fixing'' an Entity, the Simple Case:
10333     -----------------------------------------
10334
10335     When evaluating Ada expressions, the tricky issue is that they may
10336     reference entities whose type contents and size are not statically
10337     known.  Consider for instance a variant record:
10338
10339        type Rec (Empty : Boolean := True) is record
10340           case Empty is
10341              when True => null;
10342              when False => Value : Integer;
10343           end case;
10344        end record;
10345        Yes : Rec := (Empty => False, Value => 1);
10346        No  : Rec := (empty => True);
10347
10348     The size and contents of that record depends on the value of the
10349     descriminant (Rec.Empty).  At this point, neither the debugging
10350     information nor the associated type structure in GDB are able to
10351     express such dynamic types.  So what the debugger does is to create
10352     "fixed" versions of the type that applies to the specific object.
10353     We also informally refer to this opperation as "fixing" an object,
10354     which means creating its associated fixed type.
10355
10356     Example: when printing the value of variable "Yes" above, its fixed
10357     type would look like this:
10358
10359        type Rec is record
10360           Empty : Boolean;
10361           Value : Integer;
10362        end record;
10363
10364     On the other hand, if we printed the value of "No", its fixed type
10365     would become:
10366
10367        type Rec is record
10368           Empty : Boolean;
10369        end record;
10370
10371     Things become a little more complicated when trying to fix an entity
10372     with a dynamic type that directly contains another dynamic type,
10373     such as an array of variant records, for instance.  There are
10374     two possible cases: Arrays, and records.
10375
10376     3. ``Fixing'' Arrays:
10377     ---------------------
10378
10379     The type structure in GDB describes an array in terms of its bounds,
10380     and the type of its elements.  By design, all elements in the array
10381     have the same type and we cannot represent an array of variant elements
10382     using the current type structure in GDB.  When fixing an array,
10383     we cannot fix the array element, as we would potentially need one
10384     fixed type per element of the array.  As a result, the best we can do
10385     when fixing an array is to produce an array whose bounds and size
10386     are correct (allowing us to read it from memory), but without having
10387     touched its element type.  Fixing each element will be done later,
10388     when (if) necessary.
10389
10390     Arrays are a little simpler to handle than records, because the same
10391     amount of memory is allocated for each element of the array, even if
10392     the amount of space actually used by each element differs from element
10393     to element.  Consider for instance the following array of type Rec:
10394
10395        type Rec_Array is array (1 .. 2) of Rec;
10396
10397     The actual amount of memory occupied by each element might be different
10398     from element to element, depending on the value of their discriminant.
10399     But the amount of space reserved for each element in the array remains
10400     fixed regardless.  So we simply need to compute that size using
10401     the debugging information available, from which we can then determine
10402     the array size (we multiply the number of elements of the array by
10403     the size of each element).
10404
10405     The simplest case is when we have an array of a constrained element
10406     type. For instance, consider the following type declarations:
10407
10408         type Bounded_String (Max_Size : Integer) is
10409            Length : Integer;
10410            Buffer : String (1 .. Max_Size);
10411         end record;
10412         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10413
10414     In this case, the compiler describes the array as an array of
10415     variable-size elements (identified by its XVS suffix) for which
10416     the size can be read in the parallel XVZ variable.
10417
10418     In the case of an array of an unconstrained element type, the compiler
10419     wraps the array element inside a private PAD type.  This type should not
10420     be shown to the user, and must be "unwrap"'ed before printing.  Note
10421     that we also use the adjective "aligner" in our code to designate
10422     these wrapper types.
10423
10424     In some cases, the size allocated for each element is statically
10425     known.  In that case, the PAD type already has the correct size,
10426     and the array element should remain unfixed.
10427
10428     But there are cases when this size is not statically known.
10429     For instance, assuming that "Five" is an integer variable:
10430
10431         type Dynamic is array (1 .. Five) of Integer;
10432         type Wrapper (Has_Length : Boolean := False) is record
10433            Data : Dynamic;
10434            case Has_Length is
10435               when True => Length : Integer;
10436               when False => null;
10437            end case;
10438         end record;
10439         type Wrapper_Array is array (1 .. 2) of Wrapper;
10440
10441         Hello : Wrapper_Array := (others => (Has_Length => True,
10442                                              Data => (others => 17),
10443                                              Length => 1));
10444
10445
10446     The debugging info would describe variable Hello as being an
10447     array of a PAD type.  The size of that PAD type is not statically
10448     known, but can be determined using a parallel XVZ variable.
10449     In that case, a copy of the PAD type with the correct size should
10450     be used for the fixed array.
10451
10452     3. ``Fixing'' record type objects:
10453     ----------------------------------
10454
10455     Things are slightly different from arrays in the case of dynamic
10456     record types.  In this case, in order to compute the associated
10457     fixed type, we need to determine the size and offset of each of
10458     its components.  This, in turn, requires us to compute the fixed
10459     type of each of these components.
10460
10461     Consider for instance the example:
10462
10463         type Bounded_String (Max_Size : Natural) is record
10464            Str : String (1 .. Max_Size);
10465            Length : Natural;
10466         end record;
10467         My_String : Bounded_String (Max_Size => 10);
10468
10469     In that case, the position of field "Length" depends on the size
10470     of field Str, which itself depends on the value of the Max_Size
10471     discriminant.  In order to fix the type of variable My_String,
10472     we need to fix the type of field Str.  Therefore, fixing a variant
10473     record requires us to fix each of its components.
10474
10475     However, if a component does not have a dynamic size, the component
10476     should not be fixed.  In particular, fields that use a PAD type
10477     should not fixed.  Here is an example where this might happen
10478     (assuming type Rec above):
10479
10480        type Container (Big : Boolean) is record
10481           First : Rec;
10482           After : Integer;
10483           case Big is
10484              when True => Another : Integer;
10485              when False => null;
10486           end case;
10487        end record;
10488        My_Container : Container := (Big => False,
10489                                     First => (Empty => True),
10490                                     After => 42);
10491
10492     In that example, the compiler creates a PAD type for component First,
10493     whose size is constant, and then positions the component After just
10494     right after it.  The offset of component After is therefore constant
10495     in this case.
10496
10497     The debugger computes the position of each field based on an algorithm
10498     that uses, among other things, the actual position and size of the field
10499     preceding it.  Let's now imagine that the user is trying to print
10500     the value of My_Container.  If the type fixing was recursive, we would
10501     end up computing the offset of field After based on the size of the
10502     fixed version of field First.  And since in our example First has
10503     only one actual field, the size of the fixed type is actually smaller
10504     than the amount of space allocated to that field, and thus we would
10505     compute the wrong offset of field After.
10506
10507     To make things more complicated, we need to watch out for dynamic
10508     components of variant records (identified by the ___XVL suffix in
10509     the component name).  Even if the target type is a PAD type, the size
10510     of that type might not be statically known.  So the PAD type needs
10511     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10512     we might end up with the wrong size for our component.  This can be
10513     observed with the following type declarations:
10514
10515         type Octal is new Integer range 0 .. 7;
10516         type Octal_Array is array (Positive range <>) of Octal;
10517         pragma Pack (Octal_Array);
10518
10519         type Octal_Buffer (Size : Positive) is record
10520            Buffer : Octal_Array (1 .. Size);
10521            Length : Integer;
10522         end record;
10523
10524     In that case, Buffer is a PAD type whose size is unset and needs
10525     to be computed by fixing the unwrapped type.
10526
10527     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10528     ----------------------------------------------------------
10529
10530     Lastly, when should the sub-elements of an entity that remained unfixed
10531     thus far, be actually fixed?
10532
10533     The answer is: Only when referencing that element.  For instance
10534     when selecting one component of a record, this specific component
10535     should be fixed at that point in time.  Or when printing the value
10536     of a record, each component should be fixed before its value gets
10537     printed.  Similarly for arrays, the element of the array should be
10538     fixed when printing each element of the array, or when extracting
10539     one element out of that array.  On the other hand, fixing should
10540     not be performed on the elements when taking a slice of an array!
10541
10542     Note that one of the side effects of miscomputing the offset and
10543     size of each field is that we end up also miscomputing the size
10544     of the containing type.  This can have adverse results when computing
10545     the value of an entity.  GDB fetches the value of an entity based
10546     on the size of its type, and thus a wrong size causes GDB to fetch
10547     the wrong amount of memory.  In the case where the computed size is
10548     too small, GDB fetches too little data to print the value of our
10549     entity.  Results in this case are unpredictable, as we usually read
10550     past the buffer containing the data =:-o.  */
10551
10552 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10553    for that subexpression cast to TO_TYPE.  Advance *POS over the
10554    subexpression.  */
10555
10556 static value *
10557 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10558                               enum noside noside, struct type *to_type)
10559 {
10560   int pc = *pos;
10561
10562   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10563       || exp->elts[pc].opcode == OP_VAR_VALUE)
10564     {
10565       (*pos) += 4;
10566
10567       value *val;
10568       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10569         {
10570           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10571             return value_zero (to_type, not_lval);
10572
10573           val = evaluate_var_msym_value (noside,
10574                                          exp->elts[pc + 1].objfile,
10575                                          exp->elts[pc + 2].msymbol);
10576         }
10577       else
10578         val = evaluate_var_value (noside,
10579                                   exp->elts[pc + 1].block,
10580                                   exp->elts[pc + 2].symbol);
10581
10582       if (noside == EVAL_SKIP)
10583         return eval_skip_value (exp);
10584
10585       val = ada_value_cast (to_type, val);
10586
10587       /* Follow the Ada language semantics that do not allow taking
10588          an address of the result of a cast (view conversion in Ada).  */
10589       if (VALUE_LVAL (val) == lval_memory)
10590         {
10591           if (value_lazy (val))
10592             value_fetch_lazy (val);
10593           VALUE_LVAL (val) = not_lval;
10594         }
10595       return val;
10596     }
10597
10598   value *val = evaluate_subexp (to_type, exp, pos, noside);
10599   if (noside == EVAL_SKIP)
10600     return eval_skip_value (exp);
10601   return ada_value_cast (to_type, val);
10602 }
10603
10604 /* Implement the evaluate_exp routine in the exp_descriptor structure
10605    for the Ada language.  */
10606
10607 static struct value *
10608 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10609                      int *pos, enum noside noside)
10610 {
10611   enum exp_opcode op;
10612   int tem;
10613   int pc;
10614   int preeval_pos;
10615   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10616   struct type *type;
10617   int nargs, oplen;
10618   struct value **argvec;
10619
10620   pc = *pos;
10621   *pos += 1;
10622   op = exp->elts[pc].opcode;
10623
10624   switch (op)
10625     {
10626     default:
10627       *pos -= 1;
10628       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10629
10630       if (noside == EVAL_NORMAL)
10631         arg1 = unwrap_value (arg1);
10632
10633       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10634          then we need to perform the conversion manually, because
10635          evaluate_subexp_standard doesn't do it.  This conversion is
10636          necessary in Ada because the different kinds of float/fixed
10637          types in Ada have different representations.
10638
10639          Similarly, we need to perform the conversion from OP_LONG
10640          ourselves.  */
10641       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10642         arg1 = ada_value_cast (expect_type, arg1);
10643
10644       return arg1;
10645
10646     case OP_STRING:
10647       {
10648         struct value *result;
10649
10650         *pos -= 1;
10651         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10652         /* The result type will have code OP_STRING, bashed there from 
10653            OP_ARRAY.  Bash it back.  */
10654         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10655           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10656         return result;
10657       }
10658
10659     case UNOP_CAST:
10660       (*pos) += 2;
10661       type = exp->elts[pc + 1].type;
10662       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10663
10664     case UNOP_QUAL:
10665       (*pos) += 2;
10666       type = exp->elts[pc + 1].type;
10667       return ada_evaluate_subexp (type, exp, pos, noside);
10668
10669     case BINOP_ASSIGN:
10670       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10671       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10672         {
10673           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10674           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10675             return arg1;
10676           return ada_value_assign (arg1, arg1);
10677         }
10678       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10679          except if the lhs of our assignment is a convenience variable.
10680          In the case of assigning to a convenience variable, the lhs
10681          should be exactly the result of the evaluation of the rhs.  */
10682       type = value_type (arg1);
10683       if (VALUE_LVAL (arg1) == lval_internalvar)
10684          type = NULL;
10685       arg2 = evaluate_subexp (type, exp, pos, noside);
10686       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10687         return arg1;
10688       if (ada_is_fixed_point_type (value_type (arg1)))
10689         arg2 = cast_to_fixed (value_type (arg1), arg2);
10690       else if (ada_is_fixed_point_type (value_type (arg2)))
10691         error
10692           (_("Fixed-point values must be assigned to fixed-point variables"));
10693       else
10694         arg2 = coerce_for_assign (value_type (arg1), arg2);
10695       return ada_value_assign (arg1, arg2);
10696
10697     case BINOP_ADD:
10698       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10699       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10700       if (noside == EVAL_SKIP)
10701         goto nosideret;
10702       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10703         return (value_from_longest
10704                  (value_type (arg1),
10705                   value_as_long (arg1) + value_as_long (arg2)));
10706       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10707         return (value_from_longest
10708                  (value_type (arg2),
10709                   value_as_long (arg1) + value_as_long (arg2)));
10710       if ((ada_is_fixed_point_type (value_type (arg1))
10711            || ada_is_fixed_point_type (value_type (arg2)))
10712           && value_type (arg1) != value_type (arg2))
10713         error (_("Operands of fixed-point addition must have the same type"));
10714       /* Do the addition, and cast the result to the type of the first
10715          argument.  We cannot cast the result to a reference type, so if
10716          ARG1 is a reference type, find its underlying type.  */
10717       type = value_type (arg1);
10718       while (TYPE_CODE (type) == TYPE_CODE_REF)
10719         type = TYPE_TARGET_TYPE (type);
10720       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10721       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10722
10723     case BINOP_SUB:
10724       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10725       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10726       if (noside == EVAL_SKIP)
10727         goto nosideret;
10728       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10729         return (value_from_longest
10730                  (value_type (arg1),
10731                   value_as_long (arg1) - value_as_long (arg2)));
10732       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10733         return (value_from_longest
10734                  (value_type (arg2),
10735                   value_as_long (arg1) - value_as_long (arg2)));
10736       if ((ada_is_fixed_point_type (value_type (arg1))
10737            || ada_is_fixed_point_type (value_type (arg2)))
10738           && value_type (arg1) != value_type (arg2))
10739         error (_("Operands of fixed-point subtraction "
10740                  "must have the same type"));
10741       /* Do the substraction, and cast the result to the type of the first
10742          argument.  We cannot cast the result to a reference type, so if
10743          ARG1 is a reference type, find its underlying type.  */
10744       type = value_type (arg1);
10745       while (TYPE_CODE (type) == TYPE_CODE_REF)
10746         type = TYPE_TARGET_TYPE (type);
10747       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10748       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10749
10750     case BINOP_MUL:
10751     case BINOP_DIV:
10752     case BINOP_REM:
10753     case BINOP_MOD:
10754       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10755       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10756       if (noside == EVAL_SKIP)
10757         goto nosideret;
10758       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10759         {
10760           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10761           return value_zero (value_type (arg1), not_lval);
10762         }
10763       else
10764         {
10765           type = builtin_type (exp->gdbarch)->builtin_double;
10766           if (ada_is_fixed_point_type (value_type (arg1)))
10767             arg1 = cast_from_fixed (type, arg1);
10768           if (ada_is_fixed_point_type (value_type (arg2)))
10769             arg2 = cast_from_fixed (type, arg2);
10770           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10771           return ada_value_binop (arg1, arg2, op);
10772         }
10773
10774     case BINOP_EQUAL:
10775     case BINOP_NOTEQUAL:
10776       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10777       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10778       if (noside == EVAL_SKIP)
10779         goto nosideret;
10780       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10781         tem = 0;
10782       else
10783         {
10784           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10785           tem = ada_value_equal (arg1, arg2);
10786         }
10787       if (op == BINOP_NOTEQUAL)
10788         tem = !tem;
10789       type = language_bool_type (exp->language_defn, exp->gdbarch);
10790       return value_from_longest (type, (LONGEST) tem);
10791
10792     case UNOP_NEG:
10793       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10794       if (noside == EVAL_SKIP)
10795         goto nosideret;
10796       else if (ada_is_fixed_point_type (value_type (arg1)))
10797         return value_cast (value_type (arg1), value_neg (arg1));
10798       else
10799         {
10800           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10801           return value_neg (arg1);
10802         }
10803
10804     case BINOP_LOGICAL_AND:
10805     case BINOP_LOGICAL_OR:
10806     case UNOP_LOGICAL_NOT:
10807       {
10808         struct value *val;
10809
10810         *pos -= 1;
10811         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10812         type = language_bool_type (exp->language_defn, exp->gdbarch);
10813         return value_cast (type, val);
10814       }
10815
10816     case BINOP_BITWISE_AND:
10817     case BINOP_BITWISE_IOR:
10818     case BINOP_BITWISE_XOR:
10819       {
10820         struct value *val;
10821
10822         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10823         *pos = pc;
10824         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10825
10826         return value_cast (value_type (arg1), val);
10827       }
10828
10829     case OP_VAR_VALUE:
10830       *pos -= 1;
10831
10832       if (noside == EVAL_SKIP)
10833         {
10834           *pos += 4;
10835           goto nosideret;
10836         }
10837
10838       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10839         /* Only encountered when an unresolved symbol occurs in a
10840            context other than a function call, in which case, it is
10841            invalid.  */
10842         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10843                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10844
10845       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10846         {
10847           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10848           /* Check to see if this is a tagged type.  We also need to handle
10849              the case where the type is a reference to a tagged type, but
10850              we have to be careful to exclude pointers to tagged types.
10851              The latter should be shown as usual (as a pointer), whereas
10852              a reference should mostly be transparent to the user.  */
10853           if (ada_is_tagged_type (type, 0)
10854               || (TYPE_CODE (type) == TYPE_CODE_REF
10855                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10856             {
10857               /* Tagged types are a little special in the fact that the real
10858                  type is dynamic and can only be determined by inspecting the
10859                  object's tag.  This means that we need to get the object's
10860                  value first (EVAL_NORMAL) and then extract the actual object
10861                  type from its tag.
10862
10863                  Note that we cannot skip the final step where we extract
10864                  the object type from its tag, because the EVAL_NORMAL phase
10865                  results in dynamic components being resolved into fixed ones.
10866                  This can cause problems when trying to print the type
10867                  description of tagged types whose parent has a dynamic size:
10868                  We use the type name of the "_parent" component in order
10869                  to print the name of the ancestor type in the type description.
10870                  If that component had a dynamic size, the resolution into
10871                  a fixed type would result in the loss of that type name,
10872                  thus preventing us from printing the name of the ancestor
10873                  type in the type description.  */
10874               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10875
10876               if (TYPE_CODE (type) != TYPE_CODE_REF)
10877                 {
10878                   struct type *actual_type;
10879
10880                   actual_type = type_from_tag (ada_value_tag (arg1));
10881                   if (actual_type == NULL)
10882                     /* If, for some reason, we were unable to determine
10883                        the actual type from the tag, then use the static
10884                        approximation that we just computed as a fallback.
10885                        This can happen if the debugging information is
10886                        incomplete, for instance.  */
10887                     actual_type = type;
10888                   return value_zero (actual_type, not_lval);
10889                 }
10890               else
10891                 {
10892                   /* In the case of a ref, ada_coerce_ref takes care
10893                      of determining the actual type.  But the evaluation
10894                      should return a ref as it should be valid to ask
10895                      for its address; so rebuild a ref after coerce.  */
10896                   arg1 = ada_coerce_ref (arg1);
10897                   return value_ref (arg1, TYPE_CODE_REF);
10898                 }
10899             }
10900
10901           /* Records and unions for which GNAT encodings have been
10902              generated need to be statically fixed as well.
10903              Otherwise, non-static fixing produces a type where
10904              all dynamic properties are removed, which prevents "ptype"
10905              from being able to completely describe the type.
10906              For instance, a case statement in a variant record would be
10907              replaced by the relevant components based on the actual
10908              value of the discriminants.  */
10909           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10910                && dynamic_template_type (type) != NULL)
10911               || (TYPE_CODE (type) == TYPE_CODE_UNION
10912                   && ada_find_parallel_type (type, "___XVU") != NULL))
10913             {
10914               *pos += 4;
10915               return value_zero (to_static_fixed_type (type), not_lval);
10916             }
10917         }
10918
10919       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10920       return ada_to_fixed_value (arg1);
10921
10922     case OP_FUNCALL:
10923       (*pos) += 2;
10924
10925       /* Allocate arg vector, including space for the function to be
10926          called in argvec[0] and a terminating NULL.  */
10927       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10928       argvec = XALLOCAVEC (struct value *, nargs + 2);
10929
10930       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10931           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10932         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10933                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10934       else
10935         {
10936           for (tem = 0; tem <= nargs; tem += 1)
10937             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10938           argvec[tem] = 0;
10939
10940           if (noside == EVAL_SKIP)
10941             goto nosideret;
10942         }
10943
10944       if (ada_is_constrained_packed_array_type
10945           (desc_base_type (value_type (argvec[0]))))
10946         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10947       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10948                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10949         /* This is a packed array that has already been fixed, and
10950            therefore already coerced to a simple array.  Nothing further
10951            to do.  */
10952         ;
10953       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10954         {
10955           /* Make sure we dereference references so that all the code below
10956              feels like it's really handling the referenced value.  Wrapping
10957              types (for alignment) may be there, so make sure we strip them as
10958              well.  */
10959           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10960         }
10961       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10962                && VALUE_LVAL (argvec[0]) == lval_memory)
10963         argvec[0] = value_addr (argvec[0]);
10964
10965       type = ada_check_typedef (value_type (argvec[0]));
10966
10967       /* Ada allows us to implicitly dereference arrays when subscripting
10968          them.  So, if this is an array typedef (encoding use for array
10969          access types encoded as fat pointers), strip it now.  */
10970       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10971         type = ada_typedef_target_type (type);
10972
10973       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10974         {
10975           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10976             {
10977             case TYPE_CODE_FUNC:
10978               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10979               break;
10980             case TYPE_CODE_ARRAY:
10981               break;
10982             case TYPE_CODE_STRUCT:
10983               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10984                 argvec[0] = ada_value_ind (argvec[0]);
10985               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10986               break;
10987             default:
10988               error (_("cannot subscript or call something of type `%s'"),
10989                      ada_type_name (value_type (argvec[0])));
10990               break;
10991             }
10992         }
10993
10994       switch (TYPE_CODE (type))
10995         {
10996         case TYPE_CODE_FUNC:
10997           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10998             {
10999               if (TYPE_TARGET_TYPE (type) == NULL)
11000                 error_call_unknown_return_type (NULL);
11001               return allocate_value (TYPE_TARGET_TYPE (type));
11002             }
11003           return call_function_by_hand (argvec[0], NULL, nargs, argvec + 1);
11004         case TYPE_CODE_INTERNAL_FUNCTION:
11005           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11006             /* We don't know anything about what the internal
11007                function might return, but we have to return
11008                something.  */
11009             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11010                                not_lval);
11011           else
11012             return call_internal_function (exp->gdbarch, exp->language_defn,
11013                                            argvec[0], nargs, argvec + 1);
11014
11015         case TYPE_CODE_STRUCT:
11016           {
11017             int arity;
11018
11019             arity = ada_array_arity (type);
11020             type = ada_array_element_type (type, nargs);
11021             if (type == NULL)
11022               error (_("cannot subscript or call a record"));
11023             if (arity != nargs)
11024               error (_("wrong number of subscripts; expecting %d"), arity);
11025             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11026               return value_zero (ada_aligned_type (type), lval_memory);
11027             return
11028               unwrap_value (ada_value_subscript
11029                             (argvec[0], nargs, argvec + 1));
11030           }
11031         case TYPE_CODE_ARRAY:
11032           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11033             {
11034               type = ada_array_element_type (type, nargs);
11035               if (type == NULL)
11036                 error (_("element type of array unknown"));
11037               else
11038                 return value_zero (ada_aligned_type (type), lval_memory);
11039             }
11040           return
11041             unwrap_value (ada_value_subscript
11042                           (ada_coerce_to_simple_array (argvec[0]),
11043                            nargs, argvec + 1));
11044         case TYPE_CODE_PTR:     /* Pointer to array */
11045           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11046             {
11047               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11048               type = ada_array_element_type (type, nargs);
11049               if (type == NULL)
11050                 error (_("element type of array unknown"));
11051               else
11052                 return value_zero (ada_aligned_type (type), lval_memory);
11053             }
11054           return
11055             unwrap_value (ada_value_ptr_subscript (argvec[0],
11056                                                    nargs, argvec + 1));
11057
11058         default:
11059           error (_("Attempt to index or call something other than an "
11060                    "array or function"));
11061         }
11062
11063     case TERNOP_SLICE:
11064       {
11065         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11066         struct value *low_bound_val =
11067           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11068         struct value *high_bound_val =
11069           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11070         LONGEST low_bound;
11071         LONGEST high_bound;
11072
11073         low_bound_val = coerce_ref (low_bound_val);
11074         high_bound_val = coerce_ref (high_bound_val);
11075         low_bound = value_as_long (low_bound_val);
11076         high_bound = value_as_long (high_bound_val);
11077
11078         if (noside == EVAL_SKIP)
11079           goto nosideret;
11080
11081         /* If this is a reference to an aligner type, then remove all
11082            the aligners.  */
11083         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11084             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11085           TYPE_TARGET_TYPE (value_type (array)) =
11086             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11087
11088         if (ada_is_constrained_packed_array_type (value_type (array)))
11089           error (_("cannot slice a packed array"));
11090
11091         /* If this is a reference to an array or an array lvalue,
11092            convert to a pointer.  */
11093         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11094             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11095                 && VALUE_LVAL (array) == lval_memory))
11096           array = value_addr (array);
11097
11098         if (noside == EVAL_AVOID_SIDE_EFFECTS
11099             && ada_is_array_descriptor_type (ada_check_typedef
11100                                              (value_type (array))))
11101           return empty_array (ada_type_of_array (array, 0), low_bound);
11102
11103         array = ada_coerce_to_simple_array_ptr (array);
11104
11105         /* If we have more than one level of pointer indirection,
11106            dereference the value until we get only one level.  */
11107         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11108                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11109                      == TYPE_CODE_PTR))
11110           array = value_ind (array);
11111
11112         /* Make sure we really do have an array type before going further,
11113            to avoid a SEGV when trying to get the index type or the target
11114            type later down the road if the debug info generated by
11115            the compiler is incorrect or incomplete.  */
11116         if (!ada_is_simple_array_type (value_type (array)))
11117           error (_("cannot take slice of non-array"));
11118
11119         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11120             == TYPE_CODE_PTR)
11121           {
11122             struct type *type0 = ada_check_typedef (value_type (array));
11123
11124             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11125               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
11126             else
11127               {
11128                 struct type *arr_type0 =
11129                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11130
11131                 return ada_value_slice_from_ptr (array, arr_type0,
11132                                                  longest_to_int (low_bound),
11133                                                  longest_to_int (high_bound));
11134               }
11135           }
11136         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11137           return array;
11138         else if (high_bound < low_bound)
11139           return empty_array (value_type (array), low_bound);
11140         else
11141           return ada_value_slice (array, longest_to_int (low_bound),
11142                                   longest_to_int (high_bound));
11143       }
11144
11145     case UNOP_IN_RANGE:
11146       (*pos) += 2;
11147       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11148       type = check_typedef (exp->elts[pc + 1].type);
11149
11150       if (noside == EVAL_SKIP)
11151         goto nosideret;
11152
11153       switch (TYPE_CODE (type))
11154         {
11155         default:
11156           lim_warning (_("Membership test incompletely implemented; "
11157                          "always returns true"));
11158           type = language_bool_type (exp->language_defn, exp->gdbarch);
11159           return value_from_longest (type, (LONGEST) 1);
11160
11161         case TYPE_CODE_RANGE:
11162           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11163           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11164           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11165           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11166           type = language_bool_type (exp->language_defn, exp->gdbarch);
11167           return
11168             value_from_longest (type,
11169                                 (value_less (arg1, arg3)
11170                                  || value_equal (arg1, arg3))
11171                                 && (value_less (arg2, arg1)
11172                                     || value_equal (arg2, arg1)));
11173         }
11174
11175     case BINOP_IN_BOUNDS:
11176       (*pos) += 2;
11177       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11178       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11179
11180       if (noside == EVAL_SKIP)
11181         goto nosideret;
11182
11183       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11184         {
11185           type = language_bool_type (exp->language_defn, exp->gdbarch);
11186           return value_zero (type, not_lval);
11187         }
11188
11189       tem = longest_to_int (exp->elts[pc + 1].longconst);
11190
11191       type = ada_index_type (value_type (arg2), tem, "range");
11192       if (!type)
11193         type = value_type (arg1);
11194
11195       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11196       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11197
11198       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11199       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11200       type = language_bool_type (exp->language_defn, exp->gdbarch);
11201       return
11202         value_from_longest (type,
11203                             (value_less (arg1, arg3)
11204                              || value_equal (arg1, arg3))
11205                             && (value_less (arg2, arg1)
11206                                 || value_equal (arg2, arg1)));
11207
11208     case TERNOP_IN_RANGE:
11209       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11210       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11211       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11212
11213       if (noside == EVAL_SKIP)
11214         goto nosideret;
11215
11216       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11217       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11218       type = language_bool_type (exp->language_defn, exp->gdbarch);
11219       return
11220         value_from_longest (type,
11221                             (value_less (arg1, arg3)
11222                              || value_equal (arg1, arg3))
11223                             && (value_less (arg2, arg1)
11224                                 || value_equal (arg2, arg1)));
11225
11226     case OP_ATR_FIRST:
11227     case OP_ATR_LAST:
11228     case OP_ATR_LENGTH:
11229       {
11230         struct type *type_arg;
11231
11232         if (exp->elts[*pos].opcode == OP_TYPE)
11233           {
11234             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11235             arg1 = NULL;
11236             type_arg = check_typedef (exp->elts[pc + 2].type);
11237           }
11238         else
11239           {
11240             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11241             type_arg = NULL;
11242           }
11243
11244         if (exp->elts[*pos].opcode != OP_LONG)
11245           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11246         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11247         *pos += 4;
11248
11249         if (noside == EVAL_SKIP)
11250           goto nosideret;
11251
11252         if (type_arg == NULL)
11253           {
11254             arg1 = ada_coerce_ref (arg1);
11255
11256             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11257               arg1 = ada_coerce_to_simple_array (arg1);
11258
11259             if (op == OP_ATR_LENGTH)
11260               type = builtin_type (exp->gdbarch)->builtin_int;
11261             else
11262               {
11263                 type = ada_index_type (value_type (arg1), tem,
11264                                        ada_attribute_name (op));
11265                 if (type == NULL)
11266                   type = builtin_type (exp->gdbarch)->builtin_int;
11267               }
11268
11269             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11270               return allocate_value (type);
11271
11272             switch (op)
11273               {
11274               default:          /* Should never happen.  */
11275                 error (_("unexpected attribute encountered"));
11276               case OP_ATR_FIRST:
11277                 return value_from_longest
11278                         (type, ada_array_bound (arg1, tem, 0));
11279               case OP_ATR_LAST:
11280                 return value_from_longest
11281                         (type, ada_array_bound (arg1, tem, 1));
11282               case OP_ATR_LENGTH:
11283                 return value_from_longest
11284                         (type, ada_array_length (arg1, tem));
11285               }
11286           }
11287         else if (discrete_type_p (type_arg))
11288           {
11289             struct type *range_type;
11290             const char *name = ada_type_name (type_arg);
11291
11292             range_type = NULL;
11293             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11294               range_type = to_fixed_range_type (type_arg, NULL);
11295             if (range_type == NULL)
11296               range_type = type_arg;
11297             switch (op)
11298               {
11299               default:
11300                 error (_("unexpected attribute encountered"));
11301               case OP_ATR_FIRST:
11302                 return value_from_longest 
11303                   (range_type, ada_discrete_type_low_bound (range_type));
11304               case OP_ATR_LAST:
11305                 return value_from_longest
11306                   (range_type, ada_discrete_type_high_bound (range_type));
11307               case OP_ATR_LENGTH:
11308                 error (_("the 'length attribute applies only to array types"));
11309               }
11310           }
11311         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11312           error (_("unimplemented type attribute"));
11313         else
11314           {
11315             LONGEST low, high;
11316
11317             if (ada_is_constrained_packed_array_type (type_arg))
11318               type_arg = decode_constrained_packed_array_type (type_arg);
11319
11320             if (op == OP_ATR_LENGTH)
11321               type = builtin_type (exp->gdbarch)->builtin_int;
11322             else
11323               {
11324                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11325                 if (type == NULL)
11326                   type = builtin_type (exp->gdbarch)->builtin_int;
11327               }
11328
11329             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11330               return allocate_value (type);
11331
11332             switch (op)
11333               {
11334               default:
11335                 error (_("unexpected attribute encountered"));
11336               case OP_ATR_FIRST:
11337                 low = ada_array_bound_from_type (type_arg, tem, 0);
11338                 return value_from_longest (type, low);
11339               case OP_ATR_LAST:
11340                 high = ada_array_bound_from_type (type_arg, tem, 1);
11341                 return value_from_longest (type, high);
11342               case OP_ATR_LENGTH:
11343                 low = ada_array_bound_from_type (type_arg, tem, 0);
11344                 high = ada_array_bound_from_type (type_arg, tem, 1);
11345                 return value_from_longest (type, high - low + 1);
11346               }
11347           }
11348       }
11349
11350     case OP_ATR_TAG:
11351       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11352       if (noside == EVAL_SKIP)
11353         goto nosideret;
11354
11355       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11356         return value_zero (ada_tag_type (arg1), not_lval);
11357
11358       return ada_value_tag (arg1);
11359
11360     case OP_ATR_MIN:
11361     case OP_ATR_MAX:
11362       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11363       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11364       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11365       if (noside == EVAL_SKIP)
11366         goto nosideret;
11367       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11368         return value_zero (value_type (arg1), not_lval);
11369       else
11370         {
11371           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11372           return value_binop (arg1, arg2,
11373                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11374         }
11375
11376     case OP_ATR_MODULUS:
11377       {
11378         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11379
11380         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11381         if (noside == EVAL_SKIP)
11382           goto nosideret;
11383
11384         if (!ada_is_modular_type (type_arg))
11385           error (_("'modulus must be applied to modular type"));
11386
11387         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11388                                    ada_modulus (type_arg));
11389       }
11390
11391
11392     case OP_ATR_POS:
11393       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11394       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11395       if (noside == EVAL_SKIP)
11396         goto nosideret;
11397       type = builtin_type (exp->gdbarch)->builtin_int;
11398       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11399         return value_zero (type, not_lval);
11400       else
11401         return value_pos_atr (type, arg1);
11402
11403     case OP_ATR_SIZE:
11404       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11405       type = value_type (arg1);
11406
11407       /* If the argument is a reference, then dereference its type, since
11408          the user is really asking for the size of the actual object,
11409          not the size of the pointer.  */
11410       if (TYPE_CODE (type) == TYPE_CODE_REF)
11411         type = TYPE_TARGET_TYPE (type);
11412
11413       if (noside == EVAL_SKIP)
11414         goto nosideret;
11415       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11416         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11417       else
11418         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11419                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11420
11421     case OP_ATR_VAL:
11422       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11423       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11424       type = exp->elts[pc + 2].type;
11425       if (noside == EVAL_SKIP)
11426         goto nosideret;
11427       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11428         return value_zero (type, not_lval);
11429       else
11430         return value_val_atr (type, arg1);
11431
11432     case BINOP_EXP:
11433       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11434       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11435       if (noside == EVAL_SKIP)
11436         goto nosideret;
11437       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11438         return value_zero (value_type (arg1), not_lval);
11439       else
11440         {
11441           /* For integer exponentiation operations,
11442              only promote the first argument.  */
11443           if (is_integral_type (value_type (arg2)))
11444             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11445           else
11446             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11447
11448           return value_binop (arg1, arg2, op);
11449         }
11450
11451     case UNOP_PLUS:
11452       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11453       if (noside == EVAL_SKIP)
11454         goto nosideret;
11455       else
11456         return arg1;
11457
11458     case UNOP_ABS:
11459       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11460       if (noside == EVAL_SKIP)
11461         goto nosideret;
11462       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11463       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11464         return value_neg (arg1);
11465       else
11466         return arg1;
11467
11468     case UNOP_IND:
11469       preeval_pos = *pos;
11470       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11471       if (noside == EVAL_SKIP)
11472         goto nosideret;
11473       type = ada_check_typedef (value_type (arg1));
11474       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11475         {
11476           if (ada_is_array_descriptor_type (type))
11477             /* GDB allows dereferencing GNAT array descriptors.  */
11478             {
11479               struct type *arrType = ada_type_of_array (arg1, 0);
11480
11481               if (arrType == NULL)
11482                 error (_("Attempt to dereference null array pointer."));
11483               return value_at_lazy (arrType, 0);
11484             }
11485           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11486                    || TYPE_CODE (type) == TYPE_CODE_REF
11487                    /* In C you can dereference an array to get the 1st elt.  */
11488                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11489             {
11490             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11491                only be determined by inspecting the object's tag.
11492                This means that we need to evaluate completely the
11493                expression in order to get its type.  */
11494
11495               if ((TYPE_CODE (type) == TYPE_CODE_REF
11496                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11497                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11498                 {
11499                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11500                                           EVAL_NORMAL);
11501                   type = value_type (ada_value_ind (arg1));
11502                 }
11503               else
11504                 {
11505                   type = to_static_fixed_type
11506                     (ada_aligned_type
11507                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11508                 }
11509               ada_ensure_varsize_limit (type);
11510               return value_zero (type, lval_memory);
11511             }
11512           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11513             {
11514               /* GDB allows dereferencing an int.  */
11515               if (expect_type == NULL)
11516                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11517                                    lval_memory);
11518               else
11519                 {
11520                   expect_type = 
11521                     to_static_fixed_type (ada_aligned_type (expect_type));
11522                   return value_zero (expect_type, lval_memory);
11523                 }
11524             }
11525           else
11526             error (_("Attempt to take contents of a non-pointer value."));
11527         }
11528       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11529       type = ada_check_typedef (value_type (arg1));
11530
11531       if (TYPE_CODE (type) == TYPE_CODE_INT)
11532           /* GDB allows dereferencing an int.  If we were given
11533              the expect_type, then use that as the target type.
11534              Otherwise, assume that the target type is an int.  */
11535         {
11536           if (expect_type != NULL)
11537             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11538                                               arg1));
11539           else
11540             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11541                                   (CORE_ADDR) value_as_address (arg1));
11542         }
11543
11544       if (ada_is_array_descriptor_type (type))
11545         /* GDB allows dereferencing GNAT array descriptors.  */
11546         return ada_coerce_to_simple_array (arg1);
11547       else
11548         return ada_value_ind (arg1);
11549
11550     case STRUCTOP_STRUCT:
11551       tem = longest_to_int (exp->elts[pc + 1].longconst);
11552       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11553       preeval_pos = *pos;
11554       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11555       if (noside == EVAL_SKIP)
11556         goto nosideret;
11557       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11558         {
11559           struct type *type1 = value_type (arg1);
11560
11561           if (ada_is_tagged_type (type1, 1))
11562             {
11563               type = ada_lookup_struct_elt_type (type1,
11564                                                  &exp->elts[pc + 2].string,
11565                                                  1, 1);
11566
11567               /* If the field is not found, check if it exists in the
11568                  extension of this object's type. This means that we
11569                  need to evaluate completely the expression.  */
11570
11571               if (type == NULL)
11572                 {
11573                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11574                                           EVAL_NORMAL);
11575                   arg1 = ada_value_struct_elt (arg1,
11576                                                &exp->elts[pc + 2].string,
11577                                                0);
11578                   arg1 = unwrap_value (arg1);
11579                   type = value_type (ada_to_fixed_value (arg1));
11580                 }
11581             }
11582           else
11583             type =
11584               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11585                                           0);
11586
11587           return value_zero (ada_aligned_type (type), lval_memory);
11588         }
11589       else
11590         {
11591           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11592           arg1 = unwrap_value (arg1);
11593           return ada_to_fixed_value (arg1);
11594         }
11595
11596     case OP_TYPE:
11597       /* The value is not supposed to be used.  This is here to make it
11598          easier to accommodate expressions that contain types.  */
11599       (*pos) += 2;
11600       if (noside == EVAL_SKIP)
11601         goto nosideret;
11602       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11603         return allocate_value (exp->elts[pc + 1].type);
11604       else
11605         error (_("Attempt to use a type name as an expression"));
11606
11607     case OP_AGGREGATE:
11608     case OP_CHOICES:
11609     case OP_OTHERS:
11610     case OP_DISCRETE_RANGE:
11611     case OP_POSITIONAL:
11612     case OP_NAME:
11613       if (noside == EVAL_NORMAL)
11614         switch (op) 
11615           {
11616           case OP_NAME:
11617             error (_("Undefined name, ambiguous name, or renaming used in "
11618                      "component association: %s."), &exp->elts[pc+2].string);
11619           case OP_AGGREGATE:
11620             error (_("Aggregates only allowed on the right of an assignment"));
11621           default:
11622             internal_error (__FILE__, __LINE__,
11623                             _("aggregate apparently mangled"));
11624           }
11625
11626       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11627       *pos += oplen - 1;
11628       for (tem = 0; tem < nargs; tem += 1) 
11629         ada_evaluate_subexp (NULL, exp, pos, noside);
11630       goto nosideret;
11631     }
11632
11633 nosideret:
11634   return eval_skip_value (exp);
11635 }
11636 \f
11637
11638                                 /* Fixed point */
11639
11640 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11641    type name that encodes the 'small and 'delta information.
11642    Otherwise, return NULL.  */
11643
11644 static const char *
11645 fixed_type_info (struct type *type)
11646 {
11647   const char *name = ada_type_name (type);
11648   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11649
11650   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11651     {
11652       const char *tail = strstr (name, "___XF_");
11653
11654       if (tail == NULL)
11655         return NULL;
11656       else
11657         return tail + 5;
11658     }
11659   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11660     return fixed_type_info (TYPE_TARGET_TYPE (type));
11661   else
11662     return NULL;
11663 }
11664
11665 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11666
11667 int
11668 ada_is_fixed_point_type (struct type *type)
11669 {
11670   return fixed_type_info (type) != NULL;
11671 }
11672
11673 /* Return non-zero iff TYPE represents a System.Address type.  */
11674
11675 int
11676 ada_is_system_address_type (struct type *type)
11677 {
11678   return (TYPE_NAME (type)
11679           && strcmp (TYPE_NAME (type), "system__address") == 0);
11680 }
11681
11682 /* Assuming that TYPE is the representation of an Ada fixed-point
11683    type, return the target floating-point type to be used to represent
11684    of this type during internal computation.  */
11685
11686 static struct type *
11687 ada_scaling_type (struct type *type)
11688 {
11689   return builtin_type (get_type_arch (type))->builtin_long_double;
11690 }
11691
11692 /* Assuming that TYPE is the representation of an Ada fixed-point
11693    type, return its delta, or NULL if the type is malformed and the
11694    delta cannot be determined.  */
11695
11696 struct value *
11697 ada_delta (struct type *type)
11698 {
11699   const char *encoding = fixed_type_info (type);
11700   struct type *scale_type = ada_scaling_type (type);
11701
11702   long long num, den;
11703
11704   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11705     return nullptr;
11706   else
11707     return value_binop (value_from_longest (scale_type, num),
11708                         value_from_longest (scale_type, den), BINOP_DIV);
11709 }
11710
11711 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11712    factor ('SMALL value) associated with the type.  */
11713
11714 struct value *
11715 ada_scaling_factor (struct type *type)
11716 {
11717   const char *encoding = fixed_type_info (type);
11718   struct type *scale_type = ada_scaling_type (type);
11719
11720   long long num0, den0, num1, den1;
11721   int n;
11722
11723   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11724               &num0, &den0, &num1, &den1);
11725
11726   if (n < 2)
11727     return value_from_longest (scale_type, 1);
11728   else if (n == 4)
11729     return value_binop (value_from_longest (scale_type, num1),
11730                         value_from_longest (scale_type, den1), BINOP_DIV);
11731   else
11732     return value_binop (value_from_longest (scale_type, num0),
11733                         value_from_longest (scale_type, den0), BINOP_DIV);
11734 }
11735
11736 \f
11737
11738                                 /* Range types */
11739
11740 /* Scan STR beginning at position K for a discriminant name, and
11741    return the value of that discriminant field of DVAL in *PX.  If
11742    PNEW_K is not null, put the position of the character beyond the
11743    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11744    not alter *PX and *PNEW_K if unsuccessful.  */
11745
11746 static int
11747 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11748                     int *pnew_k)
11749 {
11750   static char *bound_buffer = NULL;
11751   static size_t bound_buffer_len = 0;
11752   const char *pstart, *pend, *bound;
11753   struct value *bound_val;
11754
11755   if (dval == NULL || str == NULL || str[k] == '\0')
11756     return 0;
11757
11758   pstart = str + k;
11759   pend = strstr (pstart, "__");
11760   if (pend == NULL)
11761     {
11762       bound = pstart;
11763       k += strlen (bound);
11764     }
11765   else
11766     {
11767       int len = pend - pstart;
11768
11769       /* Strip __ and beyond.  */
11770       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11771       strncpy (bound_buffer, pstart, len);
11772       bound_buffer[len] = '\0';
11773
11774       bound = bound_buffer;
11775       k = pend - str;
11776     }
11777
11778   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11779   if (bound_val == NULL)
11780     return 0;
11781
11782   *px = value_as_long (bound_val);
11783   if (pnew_k != NULL)
11784     *pnew_k = k;
11785   return 1;
11786 }
11787
11788 /* Value of variable named NAME in the current environment.  If
11789    no such variable found, then if ERR_MSG is null, returns 0, and
11790    otherwise causes an error with message ERR_MSG.  */
11791
11792 static struct value *
11793 get_var_value (const char *name, const char *err_msg)
11794 {
11795   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11796
11797   struct block_symbol *syms;
11798   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11799                                              get_selected_block (0),
11800                                              VAR_DOMAIN, &syms, 1);
11801   struct cleanup *old_chain = make_cleanup (xfree, syms);
11802
11803   if (nsyms != 1)
11804     {
11805       do_cleanups (old_chain);
11806       if (err_msg == NULL)
11807         return 0;
11808       else
11809         error (("%s"), err_msg);
11810     }
11811
11812   struct value *result = value_of_variable (syms[0].symbol, syms[0].block);
11813   do_cleanups (old_chain);
11814   return result;
11815 }
11816
11817 /* Value of integer variable named NAME in the current environment.
11818    If no such variable is found, returns false.  Otherwise, sets VALUE
11819    to the variable's value and returns true.  */
11820
11821 bool
11822 get_int_var_value (const char *name, LONGEST &value)
11823 {
11824   struct value *var_val = get_var_value (name, 0);
11825
11826   if (var_val == 0)
11827     return false;
11828
11829   value = value_as_long (var_val);
11830   return true;
11831 }
11832
11833
11834 /* Return a range type whose base type is that of the range type named
11835    NAME in the current environment, and whose bounds are calculated
11836    from NAME according to the GNAT range encoding conventions.
11837    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11838    corresponding range type from debug information; fall back to using it
11839    if symbol lookup fails.  If a new type must be created, allocate it
11840    like ORIG_TYPE was.  The bounds information, in general, is encoded
11841    in NAME, the base type given in the named range type.  */
11842
11843 static struct type *
11844 to_fixed_range_type (struct type *raw_type, struct value *dval)
11845 {
11846   const char *name;
11847   struct type *base_type;
11848   const char *subtype_info;
11849
11850   gdb_assert (raw_type != NULL);
11851   gdb_assert (TYPE_NAME (raw_type) != NULL);
11852
11853   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11854     base_type = TYPE_TARGET_TYPE (raw_type);
11855   else
11856     base_type = raw_type;
11857
11858   name = TYPE_NAME (raw_type);
11859   subtype_info = strstr (name, "___XD");
11860   if (subtype_info == NULL)
11861     {
11862       LONGEST L = ada_discrete_type_low_bound (raw_type);
11863       LONGEST U = ada_discrete_type_high_bound (raw_type);
11864
11865       if (L < INT_MIN || U > INT_MAX)
11866         return raw_type;
11867       else
11868         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11869                                          L, U);
11870     }
11871   else
11872     {
11873       static char *name_buf = NULL;
11874       static size_t name_len = 0;
11875       int prefix_len = subtype_info - name;
11876       LONGEST L, U;
11877       struct type *type;
11878       const char *bounds_str;
11879       int n;
11880
11881       GROW_VECT (name_buf, name_len, prefix_len + 5);
11882       strncpy (name_buf, name, prefix_len);
11883       name_buf[prefix_len] = '\0';
11884
11885       subtype_info += 5;
11886       bounds_str = strchr (subtype_info, '_');
11887       n = 1;
11888
11889       if (*subtype_info == 'L')
11890         {
11891           if (!ada_scan_number (bounds_str, n, &L, &n)
11892               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11893             return raw_type;
11894           if (bounds_str[n] == '_')
11895             n += 2;
11896           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11897             n += 1;
11898           subtype_info += 1;
11899         }
11900       else
11901         {
11902           strcpy (name_buf + prefix_len, "___L");
11903           if (!get_int_var_value (name_buf, L))
11904             {
11905               lim_warning (_("Unknown lower bound, using 1."));
11906               L = 1;
11907             }
11908         }
11909
11910       if (*subtype_info == 'U')
11911         {
11912           if (!ada_scan_number (bounds_str, n, &U, &n)
11913               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11914             return raw_type;
11915         }
11916       else
11917         {
11918           strcpy (name_buf + prefix_len, "___U");
11919           if (!get_int_var_value (name_buf, U))
11920             {
11921               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11922               U = L;
11923             }
11924         }
11925
11926       type = create_static_range_type (alloc_type_copy (raw_type),
11927                                        base_type, L, U);
11928       /* create_static_range_type alters the resulting type's length
11929          to match the size of the base_type, which is not what we want.
11930          Set it back to the original range type's length.  */
11931       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11932       TYPE_NAME (type) = name;
11933       return type;
11934     }
11935 }
11936
11937 /* True iff NAME is the name of a range type.  */
11938
11939 int
11940 ada_is_range_type_name (const char *name)
11941 {
11942   return (name != NULL && strstr (name, "___XD"));
11943 }
11944 \f
11945
11946                                 /* Modular types */
11947
11948 /* True iff TYPE is an Ada modular type.  */
11949
11950 int
11951 ada_is_modular_type (struct type *type)
11952 {
11953   struct type *subranged_type = get_base_type (type);
11954
11955   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11956           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11957           && TYPE_UNSIGNED (subranged_type));
11958 }
11959
11960 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11961
11962 ULONGEST
11963 ada_modulus (struct type *type)
11964 {
11965   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11966 }
11967 \f
11968
11969 /* Ada exception catchpoint support:
11970    ---------------------------------
11971
11972    We support 3 kinds of exception catchpoints:
11973      . catchpoints on Ada exceptions
11974      . catchpoints on unhandled Ada exceptions
11975      . catchpoints on failed assertions
11976
11977    Exceptions raised during failed assertions, or unhandled exceptions
11978    could perfectly be caught with the general catchpoint on Ada exceptions.
11979    However, we can easily differentiate these two special cases, and having
11980    the option to distinguish these two cases from the rest can be useful
11981    to zero-in on certain situations.
11982
11983    Exception catchpoints are a specialized form of breakpoint,
11984    since they rely on inserting breakpoints inside known routines
11985    of the GNAT runtime.  The implementation therefore uses a standard
11986    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11987    of breakpoint_ops.
11988
11989    Support in the runtime for exception catchpoints have been changed
11990    a few times already, and these changes affect the implementation
11991    of these catchpoints.  In order to be able to support several
11992    variants of the runtime, we use a sniffer that will determine
11993    the runtime variant used by the program being debugged.  */
11994
11995 /* Ada's standard exceptions.
11996
11997    The Ada 83 standard also defined Numeric_Error.  But there so many
11998    situations where it was unclear from the Ada 83 Reference Manual
11999    (RM) whether Constraint_Error or Numeric_Error should be raised,
12000    that the ARG (Ada Rapporteur Group) eventually issued a Binding
12001    Interpretation saying that anytime the RM says that Numeric_Error
12002    should be raised, the implementation may raise Constraint_Error.
12003    Ada 95 went one step further and pretty much removed Numeric_Error
12004    from the list of standard exceptions (it made it a renaming of
12005    Constraint_Error, to help preserve compatibility when compiling
12006    an Ada83 compiler). As such, we do not include Numeric_Error from
12007    this list of standard exceptions.  */
12008
12009 static const char *standard_exc[] = {
12010   "constraint_error",
12011   "program_error",
12012   "storage_error",
12013   "tasking_error"
12014 };
12015
12016 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
12017
12018 /* A structure that describes how to support exception catchpoints
12019    for a given executable.  */
12020
12021 struct exception_support_info
12022 {
12023    /* The name of the symbol to break on in order to insert
12024       a catchpoint on exceptions.  */
12025    const char *catch_exception_sym;
12026
12027    /* The name of the symbol to break on in order to insert
12028       a catchpoint on unhandled exceptions.  */
12029    const char *catch_exception_unhandled_sym;
12030
12031    /* The name of the symbol to break on in order to insert
12032       a catchpoint on failed assertions.  */
12033    const char *catch_assert_sym;
12034
12035    /* The name of the symbol to break on in order to insert
12036       a catchpoint on exception handling.  */
12037    const char *catch_handlers_sym;
12038
12039    /* Assuming that the inferior just triggered an unhandled exception
12040       catchpoint, this function is responsible for returning the address
12041       in inferior memory where the name of that exception is stored.
12042       Return zero if the address could not be computed.  */
12043    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12044 };
12045
12046 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12047 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12048
12049 /* The following exception support info structure describes how to
12050    implement exception catchpoints with the latest version of the
12051    Ada runtime (as of 2007-03-06).  */
12052
12053 static const struct exception_support_info default_exception_support_info =
12054 {
12055   "__gnat_debug_raise_exception", /* catch_exception_sym */
12056   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12057   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12058   "__gnat_begin_handler", /* catch_handlers_sym */
12059   ada_unhandled_exception_name_addr
12060 };
12061
12062 /* The following exception support info structure describes how to
12063    implement exception catchpoints with a slightly older version
12064    of the Ada runtime.  */
12065
12066 static const struct exception_support_info exception_support_info_fallback =
12067 {
12068   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12069   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12070   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12071   "__gnat_begin_handler", /* catch_handlers_sym */
12072   ada_unhandled_exception_name_addr_from_raise
12073 };
12074
12075 /* Return nonzero if we can detect the exception support routines
12076    described in EINFO.
12077
12078    This function errors out if an abnormal situation is detected
12079    (for instance, if we find the exception support routines, but
12080    that support is found to be incomplete).  */
12081
12082 static int
12083 ada_has_this_exception_support (const struct exception_support_info *einfo)
12084 {
12085   struct symbol *sym;
12086
12087   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12088      that should be compiled with debugging information.  As a result, we
12089      expect to find that symbol in the symtabs.  */
12090
12091   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12092   if (sym == NULL)
12093     {
12094       /* Perhaps we did not find our symbol because the Ada runtime was
12095          compiled without debugging info, or simply stripped of it.
12096          It happens on some GNU/Linux distributions for instance, where
12097          users have to install a separate debug package in order to get
12098          the runtime's debugging info.  In that situation, let the user
12099          know why we cannot insert an Ada exception catchpoint.
12100
12101          Note: Just for the purpose of inserting our Ada exception
12102          catchpoint, we could rely purely on the associated minimal symbol.
12103          But we would be operating in degraded mode anyway, since we are
12104          still lacking the debugging info needed later on to extract
12105          the name of the exception being raised (this name is printed in
12106          the catchpoint message, and is also used when trying to catch
12107          a specific exception).  We do not handle this case for now.  */
12108       struct bound_minimal_symbol msym
12109         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12110
12111       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12112         error (_("Your Ada runtime appears to be missing some debugging "
12113                  "information.\nCannot insert Ada exception catchpoint "
12114                  "in this configuration."));
12115
12116       return 0;
12117     }
12118
12119   /* Make sure that the symbol we found corresponds to a function.  */
12120
12121   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12122     error (_("Symbol \"%s\" is not a function (class = %d)"),
12123            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12124
12125   return 1;
12126 }
12127
12128 /* Inspect the Ada runtime and determine which exception info structure
12129    should be used to provide support for exception catchpoints.
12130
12131    This function will always set the per-inferior exception_info,
12132    or raise an error.  */
12133
12134 static void
12135 ada_exception_support_info_sniffer (void)
12136 {
12137   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12138
12139   /* If the exception info is already known, then no need to recompute it.  */
12140   if (data->exception_info != NULL)
12141     return;
12142
12143   /* Check the latest (default) exception support info.  */
12144   if (ada_has_this_exception_support (&default_exception_support_info))
12145     {
12146       data->exception_info = &default_exception_support_info;
12147       return;
12148     }
12149
12150   /* Try our fallback exception suport info.  */
12151   if (ada_has_this_exception_support (&exception_support_info_fallback))
12152     {
12153       data->exception_info = &exception_support_info_fallback;
12154       return;
12155     }
12156
12157   /* Sometimes, it is normal for us to not be able to find the routine
12158      we are looking for.  This happens when the program is linked with
12159      the shared version of the GNAT runtime, and the program has not been
12160      started yet.  Inform the user of these two possible causes if
12161      applicable.  */
12162
12163   if (ada_update_initial_language (language_unknown) != language_ada)
12164     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12165
12166   /* If the symbol does not exist, then check that the program is
12167      already started, to make sure that shared libraries have been
12168      loaded.  If it is not started, this may mean that the symbol is
12169      in a shared library.  */
12170
12171   if (ptid_get_pid (inferior_ptid) == 0)
12172     error (_("Unable to insert catchpoint. Try to start the program first."));
12173
12174   /* At this point, we know that we are debugging an Ada program and
12175      that the inferior has been started, but we still are not able to
12176      find the run-time symbols.  That can mean that we are in
12177      configurable run time mode, or that a-except as been optimized
12178      out by the linker...  In any case, at this point it is not worth
12179      supporting this feature.  */
12180
12181   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12182 }
12183
12184 /* True iff FRAME is very likely to be that of a function that is
12185    part of the runtime system.  This is all very heuristic, but is
12186    intended to be used as advice as to what frames are uninteresting
12187    to most users.  */
12188
12189 static int
12190 is_known_support_routine (struct frame_info *frame)
12191 {
12192   enum language func_lang;
12193   int i;
12194   const char *fullname;
12195
12196   /* If this code does not have any debugging information (no symtab),
12197      This cannot be any user code.  */
12198
12199   symtab_and_line sal = find_frame_sal (frame);
12200   if (sal.symtab == NULL)
12201     return 1;
12202
12203   /* If there is a symtab, but the associated source file cannot be
12204      located, then assume this is not user code:  Selecting a frame
12205      for which we cannot display the code would not be very helpful
12206      for the user.  This should also take care of case such as VxWorks
12207      where the kernel has some debugging info provided for a few units.  */
12208
12209   fullname = symtab_to_fullname (sal.symtab);
12210   if (access (fullname, R_OK) != 0)
12211     return 1;
12212
12213   /* Check the unit filename againt the Ada runtime file naming.
12214      We also check the name of the objfile against the name of some
12215      known system libraries that sometimes come with debugging info
12216      too.  */
12217
12218   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12219     {
12220       re_comp (known_runtime_file_name_patterns[i]);
12221       if (re_exec (lbasename (sal.symtab->filename)))
12222         return 1;
12223       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12224           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12225         return 1;
12226     }
12227
12228   /* Check whether the function is a GNAT-generated entity.  */
12229
12230   gdb::unique_xmalloc_ptr<char> func_name
12231     = find_frame_funname (frame, &func_lang, NULL);
12232   if (func_name == NULL)
12233     return 1;
12234
12235   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12236     {
12237       re_comp (known_auxiliary_function_name_patterns[i]);
12238       if (re_exec (func_name.get ()))
12239         return 1;
12240     }
12241
12242   return 0;
12243 }
12244
12245 /* Find the first frame that contains debugging information and that is not
12246    part of the Ada run-time, starting from FI and moving upward.  */
12247
12248 void
12249 ada_find_printable_frame (struct frame_info *fi)
12250 {
12251   for (; fi != NULL; fi = get_prev_frame (fi))
12252     {
12253       if (!is_known_support_routine (fi))
12254         {
12255           select_frame (fi);
12256           break;
12257         }
12258     }
12259
12260 }
12261
12262 /* Assuming that the inferior just triggered an unhandled exception
12263    catchpoint, return the address in inferior memory where the name
12264    of the exception is stored.
12265    
12266    Return zero if the address could not be computed.  */
12267
12268 static CORE_ADDR
12269 ada_unhandled_exception_name_addr (void)
12270 {
12271   return parse_and_eval_address ("e.full_name");
12272 }
12273
12274 /* Same as ada_unhandled_exception_name_addr, except that this function
12275    should be used when the inferior uses an older version of the runtime,
12276    where the exception name needs to be extracted from a specific frame
12277    several frames up in the callstack.  */
12278
12279 static CORE_ADDR
12280 ada_unhandled_exception_name_addr_from_raise (void)
12281 {
12282   int frame_level;
12283   struct frame_info *fi;
12284   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12285
12286   /* To determine the name of this exception, we need to select
12287      the frame corresponding to RAISE_SYM_NAME.  This frame is
12288      at least 3 levels up, so we simply skip the first 3 frames
12289      without checking the name of their associated function.  */
12290   fi = get_current_frame ();
12291   for (frame_level = 0; frame_level < 3; frame_level += 1)
12292     if (fi != NULL)
12293       fi = get_prev_frame (fi); 
12294
12295   while (fi != NULL)
12296     {
12297       enum language func_lang;
12298
12299       gdb::unique_xmalloc_ptr<char> func_name
12300         = find_frame_funname (fi, &func_lang, NULL);
12301       if (func_name != NULL)
12302         {
12303           if (strcmp (func_name.get (),
12304                       data->exception_info->catch_exception_sym) == 0)
12305             break; /* We found the frame we were looking for...  */
12306           fi = get_prev_frame (fi);
12307         }
12308     }
12309
12310   if (fi == NULL)
12311     return 0;
12312
12313   select_frame (fi);
12314   return parse_and_eval_address ("id.full_name");
12315 }
12316
12317 /* Assuming the inferior just triggered an Ada exception catchpoint
12318    (of any type), return the address in inferior memory where the name
12319    of the exception is stored, if applicable.
12320
12321    Assumes the selected frame is the current frame.
12322
12323    Return zero if the address could not be computed, or if not relevant.  */
12324
12325 static CORE_ADDR
12326 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12327                            struct breakpoint *b)
12328 {
12329   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12330
12331   switch (ex)
12332     {
12333       case ada_catch_exception:
12334         return (parse_and_eval_address ("e.full_name"));
12335         break;
12336
12337       case ada_catch_exception_unhandled:
12338         return data->exception_info->unhandled_exception_name_addr ();
12339         break;
12340
12341       case ada_catch_handlers:
12342         return 0;  /* The runtimes does not provide access to the exception
12343                       name.  */
12344         break;
12345
12346       case ada_catch_assert:
12347         return 0;  /* Exception name is not relevant in this case.  */
12348         break;
12349
12350       default:
12351         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12352         break;
12353     }
12354
12355   return 0; /* Should never be reached.  */
12356 }
12357
12358 /* Assuming the inferior is stopped at an exception catchpoint,
12359    return the message which was associated to the exception, if
12360    available.  Return NULL if the message could not be retrieved.
12361
12362    The caller must xfree the string after use.
12363
12364    Note: The exception message can be associated to an exception
12365    either through the use of the Raise_Exception function, or
12366    more simply (Ada 2005 and later), via:
12367
12368        raise Exception_Name with "exception message";
12369
12370    */
12371
12372 static char *
12373 ada_exception_message_1 (void)
12374 {
12375   struct value *e_msg_val;
12376   char *e_msg = NULL;
12377   int e_msg_len;
12378   struct cleanup *cleanups;
12379
12380   /* For runtimes that support this feature, the exception message
12381      is passed as an unbounded string argument called "message".  */
12382   e_msg_val = parse_and_eval ("message");
12383   if (e_msg_val == NULL)
12384     return NULL; /* Exception message not supported.  */
12385
12386   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12387   gdb_assert (e_msg_val != NULL);
12388   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12389
12390   /* If the message string is empty, then treat it as if there was
12391      no exception message.  */
12392   if (e_msg_len <= 0)
12393     return NULL;
12394
12395   e_msg = (char *) xmalloc (e_msg_len + 1);
12396   cleanups = make_cleanup (xfree, e_msg);
12397   read_memory_string (value_address (e_msg_val), e_msg, e_msg_len + 1);
12398   e_msg[e_msg_len] = '\0';
12399
12400   discard_cleanups (cleanups);
12401   return e_msg;
12402 }
12403
12404 /* Same as ada_exception_message_1, except that all exceptions are
12405    contained here (returning NULL instead).  */
12406
12407 static char *
12408 ada_exception_message (void)
12409 {
12410   char *e_msg = NULL;  /* Avoid a spurious uninitialized warning.  */
12411
12412   TRY
12413     {
12414       e_msg = ada_exception_message_1 ();
12415     }
12416   CATCH (e, RETURN_MASK_ERROR)
12417     {
12418       e_msg = NULL;
12419     }
12420   END_CATCH
12421
12422   return e_msg;
12423 }
12424
12425 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12426    any error that ada_exception_name_addr_1 might cause to be thrown.
12427    When an error is intercepted, a warning with the error message is printed,
12428    and zero is returned.  */
12429
12430 static CORE_ADDR
12431 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12432                          struct breakpoint *b)
12433 {
12434   CORE_ADDR result = 0;
12435
12436   TRY
12437     {
12438       result = ada_exception_name_addr_1 (ex, b);
12439     }
12440
12441   CATCH (e, RETURN_MASK_ERROR)
12442     {
12443       warning (_("failed to get exception name: %s"), e.message);
12444       return 0;
12445     }
12446   END_CATCH
12447
12448   return result;
12449 }
12450
12451 static char *ada_exception_catchpoint_cond_string
12452   (const char *excep_string,
12453    enum ada_exception_catchpoint_kind ex);
12454
12455 /* Ada catchpoints.
12456
12457    In the case of catchpoints on Ada exceptions, the catchpoint will
12458    stop the target on every exception the program throws.  When a user
12459    specifies the name of a specific exception, we translate this
12460    request into a condition expression (in text form), and then parse
12461    it into an expression stored in each of the catchpoint's locations.
12462    We then use this condition to check whether the exception that was
12463    raised is the one the user is interested in.  If not, then the
12464    target is resumed again.  We store the name of the requested
12465    exception, in order to be able to re-set the condition expression
12466    when symbols change.  */
12467
12468 /* An instance of this type is used to represent an Ada catchpoint
12469    breakpoint location.  */
12470
12471 class ada_catchpoint_location : public bp_location
12472 {
12473 public:
12474   ada_catchpoint_location (const bp_location_ops *ops, breakpoint *owner)
12475     : bp_location (ops, owner)
12476   {}
12477
12478   /* The condition that checks whether the exception that was raised
12479      is the specific exception the user specified on catchpoint
12480      creation.  */
12481   expression_up excep_cond_expr;
12482 };
12483
12484 /* Implement the DTOR method in the bp_location_ops structure for all
12485    Ada exception catchpoint kinds.  */
12486
12487 static void
12488 ada_catchpoint_location_dtor (struct bp_location *bl)
12489 {
12490   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12491
12492   al->excep_cond_expr.reset ();
12493 }
12494
12495 /* The vtable to be used in Ada catchpoint locations.  */
12496
12497 static const struct bp_location_ops ada_catchpoint_location_ops =
12498 {
12499   ada_catchpoint_location_dtor
12500 };
12501
12502 /* An instance of this type is used to represent an Ada catchpoint.  */
12503
12504 struct ada_catchpoint : public breakpoint
12505 {
12506   ~ada_catchpoint () override;
12507
12508   /* The name of the specific exception the user specified.  */
12509   char *excep_string;
12510 };
12511
12512 /* Parse the exception condition string in the context of each of the
12513    catchpoint's locations, and store them for later evaluation.  */
12514
12515 static void
12516 create_excep_cond_exprs (struct ada_catchpoint *c,
12517                          enum ada_exception_catchpoint_kind ex)
12518 {
12519   struct cleanup *old_chain;
12520   struct bp_location *bl;
12521   char *cond_string;
12522
12523   /* Nothing to do if there's no specific exception to catch.  */
12524   if (c->excep_string == NULL)
12525     return;
12526
12527   /* Same if there are no locations... */
12528   if (c->loc == NULL)
12529     return;
12530
12531   /* Compute the condition expression in text form, from the specific
12532      expection we want to catch.  */
12533   cond_string = ada_exception_catchpoint_cond_string (c->excep_string, ex);
12534   old_chain = make_cleanup (xfree, cond_string);
12535
12536   /* Iterate over all the catchpoint's locations, and parse an
12537      expression for each.  */
12538   for (bl = c->loc; bl != NULL; bl = bl->next)
12539     {
12540       struct ada_catchpoint_location *ada_loc
12541         = (struct ada_catchpoint_location *) bl;
12542       expression_up exp;
12543
12544       if (!bl->shlib_disabled)
12545         {
12546           const char *s;
12547
12548           s = cond_string;
12549           TRY
12550             {
12551               exp = parse_exp_1 (&s, bl->address,
12552                                  block_for_pc (bl->address),
12553                                  0);
12554             }
12555           CATCH (e, RETURN_MASK_ERROR)
12556             {
12557               warning (_("failed to reevaluate internal exception condition "
12558                          "for catchpoint %d: %s"),
12559                        c->number, e.message);
12560             }
12561           END_CATCH
12562         }
12563
12564       ada_loc->excep_cond_expr = std::move (exp);
12565     }
12566
12567   do_cleanups (old_chain);
12568 }
12569
12570 /* ada_catchpoint destructor.  */
12571
12572 ada_catchpoint::~ada_catchpoint ()
12573 {
12574   xfree (this->excep_string);
12575 }
12576
12577 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12578    structure for all exception catchpoint kinds.  */
12579
12580 static struct bp_location *
12581 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12582                              struct breakpoint *self)
12583 {
12584   return new ada_catchpoint_location (&ada_catchpoint_location_ops, self);
12585 }
12586
12587 /* Implement the RE_SET method in the breakpoint_ops structure for all
12588    exception catchpoint kinds.  */
12589
12590 static void
12591 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12592 {
12593   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12594
12595   /* Call the base class's method.  This updates the catchpoint's
12596      locations.  */
12597   bkpt_breakpoint_ops.re_set (b);
12598
12599   /* Reparse the exception conditional expressions.  One for each
12600      location.  */
12601   create_excep_cond_exprs (c, ex);
12602 }
12603
12604 /* Returns true if we should stop for this breakpoint hit.  If the
12605    user specified a specific exception, we only want to cause a stop
12606    if the program thrown that exception.  */
12607
12608 static int
12609 should_stop_exception (const struct bp_location *bl)
12610 {
12611   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12612   const struct ada_catchpoint_location *ada_loc
12613     = (const struct ada_catchpoint_location *) bl;
12614   int stop;
12615
12616   /* With no specific exception, should always stop.  */
12617   if (c->excep_string == NULL)
12618     return 1;
12619
12620   if (ada_loc->excep_cond_expr == NULL)
12621     {
12622       /* We will have a NULL expression if back when we were creating
12623          the expressions, this location's had failed to parse.  */
12624       return 1;
12625     }
12626
12627   stop = 1;
12628   TRY
12629     {
12630       struct value *mark;
12631
12632       mark = value_mark ();
12633       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12634       value_free_to_mark (mark);
12635     }
12636   CATCH (ex, RETURN_MASK_ALL)
12637     {
12638       exception_fprintf (gdb_stderr, ex,
12639                          _("Error in testing exception condition:\n"));
12640     }
12641   END_CATCH
12642
12643   return stop;
12644 }
12645
12646 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12647    for all exception catchpoint kinds.  */
12648
12649 static void
12650 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12651 {
12652   bs->stop = should_stop_exception (bs->bp_location_at);
12653 }
12654
12655 /* Implement the PRINT_IT method in the breakpoint_ops structure
12656    for all exception catchpoint kinds.  */
12657
12658 static enum print_stop_action
12659 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12660 {
12661   struct ui_out *uiout = current_uiout;
12662   struct breakpoint *b = bs->breakpoint_at;
12663   char *exception_message;
12664
12665   annotate_catchpoint (b->number);
12666
12667   if (uiout->is_mi_like_p ())
12668     {
12669       uiout->field_string ("reason",
12670                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12671       uiout->field_string ("disp", bpdisp_text (b->disposition));
12672     }
12673
12674   uiout->text (b->disposition == disp_del
12675                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12676   uiout->field_int ("bkptno", b->number);
12677   uiout->text (", ");
12678
12679   /* ada_exception_name_addr relies on the selected frame being the
12680      current frame.  Need to do this here because this function may be
12681      called more than once when printing a stop, and below, we'll
12682      select the first frame past the Ada run-time (see
12683      ada_find_printable_frame).  */
12684   select_frame (get_current_frame ());
12685
12686   switch (ex)
12687     {
12688       case ada_catch_exception:
12689       case ada_catch_exception_unhandled:
12690       case ada_catch_handlers:
12691         {
12692           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12693           char exception_name[256];
12694
12695           if (addr != 0)
12696             {
12697               read_memory (addr, (gdb_byte *) exception_name,
12698                            sizeof (exception_name) - 1);
12699               exception_name [sizeof (exception_name) - 1] = '\0';
12700             }
12701           else
12702             {
12703               /* For some reason, we were unable to read the exception
12704                  name.  This could happen if the Runtime was compiled
12705                  without debugging info, for instance.  In that case,
12706                  just replace the exception name by the generic string
12707                  "exception" - it will read as "an exception" in the
12708                  notification we are about to print.  */
12709               memcpy (exception_name, "exception", sizeof ("exception"));
12710             }
12711           /* In the case of unhandled exception breakpoints, we print
12712              the exception name as "unhandled EXCEPTION_NAME", to make
12713              it clearer to the user which kind of catchpoint just got
12714              hit.  We used ui_out_text to make sure that this extra
12715              info does not pollute the exception name in the MI case.  */
12716           if (ex == ada_catch_exception_unhandled)
12717             uiout->text ("unhandled ");
12718           uiout->field_string ("exception-name", exception_name);
12719         }
12720         break;
12721       case ada_catch_assert:
12722         /* In this case, the name of the exception is not really
12723            important.  Just print "failed assertion" to make it clearer
12724            that his program just hit an assertion-failure catchpoint.
12725            We used ui_out_text because this info does not belong in
12726            the MI output.  */
12727         uiout->text ("failed assertion");
12728         break;
12729     }
12730
12731   exception_message = ada_exception_message ();
12732   if (exception_message != NULL)
12733     {
12734       struct cleanup *cleanups = make_cleanup (xfree, exception_message);
12735
12736       uiout->text (" (");
12737       uiout->field_string ("exception-message", exception_message);
12738       uiout->text (")");
12739
12740       do_cleanups (cleanups);
12741     }
12742
12743   uiout->text (" at ");
12744   ada_find_printable_frame (get_current_frame ());
12745
12746   return PRINT_SRC_AND_LOC;
12747 }
12748
12749 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12750    for all exception catchpoint kinds.  */
12751
12752 static void
12753 print_one_exception (enum ada_exception_catchpoint_kind ex,
12754                      struct breakpoint *b, struct bp_location **last_loc)
12755
12756   struct ui_out *uiout = current_uiout;
12757   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12758   struct value_print_options opts;
12759
12760   get_user_print_options (&opts);
12761   if (opts.addressprint)
12762     {
12763       annotate_field (4);
12764       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12765     }
12766
12767   annotate_field (5);
12768   *last_loc = b->loc;
12769   switch (ex)
12770     {
12771       case ada_catch_exception:
12772         if (c->excep_string != NULL)
12773           {
12774             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12775
12776             uiout->field_string ("what", msg);
12777             xfree (msg);
12778           }
12779         else
12780           uiout->field_string ("what", "all Ada exceptions");
12781         
12782         break;
12783
12784       case ada_catch_exception_unhandled:
12785         uiout->field_string ("what", "unhandled Ada exceptions");
12786         break;
12787       
12788       case ada_catch_handlers:
12789         if (c->excep_string != NULL)
12790           {
12791             uiout->field_fmt ("what",
12792                               _("`%s' Ada exception handlers"),
12793                               c->excep_string);
12794           }
12795         else
12796           uiout->field_string ("what", "all Ada exceptions handlers");
12797         break;
12798
12799       case ada_catch_assert:
12800         uiout->field_string ("what", "failed Ada assertions");
12801         break;
12802
12803       default:
12804         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12805         break;
12806     }
12807 }
12808
12809 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12810    for all exception catchpoint kinds.  */
12811
12812 static void
12813 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12814                          struct breakpoint *b)
12815 {
12816   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12817   struct ui_out *uiout = current_uiout;
12818
12819   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12820                                                  : _("Catchpoint "));
12821   uiout->field_int ("bkptno", b->number);
12822   uiout->text (": ");
12823
12824   switch (ex)
12825     {
12826       case ada_catch_exception:
12827         if (c->excep_string != NULL)
12828           {
12829             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12830             struct cleanup *old_chain = make_cleanup (xfree, info);
12831
12832             uiout->text (info);
12833             do_cleanups (old_chain);
12834           }
12835         else
12836           uiout->text (_("all Ada exceptions"));
12837         break;
12838
12839       case ada_catch_exception_unhandled:
12840         uiout->text (_("unhandled Ada exceptions"));
12841         break;
12842
12843       case ada_catch_handlers:
12844         if (c->excep_string != NULL)
12845           {
12846             std::string info
12847               = string_printf (_("`%s' Ada exception handlers"),
12848                                c->excep_string);
12849             uiout->text (info.c_str ());
12850           }
12851         else
12852           uiout->text (_("all Ada exceptions handlers"));
12853         break;
12854
12855       case ada_catch_assert:
12856         uiout->text (_("failed Ada assertions"));
12857         break;
12858
12859       default:
12860         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12861         break;
12862     }
12863 }
12864
12865 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12866    for all exception catchpoint kinds.  */
12867
12868 static void
12869 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12870                           struct breakpoint *b, struct ui_file *fp)
12871 {
12872   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12873
12874   switch (ex)
12875     {
12876       case ada_catch_exception:
12877         fprintf_filtered (fp, "catch exception");
12878         if (c->excep_string != NULL)
12879           fprintf_filtered (fp, " %s", c->excep_string);
12880         break;
12881
12882       case ada_catch_exception_unhandled:
12883         fprintf_filtered (fp, "catch exception unhandled");
12884         break;
12885
12886       case ada_catch_handlers:
12887         fprintf_filtered (fp, "catch handlers");
12888         break;
12889
12890       case ada_catch_assert:
12891         fprintf_filtered (fp, "catch assert");
12892         break;
12893
12894       default:
12895         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12896     }
12897   print_recreate_thread (b, fp);
12898 }
12899
12900 /* Virtual table for "catch exception" breakpoints.  */
12901
12902 static struct bp_location *
12903 allocate_location_catch_exception (struct breakpoint *self)
12904 {
12905   return allocate_location_exception (ada_catch_exception, self);
12906 }
12907
12908 static void
12909 re_set_catch_exception (struct breakpoint *b)
12910 {
12911   re_set_exception (ada_catch_exception, b);
12912 }
12913
12914 static void
12915 check_status_catch_exception (bpstat bs)
12916 {
12917   check_status_exception (ada_catch_exception, bs);
12918 }
12919
12920 static enum print_stop_action
12921 print_it_catch_exception (bpstat bs)
12922 {
12923   return print_it_exception (ada_catch_exception, bs);
12924 }
12925
12926 static void
12927 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12928 {
12929   print_one_exception (ada_catch_exception, b, last_loc);
12930 }
12931
12932 static void
12933 print_mention_catch_exception (struct breakpoint *b)
12934 {
12935   print_mention_exception (ada_catch_exception, b);
12936 }
12937
12938 static void
12939 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12940 {
12941   print_recreate_exception (ada_catch_exception, b, fp);
12942 }
12943
12944 static struct breakpoint_ops catch_exception_breakpoint_ops;
12945
12946 /* Virtual table for "catch exception unhandled" breakpoints.  */
12947
12948 static struct bp_location *
12949 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12950 {
12951   return allocate_location_exception (ada_catch_exception_unhandled, self);
12952 }
12953
12954 static void
12955 re_set_catch_exception_unhandled (struct breakpoint *b)
12956 {
12957   re_set_exception (ada_catch_exception_unhandled, b);
12958 }
12959
12960 static void
12961 check_status_catch_exception_unhandled (bpstat bs)
12962 {
12963   check_status_exception (ada_catch_exception_unhandled, bs);
12964 }
12965
12966 static enum print_stop_action
12967 print_it_catch_exception_unhandled (bpstat bs)
12968 {
12969   return print_it_exception (ada_catch_exception_unhandled, bs);
12970 }
12971
12972 static void
12973 print_one_catch_exception_unhandled (struct breakpoint *b,
12974                                      struct bp_location **last_loc)
12975 {
12976   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12977 }
12978
12979 static void
12980 print_mention_catch_exception_unhandled (struct breakpoint *b)
12981 {
12982   print_mention_exception (ada_catch_exception_unhandled, b);
12983 }
12984
12985 static void
12986 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12987                                           struct ui_file *fp)
12988 {
12989   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12990 }
12991
12992 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12993
12994 /* Virtual table for "catch assert" breakpoints.  */
12995
12996 static struct bp_location *
12997 allocate_location_catch_assert (struct breakpoint *self)
12998 {
12999   return allocate_location_exception (ada_catch_assert, self);
13000 }
13001
13002 static void
13003 re_set_catch_assert (struct breakpoint *b)
13004 {
13005   re_set_exception (ada_catch_assert, b);
13006 }
13007
13008 static void
13009 check_status_catch_assert (bpstat bs)
13010 {
13011   check_status_exception (ada_catch_assert, bs);
13012 }
13013
13014 static enum print_stop_action
13015 print_it_catch_assert (bpstat bs)
13016 {
13017   return print_it_exception (ada_catch_assert, bs);
13018 }
13019
13020 static void
13021 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
13022 {
13023   print_one_exception (ada_catch_assert, b, last_loc);
13024 }
13025
13026 static void
13027 print_mention_catch_assert (struct breakpoint *b)
13028 {
13029   print_mention_exception (ada_catch_assert, b);
13030 }
13031
13032 static void
13033 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
13034 {
13035   print_recreate_exception (ada_catch_assert, b, fp);
13036 }
13037
13038 static struct breakpoint_ops catch_assert_breakpoint_ops;
13039
13040 /* Virtual table for "catch handlers" breakpoints.  */
13041
13042 static struct bp_location *
13043 allocate_location_catch_handlers (struct breakpoint *self)
13044 {
13045   return allocate_location_exception (ada_catch_handlers, self);
13046 }
13047
13048 static void
13049 re_set_catch_handlers (struct breakpoint *b)
13050 {
13051   re_set_exception (ada_catch_handlers, b);
13052 }
13053
13054 static void
13055 check_status_catch_handlers (bpstat bs)
13056 {
13057   check_status_exception (ada_catch_handlers, bs);
13058 }
13059
13060 static enum print_stop_action
13061 print_it_catch_handlers (bpstat bs)
13062 {
13063   return print_it_exception (ada_catch_handlers, bs);
13064 }
13065
13066 static void
13067 print_one_catch_handlers (struct breakpoint *b,
13068                           struct bp_location **last_loc)
13069 {
13070   print_one_exception (ada_catch_handlers, b, last_loc);
13071 }
13072
13073 static void
13074 print_mention_catch_handlers (struct breakpoint *b)
13075 {
13076   print_mention_exception (ada_catch_handlers, b);
13077 }
13078
13079 static void
13080 print_recreate_catch_handlers (struct breakpoint *b,
13081                                struct ui_file *fp)
13082 {
13083   print_recreate_exception (ada_catch_handlers, b, fp);
13084 }
13085
13086 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13087
13088 /* Return a newly allocated copy of the first space-separated token
13089    in ARGSP, and then adjust ARGSP to point immediately after that
13090    token.
13091
13092    Return NULL if ARGPS does not contain any more tokens.  */
13093
13094 static char *
13095 ada_get_next_arg (const char **argsp)
13096 {
13097   const char *args = *argsp;
13098   const char *end;
13099   char *result;
13100
13101   args = skip_spaces (args);
13102   if (args[0] == '\0')
13103     return NULL; /* No more arguments.  */
13104   
13105   /* Find the end of the current argument.  */
13106
13107   end = skip_to_space (args);
13108
13109   /* Adjust ARGSP to point to the start of the next argument.  */
13110
13111   *argsp = end;
13112
13113   /* Make a copy of the current argument and return it.  */
13114
13115   result = (char *) xmalloc (end - args + 1);
13116   strncpy (result, args, end - args);
13117   result[end - args] = '\0';
13118   
13119   return result;
13120 }
13121
13122 /* Split the arguments specified in a "catch exception" command.  
13123    Set EX to the appropriate catchpoint type.
13124    Set EXCEP_STRING to the name of the specific exception if
13125    specified by the user.
13126    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13127    "catch handlers" command.  False otherwise.
13128    If a condition is found at the end of the arguments, the condition
13129    expression is stored in COND_STRING (memory must be deallocated
13130    after use).  Otherwise COND_STRING is set to NULL.  */
13131
13132 static void
13133 catch_ada_exception_command_split (const char *args,
13134                                    bool is_catch_handlers_cmd,
13135                                    enum ada_exception_catchpoint_kind *ex,
13136                                    char **excep_string,
13137                                    char **cond_string)
13138 {
13139   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
13140   char *exception_name;
13141   char *cond = NULL;
13142
13143   exception_name = ada_get_next_arg (&args);
13144   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
13145     {
13146       /* This is not an exception name; this is the start of a condition
13147          expression for a catchpoint on all exceptions.  So, "un-get"
13148          this token, and set exception_name to NULL.  */
13149       xfree (exception_name);
13150       exception_name = NULL;
13151       args -= 2;
13152     }
13153   make_cleanup (xfree, exception_name);
13154
13155   /* Check to see if we have a condition.  */
13156
13157   args = skip_spaces (args);
13158   if (startswith (args, "if")
13159       && (isspace (args[2]) || args[2] == '\0'))
13160     {
13161       args += 2;
13162       args = skip_spaces (args);
13163
13164       if (args[0] == '\0')
13165         error (_("Condition missing after `if' keyword"));
13166       cond = xstrdup (args);
13167       make_cleanup (xfree, cond);
13168
13169       args += strlen (args);
13170     }
13171
13172   /* Check that we do not have any more arguments.  Anything else
13173      is unexpected.  */
13174
13175   if (args[0] != '\0')
13176     error (_("Junk at end of expression"));
13177
13178   discard_cleanups (old_chain);
13179
13180   if (is_catch_handlers_cmd)
13181     {
13182       /* Catch handling of exceptions.  */
13183       *ex = ada_catch_handlers;
13184       *excep_string = exception_name;
13185     }
13186   else if (exception_name == NULL)
13187     {
13188       /* Catch all exceptions.  */
13189       *ex = ada_catch_exception;
13190       *excep_string = NULL;
13191     }
13192   else if (strcmp (exception_name, "unhandled") == 0)
13193     {
13194       /* Catch unhandled exceptions.  */
13195       *ex = ada_catch_exception_unhandled;
13196       *excep_string = NULL;
13197     }
13198   else
13199     {
13200       /* Catch a specific exception.  */
13201       *ex = ada_catch_exception;
13202       *excep_string = exception_name;
13203     }
13204   *cond_string = cond;
13205 }
13206
13207 /* Return the name of the symbol on which we should break in order to
13208    implement a catchpoint of the EX kind.  */
13209
13210 static const char *
13211 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13212 {
13213   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13214
13215   gdb_assert (data->exception_info != NULL);
13216
13217   switch (ex)
13218     {
13219       case ada_catch_exception:
13220         return (data->exception_info->catch_exception_sym);
13221         break;
13222       case ada_catch_exception_unhandled:
13223         return (data->exception_info->catch_exception_unhandled_sym);
13224         break;
13225       case ada_catch_assert:
13226         return (data->exception_info->catch_assert_sym);
13227         break;
13228       case ada_catch_handlers:
13229         return (data->exception_info->catch_handlers_sym);
13230         break;
13231       default:
13232         internal_error (__FILE__, __LINE__,
13233                         _("unexpected catchpoint kind (%d)"), ex);
13234     }
13235 }
13236
13237 /* Return the breakpoint ops "virtual table" used for catchpoints
13238    of the EX kind.  */
13239
13240 static const struct breakpoint_ops *
13241 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13242 {
13243   switch (ex)
13244     {
13245       case ada_catch_exception:
13246         return (&catch_exception_breakpoint_ops);
13247         break;
13248       case ada_catch_exception_unhandled:
13249         return (&catch_exception_unhandled_breakpoint_ops);
13250         break;
13251       case ada_catch_assert:
13252         return (&catch_assert_breakpoint_ops);
13253         break;
13254       case ada_catch_handlers:
13255         return (&catch_handlers_breakpoint_ops);
13256         break;
13257       default:
13258         internal_error (__FILE__, __LINE__,
13259                         _("unexpected catchpoint kind (%d)"), ex);
13260     }
13261 }
13262
13263 /* Return the condition that will be used to match the current exception
13264    being raised with the exception that the user wants to catch.  This
13265    assumes that this condition is used when the inferior just triggered
13266    an exception catchpoint.
13267    EX: the type of catchpoints used for catching Ada exceptions.
13268    
13269    The string returned is a newly allocated string that needs to be
13270    deallocated later.  */
13271
13272 static char *
13273 ada_exception_catchpoint_cond_string (const char *excep_string,
13274                                       enum ada_exception_catchpoint_kind ex)
13275 {
13276   int i;
13277   bool is_standard_exc = false;
13278   const char *actual_exc_expr;
13279   char *ref_exc_expr;
13280
13281   if (ex == ada_catch_handlers)
13282     {
13283       /* For exception handlers catchpoints, the condition string does
13284          not use the same parameter as for the other exceptions.  */
13285       actual_exc_expr = ("long_integer (GNAT_GCC_exception_Access"
13286                          "(gcc_exception).all.occurrence.id)");
13287     }
13288   else
13289     actual_exc_expr = "long_integer (e)";
13290
13291   /* The standard exceptions are a special case.  They are defined in
13292      runtime units that have been compiled without debugging info; if
13293      EXCEP_STRING is the not-fully-qualified name of a standard
13294      exception (e.g. "constraint_error") then, during the evaluation
13295      of the condition expression, the symbol lookup on this name would
13296      *not* return this standard exception.  The catchpoint condition
13297      may then be set only on user-defined exceptions which have the
13298      same not-fully-qualified name (e.g. my_package.constraint_error).
13299
13300      To avoid this unexcepted behavior, these standard exceptions are
13301      systematically prefixed by "standard".  This means that "catch
13302      exception constraint_error" is rewritten into "catch exception
13303      standard.constraint_error".
13304
13305      If an exception named contraint_error is defined in another package of
13306      the inferior program, then the only way to specify this exception as a
13307      breakpoint condition is to use its fully-qualified named:
13308      e.g. my_package.constraint_error.  */
13309
13310   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13311     {
13312       if (strcmp (standard_exc [i], excep_string) == 0)
13313         {
13314           is_standard_exc = true;
13315           break;
13316         }
13317     }
13318
13319   if (is_standard_exc)
13320     ref_exc_expr = xstrprintf ("long_integer (&standard.%s)", excep_string);
13321   else
13322     ref_exc_expr = xstrprintf ("long_integer (&%s)", excep_string);
13323
13324   char *result =  xstrprintf ("%s = %s", actual_exc_expr, ref_exc_expr);
13325   xfree (ref_exc_expr);
13326   return result;
13327 }
13328
13329 /* Return the symtab_and_line that should be used to insert an exception
13330    catchpoint of the TYPE kind.
13331
13332    EXCEP_STRING should contain the name of a specific exception that
13333    the catchpoint should catch, or NULL otherwise.
13334
13335    ADDR_STRING returns the name of the function where the real
13336    breakpoint that implements the catchpoints is set, depending on the
13337    type of catchpoint we need to create.  */
13338
13339 static struct symtab_and_line
13340 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
13341                    const char **addr_string, const struct breakpoint_ops **ops)
13342 {
13343   const char *sym_name;
13344   struct symbol *sym;
13345
13346   /* First, find out which exception support info to use.  */
13347   ada_exception_support_info_sniffer ();
13348
13349   /* Then lookup the function on which we will break in order to catch
13350      the Ada exceptions requested by the user.  */
13351   sym_name = ada_exception_sym_name (ex);
13352   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13353
13354   /* We can assume that SYM is not NULL at this stage.  If the symbol
13355      did not exist, ada_exception_support_info_sniffer would have
13356      raised an exception.
13357
13358      Also, ada_exception_support_info_sniffer should have already
13359      verified that SYM is a function symbol.  */
13360   gdb_assert (sym != NULL);
13361   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
13362
13363   /* Set ADDR_STRING.  */
13364   *addr_string = xstrdup (sym_name);
13365
13366   /* Set OPS.  */
13367   *ops = ada_exception_breakpoint_ops (ex);
13368
13369   return find_function_start_sal (sym, 1);
13370 }
13371
13372 /* Create an Ada exception catchpoint.
13373
13374    EX_KIND is the kind of exception catchpoint to be created.
13375
13376    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
13377    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13378    of the exception to which this catchpoint applies.  When not NULL,
13379    the string must be allocated on the heap, and its deallocation
13380    is no longer the responsibility of the caller.
13381
13382    COND_STRING, if not NULL, is the catchpoint condition.  This string
13383    must be allocated on the heap, and its deallocation is no longer
13384    the responsibility of the caller.
13385
13386    TEMPFLAG, if nonzero, means that the underlying breakpoint
13387    should be temporary.
13388
13389    FROM_TTY is the usual argument passed to all commands implementations.  */
13390
13391 void
13392 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13393                                  enum ada_exception_catchpoint_kind ex_kind,
13394                                  char *excep_string,
13395                                  char *cond_string,
13396                                  int tempflag,
13397                                  int disabled,
13398                                  int from_tty)
13399 {
13400   const char *addr_string = NULL;
13401   const struct breakpoint_ops *ops = NULL;
13402   struct symtab_and_line sal
13403     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
13404
13405   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13406   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string,
13407                                  ops, tempflag, disabled, from_tty);
13408   c->excep_string = excep_string;
13409   create_excep_cond_exprs (c.get (), ex_kind);
13410   if (cond_string != NULL)
13411     set_breakpoint_condition (c.get (), cond_string, from_tty);
13412   install_breakpoint (0, std::move (c), 1);
13413 }
13414
13415 /* Implement the "catch exception" command.  */
13416
13417 static void
13418 catch_ada_exception_command (const char *arg_entry, int from_tty,
13419                              struct cmd_list_element *command)
13420 {
13421   const char *arg = arg_entry;
13422   struct gdbarch *gdbarch = get_current_arch ();
13423   int tempflag;
13424   enum ada_exception_catchpoint_kind ex_kind;
13425   char *excep_string = NULL;
13426   char *cond_string = NULL;
13427
13428   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13429
13430   if (!arg)
13431     arg = "";
13432   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13433                                      &cond_string);
13434   create_ada_exception_catchpoint (gdbarch, ex_kind,
13435                                    excep_string, cond_string,
13436                                    tempflag, 1 /* enabled */,
13437                                    from_tty);
13438 }
13439
13440 /* Implement the "catch handlers" command.  */
13441
13442 static void
13443 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13444                             struct cmd_list_element *command)
13445 {
13446   const char *arg = arg_entry;
13447   struct gdbarch *gdbarch = get_current_arch ();
13448   int tempflag;
13449   enum ada_exception_catchpoint_kind ex_kind;
13450   char *excep_string = NULL;
13451   char *cond_string = NULL;
13452
13453   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13454
13455   if (!arg)
13456     arg = "";
13457   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13458                                      &cond_string);
13459   create_ada_exception_catchpoint (gdbarch, ex_kind,
13460                                    excep_string, cond_string,
13461                                    tempflag, 1 /* enabled */,
13462                                    from_tty);
13463 }
13464
13465 /* Split the arguments specified in a "catch assert" command.
13466
13467    ARGS contains the command's arguments (or the empty string if
13468    no arguments were passed).
13469
13470    If ARGS contains a condition, set COND_STRING to that condition
13471    (the memory needs to be deallocated after use).  */
13472
13473 static void
13474 catch_ada_assert_command_split (const char *args, char **cond_string)
13475 {
13476   args = skip_spaces (args);
13477
13478   /* Check whether a condition was provided.  */
13479   if (startswith (args, "if")
13480       && (isspace (args[2]) || args[2] == '\0'))
13481     {
13482       args += 2;
13483       args = skip_spaces (args);
13484       if (args[0] == '\0')
13485         error (_("condition missing after `if' keyword"));
13486       *cond_string = xstrdup (args);
13487     }
13488
13489   /* Otherwise, there should be no other argument at the end of
13490      the command.  */
13491   else if (args[0] != '\0')
13492     error (_("Junk at end of arguments."));
13493 }
13494
13495 /* Implement the "catch assert" command.  */
13496
13497 static void
13498 catch_assert_command (const char *arg_entry, int from_tty,
13499                       struct cmd_list_element *command)
13500 {
13501   const char *arg = arg_entry;
13502   struct gdbarch *gdbarch = get_current_arch ();
13503   int tempflag;
13504   char *cond_string = NULL;
13505
13506   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13507
13508   if (!arg)
13509     arg = "";
13510   catch_ada_assert_command_split (arg, &cond_string);
13511   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13512                                    NULL, cond_string,
13513                                    tempflag, 1 /* enabled */,
13514                                    from_tty);
13515 }
13516
13517 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13518
13519 static int
13520 ada_is_exception_sym (struct symbol *sym)
13521 {
13522   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
13523
13524   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13525           && SYMBOL_CLASS (sym) != LOC_BLOCK
13526           && SYMBOL_CLASS (sym) != LOC_CONST
13527           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13528           && type_name != NULL && strcmp (type_name, "exception") == 0);
13529 }
13530
13531 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13532    Ada exception object.  This matches all exceptions except the ones
13533    defined by the Ada language.  */
13534
13535 static int
13536 ada_is_non_standard_exception_sym (struct symbol *sym)
13537 {
13538   int i;
13539
13540   if (!ada_is_exception_sym (sym))
13541     return 0;
13542
13543   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13544     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13545       return 0;  /* A standard exception.  */
13546
13547   /* Numeric_Error is also a standard exception, so exclude it.
13548      See the STANDARD_EXC description for more details as to why
13549      this exception is not listed in that array.  */
13550   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13551     return 0;
13552
13553   return 1;
13554 }
13555
13556 /* A helper function for std::sort, comparing two struct ada_exc_info
13557    objects.
13558
13559    The comparison is determined first by exception name, and then
13560    by exception address.  */
13561
13562 bool
13563 ada_exc_info::operator< (const ada_exc_info &other) const
13564 {
13565   int result;
13566
13567   result = strcmp (name, other.name);
13568   if (result < 0)
13569     return true;
13570   if (result == 0 && addr < other.addr)
13571     return true;
13572   return false;
13573 }
13574
13575 bool
13576 ada_exc_info::operator== (const ada_exc_info &other) const
13577 {
13578   return addr == other.addr && strcmp (name, other.name) == 0;
13579 }
13580
13581 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13582    routine, but keeping the first SKIP elements untouched.
13583
13584    All duplicates are also removed.  */
13585
13586 static void
13587 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13588                                       int skip)
13589 {
13590   std::sort (exceptions->begin () + skip, exceptions->end ());
13591   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13592                      exceptions->end ());
13593 }
13594
13595 /* Add all exceptions defined by the Ada standard whose name match
13596    a regular expression.
13597
13598    If PREG is not NULL, then this regexp_t object is used to
13599    perform the symbol name matching.  Otherwise, no name-based
13600    filtering is performed.
13601
13602    EXCEPTIONS is a vector of exceptions to which matching exceptions
13603    gets pushed.  */
13604
13605 static void
13606 ada_add_standard_exceptions (compiled_regex *preg,
13607                              std::vector<ada_exc_info> *exceptions)
13608 {
13609   int i;
13610
13611   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13612     {
13613       if (preg == NULL
13614           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13615         {
13616           struct bound_minimal_symbol msymbol
13617             = ada_lookup_simple_minsym (standard_exc[i]);
13618
13619           if (msymbol.minsym != NULL)
13620             {
13621               struct ada_exc_info info
13622                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13623
13624               exceptions->push_back (info);
13625             }
13626         }
13627     }
13628 }
13629
13630 /* Add all Ada exceptions defined locally and accessible from the given
13631    FRAME.
13632
13633    If PREG is not NULL, then this regexp_t object is used to
13634    perform the symbol name matching.  Otherwise, no name-based
13635    filtering is performed.
13636
13637    EXCEPTIONS is a vector of exceptions to which matching exceptions
13638    gets pushed.  */
13639
13640 static void
13641 ada_add_exceptions_from_frame (compiled_regex *preg,
13642                                struct frame_info *frame,
13643                                std::vector<ada_exc_info> *exceptions)
13644 {
13645   const struct block *block = get_frame_block (frame, 0);
13646
13647   while (block != 0)
13648     {
13649       struct block_iterator iter;
13650       struct symbol *sym;
13651
13652       ALL_BLOCK_SYMBOLS (block, iter, sym)
13653         {
13654           switch (SYMBOL_CLASS (sym))
13655             {
13656             case LOC_TYPEDEF:
13657             case LOC_BLOCK:
13658             case LOC_CONST:
13659               break;
13660             default:
13661               if (ada_is_exception_sym (sym))
13662                 {
13663                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13664                                               SYMBOL_VALUE_ADDRESS (sym)};
13665
13666                   exceptions->push_back (info);
13667                 }
13668             }
13669         }
13670       if (BLOCK_FUNCTION (block) != NULL)
13671         break;
13672       block = BLOCK_SUPERBLOCK (block);
13673     }
13674 }
13675
13676 /* Return true if NAME matches PREG or if PREG is NULL.  */
13677
13678 static bool
13679 name_matches_regex (const char *name, compiled_regex *preg)
13680 {
13681   return (preg == NULL
13682           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13683 }
13684
13685 /* Add all exceptions defined globally whose name name match
13686    a regular expression, excluding standard exceptions.
13687
13688    The reason we exclude standard exceptions is that they need
13689    to be handled separately: Standard exceptions are defined inside
13690    a runtime unit which is normally not compiled with debugging info,
13691    and thus usually do not show up in our symbol search.  However,
13692    if the unit was in fact built with debugging info, we need to
13693    exclude them because they would duplicate the entry we found
13694    during the special loop that specifically searches for those
13695    standard exceptions.
13696
13697    If PREG is not NULL, then this regexp_t object is used to
13698    perform the symbol name matching.  Otherwise, no name-based
13699    filtering is performed.
13700
13701    EXCEPTIONS is a vector of exceptions to which matching exceptions
13702    gets pushed.  */
13703
13704 static void
13705 ada_add_global_exceptions (compiled_regex *preg,
13706                            std::vector<ada_exc_info> *exceptions)
13707 {
13708   struct objfile *objfile;
13709   struct compunit_symtab *s;
13710
13711   /* In Ada, the symbol "search name" is a linkage name, whereas the
13712      regular expression used to do the matching refers to the natural
13713      name.  So match against the decoded name.  */
13714   expand_symtabs_matching (NULL,
13715                            lookup_name_info::match_any (),
13716                            [&] (const char *search_name)
13717                            {
13718                              const char *decoded = ada_decode (search_name);
13719                              return name_matches_regex (decoded, preg);
13720                            },
13721                            NULL,
13722                            VARIABLES_DOMAIN);
13723
13724   ALL_COMPUNITS (objfile, s)
13725     {
13726       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13727       int i;
13728
13729       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13730         {
13731           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13732           struct block_iterator iter;
13733           struct symbol *sym;
13734
13735           ALL_BLOCK_SYMBOLS (b, iter, sym)
13736             if (ada_is_non_standard_exception_sym (sym)
13737                 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13738               {
13739                 struct ada_exc_info info
13740                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13741
13742                 exceptions->push_back (info);
13743               }
13744         }
13745     }
13746 }
13747
13748 /* Implements ada_exceptions_list with the regular expression passed
13749    as a regex_t, rather than a string.
13750
13751    If not NULL, PREG is used to filter out exceptions whose names
13752    do not match.  Otherwise, all exceptions are listed.  */
13753
13754 static std::vector<ada_exc_info>
13755 ada_exceptions_list_1 (compiled_regex *preg)
13756 {
13757   std::vector<ada_exc_info> result;
13758   int prev_len;
13759
13760   /* First, list the known standard exceptions.  These exceptions
13761      need to be handled separately, as they are usually defined in
13762      runtime units that have been compiled without debugging info.  */
13763
13764   ada_add_standard_exceptions (preg, &result);
13765
13766   /* Next, find all exceptions whose scope is local and accessible
13767      from the currently selected frame.  */
13768
13769   if (has_stack_frames ())
13770     {
13771       prev_len = result.size ();
13772       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13773                                      &result);
13774       if (result.size () > prev_len)
13775         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13776     }
13777
13778   /* Add all exceptions whose scope is global.  */
13779
13780   prev_len = result.size ();
13781   ada_add_global_exceptions (preg, &result);
13782   if (result.size () > prev_len)
13783     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13784
13785   return result;
13786 }
13787
13788 /* Return a vector of ada_exc_info.
13789
13790    If REGEXP is NULL, all exceptions are included in the result.
13791    Otherwise, it should contain a valid regular expression,
13792    and only the exceptions whose names match that regular expression
13793    are included in the result.
13794
13795    The exceptions are sorted in the following order:
13796      - Standard exceptions (defined by the Ada language), in
13797        alphabetical order;
13798      - Exceptions only visible from the current frame, in
13799        alphabetical order;
13800      - Exceptions whose scope is global, in alphabetical order.  */
13801
13802 std::vector<ada_exc_info>
13803 ada_exceptions_list (const char *regexp)
13804 {
13805   if (regexp == NULL)
13806     return ada_exceptions_list_1 (NULL);
13807
13808   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13809   return ada_exceptions_list_1 (&reg);
13810 }
13811
13812 /* Implement the "info exceptions" command.  */
13813
13814 static void
13815 info_exceptions_command (const char *regexp, int from_tty)
13816 {
13817   struct gdbarch *gdbarch = get_current_arch ();
13818
13819   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13820
13821   if (regexp != NULL)
13822     printf_filtered
13823       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13824   else
13825     printf_filtered (_("All defined Ada exceptions:\n"));
13826
13827   for (const ada_exc_info &info : exceptions)
13828     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13829 }
13830
13831                                 /* Operators */
13832 /* Information about operators given special treatment in functions
13833    below.  */
13834 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13835
13836 #define ADA_OPERATORS \
13837     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13838     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13839     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13840     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13841     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13842     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13843     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13844     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13845     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13846     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13847     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13848     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13849     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13850     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13851     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13852     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13853     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13854     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13855     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13856
13857 static void
13858 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13859                      int *argsp)
13860 {
13861   switch (exp->elts[pc - 1].opcode)
13862     {
13863     default:
13864       operator_length_standard (exp, pc, oplenp, argsp);
13865       break;
13866
13867 #define OP_DEFN(op, len, args, binop) \
13868     case op: *oplenp = len; *argsp = args; break;
13869       ADA_OPERATORS;
13870 #undef OP_DEFN
13871
13872     case OP_AGGREGATE:
13873       *oplenp = 3;
13874       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13875       break;
13876
13877     case OP_CHOICES:
13878       *oplenp = 3;
13879       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13880       break;
13881     }
13882 }
13883
13884 /* Implementation of the exp_descriptor method operator_check.  */
13885
13886 static int
13887 ada_operator_check (struct expression *exp, int pos,
13888                     int (*objfile_func) (struct objfile *objfile, void *data),
13889                     void *data)
13890 {
13891   const union exp_element *const elts = exp->elts;
13892   struct type *type = NULL;
13893
13894   switch (elts[pos].opcode)
13895     {
13896       case UNOP_IN_RANGE:
13897       case UNOP_QUAL:
13898         type = elts[pos + 1].type;
13899         break;
13900
13901       default:
13902         return operator_check_standard (exp, pos, objfile_func, data);
13903     }
13904
13905   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13906
13907   if (type && TYPE_OBJFILE (type)
13908       && (*objfile_func) (TYPE_OBJFILE (type), data))
13909     return 1;
13910
13911   return 0;
13912 }
13913
13914 static const char *
13915 ada_op_name (enum exp_opcode opcode)
13916 {
13917   switch (opcode)
13918     {
13919     default:
13920       return op_name_standard (opcode);
13921
13922 #define OP_DEFN(op, len, args, binop) case op: return #op;
13923       ADA_OPERATORS;
13924 #undef OP_DEFN
13925
13926     case OP_AGGREGATE:
13927       return "OP_AGGREGATE";
13928     case OP_CHOICES:
13929       return "OP_CHOICES";
13930     case OP_NAME:
13931       return "OP_NAME";
13932     }
13933 }
13934
13935 /* As for operator_length, but assumes PC is pointing at the first
13936    element of the operator, and gives meaningful results only for the 
13937    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13938
13939 static void
13940 ada_forward_operator_length (struct expression *exp, int pc,
13941                              int *oplenp, int *argsp)
13942 {
13943   switch (exp->elts[pc].opcode)
13944     {
13945     default:
13946       *oplenp = *argsp = 0;
13947       break;
13948
13949 #define OP_DEFN(op, len, args, binop) \
13950     case op: *oplenp = len; *argsp = args; break;
13951       ADA_OPERATORS;
13952 #undef OP_DEFN
13953
13954     case OP_AGGREGATE:
13955       *oplenp = 3;
13956       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13957       break;
13958
13959     case OP_CHOICES:
13960       *oplenp = 3;
13961       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13962       break;
13963
13964     case OP_STRING:
13965     case OP_NAME:
13966       {
13967         int len = longest_to_int (exp->elts[pc + 1].longconst);
13968
13969         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13970         *argsp = 0;
13971         break;
13972       }
13973     }
13974 }
13975
13976 static int
13977 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13978 {
13979   enum exp_opcode op = exp->elts[elt].opcode;
13980   int oplen, nargs;
13981   int pc = elt;
13982   int i;
13983
13984   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13985
13986   switch (op)
13987     {
13988       /* Ada attributes ('Foo).  */
13989     case OP_ATR_FIRST:
13990     case OP_ATR_LAST:
13991     case OP_ATR_LENGTH:
13992     case OP_ATR_IMAGE:
13993     case OP_ATR_MAX:
13994     case OP_ATR_MIN:
13995     case OP_ATR_MODULUS:
13996     case OP_ATR_POS:
13997     case OP_ATR_SIZE:
13998     case OP_ATR_TAG:
13999     case OP_ATR_VAL:
14000       break;
14001
14002     case UNOP_IN_RANGE:
14003     case UNOP_QUAL:
14004       /* XXX: gdb_sprint_host_address, type_sprint */
14005       fprintf_filtered (stream, _("Type @"));
14006       gdb_print_host_address (exp->elts[pc + 1].type, stream);
14007       fprintf_filtered (stream, " (");
14008       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
14009       fprintf_filtered (stream, ")");
14010       break;
14011     case BINOP_IN_BOUNDS:
14012       fprintf_filtered (stream, " (%d)",
14013                         longest_to_int (exp->elts[pc + 2].longconst));
14014       break;
14015     case TERNOP_IN_RANGE:
14016       break;
14017
14018     case OP_AGGREGATE:
14019     case OP_OTHERS:
14020     case OP_DISCRETE_RANGE:
14021     case OP_POSITIONAL:
14022     case OP_CHOICES:
14023       break;
14024
14025     case OP_NAME:
14026     case OP_STRING:
14027       {
14028         char *name = &exp->elts[elt + 2].string;
14029         int len = longest_to_int (exp->elts[elt + 1].longconst);
14030
14031         fprintf_filtered (stream, "Text: `%.*s'", len, name);
14032         break;
14033       }
14034
14035     default:
14036       return dump_subexp_body_standard (exp, stream, elt);
14037     }
14038
14039   elt += oplen;
14040   for (i = 0; i < nargs; i += 1)
14041     elt = dump_subexp (exp, stream, elt);
14042
14043   return elt;
14044 }
14045
14046 /* The Ada extension of print_subexp (q.v.).  */
14047
14048 static void
14049 ada_print_subexp (struct expression *exp, int *pos,
14050                   struct ui_file *stream, enum precedence prec)
14051 {
14052   int oplen, nargs, i;
14053   int pc = *pos;
14054   enum exp_opcode op = exp->elts[pc].opcode;
14055
14056   ada_forward_operator_length (exp, pc, &oplen, &nargs);
14057
14058   *pos += oplen;
14059   switch (op)
14060     {
14061     default:
14062       *pos -= oplen;
14063       print_subexp_standard (exp, pos, stream, prec);
14064       return;
14065
14066     case OP_VAR_VALUE:
14067       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
14068       return;
14069
14070     case BINOP_IN_BOUNDS:
14071       /* XXX: sprint_subexp */
14072       print_subexp (exp, pos, stream, PREC_SUFFIX);
14073       fputs_filtered (" in ", stream);
14074       print_subexp (exp, pos, stream, PREC_SUFFIX);
14075       fputs_filtered ("'range", stream);
14076       if (exp->elts[pc + 1].longconst > 1)
14077         fprintf_filtered (stream, "(%ld)",
14078                           (long) exp->elts[pc + 1].longconst);
14079       return;
14080
14081     case TERNOP_IN_RANGE:
14082       if (prec >= PREC_EQUAL)
14083         fputs_filtered ("(", stream);
14084       /* XXX: sprint_subexp */
14085       print_subexp (exp, pos, stream, PREC_SUFFIX);
14086       fputs_filtered (" in ", stream);
14087       print_subexp (exp, pos, stream, PREC_EQUAL);
14088       fputs_filtered (" .. ", stream);
14089       print_subexp (exp, pos, stream, PREC_EQUAL);
14090       if (prec >= PREC_EQUAL)
14091         fputs_filtered (")", stream);
14092       return;
14093
14094     case OP_ATR_FIRST:
14095     case OP_ATR_LAST:
14096     case OP_ATR_LENGTH:
14097     case OP_ATR_IMAGE:
14098     case OP_ATR_MAX:
14099     case OP_ATR_MIN:
14100     case OP_ATR_MODULUS:
14101     case OP_ATR_POS:
14102     case OP_ATR_SIZE:
14103     case OP_ATR_TAG:
14104     case OP_ATR_VAL:
14105       if (exp->elts[*pos].opcode == OP_TYPE)
14106         {
14107           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14108             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14109                            &type_print_raw_options);
14110           *pos += 3;
14111         }
14112       else
14113         print_subexp (exp, pos, stream, PREC_SUFFIX);
14114       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14115       if (nargs > 1)
14116         {
14117           int tem;
14118
14119           for (tem = 1; tem < nargs; tem += 1)
14120             {
14121               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14122               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14123             }
14124           fputs_filtered (")", stream);
14125         }
14126       return;
14127
14128     case UNOP_QUAL:
14129       type_print (exp->elts[pc + 1].type, "", stream, 0);
14130       fputs_filtered ("'(", stream);
14131       print_subexp (exp, pos, stream, PREC_PREFIX);
14132       fputs_filtered (")", stream);
14133       return;
14134
14135     case UNOP_IN_RANGE:
14136       /* XXX: sprint_subexp */
14137       print_subexp (exp, pos, stream, PREC_SUFFIX);
14138       fputs_filtered (" in ", stream);
14139       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14140                      &type_print_raw_options);
14141       return;
14142
14143     case OP_DISCRETE_RANGE:
14144       print_subexp (exp, pos, stream, PREC_SUFFIX);
14145       fputs_filtered ("..", stream);
14146       print_subexp (exp, pos, stream, PREC_SUFFIX);
14147       return;
14148
14149     case OP_OTHERS:
14150       fputs_filtered ("others => ", stream);
14151       print_subexp (exp, pos, stream, PREC_SUFFIX);
14152       return;
14153
14154     case OP_CHOICES:
14155       for (i = 0; i < nargs-1; i += 1)
14156         {
14157           if (i > 0)
14158             fputs_filtered ("|", stream);
14159           print_subexp (exp, pos, stream, PREC_SUFFIX);
14160         }
14161       fputs_filtered (" => ", stream);
14162       print_subexp (exp, pos, stream, PREC_SUFFIX);
14163       return;
14164       
14165     case OP_POSITIONAL:
14166       print_subexp (exp, pos, stream, PREC_SUFFIX);
14167       return;
14168
14169     case OP_AGGREGATE:
14170       fputs_filtered ("(", stream);
14171       for (i = 0; i < nargs; i += 1)
14172         {
14173           if (i > 0)
14174             fputs_filtered (", ", stream);
14175           print_subexp (exp, pos, stream, PREC_SUFFIX);
14176         }
14177       fputs_filtered (")", stream);
14178       return;
14179     }
14180 }
14181
14182 /* Table mapping opcodes into strings for printing operators
14183    and precedences of the operators.  */
14184
14185 static const struct op_print ada_op_print_tab[] = {
14186   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14187   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14188   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14189   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14190   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14191   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14192   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14193   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14194   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14195   {">=", BINOP_GEQ, PREC_ORDER, 0},
14196   {">", BINOP_GTR, PREC_ORDER, 0},
14197   {"<", BINOP_LESS, PREC_ORDER, 0},
14198   {">>", BINOP_RSH, PREC_SHIFT, 0},
14199   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14200   {"+", BINOP_ADD, PREC_ADD, 0},
14201   {"-", BINOP_SUB, PREC_ADD, 0},
14202   {"&", BINOP_CONCAT, PREC_ADD, 0},
14203   {"*", BINOP_MUL, PREC_MUL, 0},
14204   {"/", BINOP_DIV, PREC_MUL, 0},
14205   {"rem", BINOP_REM, PREC_MUL, 0},
14206   {"mod", BINOP_MOD, PREC_MUL, 0},
14207   {"**", BINOP_EXP, PREC_REPEAT, 0},
14208   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14209   {"-", UNOP_NEG, PREC_PREFIX, 0},
14210   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14211   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14212   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14213   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14214   {".all", UNOP_IND, PREC_SUFFIX, 1},
14215   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14216   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14217   {NULL, OP_NULL, PREC_SUFFIX, 0}
14218 };
14219 \f
14220 enum ada_primitive_types {
14221   ada_primitive_type_int,
14222   ada_primitive_type_long,
14223   ada_primitive_type_short,
14224   ada_primitive_type_char,
14225   ada_primitive_type_float,
14226   ada_primitive_type_double,
14227   ada_primitive_type_void,
14228   ada_primitive_type_long_long,
14229   ada_primitive_type_long_double,
14230   ada_primitive_type_natural,
14231   ada_primitive_type_positive,
14232   ada_primitive_type_system_address,
14233   ada_primitive_type_storage_offset,
14234   nr_ada_primitive_types
14235 };
14236
14237 static void
14238 ada_language_arch_info (struct gdbarch *gdbarch,
14239                         struct language_arch_info *lai)
14240 {
14241   const struct builtin_type *builtin = builtin_type (gdbarch);
14242
14243   lai->primitive_type_vector
14244     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14245                               struct type *);
14246
14247   lai->primitive_type_vector [ada_primitive_type_int]
14248     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14249                          0, "integer");
14250   lai->primitive_type_vector [ada_primitive_type_long]
14251     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14252                          0, "long_integer");
14253   lai->primitive_type_vector [ada_primitive_type_short]
14254     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14255                          0, "short_integer");
14256   lai->string_char_type
14257     = lai->primitive_type_vector [ada_primitive_type_char]
14258     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14259   lai->primitive_type_vector [ada_primitive_type_float]
14260     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14261                        "float", gdbarch_float_format (gdbarch));
14262   lai->primitive_type_vector [ada_primitive_type_double]
14263     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14264                        "long_float", gdbarch_double_format (gdbarch));
14265   lai->primitive_type_vector [ada_primitive_type_long_long]
14266     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14267                          0, "long_long_integer");
14268   lai->primitive_type_vector [ada_primitive_type_long_double]
14269     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14270                        "long_long_float", gdbarch_long_double_format (gdbarch));
14271   lai->primitive_type_vector [ada_primitive_type_natural]
14272     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14273                          0, "natural");
14274   lai->primitive_type_vector [ada_primitive_type_positive]
14275     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14276                          0, "positive");
14277   lai->primitive_type_vector [ada_primitive_type_void]
14278     = builtin->builtin_void;
14279
14280   lai->primitive_type_vector [ada_primitive_type_system_address]
14281     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14282                                       "void"));
14283   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14284     = "system__address";
14285
14286   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14287      type.  This is a signed integral type whose size is the same as
14288      the size of addresses.  */
14289   {
14290     unsigned int addr_length = TYPE_LENGTH
14291       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14292
14293     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14294       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14295                            "storage_offset");
14296   }
14297
14298   lai->bool_type_symbol = NULL;
14299   lai->bool_type_default = builtin->builtin_bool;
14300 }
14301 \f
14302                                 /* Language vector */
14303
14304 /* Not really used, but needed in the ada_language_defn.  */
14305
14306 static void
14307 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14308 {
14309   ada_emit_char (c, type, stream, quoter, 1);
14310 }
14311
14312 static int
14313 parse (struct parser_state *ps)
14314 {
14315   warnings_issued = 0;
14316   return ada_parse (ps);
14317 }
14318
14319 static const struct exp_descriptor ada_exp_descriptor = {
14320   ada_print_subexp,
14321   ada_operator_length,
14322   ada_operator_check,
14323   ada_op_name,
14324   ada_dump_subexp_body,
14325   ada_evaluate_subexp
14326 };
14327
14328 /* symbol_name_matcher_ftype adapter for wild_match.  */
14329
14330 static bool
14331 do_wild_match (const char *symbol_search_name,
14332                const lookup_name_info &lookup_name,
14333                completion_match_result *comp_match_res)
14334 {
14335   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14336 }
14337
14338 /* symbol_name_matcher_ftype adapter for full_match.  */
14339
14340 static bool
14341 do_full_match (const char *symbol_search_name,
14342                const lookup_name_info &lookup_name,
14343                completion_match_result *comp_match_res)
14344 {
14345   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14346 }
14347
14348 /* Build the Ada lookup name for LOOKUP_NAME.  */
14349
14350 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14351 {
14352   const std::string &user_name = lookup_name.name ();
14353
14354   if (user_name[0] == '<')
14355     {
14356       if (user_name.back () == '>')
14357         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14358       else
14359         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14360       m_encoded_p = true;
14361       m_verbatim_p = true;
14362       m_wild_match_p = false;
14363       m_standard_p = false;
14364     }
14365   else
14366     {
14367       m_verbatim_p = false;
14368
14369       m_encoded_p = user_name.find ("__") != std::string::npos;
14370
14371       if (!m_encoded_p)
14372         {
14373           const char *folded = ada_fold_name (user_name.c_str ());
14374           const char *encoded = ada_encode_1 (folded, false);
14375           if (encoded != NULL)
14376             m_encoded_name = encoded;
14377           else
14378             m_encoded_name = user_name;
14379         }
14380       else
14381         m_encoded_name = user_name;
14382
14383       /* Handle the 'package Standard' special case.  See description
14384          of m_standard_p.  */
14385       if (startswith (m_encoded_name.c_str (), "standard__"))
14386         {
14387           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14388           m_standard_p = true;
14389         }
14390       else
14391         m_standard_p = false;
14392
14393       /* If the name contains a ".", then the user is entering a fully
14394          qualified entity name, and the match must not be done in wild
14395          mode.  Similarly, if the user wants to complete what looks
14396          like an encoded name, the match must not be done in wild
14397          mode.  Also, in the standard__ special case always do
14398          non-wild matching.  */
14399       m_wild_match_p
14400         = (lookup_name.match_type () != symbol_name_match_type::FULL
14401            && !m_encoded_p
14402            && !m_standard_p
14403            && user_name.find ('.') == std::string::npos);
14404     }
14405 }
14406
14407 /* symbol_name_matcher_ftype method for Ada.  This only handles
14408    completion mode.  */
14409
14410 static bool
14411 ada_symbol_name_matches (const char *symbol_search_name,
14412                          const lookup_name_info &lookup_name,
14413                          completion_match_result *comp_match_res)
14414 {
14415   return lookup_name.ada ().matches (symbol_search_name,
14416                                      lookup_name.match_type (),
14417                                      comp_match_res);
14418 }
14419
14420 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14421    Ada.  */
14422
14423 static symbol_name_matcher_ftype *
14424 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14425 {
14426   if (lookup_name.completion_mode ())
14427     return ada_symbol_name_matches;
14428   else
14429     {
14430       if (lookup_name.ada ().wild_match_p ())
14431         return do_wild_match;
14432       else
14433         return do_full_match;
14434     }
14435 }
14436
14437 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14438
14439 static struct value *
14440 ada_read_var_value (struct symbol *var, const struct block *var_block,
14441                     struct frame_info *frame)
14442 {
14443   const struct block *frame_block = NULL;
14444   struct symbol *renaming_sym = NULL;
14445
14446   /* The only case where default_read_var_value is not sufficient
14447      is when VAR is a renaming...  */
14448   if (frame)
14449     frame_block = get_frame_block (frame, NULL);
14450   if (frame_block)
14451     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14452   if (renaming_sym != NULL)
14453     return ada_read_renaming_var_value (renaming_sym, frame_block);
14454
14455   /* This is a typical case where we expect the default_read_var_value
14456      function to work.  */
14457   return default_read_var_value (var, var_block, frame);
14458 }
14459
14460 static const char *ada_extensions[] =
14461 {
14462   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14463 };
14464
14465 extern const struct language_defn ada_language_defn = {
14466   "ada",                        /* Language name */
14467   "Ada",
14468   language_ada,
14469   range_check_off,
14470   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14471                                    that's not quite what this means.  */
14472   array_row_major,
14473   macro_expansion_no,
14474   ada_extensions,
14475   &ada_exp_descriptor,
14476   parse,
14477   ada_yyerror,
14478   resolve,
14479   ada_printchar,                /* Print a character constant */
14480   ada_printstr,                 /* Function to print string constant */
14481   emit_char,                    /* Function to print single char (not used) */
14482   ada_print_type,               /* Print a type using appropriate syntax */
14483   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14484   ada_val_print,                /* Print a value using appropriate syntax */
14485   ada_value_print,              /* Print a top-level value */
14486   ada_read_var_value,           /* la_read_var_value */
14487   NULL,                         /* Language specific skip_trampoline */
14488   NULL,                         /* name_of_this */
14489   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14490   basic_lookup_transparent_type,        /* lookup_transparent_type */
14491   ada_la_decode,                /* Language specific symbol demangler */
14492   ada_sniff_from_mangled_name,
14493   NULL,                         /* Language specific
14494                                    class_name_from_physname */
14495   ada_op_print_tab,             /* expression operators for printing */
14496   0,                            /* c-style arrays */
14497   1,                            /* String lower bound */
14498   ada_get_gdb_completer_word_break_characters,
14499   ada_collect_symbol_completion_matches,
14500   ada_language_arch_info,
14501   ada_print_array_index,
14502   default_pass_by_reference,
14503   c_get_string,
14504   c_watch_location_expression,
14505   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14506   ada_iterate_over_symbols,
14507   default_search_name_hash,
14508   &ada_varobj_ops,
14509   NULL,
14510   NULL,
14511   LANG_MAGIC
14512 };
14513
14514 /* Command-list for the "set/show ada" prefix command.  */
14515 static struct cmd_list_element *set_ada_list;
14516 static struct cmd_list_element *show_ada_list;
14517
14518 /* Implement the "set ada" prefix command.  */
14519
14520 static void
14521 set_ada_command (const char *arg, int from_tty)
14522 {
14523   printf_unfiltered (_(\
14524 "\"set ada\" must be followed by the name of a setting.\n"));
14525   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14526 }
14527
14528 /* Implement the "show ada" prefix command.  */
14529
14530 static void
14531 show_ada_command (const char *args, int from_tty)
14532 {
14533   cmd_show_list (show_ada_list, from_tty, "");
14534 }
14535
14536 static void
14537 initialize_ada_catchpoint_ops (void)
14538 {
14539   struct breakpoint_ops *ops;
14540
14541   initialize_breakpoint_ops ();
14542
14543   ops = &catch_exception_breakpoint_ops;
14544   *ops = bkpt_breakpoint_ops;
14545   ops->allocate_location = allocate_location_catch_exception;
14546   ops->re_set = re_set_catch_exception;
14547   ops->check_status = check_status_catch_exception;
14548   ops->print_it = print_it_catch_exception;
14549   ops->print_one = print_one_catch_exception;
14550   ops->print_mention = print_mention_catch_exception;
14551   ops->print_recreate = print_recreate_catch_exception;
14552
14553   ops = &catch_exception_unhandled_breakpoint_ops;
14554   *ops = bkpt_breakpoint_ops;
14555   ops->allocate_location = allocate_location_catch_exception_unhandled;
14556   ops->re_set = re_set_catch_exception_unhandled;
14557   ops->check_status = check_status_catch_exception_unhandled;
14558   ops->print_it = print_it_catch_exception_unhandled;
14559   ops->print_one = print_one_catch_exception_unhandled;
14560   ops->print_mention = print_mention_catch_exception_unhandled;
14561   ops->print_recreate = print_recreate_catch_exception_unhandled;
14562
14563   ops = &catch_assert_breakpoint_ops;
14564   *ops = bkpt_breakpoint_ops;
14565   ops->allocate_location = allocate_location_catch_assert;
14566   ops->re_set = re_set_catch_assert;
14567   ops->check_status = check_status_catch_assert;
14568   ops->print_it = print_it_catch_assert;
14569   ops->print_one = print_one_catch_assert;
14570   ops->print_mention = print_mention_catch_assert;
14571   ops->print_recreate = print_recreate_catch_assert;
14572
14573   ops = &catch_handlers_breakpoint_ops;
14574   *ops = bkpt_breakpoint_ops;
14575   ops->allocate_location = allocate_location_catch_handlers;
14576   ops->re_set = re_set_catch_handlers;
14577   ops->check_status = check_status_catch_handlers;
14578   ops->print_it = print_it_catch_handlers;
14579   ops->print_one = print_one_catch_handlers;
14580   ops->print_mention = print_mention_catch_handlers;
14581   ops->print_recreate = print_recreate_catch_handlers;
14582 }
14583
14584 /* This module's 'new_objfile' observer.  */
14585
14586 static void
14587 ada_new_objfile_observer (struct objfile *objfile)
14588 {
14589   ada_clear_symbol_cache ();
14590 }
14591
14592 /* This module's 'free_objfile' observer.  */
14593
14594 static void
14595 ada_free_objfile_observer (struct objfile *objfile)
14596 {
14597   ada_clear_symbol_cache ();
14598 }
14599
14600 void
14601 _initialize_ada_language (void)
14602 {
14603   initialize_ada_catchpoint_ops ();
14604
14605   add_prefix_cmd ("ada", no_class, set_ada_command,
14606                   _("Prefix command for changing Ada-specfic settings"),
14607                   &set_ada_list, "set ada ", 0, &setlist);
14608
14609   add_prefix_cmd ("ada", no_class, show_ada_command,
14610                   _("Generic command for showing Ada-specific settings."),
14611                   &show_ada_list, "show ada ", 0, &showlist);
14612
14613   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14614                            &trust_pad_over_xvs, _("\
14615 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14616 Show whether an optimization trusting PAD types over XVS types is activated"),
14617                            _("\
14618 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14619 should normally trust the contents of PAD types, but certain older versions\n\
14620 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14621 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14622 work around this bug.  It is always safe to turn this option \"off\", but\n\
14623 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14624 this option to \"off\" unless necessary."),
14625                             NULL, NULL, &set_ada_list, &show_ada_list);
14626
14627   add_setshow_boolean_cmd ("print-signatures", class_vars,
14628                            &print_signatures, _("\
14629 Enable or disable the output of formal and return types for functions in the \
14630 overloads selection menu"), _("\
14631 Show whether the output of formal and return types for functions in the \
14632 overloads selection menu is activated"),
14633                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14634
14635   add_catch_command ("exception", _("\
14636 Catch Ada exceptions, when raised.\n\
14637 With an argument, catch only exceptions with the given name."),
14638                      catch_ada_exception_command,
14639                      NULL,
14640                      CATCH_PERMANENT,
14641                      CATCH_TEMPORARY);
14642
14643   add_catch_command ("handlers", _("\
14644 Catch Ada exceptions, when handled.\n\
14645 With an argument, catch only exceptions with the given name."),
14646                      catch_ada_handlers_command,
14647                      NULL,
14648                      CATCH_PERMANENT,
14649                      CATCH_TEMPORARY);
14650   add_catch_command ("assert", _("\
14651 Catch failed Ada assertions, when raised.\n\
14652 With an argument, catch only exceptions with the given name."),
14653                      catch_assert_command,
14654                      NULL,
14655                      CATCH_PERMANENT,
14656                      CATCH_TEMPORARY);
14657
14658   varsize_limit = 65536;
14659
14660   add_info ("exceptions", info_exceptions_command,
14661             _("\
14662 List all Ada exception names.\n\
14663 If a regular expression is passed as an argument, only those matching\n\
14664 the regular expression are listed."));
14665
14666   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14667                   _("Set Ada maintenance-related variables."),
14668                   &maint_set_ada_cmdlist, "maintenance set ada ",
14669                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14670
14671   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14672                   _("Show Ada maintenance-related variables"),
14673                   &maint_show_ada_cmdlist, "maintenance show ada ",
14674                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14675
14676   add_setshow_boolean_cmd
14677     ("ignore-descriptive-types", class_maintenance,
14678      &ada_ignore_descriptive_types_p,
14679      _("Set whether descriptive types generated by GNAT should be ignored."),
14680      _("Show whether descriptive types generated by GNAT should be ignored."),
14681      _("\
14682 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14683 DWARF attribute."),
14684      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14685
14686   decoded_names_store = htab_create_alloc
14687     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
14688      NULL, xcalloc, xfree);
14689
14690   /* The ada-lang observers.  */
14691   observer_attach_new_objfile (ada_new_objfile_observer);
14692   observer_attach_free_objfile (ada_free_objfile_observer);
14693   observer_attach_inferior_exit (ada_inferior_exit);
14694
14695   /* Setup various context-specific data.  */
14696   ada_inferior_data
14697     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14698   ada_pspace_data_handle
14699     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14700 }