a79ec2bb320e6918b23e257a8f3899a700f3143d
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2016 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
64 /* Define whether or not the C operator '/' truncates towards zero for
65    differently signed operands (truncation direction is undefined in C).
66    Copied from valarith.c.  */
67
68 #ifndef TRUNCATION_TOWARDS_ZERO
69 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
70 #endif
71
72 static struct type *desc_base_type (struct type *);
73
74 static struct type *desc_bounds_type (struct type *);
75
76 static struct value *desc_bounds (struct value *);
77
78 static int fat_pntr_bounds_bitpos (struct type *);
79
80 static int fat_pntr_bounds_bitsize (struct type *);
81
82 static struct type *desc_data_target_type (struct type *);
83
84 static struct value *desc_data (struct value *);
85
86 static int fat_pntr_data_bitpos (struct type *);
87
88 static int fat_pntr_data_bitsize (struct type *);
89
90 static struct value *desc_one_bound (struct value *, int, int);
91
92 static int desc_bound_bitpos (struct type *, int, int);
93
94 static int desc_bound_bitsize (struct type *, int, int);
95
96 static struct type *desc_index_type (struct type *, int);
97
98 static int desc_arity (struct type *);
99
100 static int ada_type_match (struct type *, struct type *, int);
101
102 static int ada_args_match (struct symbol *, struct value **, int);
103
104 static int full_match (const char *, const char *);
105
106 static struct value *make_array_descriptor (struct type *, struct value *);
107
108 static void ada_add_block_symbols (struct obstack *,
109                                    const struct block *, const char *,
110                                    domain_enum, struct objfile *, int);
111
112 static void ada_add_all_symbols (struct obstack *, const struct block *,
113                                  const char *, domain_enum, int, int *);
114
115 static int is_nonfunction (struct block_symbol *, int);
116
117 static void add_defn_to_vec (struct obstack *, struct symbol *,
118                              const struct block *);
119
120 static int num_defns_collected (struct obstack *);
121
122 static struct block_symbol *defns_collected (struct obstack *, int);
123
124 static struct value *resolve_subexp (struct expression **, int *, int,
125                                      struct type *);
126
127 static void replace_operator_with_call (struct expression **, int, int, int,
128                                         struct symbol *, const struct block *);
129
130 static int possible_user_operator_p (enum exp_opcode, struct value **);
131
132 static char *ada_op_name (enum exp_opcode);
133
134 static const char *ada_decoded_op_name (enum exp_opcode);
135
136 static int numeric_type_p (struct type *);
137
138 static int integer_type_p (struct type *);
139
140 static int scalar_type_p (struct type *);
141
142 static int discrete_type_p (struct type *);
143
144 static enum ada_renaming_category parse_old_style_renaming (struct type *,
145                                                             const char **,
146                                                             int *,
147                                                             const char **);
148
149 static struct symbol *find_old_style_renaming_symbol (const char *,
150                                                       const struct block *);
151
152 static struct type *ada_lookup_struct_elt_type (struct type *, char *,
153                                                 int, int, int *);
154
155 static struct value *evaluate_subexp_type (struct expression *, int *);
156
157 static struct type *ada_find_parallel_type_with_name (struct type *,
158                                                       const char *);
159
160 static int is_dynamic_field (struct type *, int);
161
162 static struct type *to_fixed_variant_branch_type (struct type *,
163                                                   const gdb_byte *,
164                                                   CORE_ADDR, struct value *);
165
166 static struct type *to_fixed_array_type (struct type *, struct value *, int);
167
168 static struct type *to_fixed_range_type (struct type *, struct value *);
169
170 static struct type *to_static_fixed_type (struct type *);
171 static struct type *static_unwrap_type (struct type *type);
172
173 static struct value *unwrap_value (struct value *);
174
175 static struct type *constrained_packed_array_type (struct type *, long *);
176
177 static struct type *decode_constrained_packed_array_type (struct type *);
178
179 static long decode_packed_array_bitsize (struct type *);
180
181 static struct value *decode_constrained_packed_array (struct value *);
182
183 static int ada_is_packed_array_type  (struct type *);
184
185 static int ada_is_unconstrained_packed_array_type (struct type *);
186
187 static struct value *value_subscript_packed (struct value *, int,
188                                              struct value **);
189
190 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
191
192 static struct value *coerce_unspec_val_to_type (struct value *,
193                                                 struct type *);
194
195 static struct value *get_var_value (char *, char *);
196
197 static int lesseq_defined_than (struct symbol *, struct symbol *);
198
199 static int equiv_types (struct type *, struct type *);
200
201 static int is_name_suffix (const char *);
202
203 static int advance_wild_match (const char **, const char *, int);
204
205 static int wild_match (const char *, const char *);
206
207 static struct value *ada_coerce_ref (struct value *);
208
209 static LONGEST pos_atr (struct value *);
210
211 static struct value *value_pos_atr (struct type *, struct value *);
212
213 static struct value *value_val_atr (struct type *, struct value *);
214
215 static struct symbol *standard_lookup (const char *, const struct block *,
216                                        domain_enum);
217
218 static struct value *ada_search_struct_field (const char *, struct value *, int,
219                                               struct type *);
220
221 static struct value *ada_value_primitive_field (struct value *, int, int,
222                                                 struct type *);
223
224 static int find_struct_field (const char *, struct type *, int,
225                               struct type **, int *, int *, int *, int *);
226
227 static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
228                                                 struct value *);
229
230 static int ada_resolve_function (struct block_symbol *, int,
231                                  struct value **, int, const char *,
232                                  struct type *);
233
234 static int ada_is_direct_array_type (struct type *);
235
236 static void ada_language_arch_info (struct gdbarch *,
237                                     struct language_arch_info *);
238
239 static struct value *ada_index_struct_field (int, struct value *, int,
240                                              struct type *);
241
242 static struct value *assign_aggregate (struct value *, struct value *, 
243                                        struct expression *,
244                                        int *, enum noside);
245
246 static void aggregate_assign_from_choices (struct value *, struct value *, 
247                                            struct expression *,
248                                            int *, LONGEST *, int *,
249                                            int, LONGEST, LONGEST);
250
251 static void aggregate_assign_positional (struct value *, struct value *,
252                                          struct expression *,
253                                          int *, LONGEST *, int *, int,
254                                          LONGEST, LONGEST);
255
256
257 static void aggregate_assign_others (struct value *, struct value *,
258                                      struct expression *,
259                                      int *, LONGEST *, int, LONGEST, LONGEST);
260
261
262 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
263
264
265 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
266                                           int *, enum noside);
267
268 static void ada_forward_operator_length (struct expression *, int, int *,
269                                          int *);
270
271 static struct type *ada_find_any_type (const char *name);
272 \f
273
274 /* The result of a symbol lookup to be stored in our symbol cache.  */
275
276 struct cache_entry
277 {
278   /* The name used to perform the lookup.  */
279   const char *name;
280   /* The namespace used during the lookup.  */
281   domain_enum domain;
282   /* The symbol returned by the lookup, or NULL if no matching symbol
283      was found.  */
284   struct symbol *sym;
285   /* The block where the symbol was found, or NULL if no matching
286      symbol was found.  */
287   const struct block *block;
288   /* A pointer to the next entry with the same hash.  */
289   struct cache_entry *next;
290 };
291
292 /* The Ada symbol cache, used to store the result of Ada-mode symbol
293    lookups in the course of executing the user's commands.
294
295    The cache is implemented using a simple, fixed-sized hash.
296    The size is fixed on the grounds that there are not likely to be
297    all that many symbols looked up during any given session, regardless
298    of the size of the symbol table.  If we decide to go to a resizable
299    table, let's just use the stuff from libiberty instead.  */
300
301 #define HASH_SIZE 1009
302
303 struct ada_symbol_cache
304 {
305   /* An obstack used to store the entries in our cache.  */
306   struct obstack cache_space;
307
308   /* The root of the hash table used to implement our symbol cache.  */
309   struct cache_entry *root[HASH_SIZE];
310 };
311
312 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
313
314 /* Maximum-sized dynamic type.  */
315 static unsigned int varsize_limit;
316
317 /* FIXME: brobecker/2003-09-17: No longer a const because it is
318    returned by a function that does not return a const char *.  */
319 static char *ada_completer_word_break_characters =
320 #ifdef VMS
321   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram.  */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328   = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation.  */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334    expression evaluation.  */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Space for allocating results of ada_lookup_symbol_list.  */
346 static struct obstack symbol_list_obstack;
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 (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 (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 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.
981    The result is valid until the next call to ada_encode.  */
982
983 char *
984 ada_encode (const char *decoded)
985 {
986   static char *encoding_buffer = NULL;
987   static size_t encoding_buffer_size = 0;
988   const char *p;
989   int k;
990
991   if (decoded == NULL)
992     return NULL;
993
994   GROW_VECT (encoding_buffer, encoding_buffer_size,
995              2 * strlen (decoded) + 10);
996
997   k = 0;
998   for (p = decoded; *p != '\0'; p += 1)
999     {
1000       if (*p == '.')
1001         {
1002           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1003           k += 2;
1004         }
1005       else if (*p == '"')
1006         {
1007           const struct ada_opname_map *mapping;
1008
1009           for (mapping = ada_opname_table;
1010                mapping->encoded != NULL
1011                && !startswith (p, mapping->decoded); mapping += 1)
1012             ;
1013           if (mapping->encoded == NULL)
1014             error (_("invalid Ada operator name: %s"), p);
1015           strcpy (encoding_buffer + k, mapping->encoded);
1016           k += strlen (mapping->encoded);
1017           break;
1018         }
1019       else
1020         {
1021           encoding_buffer[k] = *p;
1022           k += 1;
1023         }
1024     }
1025
1026   encoding_buffer[k] = '\0';
1027   return encoding_buffer;
1028 }
1029
1030 /* Return NAME folded to lower case, or, if surrounded by single
1031    quotes, unfolded, but with the quotes stripped away.  Result good
1032    to next call.  */
1033
1034 char *
1035 ada_fold_name (const char *name)
1036 {
1037   static char *fold_buffer = NULL;
1038   static size_t fold_buffer_size = 0;
1039
1040   int len = strlen (name);
1041   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1042
1043   if (name[0] == '\'')
1044     {
1045       strncpy (fold_buffer, name + 1, len - 2);
1046       fold_buffer[len - 2] = '\000';
1047     }
1048   else
1049     {
1050       int i;
1051
1052       for (i = 0; i <= len; i += 1)
1053         fold_buffer[i] = tolower (name[i]);
1054     }
1055
1056   return fold_buffer;
1057 }
1058
1059 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1060
1061 static int
1062 is_lower_alphanum (const char c)
1063 {
1064   return (isdigit (c) || (isalpha (c) && islower (c)));
1065 }
1066
1067 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1068    This function saves in LEN the length of that same symbol name but
1069    without either of these suffixes:
1070      . .{DIGIT}+
1071      . ${DIGIT}+
1072      . ___{DIGIT}+
1073      . __{DIGIT}+.
1074
1075    These are suffixes introduced by the compiler for entities such as
1076    nested subprogram for instance, in order to avoid name clashes.
1077    They do not serve any purpose for the debugger.  */
1078
1079 static void
1080 ada_remove_trailing_digits (const char *encoded, int *len)
1081 {
1082   if (*len > 1 && isdigit (encoded[*len - 1]))
1083     {
1084       int i = *len - 2;
1085
1086       while (i > 0 && isdigit (encoded[i]))
1087         i--;
1088       if (i >= 0 && encoded[i] == '.')
1089         *len = i;
1090       else if (i >= 0 && encoded[i] == '$')
1091         *len = i;
1092       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1093         *len = i - 2;
1094       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1095         *len = i - 1;
1096     }
1097 }
1098
1099 /* Remove the suffix introduced by the compiler for protected object
1100    subprograms.  */
1101
1102 static void
1103 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1104 {
1105   /* Remove trailing N.  */
1106
1107   /* Protected entry subprograms are broken into two
1108      separate subprograms: The first one is unprotected, and has
1109      a 'N' suffix; the second is the protected version, and has
1110      the 'P' suffix.  The second calls the first one after handling
1111      the protection.  Since the P subprograms are internally generated,
1112      we leave these names undecoded, giving the user a clue that this
1113      entity is internal.  */
1114
1115   if (*len > 1
1116       && encoded[*len - 1] == 'N'
1117       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1118     *len = *len - 1;
1119 }
1120
1121 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1122
1123 static void
1124 ada_remove_Xbn_suffix (const char *encoded, int *len)
1125 {
1126   int i = *len - 1;
1127
1128   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1129     i--;
1130
1131   if (encoded[i] != 'X')
1132     return;
1133
1134   if (i == 0)
1135     return;
1136
1137   if (isalnum (encoded[i-1]))
1138     *len = i;
1139 }
1140
1141 /* If ENCODED follows the GNAT entity encoding conventions, then return
1142    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1143    replaced by ENCODED.
1144
1145    The resulting string is valid until the next call of ada_decode.
1146    If the string is unchanged by decoding, the original string pointer
1147    is returned.  */
1148
1149 const char *
1150 ada_decode (const char *encoded)
1151 {
1152   int i, j;
1153   int len0;
1154   const char *p;
1155   char *decoded;
1156   int at_start_name;
1157   static char *decoding_buffer = NULL;
1158   static size_t decoding_buffer_size = 0;
1159
1160   /* The name of the Ada main procedure starts with "_ada_".
1161      This prefix is not part of the decoded name, so skip this part
1162      if we see this prefix.  */
1163   if (startswith (encoded, "_ada_"))
1164     encoded += 5;
1165
1166   /* If the name starts with '_', then it is not a properly encoded
1167      name, so do not attempt to decode it.  Similarly, if the name
1168      starts with '<', the name should not be decoded.  */
1169   if (encoded[0] == '_' || encoded[0] == '<')
1170     goto Suppress;
1171
1172   len0 = strlen (encoded);
1173
1174   ada_remove_trailing_digits (encoded, &len0);
1175   ada_remove_po_subprogram_suffix (encoded, &len0);
1176
1177   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1178      the suffix is located before the current "end" of ENCODED.  We want
1179      to avoid re-matching parts of ENCODED that have previously been
1180      marked as discarded (by decrementing LEN0).  */
1181   p = strstr (encoded, "___");
1182   if (p != NULL && p - encoded < len0 - 3)
1183     {
1184       if (p[3] == 'X')
1185         len0 = p - encoded;
1186       else
1187         goto Suppress;
1188     }
1189
1190   /* Remove any trailing TKB suffix.  It tells us that this symbol
1191      is for the body of a task, but that information does not actually
1192      appear in the decoded name.  */
1193
1194   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1195     len0 -= 3;
1196
1197   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1198      from the TKB suffix because it is used for non-anonymous task
1199      bodies.  */
1200
1201   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1202     len0 -= 2;
1203
1204   /* Remove trailing "B" suffixes.  */
1205   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1206
1207   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1208     len0 -= 1;
1209
1210   /* Make decoded big enough for possible expansion by operator name.  */
1211
1212   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1213   decoded = decoding_buffer;
1214
1215   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1216
1217   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1218     {
1219       i = len0 - 2;
1220       while ((i >= 0 && isdigit (encoded[i]))
1221              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1222         i -= 1;
1223       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1224         len0 = i - 1;
1225       else if (encoded[i] == '$')
1226         len0 = i;
1227     }
1228
1229   /* The first few characters that are not alphabetic are not part
1230      of any encoding we use, so we can copy them over verbatim.  */
1231
1232   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1233     decoded[j] = encoded[i];
1234
1235   at_start_name = 1;
1236   while (i < len0)
1237     {
1238       /* Is this a symbol function?  */
1239       if (at_start_name && encoded[i] == 'O')
1240         {
1241           int k;
1242
1243           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1244             {
1245               int op_len = strlen (ada_opname_table[k].encoded);
1246               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1247                             op_len - 1) == 0)
1248                   && !isalnum (encoded[i + op_len]))
1249                 {
1250                   strcpy (decoded + j, ada_opname_table[k].decoded);
1251                   at_start_name = 0;
1252                   i += op_len;
1253                   j += strlen (ada_opname_table[k].decoded);
1254                   break;
1255                 }
1256             }
1257           if (ada_opname_table[k].encoded != NULL)
1258             continue;
1259         }
1260       at_start_name = 0;
1261
1262       /* Replace "TK__" with "__", which will eventually be translated
1263          into "." (just below).  */
1264
1265       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1266         i += 2;
1267
1268       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1269          be translated into "." (just below).  These are internal names
1270          generated for anonymous blocks inside which our symbol is nested.  */
1271
1272       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1273           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1274           && isdigit (encoded [i+4]))
1275         {
1276           int k = i + 5;
1277           
1278           while (k < len0 && isdigit (encoded[k]))
1279             k++;  /* Skip any extra digit.  */
1280
1281           /* Double-check that the "__B_{DIGITS}+" sequence we found
1282              is indeed followed by "__".  */
1283           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1284             i = k;
1285         }
1286
1287       /* Remove _E{DIGITS}+[sb] */
1288
1289       /* Just as for protected object subprograms, there are 2 categories
1290          of subprograms created by the compiler for each entry.  The first
1291          one implements the actual entry code, and has a suffix following
1292          the convention above; the second one implements the barrier and
1293          uses the same convention as above, except that the 'E' is replaced
1294          by a 'B'.
1295
1296          Just as above, we do not decode the name of barrier functions
1297          to give the user a clue that the code he is debugging has been
1298          internally generated.  */
1299
1300       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1301           && isdigit (encoded[i+2]))
1302         {
1303           int k = i + 3;
1304
1305           while (k < len0 && isdigit (encoded[k]))
1306             k++;
1307
1308           if (k < len0
1309               && (encoded[k] == 'b' || encoded[k] == 's'))
1310             {
1311               k++;
1312               /* Just as an extra precaution, make sure that if this
1313                  suffix is followed by anything else, it is a '_'.
1314                  Otherwise, we matched this sequence by accident.  */
1315               if (k == len0
1316                   || (k < len0 && encoded[k] == '_'))
1317                 i = k;
1318             }
1319         }
1320
1321       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1322          the GNAT front-end in protected object subprograms.  */
1323
1324       if (i < len0 + 3
1325           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1326         {
1327           /* Backtrack a bit up until we reach either the begining of
1328              the encoded name, or "__".  Make sure that we only find
1329              digits or lowercase characters.  */
1330           const char *ptr = encoded + i - 1;
1331
1332           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1333             ptr--;
1334           if (ptr < encoded
1335               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1336             i++;
1337         }
1338
1339       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1340         {
1341           /* This is a X[bn]* sequence not separated from the previous
1342              part of the name with a non-alpha-numeric character (in other
1343              words, immediately following an alpha-numeric character), then
1344              verify that it is placed at the end of the encoded name.  If
1345              not, then the encoding is not valid and we should abort the
1346              decoding.  Otherwise, just skip it, it is used in body-nested
1347              package names.  */
1348           do
1349             i += 1;
1350           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1351           if (i < len0)
1352             goto Suppress;
1353         }
1354       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1355         {
1356          /* Replace '__' by '.'.  */
1357           decoded[j] = '.';
1358           at_start_name = 1;
1359           i += 2;
1360           j += 1;
1361         }
1362       else
1363         {
1364           /* It's a character part of the decoded name, so just copy it
1365              over.  */
1366           decoded[j] = encoded[i];
1367           i += 1;
1368           j += 1;
1369         }
1370     }
1371   decoded[j] = '\000';
1372
1373   /* Decoded names should never contain any uppercase character.
1374      Double-check this, and abort the decoding if we find one.  */
1375
1376   for (i = 0; decoded[i] != '\0'; i += 1)
1377     if (isupper (decoded[i]) || decoded[i] == ' ')
1378       goto Suppress;
1379
1380   if (strcmp (decoded, encoded) == 0)
1381     return encoded;
1382   else
1383     return decoded;
1384
1385 Suppress:
1386   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1387   decoded = decoding_buffer;
1388   if (encoded[0] == '<')
1389     strcpy (decoded, encoded);
1390   else
1391     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1392   return decoded;
1393
1394 }
1395
1396 /* Table for keeping permanent unique copies of decoded names.  Once
1397    allocated, names in this table are never released.  While this is a
1398    storage leak, it should not be significant unless there are massive
1399    changes in the set of decoded names in successive versions of a 
1400    symbol table loaded during a single session.  */
1401 static struct htab *decoded_names_store;
1402
1403 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1404    in the language-specific part of GSYMBOL, if it has not been
1405    previously computed.  Tries to save the decoded name in the same
1406    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1407    in any case, the decoded symbol has a lifetime at least that of
1408    GSYMBOL).
1409    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1410    const, but nevertheless modified to a semantically equivalent form
1411    when a decoded name is cached in it.  */
1412
1413 const char *
1414 ada_decode_symbol (const struct general_symbol_info *arg)
1415 {
1416   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1417   const char **resultp =
1418     &gsymbol->language_specific.demangled_name;
1419
1420   if (!gsymbol->ada_mangled)
1421     {
1422       const char *decoded = ada_decode (gsymbol->name);
1423       struct obstack *obstack = gsymbol->language_specific.obstack;
1424
1425       gsymbol->ada_mangled = 1;
1426
1427       if (obstack != NULL)
1428         *resultp
1429           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1430       else
1431         {
1432           /* Sometimes, we can't find a corresponding objfile, in
1433              which case, we put the result on the heap.  Since we only
1434              decode when needed, we hope this usually does not cause a
1435              significant memory leak (FIXME).  */
1436
1437           char **slot = (char **) htab_find_slot (decoded_names_store,
1438                                                   decoded, INSERT);
1439
1440           if (*slot == NULL)
1441             *slot = xstrdup (decoded);
1442           *resultp = *slot;
1443         }
1444     }
1445
1446   return *resultp;
1447 }
1448
1449 static char *
1450 ada_la_decode (const char *encoded, int options)
1451 {
1452   return xstrdup (ada_decode (encoded));
1453 }
1454
1455 /* Implement la_sniff_from_mangled_name for Ada.  */
1456
1457 static int
1458 ada_sniff_from_mangled_name (const char *mangled, char **out)
1459 {
1460   const char *demangled = ada_decode (mangled);
1461
1462   *out = NULL;
1463
1464   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1465     {
1466       /* Set the gsymbol language to Ada, but still return 0.
1467          Two reasons for that:
1468
1469          1. For Ada, we prefer computing the symbol's decoded name
1470          on the fly rather than pre-compute it, in order to save
1471          memory (Ada projects are typically very large).
1472
1473          2. There are some areas in the definition of the GNAT
1474          encoding where, with a bit of bad luck, we might be able
1475          to decode a non-Ada symbol, generating an incorrect
1476          demangled name (Eg: names ending with "TB" for instance
1477          are identified as task bodies and so stripped from
1478          the decoded name returned).
1479
1480          Returning 1, here, but not setting *DEMANGLED, helps us get a
1481          little bit of the best of both worlds.  Because we're last,
1482          we should not affect any of the other languages that were
1483          able to demangle the symbol before us; we get to correctly
1484          tag Ada symbols as such; and even if we incorrectly tagged a
1485          non-Ada symbol, which should be rare, any routing through the
1486          Ada language should be transparent (Ada tries to behave much
1487          like C/C++ with non-Ada symbols).  */
1488       return 1;
1489     }
1490
1491   return 0;
1492 }
1493
1494 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing
1495    suffixes that encode debugging information or leading _ada_ on
1496    SYM_NAME (see is_name_suffix commentary for the debugging
1497    information that is ignored).  If WILD, then NAME need only match a
1498    suffix of SYM_NAME minus the same suffixes.  Also returns 0 if
1499    either argument is NULL.  */
1500
1501 static int
1502 match_name (const char *sym_name, const char *name, int wild)
1503 {
1504   if (sym_name == NULL || name == NULL)
1505     return 0;
1506   else if (wild)
1507     return wild_match (sym_name, name) == 0;
1508   else
1509     {
1510       int len_name = strlen (name);
1511
1512       return (strncmp (sym_name, name, len_name) == 0
1513               && is_name_suffix (sym_name + len_name))
1514         || (startswith (sym_name, "_ada_")
1515             && strncmp (sym_name + 5, name, len_name) == 0
1516             && is_name_suffix (sym_name + len_name + 5));
1517     }
1518 }
1519 \f
1520
1521                                 /* Arrays */
1522
1523 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1524    generated by the GNAT compiler to describe the index type used
1525    for each dimension of an array, check whether it follows the latest
1526    known encoding.  If not, fix it up to conform to the latest encoding.
1527    Otherwise, do nothing.  This function also does nothing if
1528    INDEX_DESC_TYPE is NULL.
1529
1530    The GNAT encoding used to describle the array index type evolved a bit.
1531    Initially, the information would be provided through the name of each
1532    field of the structure type only, while the type of these fields was
1533    described as unspecified and irrelevant.  The debugger was then expected
1534    to perform a global type lookup using the name of that field in order
1535    to get access to the full index type description.  Because these global
1536    lookups can be very expensive, the encoding was later enhanced to make
1537    the global lookup unnecessary by defining the field type as being
1538    the full index type description.
1539
1540    The purpose of this routine is to allow us to support older versions
1541    of the compiler by detecting the use of the older encoding, and by
1542    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1543    we essentially replace each field's meaningless type by the associated
1544    index subtype).  */
1545
1546 void
1547 ada_fixup_array_indexes_type (struct type *index_desc_type)
1548 {
1549   int i;
1550
1551   if (index_desc_type == NULL)
1552     return;
1553   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1554
1555   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1556      to check one field only, no need to check them all).  If not, return
1557      now.
1558
1559      If our INDEX_DESC_TYPE was generated using the older encoding,
1560      the field type should be a meaningless integer type whose name
1561      is not equal to the field name.  */
1562   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1563       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1564                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1565     return;
1566
1567   /* Fixup each field of INDEX_DESC_TYPE.  */
1568   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1569    {
1570      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1571      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1572
1573      if (raw_type)
1574        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1575    }
1576 }
1577
1578 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1579
1580 static char *bound_name[] = {
1581   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1582   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1583 };
1584
1585 /* Maximum number of array dimensions we are prepared to handle.  */
1586
1587 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1588
1589
1590 /* The desc_* routines return primitive portions of array descriptors
1591    (fat pointers).  */
1592
1593 /* The descriptor or array type, if any, indicated by TYPE; removes
1594    level of indirection, if needed.  */
1595
1596 static struct type *
1597 desc_base_type (struct type *type)
1598 {
1599   if (type == NULL)
1600     return NULL;
1601   type = ada_check_typedef (type);
1602   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1603     type = ada_typedef_target_type (type);
1604
1605   if (type != NULL
1606       && (TYPE_CODE (type) == TYPE_CODE_PTR
1607           || TYPE_CODE (type) == TYPE_CODE_REF))
1608     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1609   else
1610     return type;
1611 }
1612
1613 /* True iff TYPE indicates a "thin" array pointer type.  */
1614
1615 static int
1616 is_thin_pntr (struct type *type)
1617 {
1618   return
1619     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1620     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1621 }
1622
1623 /* The descriptor type for thin pointer type TYPE.  */
1624
1625 static struct type *
1626 thin_descriptor_type (struct type *type)
1627 {
1628   struct type *base_type = desc_base_type (type);
1629
1630   if (base_type == NULL)
1631     return NULL;
1632   if (is_suffix (ada_type_name (base_type), "___XVE"))
1633     return base_type;
1634   else
1635     {
1636       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1637
1638       if (alt_type == NULL)
1639         return base_type;
1640       else
1641         return alt_type;
1642     }
1643 }
1644
1645 /* A pointer to the array data for thin-pointer value VAL.  */
1646
1647 static struct value *
1648 thin_data_pntr (struct value *val)
1649 {
1650   struct type *type = ada_check_typedef (value_type (val));
1651   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1652
1653   data_type = lookup_pointer_type (data_type);
1654
1655   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1656     return value_cast (data_type, value_copy (val));
1657   else
1658     return value_from_longest (data_type, value_address (val));
1659 }
1660
1661 /* True iff TYPE indicates a "thick" array pointer type.  */
1662
1663 static int
1664 is_thick_pntr (struct type *type)
1665 {
1666   type = desc_base_type (type);
1667   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1668           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1669 }
1670
1671 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1672    pointer to one, the type of its bounds data; otherwise, NULL.  */
1673
1674 static struct type *
1675 desc_bounds_type (struct type *type)
1676 {
1677   struct type *r;
1678
1679   type = desc_base_type (type);
1680
1681   if (type == NULL)
1682     return NULL;
1683   else if (is_thin_pntr (type))
1684     {
1685       type = thin_descriptor_type (type);
1686       if (type == NULL)
1687         return NULL;
1688       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1689       if (r != NULL)
1690         return ada_check_typedef (r);
1691     }
1692   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1693     {
1694       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1695       if (r != NULL)
1696         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1697     }
1698   return NULL;
1699 }
1700
1701 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1702    one, a pointer to its bounds data.   Otherwise NULL.  */
1703
1704 static struct value *
1705 desc_bounds (struct value *arr)
1706 {
1707   struct type *type = ada_check_typedef (value_type (arr));
1708
1709   if (is_thin_pntr (type))
1710     {
1711       struct type *bounds_type =
1712         desc_bounds_type (thin_descriptor_type (type));
1713       LONGEST addr;
1714
1715       if (bounds_type == NULL)
1716         error (_("Bad GNAT array descriptor"));
1717
1718       /* NOTE: The following calculation is not really kosher, but
1719          since desc_type is an XVE-encoded type (and shouldn't be),
1720          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1721       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1722         addr = value_as_long (arr);
1723       else
1724         addr = value_address (arr);
1725
1726       return
1727         value_from_longest (lookup_pointer_type (bounds_type),
1728                             addr - TYPE_LENGTH (bounds_type));
1729     }
1730
1731   else if (is_thick_pntr (type))
1732     {
1733       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1734                                                _("Bad GNAT array descriptor"));
1735       struct type *p_bounds_type = value_type (p_bounds);
1736
1737       if (p_bounds_type
1738           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1739         {
1740           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1741
1742           if (TYPE_STUB (target_type))
1743             p_bounds = value_cast (lookup_pointer_type
1744                                    (ada_check_typedef (target_type)),
1745                                    p_bounds);
1746         }
1747       else
1748         error (_("Bad GNAT array descriptor"));
1749
1750       return p_bounds;
1751     }
1752   else
1753     return NULL;
1754 }
1755
1756 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1757    position of the field containing the address of the bounds data.  */
1758
1759 static int
1760 fat_pntr_bounds_bitpos (struct type *type)
1761 {
1762   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1763 }
1764
1765 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1766    size of the field containing the address of the bounds data.  */
1767
1768 static int
1769 fat_pntr_bounds_bitsize (struct type *type)
1770 {
1771   type = desc_base_type (type);
1772
1773   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1774     return TYPE_FIELD_BITSIZE (type, 1);
1775   else
1776     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1777 }
1778
1779 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1780    pointer to one, the type of its array data (a array-with-no-bounds type);
1781    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1782    data.  */
1783
1784 static struct type *
1785 desc_data_target_type (struct type *type)
1786 {
1787   type = desc_base_type (type);
1788
1789   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1790   if (is_thin_pntr (type))
1791     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1792   else if (is_thick_pntr (type))
1793     {
1794       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1795
1796       if (data_type
1797           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1798         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1799     }
1800
1801   return NULL;
1802 }
1803
1804 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1805    its array data.  */
1806
1807 static struct value *
1808 desc_data (struct value *arr)
1809 {
1810   struct type *type = value_type (arr);
1811
1812   if (is_thin_pntr (type))
1813     return thin_data_pntr (arr);
1814   else if (is_thick_pntr (type))
1815     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1816                              _("Bad GNAT array descriptor"));
1817   else
1818     return NULL;
1819 }
1820
1821
1822 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1823    position of the field containing the address of the data.  */
1824
1825 static int
1826 fat_pntr_data_bitpos (struct type *type)
1827 {
1828   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1829 }
1830
1831 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1832    size of the field containing the address of the data.  */
1833
1834 static int
1835 fat_pntr_data_bitsize (struct type *type)
1836 {
1837   type = desc_base_type (type);
1838
1839   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1840     return TYPE_FIELD_BITSIZE (type, 0);
1841   else
1842     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1843 }
1844
1845 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1846    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1847    bound, if WHICH is 1.  The first bound is I=1.  */
1848
1849 static struct value *
1850 desc_one_bound (struct value *bounds, int i, int which)
1851 {
1852   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1853                            _("Bad GNAT array descriptor bounds"));
1854 }
1855
1856 /* If BOUNDS is an array-bounds structure type, return the bit position
1857    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1858    bound, if WHICH is 1.  The first bound is I=1.  */
1859
1860 static int
1861 desc_bound_bitpos (struct type *type, int i, int which)
1862 {
1863   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1864 }
1865
1866 /* If BOUNDS is an array-bounds structure type, return the bit field size
1867    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1868    bound, if WHICH is 1.  The first bound is I=1.  */
1869
1870 static int
1871 desc_bound_bitsize (struct type *type, int i, int which)
1872 {
1873   type = desc_base_type (type);
1874
1875   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1876     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1877   else
1878     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1879 }
1880
1881 /* If TYPE is the type of an array-bounds structure, the type of its
1882    Ith bound (numbering from 1).  Otherwise, NULL.  */
1883
1884 static struct type *
1885 desc_index_type (struct type *type, int i)
1886 {
1887   type = desc_base_type (type);
1888
1889   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1890     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1891   else
1892     return NULL;
1893 }
1894
1895 /* The number of index positions in the array-bounds type TYPE.
1896    Return 0 if TYPE is NULL.  */
1897
1898 static int
1899 desc_arity (struct type *type)
1900 {
1901   type = desc_base_type (type);
1902
1903   if (type != NULL)
1904     return TYPE_NFIELDS (type) / 2;
1905   return 0;
1906 }
1907
1908 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1909    an array descriptor type (representing an unconstrained array
1910    type).  */
1911
1912 static int
1913 ada_is_direct_array_type (struct type *type)
1914 {
1915   if (type == NULL)
1916     return 0;
1917   type = ada_check_typedef (type);
1918   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1919           || ada_is_array_descriptor_type (type));
1920 }
1921
1922 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1923  * to one.  */
1924
1925 static int
1926 ada_is_array_type (struct type *type)
1927 {
1928   while (type != NULL 
1929          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1930              || TYPE_CODE (type) == TYPE_CODE_REF))
1931     type = TYPE_TARGET_TYPE (type);
1932   return ada_is_direct_array_type (type);
1933 }
1934
1935 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1936
1937 int
1938 ada_is_simple_array_type (struct type *type)
1939 {
1940   if (type == NULL)
1941     return 0;
1942   type = ada_check_typedef (type);
1943   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1944           || (TYPE_CODE (type) == TYPE_CODE_PTR
1945               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1946                  == TYPE_CODE_ARRAY));
1947 }
1948
1949 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1950
1951 int
1952 ada_is_array_descriptor_type (struct type *type)
1953 {
1954   struct type *data_type = desc_data_target_type (type);
1955
1956   if (type == NULL)
1957     return 0;
1958   type = ada_check_typedef (type);
1959   return (data_type != NULL
1960           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1961           && desc_arity (desc_bounds_type (type)) > 0);
1962 }
1963
1964 /* Non-zero iff type is a partially mal-formed GNAT array
1965    descriptor.  FIXME: This is to compensate for some problems with
1966    debugging output from GNAT.  Re-examine periodically to see if it
1967    is still needed.  */
1968
1969 int
1970 ada_is_bogus_array_descriptor (struct type *type)
1971 {
1972   return
1973     type != NULL
1974     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1975     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1976         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1977     && !ada_is_array_descriptor_type (type);
1978 }
1979
1980
1981 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1982    (fat pointer) returns the type of the array data described---specifically,
1983    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1984    in from the descriptor; otherwise, they are left unspecified.  If
1985    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1986    returns NULL.  The result is simply the type of ARR if ARR is not
1987    a descriptor.  */
1988 struct type *
1989 ada_type_of_array (struct value *arr, int bounds)
1990 {
1991   if (ada_is_constrained_packed_array_type (value_type (arr)))
1992     return decode_constrained_packed_array_type (value_type (arr));
1993
1994   if (!ada_is_array_descriptor_type (value_type (arr)))
1995     return value_type (arr);
1996
1997   if (!bounds)
1998     {
1999       struct type *array_type =
2000         ada_check_typedef (desc_data_target_type (value_type (arr)));
2001
2002       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2003         TYPE_FIELD_BITSIZE (array_type, 0) =
2004           decode_packed_array_bitsize (value_type (arr));
2005       
2006       return array_type;
2007     }
2008   else
2009     {
2010       struct type *elt_type;
2011       int arity;
2012       struct value *descriptor;
2013
2014       elt_type = ada_array_element_type (value_type (arr), -1);
2015       arity = ada_array_arity (value_type (arr));
2016
2017       if (elt_type == NULL || arity == 0)
2018         return ada_check_typedef (value_type (arr));
2019
2020       descriptor = desc_bounds (arr);
2021       if (value_as_long (descriptor) == 0)
2022         return NULL;
2023       while (arity > 0)
2024         {
2025           struct type *range_type = alloc_type_copy (value_type (arr));
2026           struct type *array_type = alloc_type_copy (value_type (arr));
2027           struct value *low = desc_one_bound (descriptor, arity, 0);
2028           struct value *high = desc_one_bound (descriptor, arity, 1);
2029
2030           arity -= 1;
2031           create_static_range_type (range_type, value_type (low),
2032                                     longest_to_int (value_as_long (low)),
2033                                     longest_to_int (value_as_long (high)));
2034           elt_type = create_array_type (array_type, elt_type, range_type);
2035
2036           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2037             {
2038               /* We need to store the element packed bitsize, as well as
2039                  recompute the array size, because it was previously
2040                  computed based on the unpacked element size.  */
2041               LONGEST lo = value_as_long (low);
2042               LONGEST hi = value_as_long (high);
2043
2044               TYPE_FIELD_BITSIZE (elt_type, 0) =
2045                 decode_packed_array_bitsize (value_type (arr));
2046               /* If the array has no element, then the size is already
2047                  zero, and does not need to be recomputed.  */
2048               if (lo < hi)
2049                 {
2050                   int array_bitsize =
2051                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2052
2053                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2054                 }
2055             }
2056         }
2057
2058       return lookup_pointer_type (elt_type);
2059     }
2060 }
2061
2062 /* If ARR does not represent an array, returns ARR unchanged.
2063    Otherwise, returns either a standard GDB array with bounds set
2064    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2065    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2066
2067 struct value *
2068 ada_coerce_to_simple_array_ptr (struct value *arr)
2069 {
2070   if (ada_is_array_descriptor_type (value_type (arr)))
2071     {
2072       struct type *arrType = ada_type_of_array (arr, 1);
2073
2074       if (arrType == NULL)
2075         return NULL;
2076       return value_cast (arrType, value_copy (desc_data (arr)));
2077     }
2078   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2079     return decode_constrained_packed_array (arr);
2080   else
2081     return arr;
2082 }
2083
2084 /* If ARR does not represent an array, returns ARR unchanged.
2085    Otherwise, returns a standard GDB array describing ARR (which may
2086    be ARR itself if it already is in the proper form).  */
2087
2088 struct value *
2089 ada_coerce_to_simple_array (struct value *arr)
2090 {
2091   if (ada_is_array_descriptor_type (value_type (arr)))
2092     {
2093       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2094
2095       if (arrVal == NULL)
2096         error (_("Bounds unavailable for null array pointer."));
2097       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2098       return value_ind (arrVal);
2099     }
2100   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2101     return decode_constrained_packed_array (arr);
2102   else
2103     return arr;
2104 }
2105
2106 /* If TYPE represents a GNAT array type, return it translated to an
2107    ordinary GDB array type (possibly with BITSIZE fields indicating
2108    packing).  For other types, is the identity.  */
2109
2110 struct type *
2111 ada_coerce_to_simple_array_type (struct type *type)
2112 {
2113   if (ada_is_constrained_packed_array_type (type))
2114     return decode_constrained_packed_array_type (type);
2115
2116   if (ada_is_array_descriptor_type (type))
2117     return ada_check_typedef (desc_data_target_type (type));
2118
2119   return type;
2120 }
2121
2122 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2123
2124 static int
2125 ada_is_packed_array_type  (struct type *type)
2126 {
2127   if (type == NULL)
2128     return 0;
2129   type = desc_base_type (type);
2130   type = ada_check_typedef (type);
2131   return
2132     ada_type_name (type) != NULL
2133     && strstr (ada_type_name (type), "___XP") != NULL;
2134 }
2135
2136 /* Non-zero iff TYPE represents a standard GNAT constrained
2137    packed-array type.  */
2138
2139 int
2140 ada_is_constrained_packed_array_type (struct type *type)
2141 {
2142   return ada_is_packed_array_type (type)
2143     && !ada_is_array_descriptor_type (type);
2144 }
2145
2146 /* Non-zero iff TYPE represents an array descriptor for a
2147    unconstrained packed-array type.  */
2148
2149 static int
2150 ada_is_unconstrained_packed_array_type (struct type *type)
2151 {
2152   return ada_is_packed_array_type (type)
2153     && ada_is_array_descriptor_type (type);
2154 }
2155
2156 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2157    return the size of its elements in bits.  */
2158
2159 static long
2160 decode_packed_array_bitsize (struct type *type)
2161 {
2162   const char *raw_name;
2163   const char *tail;
2164   long bits;
2165
2166   /* Access to arrays implemented as fat pointers are encoded as a typedef
2167      of the fat pointer type.  We need the name of the fat pointer type
2168      to do the decoding, so strip the typedef layer.  */
2169   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2170     type = ada_typedef_target_type (type);
2171
2172   raw_name = ada_type_name (ada_check_typedef (type));
2173   if (!raw_name)
2174     raw_name = ada_type_name (desc_base_type (type));
2175
2176   if (!raw_name)
2177     return 0;
2178
2179   tail = strstr (raw_name, "___XP");
2180   gdb_assert (tail != NULL);
2181
2182   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2183     {
2184       lim_warning
2185         (_("could not understand bit size information on packed array"));
2186       return 0;
2187     }
2188
2189   return bits;
2190 }
2191
2192 /* Given that TYPE is a standard GDB array type with all bounds filled
2193    in, and that the element size of its ultimate scalar constituents
2194    (that is, either its elements, or, if it is an array of arrays, its
2195    elements' elements, etc.) is *ELT_BITS, return an identical type,
2196    but with the bit sizes of its elements (and those of any
2197    constituent arrays) recorded in the BITSIZE components of its
2198    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2199    in bits.
2200
2201    Note that, for arrays whose index type has an XA encoding where
2202    a bound references a record discriminant, getting that discriminant,
2203    and therefore the actual value of that bound, is not possible
2204    because none of the given parameters gives us access to the record.
2205    This function assumes that it is OK in the context where it is being
2206    used to return an array whose bounds are still dynamic and where
2207    the length is arbitrary.  */
2208
2209 static struct type *
2210 constrained_packed_array_type (struct type *type, long *elt_bits)
2211 {
2212   struct type *new_elt_type;
2213   struct type *new_type;
2214   struct type *index_type_desc;
2215   struct type *index_type;
2216   LONGEST low_bound, high_bound;
2217
2218   type = ada_check_typedef (type);
2219   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2220     return type;
2221
2222   index_type_desc = ada_find_parallel_type (type, "___XA");
2223   if (index_type_desc)
2224     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2225                                       NULL);
2226   else
2227     index_type = TYPE_INDEX_TYPE (type);
2228
2229   new_type = alloc_type_copy (type);
2230   new_elt_type =
2231     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2232                                    elt_bits);
2233   create_array_type (new_type, new_elt_type, index_type);
2234   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2235   TYPE_NAME (new_type) = ada_type_name (type);
2236
2237   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2238        && is_dynamic_type (check_typedef (index_type)))
2239       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2240     low_bound = high_bound = 0;
2241   if (high_bound < low_bound)
2242     *elt_bits = TYPE_LENGTH (new_type) = 0;
2243   else
2244     {
2245       *elt_bits *= (high_bound - low_bound + 1);
2246       TYPE_LENGTH (new_type) =
2247         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2248     }
2249
2250   TYPE_FIXED_INSTANCE (new_type) = 1;
2251   return new_type;
2252 }
2253
2254 /* The array type encoded by TYPE, where
2255    ada_is_constrained_packed_array_type (TYPE).  */
2256
2257 static struct type *
2258 decode_constrained_packed_array_type (struct type *type)
2259 {
2260   const char *raw_name = ada_type_name (ada_check_typedef (type));
2261   char *name;
2262   const char *tail;
2263   struct type *shadow_type;
2264   long bits;
2265
2266   if (!raw_name)
2267     raw_name = ada_type_name (desc_base_type (type));
2268
2269   if (!raw_name)
2270     return NULL;
2271
2272   name = (char *) alloca (strlen (raw_name) + 1);
2273   tail = strstr (raw_name, "___XP");
2274   type = desc_base_type (type);
2275
2276   memcpy (name, raw_name, tail - raw_name);
2277   name[tail - raw_name] = '\000';
2278
2279   shadow_type = ada_find_parallel_type_with_name (type, name);
2280
2281   if (shadow_type == NULL)
2282     {
2283       lim_warning (_("could not find bounds information on packed array"));
2284       return NULL;
2285     }
2286   shadow_type = check_typedef (shadow_type);
2287
2288   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2289     {
2290       lim_warning (_("could not understand bounds "
2291                      "information on packed array"));
2292       return NULL;
2293     }
2294
2295   bits = decode_packed_array_bitsize (type);
2296   return constrained_packed_array_type (shadow_type, &bits);
2297 }
2298
2299 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2300    array, returns a simple array that denotes that array.  Its type is a
2301    standard GDB array type except that the BITSIZEs of the array
2302    target types are set to the number of bits in each element, and the
2303    type length is set appropriately.  */
2304
2305 static struct value *
2306 decode_constrained_packed_array (struct value *arr)
2307 {
2308   struct type *type;
2309
2310   /* If our value is a pointer, then dereference it. Likewise if
2311      the value is a reference.  Make sure that this operation does not
2312      cause the target type to be fixed, as this would indirectly cause
2313      this array to be decoded.  The rest of the routine assumes that
2314      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2315      and "value_ind" routines to perform the dereferencing, as opposed
2316      to using "ada_coerce_ref" or "ada_value_ind".  */
2317   arr = coerce_ref (arr);
2318   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2319     arr = value_ind (arr);
2320
2321   type = decode_constrained_packed_array_type (value_type (arr));
2322   if (type == NULL)
2323     {
2324       error (_("can't unpack array"));
2325       return NULL;
2326     }
2327
2328   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2329       && ada_is_modular_type (value_type (arr)))
2330     {
2331        /* This is a (right-justified) modular type representing a packed
2332          array with no wrapper.  In order to interpret the value through
2333          the (left-justified) packed array type we just built, we must
2334          first left-justify it.  */
2335       int bit_size, bit_pos;
2336       ULONGEST mod;
2337
2338       mod = ada_modulus (value_type (arr)) - 1;
2339       bit_size = 0;
2340       while (mod > 0)
2341         {
2342           bit_size += 1;
2343           mod >>= 1;
2344         }
2345       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2346       arr = ada_value_primitive_packed_val (arr, NULL,
2347                                             bit_pos / HOST_CHAR_BIT,
2348                                             bit_pos % HOST_CHAR_BIT,
2349                                             bit_size,
2350                                             type);
2351     }
2352
2353   return coerce_unspec_val_to_type (arr, type);
2354 }
2355
2356
2357 /* The value of the element of packed array ARR at the ARITY indices
2358    given in IND.   ARR must be a simple array.  */
2359
2360 static struct value *
2361 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2362 {
2363   int i;
2364   int bits, elt_off, bit_off;
2365   long elt_total_bit_offset;
2366   struct type *elt_type;
2367   struct value *v;
2368
2369   bits = 0;
2370   elt_total_bit_offset = 0;
2371   elt_type = ada_check_typedef (value_type (arr));
2372   for (i = 0; i < arity; i += 1)
2373     {
2374       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2375           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2376         error
2377           (_("attempt to do packed indexing of "
2378              "something other than a packed array"));
2379       else
2380         {
2381           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2382           LONGEST lowerbound, upperbound;
2383           LONGEST idx;
2384
2385           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2386             {
2387               lim_warning (_("don't know bounds of array"));
2388               lowerbound = upperbound = 0;
2389             }
2390
2391           idx = pos_atr (ind[i]);
2392           if (idx < lowerbound || idx > upperbound)
2393             lim_warning (_("packed array index %ld out of bounds"),
2394                          (long) idx);
2395           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2396           elt_total_bit_offset += (idx - lowerbound) * bits;
2397           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2398         }
2399     }
2400   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2401   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2402
2403   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2404                                       bits, elt_type);
2405   return v;
2406 }
2407
2408 /* Non-zero iff TYPE includes negative integer values.  */
2409
2410 static int
2411 has_negatives (struct type *type)
2412 {
2413   switch (TYPE_CODE (type))
2414     {
2415     default:
2416       return 0;
2417     case TYPE_CODE_INT:
2418       return !TYPE_UNSIGNED (type);
2419     case TYPE_CODE_RANGE:
2420       return TYPE_LOW_BOUND (type) < 0;
2421     }
2422 }
2423
2424 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2425    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2426    the unpacked buffer.
2427
2428    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2429    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2430
2431    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2432    zero otherwise.
2433
2434    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2435
2436    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2437
2438 static void
2439 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2440                           gdb_byte *unpacked, int unpacked_len,
2441                           int is_big_endian, int is_signed_type,
2442                           int is_scalar)
2443 {
2444   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2445   int src_idx;                  /* Index into the source area */
2446   int src_bytes_left;           /* Number of source bytes left to process.  */
2447   int srcBitsLeft;              /* Number of source bits left to move */
2448   int unusedLS;                 /* Number of bits in next significant
2449                                    byte of source that are unused */
2450
2451   int unpacked_idx;             /* Index into the unpacked buffer */
2452   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2453
2454   unsigned long accum;          /* Staging area for bits being transferred */
2455   int accumSize;                /* Number of meaningful bits in accum */
2456   unsigned char sign;
2457
2458   /* Transmit bytes from least to most significant; delta is the direction
2459      the indices move.  */
2460   int delta = is_big_endian ? -1 : 1;
2461
2462   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2463      bits from SRC.  .*/
2464   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2465     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2466            bit_size, unpacked_len);
2467
2468   srcBitsLeft = bit_size;
2469   src_bytes_left = src_len;
2470   unpacked_bytes_left = unpacked_len;
2471   sign = 0;
2472
2473   if (is_big_endian)
2474     {
2475       src_idx = src_len - 1;
2476       if (is_signed_type
2477           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2478         sign = ~0;
2479
2480       unusedLS =
2481         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2482         % HOST_CHAR_BIT;
2483
2484       if (is_scalar)
2485         {
2486           accumSize = 0;
2487           unpacked_idx = unpacked_len - 1;
2488         }
2489       else
2490         {
2491           /* Non-scalar values must be aligned at a byte boundary...  */
2492           accumSize =
2493             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2494           /* ... And are placed at the beginning (most-significant) bytes
2495              of the target.  */
2496           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2497           unpacked_bytes_left = unpacked_idx + 1;
2498         }
2499     }
2500   else
2501     {
2502       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2503
2504       src_idx = unpacked_idx = 0;
2505       unusedLS = bit_offset;
2506       accumSize = 0;
2507
2508       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2509         sign = ~0;
2510     }
2511
2512   accum = 0;
2513   while (src_bytes_left > 0)
2514     {
2515       /* Mask for removing bits of the next source byte that are not
2516          part of the value.  */
2517       unsigned int unusedMSMask =
2518         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2519         1;
2520       /* Sign-extend bits for this byte.  */
2521       unsigned int signMask = sign & ~unusedMSMask;
2522
2523       accum |=
2524         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2525       accumSize += HOST_CHAR_BIT - unusedLS;
2526       if (accumSize >= HOST_CHAR_BIT)
2527         {
2528           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2529           accumSize -= HOST_CHAR_BIT;
2530           accum >>= HOST_CHAR_BIT;
2531           unpacked_bytes_left -= 1;
2532           unpacked_idx += delta;
2533         }
2534       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2535       unusedLS = 0;
2536       src_bytes_left -= 1;
2537       src_idx += delta;
2538     }
2539   while (unpacked_bytes_left > 0)
2540     {
2541       accum |= sign << accumSize;
2542       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2543       accumSize -= HOST_CHAR_BIT;
2544       if (accumSize < 0)
2545         accumSize = 0;
2546       accum >>= HOST_CHAR_BIT;
2547       unpacked_bytes_left -= 1;
2548       unpacked_idx += delta;
2549     }
2550 }
2551
2552 /* Create a new value of type TYPE from the contents of OBJ starting
2553    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2554    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2555    assigning through the result will set the field fetched from.
2556    VALADDR is ignored unless OBJ is NULL, in which case,
2557    VALADDR+OFFSET must address the start of storage containing the 
2558    packed value.  The value returned  in this case is never an lval.
2559    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2560
2561 struct value *
2562 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2563                                 long offset, int bit_offset, int bit_size,
2564                                 struct type *type)
2565 {
2566   struct value *v;
2567   const gdb_byte *src;                /* First byte containing data to unpack */
2568   gdb_byte *unpacked;
2569   const int is_scalar = is_scalar_type (type);
2570   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2571   std::unique_ptr<gdb_byte[]> staging;
2572   int staging_len = 0;
2573
2574   type = ada_check_typedef (type);
2575
2576   if (obj == NULL)
2577     src = valaddr + offset;
2578   else
2579     src = value_contents (obj) + offset;
2580
2581   if (is_dynamic_type (type))
2582     {
2583       /* The length of TYPE might by dynamic, so we need to resolve
2584          TYPE in order to know its actual size, which we then use
2585          to create the contents buffer of the value we return.
2586          The difficulty is that the data containing our object is
2587          packed, and therefore maybe not at a byte boundary.  So, what
2588          we do, is unpack the data into a byte-aligned buffer, and then
2589          use that buffer as our object's value for resolving the type.  */
2590       staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2591       staging.reset (new gdb_byte[staging_len]);
2592
2593       ada_unpack_from_contents (src, bit_offset, bit_size,
2594                                 staging.get (), staging_len,
2595                                 is_big_endian, has_negatives (type),
2596                                 is_scalar);
2597       type = resolve_dynamic_type (type, staging.get (), 0);
2598       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2599         {
2600           /* This happens when the length of the object is dynamic,
2601              and is actually smaller than the space reserved for it.
2602              For instance, in an array of variant records, the bit_size
2603              we're given is the array stride, which is constant and
2604              normally equal to the maximum size of its element.
2605              But, in reality, each element only actually spans a portion
2606              of that stride.  */
2607           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2608         }
2609     }
2610
2611   if (obj == NULL)
2612     {
2613       v = allocate_value (type);
2614       src = valaddr + offset;
2615     }
2616   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2617     {
2618       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2619       gdb_byte *buf;
2620
2621       v = value_at (type, value_address (obj) + offset);
2622       buf = (gdb_byte *) alloca (src_len);
2623       read_memory (value_address (v), buf, src_len);
2624       src = buf;
2625     }
2626   else
2627     {
2628       v = allocate_value (type);
2629       src = value_contents (obj) + offset;
2630     }
2631
2632   if (obj != NULL)
2633     {
2634       long new_offset = offset;
2635
2636       set_value_component_location (v, obj);
2637       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2638       set_value_bitsize (v, bit_size);
2639       if (value_bitpos (v) >= HOST_CHAR_BIT)
2640         {
2641           ++new_offset;
2642           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2643         }
2644       set_value_offset (v, new_offset);
2645
2646       /* Also set the parent value.  This is needed when trying to
2647          assign a new value (in inferior memory).  */
2648       set_value_parent (v, obj);
2649     }
2650   else
2651     set_value_bitsize (v, bit_size);
2652   unpacked = value_contents_writeable (v);
2653
2654   if (bit_size == 0)
2655     {
2656       memset (unpacked, 0, TYPE_LENGTH (type));
2657       return v;
2658     }
2659
2660   if (staging != NULL && staging_len == TYPE_LENGTH (type))
2661     {
2662       /* Small short-cut: If we've unpacked the data into a buffer
2663          of the same size as TYPE's length, then we can reuse that,
2664          instead of doing the unpacking again.  */
2665       memcpy (unpacked, staging.get (), staging_len);
2666     }
2667   else
2668     ada_unpack_from_contents (src, bit_offset, bit_size,
2669                               unpacked, TYPE_LENGTH (type),
2670                               is_big_endian, has_negatives (type), is_scalar);
2671
2672   return v;
2673 }
2674
2675 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2676    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2677    not overlap.  */
2678 static void
2679 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2680            int src_offset, int n, int bits_big_endian_p)
2681 {
2682   unsigned int accum, mask;
2683   int accum_bits, chunk_size;
2684
2685   target += targ_offset / HOST_CHAR_BIT;
2686   targ_offset %= HOST_CHAR_BIT;
2687   source += src_offset / HOST_CHAR_BIT;
2688   src_offset %= HOST_CHAR_BIT;
2689   if (bits_big_endian_p)
2690     {
2691       accum = (unsigned char) *source;
2692       source += 1;
2693       accum_bits = HOST_CHAR_BIT - src_offset;
2694
2695       while (n > 0)
2696         {
2697           int unused_right;
2698
2699           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2700           accum_bits += HOST_CHAR_BIT;
2701           source += 1;
2702           chunk_size = HOST_CHAR_BIT - targ_offset;
2703           if (chunk_size > n)
2704             chunk_size = n;
2705           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2706           mask = ((1 << chunk_size) - 1) << unused_right;
2707           *target =
2708             (*target & ~mask)
2709             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2710           n -= chunk_size;
2711           accum_bits -= chunk_size;
2712           target += 1;
2713           targ_offset = 0;
2714         }
2715     }
2716   else
2717     {
2718       accum = (unsigned char) *source >> src_offset;
2719       source += 1;
2720       accum_bits = HOST_CHAR_BIT - src_offset;
2721
2722       while (n > 0)
2723         {
2724           accum = accum + ((unsigned char) *source << accum_bits);
2725           accum_bits += HOST_CHAR_BIT;
2726           source += 1;
2727           chunk_size = HOST_CHAR_BIT - targ_offset;
2728           if (chunk_size > n)
2729             chunk_size = n;
2730           mask = ((1 << chunk_size) - 1) << targ_offset;
2731           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2732           n -= chunk_size;
2733           accum_bits -= chunk_size;
2734           accum >>= chunk_size;
2735           target += 1;
2736           targ_offset = 0;
2737         }
2738     }
2739 }
2740
2741 /* Store the contents of FROMVAL into the location of TOVAL.
2742    Return a new value with the location of TOVAL and contents of
2743    FROMVAL.   Handles assignment into packed fields that have
2744    floating-point or non-scalar types.  */
2745
2746 static struct value *
2747 ada_value_assign (struct value *toval, struct value *fromval)
2748 {
2749   struct type *type = value_type (toval);
2750   int bits = value_bitsize (toval);
2751
2752   toval = ada_coerce_ref (toval);
2753   fromval = ada_coerce_ref (fromval);
2754
2755   if (ada_is_direct_array_type (value_type (toval)))
2756     toval = ada_coerce_to_simple_array (toval);
2757   if (ada_is_direct_array_type (value_type (fromval)))
2758     fromval = ada_coerce_to_simple_array (fromval);
2759
2760   if (!deprecated_value_modifiable (toval))
2761     error (_("Left operand of assignment is not a modifiable lvalue."));
2762
2763   if (VALUE_LVAL (toval) == lval_memory
2764       && bits > 0
2765       && (TYPE_CODE (type) == TYPE_CODE_FLT
2766           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2767     {
2768       int len = (value_bitpos (toval)
2769                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2770       int from_size;
2771       gdb_byte *buffer = (gdb_byte *) alloca (len);
2772       struct value *val;
2773       CORE_ADDR to_addr = value_address (toval);
2774
2775       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2776         fromval = value_cast (type, fromval);
2777
2778       read_memory (to_addr, buffer, len);
2779       from_size = value_bitsize (fromval);
2780       if (from_size == 0)
2781         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2782       if (gdbarch_bits_big_endian (get_type_arch (type)))
2783         move_bits (buffer, value_bitpos (toval),
2784                    value_contents (fromval), from_size - bits, bits, 1);
2785       else
2786         move_bits (buffer, value_bitpos (toval),
2787                    value_contents (fromval), 0, bits, 0);
2788       write_memory_with_notification (to_addr, buffer, len);
2789
2790       val = value_copy (toval);
2791       memcpy (value_contents_raw (val), value_contents (fromval),
2792               TYPE_LENGTH (type));
2793       deprecated_set_value_type (val, type);
2794
2795       return val;
2796     }
2797
2798   return value_assign (toval, fromval);
2799 }
2800
2801
2802 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2803    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2804    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2805    COMPONENT, and not the inferior's memory.  The current contents
2806    of COMPONENT are ignored.
2807
2808    Although not part of the initial design, this function also works
2809    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2810    had a null address, and COMPONENT had an address which is equal to
2811    its offset inside CONTAINER.  */
2812
2813 static void
2814 value_assign_to_component (struct value *container, struct value *component,
2815                            struct value *val)
2816 {
2817   LONGEST offset_in_container =
2818     (LONGEST)  (value_address (component) - value_address (container));
2819   int bit_offset_in_container =
2820     value_bitpos (component) - value_bitpos (container);
2821   int bits;
2822
2823   val = value_cast (value_type (component), val);
2824
2825   if (value_bitsize (component) == 0)
2826     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2827   else
2828     bits = value_bitsize (component);
2829
2830   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2831     move_bits (value_contents_writeable (container) + offset_in_container,
2832                value_bitpos (container) + bit_offset_in_container,
2833                value_contents (val),
2834                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2835                bits, 1);
2836   else
2837     move_bits (value_contents_writeable (container) + offset_in_container,
2838                value_bitpos (container) + bit_offset_in_container,
2839                value_contents (val), 0, bits, 0);
2840 }
2841
2842 /* The value of the element of array ARR at the ARITY indices given in IND.
2843    ARR may be either a simple array, GNAT array descriptor, or pointer
2844    thereto.  */
2845
2846 struct value *
2847 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2848 {
2849   int k;
2850   struct value *elt;
2851   struct type *elt_type;
2852
2853   elt = ada_coerce_to_simple_array (arr);
2854
2855   elt_type = ada_check_typedef (value_type (elt));
2856   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2857       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2858     return value_subscript_packed (elt, arity, ind);
2859
2860   for (k = 0; k < arity; k += 1)
2861     {
2862       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2863         error (_("too many subscripts (%d expected)"), k);
2864       elt = value_subscript (elt, pos_atr (ind[k]));
2865     }
2866   return elt;
2867 }
2868
2869 /* Assuming ARR is a pointer to a GDB array, the value of the element
2870    of *ARR at the ARITY indices given in IND.
2871    Does not read the entire array into memory.
2872
2873    Note: Unlike what one would expect, this function is used instead of
2874    ada_value_subscript for basically all non-packed array types.  The reason
2875    for this is that a side effect of doing our own pointer arithmetics instead
2876    of relying on value_subscript is that there is no implicit typedef peeling.
2877    This is important for arrays of array accesses, where it allows us to
2878    preserve the fact that the array's element is an array access, where the
2879    access part os encoded in a typedef layer.  */
2880
2881 static struct value *
2882 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2883 {
2884   int k;
2885   struct value *array_ind = ada_value_ind (arr);
2886   struct type *type
2887     = check_typedef (value_enclosing_type (array_ind));
2888
2889   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2890       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2891     return value_subscript_packed (array_ind, arity, ind);
2892
2893   for (k = 0; k < arity; k += 1)
2894     {
2895       LONGEST lwb, upb;
2896       struct value *lwb_value;
2897
2898       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2899         error (_("too many subscripts (%d expected)"), k);
2900       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2901                         value_copy (arr));
2902       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2903       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2904       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2905       type = TYPE_TARGET_TYPE (type);
2906     }
2907
2908   return value_ind (arr);
2909 }
2910
2911 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2912    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2913    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2914    this array is LOW, as per Ada rules.  */
2915 static struct value *
2916 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2917                           int low, int high)
2918 {
2919   struct type *type0 = ada_check_typedef (type);
2920   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2921   struct type *index_type
2922     = create_static_range_type (NULL, base_index_type, low, high);
2923   struct type *slice_type =
2924     create_array_type (NULL, TYPE_TARGET_TYPE (type0), index_type);
2925   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2926   LONGEST base_low_pos, low_pos;
2927   CORE_ADDR base;
2928
2929   if (!discrete_position (base_index_type, low, &low_pos)
2930       || !discrete_position (base_index_type, base_low, &base_low_pos))
2931     {
2932       warning (_("unable to get positions in slice, use bounds instead"));
2933       low_pos = low;
2934       base_low_pos = base_low;
2935     }
2936
2937   base = value_as_address (array_ptr)
2938     + ((low_pos - base_low_pos)
2939        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2940   return value_at_lazy (slice_type, base);
2941 }
2942
2943
2944 static struct value *
2945 ada_value_slice (struct value *array, int low, int high)
2946 {
2947   struct type *type = ada_check_typedef (value_type (array));
2948   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2949   struct type *index_type
2950     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2951   struct type *slice_type =
2952     create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2953   LONGEST low_pos, high_pos;
2954
2955   if (!discrete_position (base_index_type, low, &low_pos)
2956       || !discrete_position (base_index_type, high, &high_pos))
2957     {
2958       warning (_("unable to get positions in slice, use bounds instead"));
2959       low_pos = low;
2960       high_pos = high;
2961     }
2962
2963   return value_cast (slice_type,
2964                      value_slice (array, low, high_pos - low_pos + 1));
2965 }
2966
2967 /* If type is a record type in the form of a standard GNAT array
2968    descriptor, returns the number of dimensions for type.  If arr is a
2969    simple array, returns the number of "array of"s that prefix its
2970    type designation.  Otherwise, returns 0.  */
2971
2972 int
2973 ada_array_arity (struct type *type)
2974 {
2975   int arity;
2976
2977   if (type == NULL)
2978     return 0;
2979
2980   type = desc_base_type (type);
2981
2982   arity = 0;
2983   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2984     return desc_arity (desc_bounds_type (type));
2985   else
2986     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2987       {
2988         arity += 1;
2989         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2990       }
2991
2992   return arity;
2993 }
2994
2995 /* If TYPE is a record type in the form of a standard GNAT array
2996    descriptor or a simple array type, returns the element type for
2997    TYPE after indexing by NINDICES indices, or by all indices if
2998    NINDICES is -1.  Otherwise, returns NULL.  */
2999
3000 struct type *
3001 ada_array_element_type (struct type *type, int nindices)
3002 {
3003   type = desc_base_type (type);
3004
3005   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
3006     {
3007       int k;
3008       struct type *p_array_type;
3009
3010       p_array_type = desc_data_target_type (type);
3011
3012       k = ada_array_arity (type);
3013       if (k == 0)
3014         return NULL;
3015
3016       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
3017       if (nindices >= 0 && k > nindices)
3018         k = nindices;
3019       while (k > 0 && p_array_type != NULL)
3020         {
3021           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
3022           k -= 1;
3023         }
3024       return p_array_type;
3025     }
3026   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3027     {
3028       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3029         {
3030           type = TYPE_TARGET_TYPE (type);
3031           nindices -= 1;
3032         }
3033       return type;
3034     }
3035
3036   return NULL;
3037 }
3038
3039 /* The type of nth index in arrays of given type (n numbering from 1).
3040    Does not examine memory.  Throws an error if N is invalid or TYPE
3041    is not an array type.  NAME is the name of the Ada attribute being
3042    evaluated ('range, 'first, 'last, or 'length); it is used in building
3043    the error message.  */
3044
3045 static struct type *
3046 ada_index_type (struct type *type, int n, const char *name)
3047 {
3048   struct type *result_type;
3049
3050   type = desc_base_type (type);
3051
3052   if (n < 0 || n > ada_array_arity (type))
3053     error (_("invalid dimension number to '%s"), name);
3054
3055   if (ada_is_simple_array_type (type))
3056     {
3057       int i;
3058
3059       for (i = 1; i < n; i += 1)
3060         type = TYPE_TARGET_TYPE (type);
3061       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3062       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3063          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3064          perhaps stabsread.c would make more sense.  */
3065       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3066         result_type = NULL;
3067     }
3068   else
3069     {
3070       result_type = desc_index_type (desc_bounds_type (type), n);
3071       if (result_type == NULL)
3072         error (_("attempt to take bound of something that is not an array"));
3073     }
3074
3075   return result_type;
3076 }
3077
3078 /* Given that arr is an array type, returns the lower bound of the
3079    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3080    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3081    array-descriptor type.  It works for other arrays with bounds supplied
3082    by run-time quantities other than discriminants.  */
3083
3084 static LONGEST
3085 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3086 {
3087   struct type *type, *index_type_desc, *index_type;
3088   int i;
3089
3090   gdb_assert (which == 0 || which == 1);
3091
3092   if (ada_is_constrained_packed_array_type (arr_type))
3093     arr_type = decode_constrained_packed_array_type (arr_type);
3094
3095   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3096     return (LONGEST) - which;
3097
3098   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3099     type = TYPE_TARGET_TYPE (arr_type);
3100   else
3101     type = arr_type;
3102
3103   if (TYPE_FIXED_INSTANCE (type))
3104     {
3105       /* The array has already been fixed, so we do not need to
3106          check the parallel ___XA type again.  That encoding has
3107          already been applied, so ignore it now.  */
3108       index_type_desc = NULL;
3109     }
3110   else
3111     {
3112       index_type_desc = ada_find_parallel_type (type, "___XA");
3113       ada_fixup_array_indexes_type (index_type_desc);
3114     }
3115
3116   if (index_type_desc != NULL)
3117     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3118                                       NULL);
3119   else
3120     {
3121       struct type *elt_type = check_typedef (type);
3122
3123       for (i = 1; i < n; i++)
3124         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3125
3126       index_type = TYPE_INDEX_TYPE (elt_type);
3127     }
3128
3129   return
3130     (LONGEST) (which == 0
3131                ? ada_discrete_type_low_bound (index_type)
3132                : ada_discrete_type_high_bound (index_type));
3133 }
3134
3135 /* Given that arr is an array value, returns the lower bound of the
3136    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3137    WHICH is 1.  This routine will also work for arrays with bounds
3138    supplied by run-time quantities other than discriminants.  */
3139
3140 static LONGEST
3141 ada_array_bound (struct value *arr, int n, int which)
3142 {
3143   struct type *arr_type;
3144
3145   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3146     arr = value_ind (arr);
3147   arr_type = value_enclosing_type (arr);
3148
3149   if (ada_is_constrained_packed_array_type (arr_type))
3150     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3151   else if (ada_is_simple_array_type (arr_type))
3152     return ada_array_bound_from_type (arr_type, n, which);
3153   else
3154     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3155 }
3156
3157 /* Given that arr is an array value, returns the length of the
3158    nth index.  This routine will also work for arrays with bounds
3159    supplied by run-time quantities other than discriminants.
3160    Does not work for arrays indexed by enumeration types with representation
3161    clauses at the moment.  */
3162
3163 static LONGEST
3164 ada_array_length (struct value *arr, int n)
3165 {
3166   struct type *arr_type, *index_type;
3167   int low, high;
3168
3169   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3170     arr = value_ind (arr);
3171   arr_type = value_enclosing_type (arr);
3172
3173   if (ada_is_constrained_packed_array_type (arr_type))
3174     return ada_array_length (decode_constrained_packed_array (arr), n);
3175
3176   if (ada_is_simple_array_type (arr_type))
3177     {
3178       low = ada_array_bound_from_type (arr_type, n, 0);
3179       high = ada_array_bound_from_type (arr_type, n, 1);
3180     }
3181   else
3182     {
3183       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3184       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3185     }
3186
3187   arr_type = check_typedef (arr_type);
3188   index_type = TYPE_INDEX_TYPE (arr_type);
3189   if (index_type != NULL)
3190     {
3191       struct type *base_type;
3192       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3193         base_type = TYPE_TARGET_TYPE (index_type);
3194       else
3195         base_type = index_type;
3196
3197       low = pos_atr (value_from_longest (base_type, low));
3198       high = pos_atr (value_from_longest (base_type, high));
3199     }
3200   return high - low + 1;
3201 }
3202
3203 /* An empty array whose type is that of ARR_TYPE (an array type),
3204    with bounds LOW to LOW-1.  */
3205
3206 static struct value *
3207 empty_array (struct type *arr_type, int low)
3208 {
3209   struct type *arr_type0 = ada_check_typedef (arr_type);
3210   struct type *index_type
3211     = create_static_range_type
3212         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3213   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3214
3215   return allocate_value (create_array_type (NULL, elt_type, index_type));
3216 }
3217 \f
3218
3219                                 /* Name resolution */
3220
3221 /* The "decoded" name for the user-definable Ada operator corresponding
3222    to OP.  */
3223
3224 static const char *
3225 ada_decoded_op_name (enum exp_opcode op)
3226 {
3227   int i;
3228
3229   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3230     {
3231       if (ada_opname_table[i].op == op)
3232         return ada_opname_table[i].decoded;
3233     }
3234   error (_("Could not find operator name for opcode"));
3235 }
3236
3237
3238 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3239    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3240    undefined namespace) and converts operators that are
3241    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3242    non-null, it provides a preferred result type [at the moment, only
3243    type void has any effect---causing procedures to be preferred over
3244    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3245    return type is preferred.  May change (expand) *EXP.  */
3246
3247 static void
3248 resolve (struct expression **expp, int void_context_p)
3249 {
3250   struct type *context_type = NULL;
3251   int pc = 0;
3252
3253   if (void_context_p)
3254     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3255
3256   resolve_subexp (expp, &pc, 1, context_type);
3257 }
3258
3259 /* Resolve the operator of the subexpression beginning at
3260    position *POS of *EXPP.  "Resolving" consists of replacing
3261    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3262    with their resolutions, replacing built-in operators with
3263    function calls to user-defined operators, where appropriate, and,
3264    when DEPROCEDURE_P is non-zero, converting function-valued variables
3265    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3266    are as in ada_resolve, above.  */
3267
3268 static struct value *
3269 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
3270                 struct type *context_type)
3271 {
3272   int pc = *pos;
3273   int i;
3274   struct expression *exp;       /* Convenience: == *expp.  */
3275   enum exp_opcode op = (*expp)->elts[pc].opcode;
3276   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3277   int nargs;                    /* Number of operands.  */
3278   int oplen;
3279
3280   argvec = NULL;
3281   nargs = 0;
3282   exp = *expp;
3283
3284   /* Pass one: resolve operands, saving their types and updating *pos,
3285      if needed.  */
3286   switch (op)
3287     {
3288     case OP_FUNCALL:
3289       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3290           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3291         *pos += 7;
3292       else
3293         {
3294           *pos += 3;
3295           resolve_subexp (expp, pos, 0, NULL);
3296         }
3297       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3298       break;
3299
3300     case UNOP_ADDR:
3301       *pos += 1;
3302       resolve_subexp (expp, pos, 0, NULL);
3303       break;
3304
3305     case UNOP_QUAL:
3306       *pos += 3;
3307       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3308       break;
3309
3310     case OP_ATR_MODULUS:
3311     case OP_ATR_SIZE:
3312     case OP_ATR_TAG:
3313     case OP_ATR_FIRST:
3314     case OP_ATR_LAST:
3315     case OP_ATR_LENGTH:
3316     case OP_ATR_POS:
3317     case OP_ATR_VAL:
3318     case OP_ATR_MIN:
3319     case OP_ATR_MAX:
3320     case TERNOP_IN_RANGE:
3321     case BINOP_IN_BOUNDS:
3322     case UNOP_IN_RANGE:
3323     case OP_AGGREGATE:
3324     case OP_OTHERS:
3325     case OP_CHOICES:
3326     case OP_POSITIONAL:
3327     case OP_DISCRETE_RANGE:
3328     case OP_NAME:
3329       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3330       *pos += oplen;
3331       break;
3332
3333     case BINOP_ASSIGN:
3334       {
3335         struct value *arg1;
3336
3337         *pos += 1;
3338         arg1 = resolve_subexp (expp, pos, 0, NULL);
3339         if (arg1 == NULL)
3340           resolve_subexp (expp, pos, 1, NULL);
3341         else
3342           resolve_subexp (expp, pos, 1, value_type (arg1));
3343         break;
3344       }
3345
3346     case UNOP_CAST:
3347       *pos += 3;
3348       nargs = 1;
3349       break;
3350
3351     case BINOP_ADD:
3352     case BINOP_SUB:
3353     case BINOP_MUL:
3354     case BINOP_DIV:
3355     case BINOP_REM:
3356     case BINOP_MOD:
3357     case BINOP_EXP:
3358     case BINOP_CONCAT:
3359     case BINOP_LOGICAL_AND:
3360     case BINOP_LOGICAL_OR:
3361     case BINOP_BITWISE_AND:
3362     case BINOP_BITWISE_IOR:
3363     case BINOP_BITWISE_XOR:
3364
3365     case BINOP_EQUAL:
3366     case BINOP_NOTEQUAL:
3367     case BINOP_LESS:
3368     case BINOP_GTR:
3369     case BINOP_LEQ:
3370     case BINOP_GEQ:
3371
3372     case BINOP_REPEAT:
3373     case BINOP_SUBSCRIPT:
3374     case BINOP_COMMA:
3375       *pos += 1;
3376       nargs = 2;
3377       break;
3378
3379     case UNOP_NEG:
3380     case UNOP_PLUS:
3381     case UNOP_LOGICAL_NOT:
3382     case UNOP_ABS:
3383     case UNOP_IND:
3384       *pos += 1;
3385       nargs = 1;
3386       break;
3387
3388     case OP_LONG:
3389     case OP_DOUBLE:
3390     case OP_VAR_VALUE:
3391       *pos += 4;
3392       break;
3393
3394     case OP_TYPE:
3395     case OP_BOOL:
3396     case OP_LAST:
3397     case OP_INTERNALVAR:
3398       *pos += 3;
3399       break;
3400
3401     case UNOP_MEMVAL:
3402       *pos += 3;
3403       nargs = 1;
3404       break;
3405
3406     case OP_REGISTER:
3407       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3408       break;
3409
3410     case STRUCTOP_STRUCT:
3411       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3412       nargs = 1;
3413       break;
3414
3415     case TERNOP_SLICE:
3416       *pos += 1;
3417       nargs = 3;
3418       break;
3419
3420     case OP_STRING:
3421       break;
3422
3423     default:
3424       error (_("Unexpected operator during name resolution"));
3425     }
3426
3427   argvec = XALLOCAVEC (struct value *, nargs + 1);
3428   for (i = 0; i < nargs; i += 1)
3429     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3430   argvec[i] = NULL;
3431   exp = *expp;
3432
3433   /* Pass two: perform any resolution on principal operator.  */
3434   switch (op)
3435     {
3436     default:
3437       break;
3438
3439     case OP_VAR_VALUE:
3440       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3441         {
3442           struct block_symbol *candidates;
3443           int n_candidates;
3444
3445           n_candidates =
3446             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3447                                     (exp->elts[pc + 2].symbol),
3448                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3449                                     &candidates);
3450
3451           if (n_candidates > 1)
3452             {
3453               /* Types tend to get re-introduced locally, so if there
3454                  are any local symbols that are not types, first filter
3455                  out all types.  */
3456               int j;
3457               for (j = 0; j < n_candidates; j += 1)
3458                 switch (SYMBOL_CLASS (candidates[j].symbol))
3459                   {
3460                   case LOC_REGISTER:
3461                   case LOC_ARG:
3462                   case LOC_REF_ARG:
3463                   case LOC_REGPARM_ADDR:
3464                   case LOC_LOCAL:
3465                   case LOC_COMPUTED:
3466                     goto FoundNonType;
3467                   default:
3468                     break;
3469                   }
3470             FoundNonType:
3471               if (j < n_candidates)
3472                 {
3473                   j = 0;
3474                   while (j < n_candidates)
3475                     {
3476                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3477                         {
3478                           candidates[j] = candidates[n_candidates - 1];
3479                           n_candidates -= 1;
3480                         }
3481                       else
3482                         j += 1;
3483                     }
3484                 }
3485             }
3486
3487           if (n_candidates == 0)
3488             error (_("No definition found for %s"),
3489                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3490           else if (n_candidates == 1)
3491             i = 0;
3492           else if (deprocedure_p
3493                    && !is_nonfunction (candidates, n_candidates))
3494             {
3495               i = ada_resolve_function
3496                 (candidates, n_candidates, NULL, 0,
3497                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3498                  context_type);
3499               if (i < 0)
3500                 error (_("Could not find a match for %s"),
3501                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3502             }
3503           else
3504             {
3505               printf_filtered (_("Multiple matches for %s\n"),
3506                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3507               user_select_syms (candidates, n_candidates, 1);
3508               i = 0;
3509             }
3510
3511           exp->elts[pc + 1].block = candidates[i].block;
3512           exp->elts[pc + 2].symbol = candidates[i].symbol;
3513           if (innermost_block == NULL
3514               || contained_in (candidates[i].block, innermost_block))
3515             innermost_block = candidates[i].block;
3516         }
3517
3518       if (deprocedure_p
3519           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3520               == TYPE_CODE_FUNC))
3521         {
3522           replace_operator_with_call (expp, pc, 0, 0,
3523                                       exp->elts[pc + 2].symbol,
3524                                       exp->elts[pc + 1].block);
3525           exp = *expp;
3526         }
3527       break;
3528
3529     case OP_FUNCALL:
3530       {
3531         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3532             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3533           {
3534             struct block_symbol *candidates;
3535             int n_candidates;
3536
3537             n_candidates =
3538               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3539                                       (exp->elts[pc + 5].symbol),
3540                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3541                                       &candidates);
3542             if (n_candidates == 1)
3543               i = 0;
3544             else
3545               {
3546                 i = ada_resolve_function
3547                   (candidates, n_candidates,
3548                    argvec, nargs,
3549                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3550                    context_type);
3551                 if (i < 0)
3552                   error (_("Could not find a match for %s"),
3553                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3554               }
3555
3556             exp->elts[pc + 4].block = candidates[i].block;
3557             exp->elts[pc + 5].symbol = candidates[i].symbol;
3558             if (innermost_block == NULL
3559                 || contained_in (candidates[i].block, innermost_block))
3560               innermost_block = candidates[i].block;
3561           }
3562       }
3563       break;
3564     case BINOP_ADD:
3565     case BINOP_SUB:
3566     case BINOP_MUL:
3567     case BINOP_DIV:
3568     case BINOP_REM:
3569     case BINOP_MOD:
3570     case BINOP_CONCAT:
3571     case BINOP_BITWISE_AND:
3572     case BINOP_BITWISE_IOR:
3573     case BINOP_BITWISE_XOR:
3574     case BINOP_EQUAL:
3575     case BINOP_NOTEQUAL:
3576     case BINOP_LESS:
3577     case BINOP_GTR:
3578     case BINOP_LEQ:
3579     case BINOP_GEQ:
3580     case BINOP_EXP:
3581     case UNOP_NEG:
3582     case UNOP_PLUS:
3583     case UNOP_LOGICAL_NOT:
3584     case UNOP_ABS:
3585       if (possible_user_operator_p (op, argvec))
3586         {
3587           struct block_symbol *candidates;
3588           int n_candidates;
3589
3590           n_candidates =
3591             ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)),
3592                                     (struct block *) NULL, VAR_DOMAIN,
3593                                     &candidates);
3594           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3595                                     ada_decoded_op_name (op), NULL);
3596           if (i < 0)
3597             break;
3598
3599           replace_operator_with_call (expp, pc, nargs, 1,
3600                                       candidates[i].symbol,
3601                                       candidates[i].block);
3602           exp = *expp;
3603         }
3604       break;
3605
3606     case OP_TYPE:
3607     case OP_REGISTER:
3608       return NULL;
3609     }
3610
3611   *pos = pc;
3612   return evaluate_subexp_type (exp, pos);
3613 }
3614
3615 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3616    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3617    a non-pointer.  */
3618 /* The term "match" here is rather loose.  The match is heuristic and
3619    liberal.  */
3620
3621 static int
3622 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3623 {
3624   ftype = ada_check_typedef (ftype);
3625   atype = ada_check_typedef (atype);
3626
3627   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3628     ftype = TYPE_TARGET_TYPE (ftype);
3629   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3630     atype = TYPE_TARGET_TYPE (atype);
3631
3632   switch (TYPE_CODE (ftype))
3633     {
3634     default:
3635       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3636     case TYPE_CODE_PTR:
3637       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3638         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3639                                TYPE_TARGET_TYPE (atype), 0);
3640       else
3641         return (may_deref
3642                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3643     case TYPE_CODE_INT:
3644     case TYPE_CODE_ENUM:
3645     case TYPE_CODE_RANGE:
3646       switch (TYPE_CODE (atype))
3647         {
3648         case TYPE_CODE_INT:
3649         case TYPE_CODE_ENUM:
3650         case TYPE_CODE_RANGE:
3651           return 1;
3652         default:
3653           return 0;
3654         }
3655
3656     case TYPE_CODE_ARRAY:
3657       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3658               || ada_is_array_descriptor_type (atype));
3659
3660     case TYPE_CODE_STRUCT:
3661       if (ada_is_array_descriptor_type (ftype))
3662         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3663                 || ada_is_array_descriptor_type (atype));
3664       else
3665         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3666                 && !ada_is_array_descriptor_type (atype));
3667
3668     case TYPE_CODE_UNION:
3669     case TYPE_CODE_FLT:
3670       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3671     }
3672 }
3673
3674 /* Return non-zero if the formals of FUNC "sufficiently match" the
3675    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3676    may also be an enumeral, in which case it is treated as a 0-
3677    argument function.  */
3678
3679 static int
3680 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3681 {
3682   int i;
3683   struct type *func_type = SYMBOL_TYPE (func);
3684
3685   if (SYMBOL_CLASS (func) == LOC_CONST
3686       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3687     return (n_actuals == 0);
3688   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3689     return 0;
3690
3691   if (TYPE_NFIELDS (func_type) != n_actuals)
3692     return 0;
3693
3694   for (i = 0; i < n_actuals; i += 1)
3695     {
3696       if (actuals[i] == NULL)
3697         return 0;
3698       else
3699         {
3700           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3701                                                                    i));
3702           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3703
3704           if (!ada_type_match (ftype, atype, 1))
3705             return 0;
3706         }
3707     }
3708   return 1;
3709 }
3710
3711 /* False iff function type FUNC_TYPE definitely does not produce a value
3712    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3713    FUNC_TYPE is not a valid function type with a non-null return type
3714    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3715
3716 static int
3717 return_match (struct type *func_type, struct type *context_type)
3718 {
3719   struct type *return_type;
3720
3721   if (func_type == NULL)
3722     return 1;
3723
3724   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3725     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3726   else
3727     return_type = get_base_type (func_type);
3728   if (return_type == NULL)
3729     return 1;
3730
3731   context_type = get_base_type (context_type);
3732
3733   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3734     return context_type == NULL || return_type == context_type;
3735   else if (context_type == NULL)
3736     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3737   else
3738     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3739 }
3740
3741
3742 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3743    function (if any) that matches the types of the NARGS arguments in
3744    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3745    that returns that type, then eliminate matches that don't.  If
3746    CONTEXT_TYPE is void and there is at least one match that does not
3747    return void, eliminate all matches that do.
3748
3749    Asks the user if there is more than one match remaining.  Returns -1
3750    if there is no such symbol or none is selected.  NAME is used
3751    solely for messages.  May re-arrange and modify SYMS in
3752    the process; the index returned is for the modified vector.  */
3753
3754 static int
3755 ada_resolve_function (struct block_symbol syms[],
3756                       int nsyms, struct value **args, int nargs,
3757                       const char *name, struct type *context_type)
3758 {
3759   int fallback;
3760   int k;
3761   int m;                        /* Number of hits */
3762
3763   m = 0;
3764   /* In the first pass of the loop, we only accept functions matching
3765      context_type.  If none are found, we add a second pass of the loop
3766      where every function is accepted.  */
3767   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3768     {
3769       for (k = 0; k < nsyms; k += 1)
3770         {
3771           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3772
3773           if (ada_args_match (syms[k].symbol, args, nargs)
3774               && (fallback || return_match (type, context_type)))
3775             {
3776               syms[m] = syms[k];
3777               m += 1;
3778             }
3779         }
3780     }
3781
3782   /* If we got multiple matches, ask the user which one to use.  Don't do this
3783      interactive thing during completion, though, as the purpose of the
3784      completion is providing a list of all possible matches.  Prompting the
3785      user to filter it down would be completely unexpected in this case.  */
3786   if (m == 0)
3787     return -1;
3788   else if (m > 1 && !parse_completion)
3789     {
3790       printf_filtered (_("Multiple matches for %s\n"), name);
3791       user_select_syms (syms, m, 1);
3792       return 0;
3793     }
3794   return 0;
3795 }
3796
3797 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3798    in a listing of choices during disambiguation (see sort_choices, below).
3799    The idea is that overloadings of a subprogram name from the
3800    same package should sort in their source order.  We settle for ordering
3801    such symbols by their trailing number (__N  or $N).  */
3802
3803 static int
3804 encoded_ordered_before (const char *N0, const char *N1)
3805 {
3806   if (N1 == NULL)
3807     return 0;
3808   else if (N0 == NULL)
3809     return 1;
3810   else
3811     {
3812       int k0, k1;
3813
3814       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3815         ;
3816       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3817         ;
3818       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3819           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3820         {
3821           int n0, n1;
3822
3823           n0 = k0;
3824           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3825             n0 -= 1;
3826           n1 = k1;
3827           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3828             n1 -= 1;
3829           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3830             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3831         }
3832       return (strcmp (N0, N1) < 0);
3833     }
3834 }
3835
3836 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3837    encoded names.  */
3838
3839 static void
3840 sort_choices (struct block_symbol syms[], int nsyms)
3841 {
3842   int i;
3843
3844   for (i = 1; i < nsyms; i += 1)
3845     {
3846       struct block_symbol sym = syms[i];
3847       int j;
3848
3849       for (j = i - 1; j >= 0; j -= 1)
3850         {
3851           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3852                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3853             break;
3854           syms[j + 1] = syms[j];
3855         }
3856       syms[j + 1] = sym;
3857     }
3858 }
3859
3860 /* Whether GDB should display formals and return types for functions in the
3861    overloads selection menu.  */
3862 static int print_signatures = 1;
3863
3864 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3865    all but functions, the signature is just the name of the symbol.  For
3866    functions, this is the name of the function, the list of types for formals
3867    and the return type (if any).  */
3868
3869 static void
3870 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3871                             const struct type_print_options *flags)
3872 {
3873   struct type *type = SYMBOL_TYPE (sym);
3874
3875   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3876   if (!print_signatures
3877       || type == NULL
3878       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3879     return;
3880
3881   if (TYPE_NFIELDS (type) > 0)
3882     {
3883       int i;
3884
3885       fprintf_filtered (stream, " (");
3886       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3887         {
3888           if (i > 0)
3889             fprintf_filtered (stream, "; ");
3890           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3891                           flags);
3892         }
3893       fprintf_filtered (stream, ")");
3894     }
3895   if (TYPE_TARGET_TYPE (type) != NULL
3896       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3897     {
3898       fprintf_filtered (stream, " return ");
3899       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3900     }
3901 }
3902
3903 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3904    by asking the user (if necessary), returning the number selected, 
3905    and setting the first elements of SYMS items.  Error if no symbols
3906    selected.  */
3907
3908 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3909    to be re-integrated one of these days.  */
3910
3911 int
3912 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3913 {
3914   int i;
3915   int *chosen = XALLOCAVEC (int , nsyms);
3916   int n_chosen;
3917   int first_choice = (max_results == 1) ? 1 : 2;
3918   const char *select_mode = multiple_symbols_select_mode ();
3919
3920   if (max_results < 1)
3921     error (_("Request to select 0 symbols!"));
3922   if (nsyms <= 1)
3923     return nsyms;
3924
3925   if (select_mode == multiple_symbols_cancel)
3926     error (_("\
3927 canceled because the command is ambiguous\n\
3928 See set/show multiple-symbol."));
3929   
3930   /* If select_mode is "all", then return all possible symbols.
3931      Only do that if more than one symbol can be selected, of course.
3932      Otherwise, display the menu as usual.  */
3933   if (select_mode == multiple_symbols_all && max_results > 1)
3934     return nsyms;
3935
3936   printf_unfiltered (_("[0] cancel\n"));
3937   if (max_results > 1)
3938     printf_unfiltered (_("[1] all\n"));
3939
3940   sort_choices (syms, nsyms);
3941
3942   for (i = 0; i < nsyms; i += 1)
3943     {
3944       if (syms[i].symbol == NULL)
3945         continue;
3946
3947       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3948         {
3949           struct symtab_and_line sal =
3950             find_function_start_sal (syms[i].symbol, 1);
3951
3952           printf_unfiltered ("[%d] ", i + first_choice);
3953           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3954                                       &type_print_raw_options);
3955           if (sal.symtab == NULL)
3956             printf_unfiltered (_(" at <no source file available>:%d\n"),
3957                                sal.line);
3958           else
3959             printf_unfiltered (_(" at %s:%d\n"),
3960                                symtab_to_filename_for_display (sal.symtab),
3961                                sal.line);
3962           continue;
3963         }
3964       else
3965         {
3966           int is_enumeral =
3967             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3968              && SYMBOL_TYPE (syms[i].symbol) != NULL
3969              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3970           struct symtab *symtab = NULL;
3971
3972           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3973             symtab = symbol_symtab (syms[i].symbol);
3974
3975           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3976             {
3977               printf_unfiltered ("[%d] ", i + first_choice);
3978               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3979                                           &type_print_raw_options);
3980               printf_unfiltered (_(" at %s:%d\n"),
3981                                  symtab_to_filename_for_display (symtab),
3982                                  SYMBOL_LINE (syms[i].symbol));
3983             }
3984           else if (is_enumeral
3985                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3986             {
3987               printf_unfiltered (("[%d] "), i + first_choice);
3988               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3989                               gdb_stdout, -1, 0, &type_print_raw_options);
3990               printf_unfiltered (_("'(%s) (enumeral)\n"),
3991                                  SYMBOL_PRINT_NAME (syms[i].symbol));
3992             }
3993           else
3994             {
3995               printf_unfiltered ("[%d] ", i + first_choice);
3996               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3997                                           &type_print_raw_options);
3998
3999               if (symtab != NULL)
4000                 printf_unfiltered (is_enumeral
4001                                    ? _(" in %s (enumeral)\n")
4002                                    : _(" at %s:?\n"),
4003                                    symtab_to_filename_for_display (symtab));
4004               else
4005                 printf_unfiltered (is_enumeral
4006                                    ? _(" (enumeral)\n")
4007                                    : _(" at ?\n"));
4008             }
4009         }
4010     }
4011
4012   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4013                              "overload-choice");
4014
4015   for (i = 0; i < n_chosen; i += 1)
4016     syms[i] = syms[chosen[i]];
4017
4018   return n_chosen;
4019 }
4020
4021 /* Read and validate a set of numeric choices from the user in the
4022    range 0 .. N_CHOICES-1.  Place the results in increasing
4023    order in CHOICES[0 .. N-1], and return N.
4024
4025    The user types choices as a sequence of numbers on one line
4026    separated by blanks, encoding them as follows:
4027
4028      + A choice of 0 means to cancel the selection, throwing an error.
4029      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4030      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4031
4032    The user is not allowed to choose more than MAX_RESULTS values.
4033
4034    ANNOTATION_SUFFIX, if present, is used to annotate the input
4035    prompts (for use with the -f switch).  */
4036
4037 int
4038 get_selections (int *choices, int n_choices, int max_results,
4039                 int is_all_choice, char *annotation_suffix)
4040 {
4041   char *args;
4042   char *prompt;
4043   int n_chosen;
4044   int first_choice = is_all_choice ? 2 : 1;
4045
4046   prompt = getenv ("PS2");
4047   if (prompt == NULL)
4048     prompt = "> ";
4049
4050   args = command_line_input (prompt, 0, annotation_suffix);
4051
4052   if (args == NULL)
4053     error_no_arg (_("one or more choice numbers"));
4054
4055   n_chosen = 0;
4056
4057   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4058      order, as given in args.  Choices are validated.  */
4059   while (1)
4060     {
4061       char *args2;
4062       int choice, j;
4063
4064       args = skip_spaces (args);
4065       if (*args == '\0' && n_chosen == 0)
4066         error_no_arg (_("one or more choice numbers"));
4067       else if (*args == '\0')
4068         break;
4069
4070       choice = strtol (args, &args2, 10);
4071       if (args == args2 || choice < 0
4072           || choice > n_choices + first_choice - 1)
4073         error (_("Argument must be choice number"));
4074       args = args2;
4075
4076       if (choice == 0)
4077         error (_("cancelled"));
4078
4079       if (choice < first_choice)
4080         {
4081           n_chosen = n_choices;
4082           for (j = 0; j < n_choices; j += 1)
4083             choices[j] = j;
4084           break;
4085         }
4086       choice -= first_choice;
4087
4088       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4089         {
4090         }
4091
4092       if (j < 0 || choice != choices[j])
4093         {
4094           int k;
4095
4096           for (k = n_chosen - 1; k > j; k -= 1)
4097             choices[k + 1] = choices[k];
4098           choices[j + 1] = choice;
4099           n_chosen += 1;
4100         }
4101     }
4102
4103   if (n_chosen > max_results)
4104     error (_("Select no more than %d of the above"), max_results);
4105
4106   return n_chosen;
4107 }
4108
4109 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4110    on the function identified by SYM and BLOCK, and taking NARGS
4111    arguments.  Update *EXPP as needed to hold more space.  */
4112
4113 static void
4114 replace_operator_with_call (struct expression **expp, int pc, int nargs,
4115                             int oplen, struct symbol *sym,
4116                             const struct block *block)
4117 {
4118   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4119      symbol, -oplen for operator being replaced).  */
4120   struct expression *newexp = (struct expression *)
4121     xzalloc (sizeof (struct expression)
4122              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4123   struct expression *exp = *expp;
4124
4125   newexp->nelts = exp->nelts + 7 - oplen;
4126   newexp->language_defn = exp->language_defn;
4127   newexp->gdbarch = exp->gdbarch;
4128   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4129   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4130           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4131
4132   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4133   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4134
4135   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4136   newexp->elts[pc + 4].block = block;
4137   newexp->elts[pc + 5].symbol = sym;
4138
4139   *expp = newexp;
4140   xfree (exp);
4141 }
4142
4143 /* Type-class predicates */
4144
4145 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4146    or FLOAT).  */
4147
4148 static int
4149 numeric_type_p (struct type *type)
4150 {
4151   if (type == NULL)
4152     return 0;
4153   else
4154     {
4155       switch (TYPE_CODE (type))
4156         {
4157         case TYPE_CODE_INT:
4158         case TYPE_CODE_FLT:
4159           return 1;
4160         case TYPE_CODE_RANGE:
4161           return (type == TYPE_TARGET_TYPE (type)
4162                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4163         default:
4164           return 0;
4165         }
4166     }
4167 }
4168
4169 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4170
4171 static int
4172 integer_type_p (struct type *type)
4173 {
4174   if (type == NULL)
4175     return 0;
4176   else
4177     {
4178       switch (TYPE_CODE (type))
4179         {
4180         case TYPE_CODE_INT:
4181           return 1;
4182         case TYPE_CODE_RANGE:
4183           return (type == TYPE_TARGET_TYPE (type)
4184                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4185         default:
4186           return 0;
4187         }
4188     }
4189 }
4190
4191 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4192
4193 static int
4194 scalar_type_p (struct type *type)
4195 {
4196   if (type == NULL)
4197     return 0;
4198   else
4199     {
4200       switch (TYPE_CODE (type))
4201         {
4202         case TYPE_CODE_INT:
4203         case TYPE_CODE_RANGE:
4204         case TYPE_CODE_ENUM:
4205         case TYPE_CODE_FLT:
4206           return 1;
4207         default:
4208           return 0;
4209         }
4210     }
4211 }
4212
4213 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4214
4215 static int
4216 discrete_type_p (struct type *type)
4217 {
4218   if (type == NULL)
4219     return 0;
4220   else
4221     {
4222       switch (TYPE_CODE (type))
4223         {
4224         case TYPE_CODE_INT:
4225         case TYPE_CODE_RANGE:
4226         case TYPE_CODE_ENUM:
4227         case TYPE_CODE_BOOL:
4228           return 1;
4229         default:
4230           return 0;
4231         }
4232     }
4233 }
4234
4235 /* Returns non-zero if OP with operands in the vector ARGS could be
4236    a user-defined function.  Errs on the side of pre-defined operators
4237    (i.e., result 0).  */
4238
4239 static int
4240 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4241 {
4242   struct type *type0 =
4243     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4244   struct type *type1 =
4245     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4246
4247   if (type0 == NULL)
4248     return 0;
4249
4250   switch (op)
4251     {
4252     default:
4253       return 0;
4254
4255     case BINOP_ADD:
4256     case BINOP_SUB:
4257     case BINOP_MUL:
4258     case BINOP_DIV:
4259       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4260
4261     case BINOP_REM:
4262     case BINOP_MOD:
4263     case BINOP_BITWISE_AND:
4264     case BINOP_BITWISE_IOR:
4265     case BINOP_BITWISE_XOR:
4266       return (!(integer_type_p (type0) && integer_type_p (type1)));
4267
4268     case BINOP_EQUAL:
4269     case BINOP_NOTEQUAL:
4270     case BINOP_LESS:
4271     case BINOP_GTR:
4272     case BINOP_LEQ:
4273     case BINOP_GEQ:
4274       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4275
4276     case BINOP_CONCAT:
4277       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4278
4279     case BINOP_EXP:
4280       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4281
4282     case UNOP_NEG:
4283     case UNOP_PLUS:
4284     case UNOP_LOGICAL_NOT:
4285     case UNOP_ABS:
4286       return (!numeric_type_p (type0));
4287
4288     }
4289 }
4290 \f
4291                                 /* Renaming */
4292
4293 /* NOTES: 
4294
4295    1. In the following, we assume that a renaming type's name may
4296       have an ___XD suffix.  It would be nice if this went away at some
4297       point.
4298    2. We handle both the (old) purely type-based representation of 
4299       renamings and the (new) variable-based encoding.  At some point,
4300       it is devoutly to be hoped that the former goes away 
4301       (FIXME: hilfinger-2007-07-09).
4302    3. Subprogram renamings are not implemented, although the XRS
4303       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4304
4305 /* If SYM encodes a renaming, 
4306
4307        <renaming> renames <renamed entity>,
4308
4309    sets *LEN to the length of the renamed entity's name,
4310    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4311    the string describing the subcomponent selected from the renamed
4312    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4313    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4314    are undefined).  Otherwise, returns a value indicating the category
4315    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4316    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4317    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4318    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4319    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4320    may be NULL, in which case they are not assigned.
4321
4322    [Currently, however, GCC does not generate subprogram renamings.]  */
4323
4324 enum ada_renaming_category
4325 ada_parse_renaming (struct symbol *sym,
4326                     const char **renamed_entity, int *len, 
4327                     const char **renaming_expr)
4328 {
4329   enum ada_renaming_category kind;
4330   const char *info;
4331   const char *suffix;
4332
4333   if (sym == NULL)
4334     return ADA_NOT_RENAMING;
4335   switch (SYMBOL_CLASS (sym)) 
4336     {
4337     default:
4338       return ADA_NOT_RENAMING;
4339     case LOC_TYPEDEF:
4340       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4341                                        renamed_entity, len, renaming_expr);
4342     case LOC_LOCAL:
4343     case LOC_STATIC:
4344     case LOC_COMPUTED:
4345     case LOC_OPTIMIZED_OUT:
4346       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4347       if (info == NULL)
4348         return ADA_NOT_RENAMING;
4349       switch (info[5])
4350         {
4351         case '_':
4352           kind = ADA_OBJECT_RENAMING;
4353           info += 6;
4354           break;
4355         case 'E':
4356           kind = ADA_EXCEPTION_RENAMING;
4357           info += 7;
4358           break;
4359         case 'P':
4360           kind = ADA_PACKAGE_RENAMING;
4361           info += 7;
4362           break;
4363         case 'S':
4364           kind = ADA_SUBPROGRAM_RENAMING;
4365           info += 7;
4366           break;
4367         default:
4368           return ADA_NOT_RENAMING;
4369         }
4370     }
4371
4372   if (renamed_entity != NULL)
4373     *renamed_entity = info;
4374   suffix = strstr (info, "___XE");
4375   if (suffix == NULL || suffix == info)
4376     return ADA_NOT_RENAMING;
4377   if (len != NULL)
4378     *len = strlen (info) - strlen (suffix);
4379   suffix += 5;
4380   if (renaming_expr != NULL)
4381     *renaming_expr = suffix;
4382   return kind;
4383 }
4384
4385 /* Assuming TYPE encodes a renaming according to the old encoding in
4386    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4387    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4388    ADA_NOT_RENAMING otherwise.  */
4389 static enum ada_renaming_category
4390 parse_old_style_renaming (struct type *type,
4391                           const char **renamed_entity, int *len, 
4392                           const char **renaming_expr)
4393 {
4394   enum ada_renaming_category kind;
4395   const char *name;
4396   const char *info;
4397   const char *suffix;
4398
4399   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4400       || TYPE_NFIELDS (type) != 1)
4401     return ADA_NOT_RENAMING;
4402
4403   name = type_name_no_tag (type);
4404   if (name == NULL)
4405     return ADA_NOT_RENAMING;
4406   
4407   name = strstr (name, "___XR");
4408   if (name == NULL)
4409     return ADA_NOT_RENAMING;
4410   switch (name[5])
4411     {
4412     case '\0':
4413     case '_':
4414       kind = ADA_OBJECT_RENAMING;
4415       break;
4416     case 'E':
4417       kind = ADA_EXCEPTION_RENAMING;
4418       break;
4419     case 'P':
4420       kind = ADA_PACKAGE_RENAMING;
4421       break;
4422     case 'S':
4423       kind = ADA_SUBPROGRAM_RENAMING;
4424       break;
4425     default:
4426       return ADA_NOT_RENAMING;
4427     }
4428
4429   info = TYPE_FIELD_NAME (type, 0);
4430   if (info == NULL)
4431     return ADA_NOT_RENAMING;
4432   if (renamed_entity != NULL)
4433     *renamed_entity = info;
4434   suffix = strstr (info, "___XE");
4435   if (renaming_expr != NULL)
4436     *renaming_expr = suffix + 5;
4437   if (suffix == NULL || suffix == info)
4438     return ADA_NOT_RENAMING;
4439   if (len != NULL)
4440     *len = suffix - info;
4441   return kind;
4442 }
4443
4444 /* Compute the value of the given RENAMING_SYM, which is expected to
4445    be a symbol encoding a renaming expression.  BLOCK is the block
4446    used to evaluate the renaming.  */
4447
4448 static struct value *
4449 ada_read_renaming_var_value (struct symbol *renaming_sym,
4450                              const struct block *block)
4451 {
4452   const char *sym_name;
4453
4454   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4455   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4456   return evaluate_expression (expr.get ());
4457 }
4458 \f
4459
4460                                 /* Evaluation: Function Calls */
4461
4462 /* Return an lvalue containing the value VAL.  This is the identity on
4463    lvalues, and otherwise has the side-effect of allocating memory
4464    in the inferior where a copy of the value contents is copied.  */
4465
4466 static struct value *
4467 ensure_lval (struct value *val)
4468 {
4469   if (VALUE_LVAL (val) == not_lval
4470       || VALUE_LVAL (val) == lval_internalvar)
4471     {
4472       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4473       const CORE_ADDR addr =
4474         value_as_long (value_allocate_space_in_inferior (len));
4475
4476       VALUE_LVAL (val) = lval_memory;
4477       set_value_address (val, addr);
4478       write_memory (addr, value_contents (val), len);
4479     }
4480
4481   return val;
4482 }
4483
4484 /* Return the value ACTUAL, converted to be an appropriate value for a
4485    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4486    allocating any necessary descriptors (fat pointers), or copies of
4487    values not residing in memory, updating it as needed.  */
4488
4489 struct value *
4490 ada_convert_actual (struct value *actual, struct type *formal_type0)
4491 {
4492   struct type *actual_type = ada_check_typedef (value_type (actual));
4493   struct type *formal_type = ada_check_typedef (formal_type0);
4494   struct type *formal_target =
4495     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4496     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4497   struct type *actual_target =
4498     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4499     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4500
4501   if (ada_is_array_descriptor_type (formal_target)
4502       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4503     return make_array_descriptor (formal_type, actual);
4504   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4505            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4506     {
4507       struct value *result;
4508
4509       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4510           && ada_is_array_descriptor_type (actual_target))
4511         result = desc_data (actual);
4512       else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR)
4513         {
4514           if (VALUE_LVAL (actual) != lval_memory)
4515             {
4516               struct value *val;
4517
4518               actual_type = ada_check_typedef (value_type (actual));
4519               val = allocate_value (actual_type);
4520               memcpy ((char *) value_contents_raw (val),
4521                       (char *) value_contents (actual),
4522                       TYPE_LENGTH (actual_type));
4523               actual = ensure_lval (val);
4524             }
4525           result = value_addr (actual);
4526         }
4527       else
4528         return actual;
4529       return value_cast_pointers (formal_type, result, 0);
4530     }
4531   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4532     return ada_value_ind (actual);
4533   else if (ada_is_aligner_type (formal_type))
4534     {
4535       /* We need to turn this parameter into an aligner type
4536          as well.  */
4537       struct value *aligner = allocate_value (formal_type);
4538       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4539
4540       value_assign_to_component (aligner, component, actual);
4541       return aligner;
4542     }
4543
4544   return actual;
4545 }
4546
4547 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4548    type TYPE.  This is usually an inefficient no-op except on some targets
4549    (such as AVR) where the representation of a pointer and an address
4550    differs.  */
4551
4552 static CORE_ADDR
4553 value_pointer (struct value *value, struct type *type)
4554 {
4555   struct gdbarch *gdbarch = get_type_arch (type);
4556   unsigned len = TYPE_LENGTH (type);
4557   gdb_byte *buf = (gdb_byte *) alloca (len);
4558   CORE_ADDR addr;
4559
4560   addr = value_address (value);
4561   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4562   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4563   return addr;
4564 }
4565
4566
4567 /* Push a descriptor of type TYPE for array value ARR on the stack at
4568    *SP, updating *SP to reflect the new descriptor.  Return either
4569    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4570    to-descriptor type rather than a descriptor type), a struct value *
4571    representing a pointer to this descriptor.  */
4572
4573 static struct value *
4574 make_array_descriptor (struct type *type, struct value *arr)
4575 {
4576   struct type *bounds_type = desc_bounds_type (type);
4577   struct type *desc_type = desc_base_type (type);
4578   struct value *descriptor = allocate_value (desc_type);
4579   struct value *bounds = allocate_value (bounds_type);
4580   int i;
4581
4582   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4583        i > 0; i -= 1)
4584     {
4585       modify_field (value_type (bounds), value_contents_writeable (bounds),
4586                     ada_array_bound (arr, i, 0),
4587                     desc_bound_bitpos (bounds_type, i, 0),
4588                     desc_bound_bitsize (bounds_type, i, 0));
4589       modify_field (value_type (bounds), value_contents_writeable (bounds),
4590                     ada_array_bound (arr, i, 1),
4591                     desc_bound_bitpos (bounds_type, i, 1),
4592                     desc_bound_bitsize (bounds_type, i, 1));
4593     }
4594
4595   bounds = ensure_lval (bounds);
4596
4597   modify_field (value_type (descriptor),
4598                 value_contents_writeable (descriptor),
4599                 value_pointer (ensure_lval (arr),
4600                                TYPE_FIELD_TYPE (desc_type, 0)),
4601                 fat_pntr_data_bitpos (desc_type),
4602                 fat_pntr_data_bitsize (desc_type));
4603
4604   modify_field (value_type (descriptor),
4605                 value_contents_writeable (descriptor),
4606                 value_pointer (bounds,
4607                                TYPE_FIELD_TYPE (desc_type, 1)),
4608                 fat_pntr_bounds_bitpos (desc_type),
4609                 fat_pntr_bounds_bitsize (desc_type));
4610
4611   descriptor = ensure_lval (descriptor);
4612
4613   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4614     return value_addr (descriptor);
4615   else
4616     return descriptor;
4617 }
4618 \f
4619                                 /* Symbol Cache Module */
4620
4621 /* Performance measurements made as of 2010-01-15 indicate that
4622    this cache does bring some noticeable improvements.  Depending
4623    on the type of entity being printed, the cache can make it as much
4624    as an order of magnitude faster than without it.
4625
4626    The descriptive type DWARF extension has significantly reduced
4627    the need for this cache, at least when DWARF is being used.  However,
4628    even in this case, some expensive name-based symbol searches are still
4629    sometimes necessary - to find an XVZ variable, mostly.  */
4630
4631 /* Initialize the contents of SYM_CACHE.  */
4632
4633 static void
4634 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4635 {
4636   obstack_init (&sym_cache->cache_space);
4637   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4638 }
4639
4640 /* Free the memory used by SYM_CACHE.  */
4641
4642 static void
4643 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4644 {
4645   obstack_free (&sym_cache->cache_space, NULL);
4646   xfree (sym_cache);
4647 }
4648
4649 /* Return the symbol cache associated to the given program space PSPACE.
4650    If not allocated for this PSPACE yet, allocate and initialize one.  */
4651
4652 static struct ada_symbol_cache *
4653 ada_get_symbol_cache (struct program_space *pspace)
4654 {
4655   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4656
4657   if (pspace_data->sym_cache == NULL)
4658     {
4659       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4660       ada_init_symbol_cache (pspace_data->sym_cache);
4661     }
4662
4663   return pspace_data->sym_cache;
4664 }
4665
4666 /* Clear all entries from the symbol cache.  */
4667
4668 static void
4669 ada_clear_symbol_cache (void)
4670 {
4671   struct ada_symbol_cache *sym_cache
4672     = ada_get_symbol_cache (current_program_space);
4673
4674   obstack_free (&sym_cache->cache_space, NULL);
4675   ada_init_symbol_cache (sym_cache);
4676 }
4677
4678 /* Search our cache for an entry matching NAME and DOMAIN.
4679    Return it if found, or NULL otherwise.  */
4680
4681 static struct cache_entry **
4682 find_entry (const char *name, domain_enum domain)
4683 {
4684   struct ada_symbol_cache *sym_cache
4685     = ada_get_symbol_cache (current_program_space);
4686   int h = msymbol_hash (name) % HASH_SIZE;
4687   struct cache_entry **e;
4688
4689   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4690     {
4691       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4692         return e;
4693     }
4694   return NULL;
4695 }
4696
4697 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4698    Return 1 if found, 0 otherwise.
4699
4700    If an entry was found and SYM is not NULL, set *SYM to the entry's
4701    SYM.  Same principle for BLOCK if not NULL.  */
4702
4703 static int
4704 lookup_cached_symbol (const char *name, domain_enum domain,
4705                       struct symbol **sym, const struct block **block)
4706 {
4707   struct cache_entry **e = find_entry (name, domain);
4708
4709   if (e == NULL)
4710     return 0;
4711   if (sym != NULL)
4712     *sym = (*e)->sym;
4713   if (block != NULL)
4714     *block = (*e)->block;
4715   return 1;
4716 }
4717
4718 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4719    in domain DOMAIN, save this result in our symbol cache.  */
4720
4721 static void
4722 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4723               const struct block *block)
4724 {
4725   struct ada_symbol_cache *sym_cache
4726     = ada_get_symbol_cache (current_program_space);
4727   int h;
4728   char *copy;
4729   struct cache_entry *e;
4730
4731   /* Symbols for builtin types don't have a block.
4732      For now don't cache such symbols.  */
4733   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4734     return;
4735
4736   /* If the symbol is a local symbol, then do not cache it, as a search
4737      for that symbol depends on the context.  To determine whether
4738      the symbol is local or not, we check the block where we found it
4739      against the global and static blocks of its associated symtab.  */
4740   if (sym
4741       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4742                             GLOBAL_BLOCK) != block
4743       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4744                             STATIC_BLOCK) != block)
4745     return;
4746
4747   h = msymbol_hash (name) % HASH_SIZE;
4748   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4749                                             sizeof (*e));
4750   e->next = sym_cache->root[h];
4751   sym_cache->root[h] = e;
4752   e->name = copy
4753     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4754   strcpy (copy, name);
4755   e->sym = sym;
4756   e->domain = domain;
4757   e->block = block;
4758 }
4759 \f
4760                                 /* Symbol Lookup */
4761
4762 /* Return nonzero if wild matching should be used when searching for
4763    all symbols matching LOOKUP_NAME.
4764
4765    LOOKUP_NAME is expected to be a symbol name after transformation
4766    for Ada lookups (see ada_name_for_lookup).  */
4767
4768 static int
4769 should_use_wild_match (const char *lookup_name)
4770 {
4771   return (strstr (lookup_name, "__") == NULL);
4772 }
4773
4774 /* Return the result of a standard (literal, C-like) lookup of NAME in
4775    given DOMAIN, visible from lexical block BLOCK.  */
4776
4777 static struct symbol *
4778 standard_lookup (const char *name, const struct block *block,
4779                  domain_enum domain)
4780 {
4781   /* Initialize it just to avoid a GCC false warning.  */
4782   struct block_symbol sym = {NULL, NULL};
4783
4784   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4785     return sym.symbol;
4786   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4787   cache_symbol (name, domain, sym.symbol, sym.block);
4788   return sym.symbol;
4789 }
4790
4791
4792 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4793    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4794    since they contend in overloading in the same way.  */
4795 static int
4796 is_nonfunction (struct block_symbol syms[], int n)
4797 {
4798   int i;
4799
4800   for (i = 0; i < n; i += 1)
4801     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4802         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4803             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4804       return 1;
4805
4806   return 0;
4807 }
4808
4809 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4810    struct types.  Otherwise, they may not.  */
4811
4812 static int
4813 equiv_types (struct type *type0, struct type *type1)
4814 {
4815   if (type0 == type1)
4816     return 1;
4817   if (type0 == NULL || type1 == NULL
4818       || TYPE_CODE (type0) != TYPE_CODE (type1))
4819     return 0;
4820   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4821        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4822       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4823       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4824     return 1;
4825
4826   return 0;
4827 }
4828
4829 /* True iff SYM0 represents the same entity as SYM1, or one that is
4830    no more defined than that of SYM1.  */
4831
4832 static int
4833 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4834 {
4835   if (sym0 == sym1)
4836     return 1;
4837   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4838       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4839     return 0;
4840
4841   switch (SYMBOL_CLASS (sym0))
4842     {
4843     case LOC_UNDEF:
4844       return 1;
4845     case LOC_TYPEDEF:
4846       {
4847         struct type *type0 = SYMBOL_TYPE (sym0);
4848         struct type *type1 = SYMBOL_TYPE (sym1);
4849         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4850         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4851         int len0 = strlen (name0);
4852
4853         return
4854           TYPE_CODE (type0) == TYPE_CODE (type1)
4855           && (equiv_types (type0, type1)
4856               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4857                   && startswith (name1 + len0, "___XV")));
4858       }
4859     case LOC_CONST:
4860       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4861         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4862     default:
4863       return 0;
4864     }
4865 }
4866
4867 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4868    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4869
4870 static void
4871 add_defn_to_vec (struct obstack *obstackp,
4872                  struct symbol *sym,
4873                  const struct block *block)
4874 {
4875   int i;
4876   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4877
4878   /* Do not try to complete stub types, as the debugger is probably
4879      already scanning all symbols matching a certain name at the
4880      time when this function is called.  Trying to replace the stub
4881      type by its associated full type will cause us to restart a scan
4882      which may lead to an infinite recursion.  Instead, the client
4883      collecting the matching symbols will end up collecting several
4884      matches, with at least one of them complete.  It can then filter
4885      out the stub ones if needed.  */
4886
4887   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4888     {
4889       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4890         return;
4891       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4892         {
4893           prevDefns[i].symbol = sym;
4894           prevDefns[i].block = block;
4895           return;
4896         }
4897     }
4898
4899   {
4900     struct block_symbol info;
4901
4902     info.symbol = sym;
4903     info.block = block;
4904     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4905   }
4906 }
4907
4908 /* Number of block_symbol structures currently collected in current vector in
4909    OBSTACKP.  */
4910
4911 static int
4912 num_defns_collected (struct obstack *obstackp)
4913 {
4914   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4915 }
4916
4917 /* Vector of block_symbol structures currently collected in current vector in
4918    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4919
4920 static struct block_symbol *
4921 defns_collected (struct obstack *obstackp, int finish)
4922 {
4923   if (finish)
4924     return (struct block_symbol *) obstack_finish (obstackp);
4925   else
4926     return (struct block_symbol *) obstack_base (obstackp);
4927 }
4928
4929 /* Return a bound minimal symbol matching NAME according to Ada
4930    decoding rules.  Returns an invalid symbol if there is no such
4931    minimal symbol.  Names prefixed with "standard__" are handled
4932    specially: "standard__" is first stripped off, and only static and
4933    global symbols are searched.  */
4934
4935 struct bound_minimal_symbol
4936 ada_lookup_simple_minsym (const char *name)
4937 {
4938   struct bound_minimal_symbol result;
4939   struct objfile *objfile;
4940   struct minimal_symbol *msymbol;
4941   const int wild_match_p = should_use_wild_match (name);
4942
4943   memset (&result, 0, sizeof (result));
4944
4945   /* Special case: If the user specifies a symbol name inside package
4946      Standard, do a non-wild matching of the symbol name without
4947      the "standard__" prefix.  This was primarily introduced in order
4948      to allow the user to specifically access the standard exceptions
4949      using, for instance, Standard.Constraint_Error when Constraint_Error
4950      is ambiguous (due to the user defining its own Constraint_Error
4951      entity inside its program).  */
4952   if (startswith (name, "standard__"))
4953     name += sizeof ("standard__") - 1;
4954
4955   ALL_MSYMBOLS (objfile, msymbol)
4956   {
4957     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), name, wild_match_p)
4958         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4959       {
4960         result.minsym = msymbol;
4961         result.objfile = objfile;
4962         break;
4963       }
4964   }
4965
4966   return result;
4967 }
4968
4969 /* For all subprograms that statically enclose the subprogram of the
4970    selected frame, add symbols matching identifier NAME in DOMAIN
4971    and their blocks to the list of data in OBSTACKP, as for
4972    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4973    with a wildcard prefix.  */
4974
4975 static void
4976 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4977                                   const char *name, domain_enum domain,
4978                                   int wild_match_p)
4979 {
4980 }
4981
4982 /* True if TYPE is definitely an artificial type supplied to a symbol
4983    for which no debugging information was given in the symbol file.  */
4984
4985 static int
4986 is_nondebugging_type (struct type *type)
4987 {
4988   const char *name = ada_type_name (type);
4989
4990   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4991 }
4992
4993 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4994    that are deemed "identical" for practical purposes.
4995
4996    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4997    types and that their number of enumerals is identical (in other
4998    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4999
5000 static int
5001 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5002 {
5003   int i;
5004
5005   /* The heuristic we use here is fairly conservative.  We consider
5006      that 2 enumerate types are identical if they have the same
5007      number of enumerals and that all enumerals have the same
5008      underlying value and name.  */
5009
5010   /* All enums in the type should have an identical underlying value.  */
5011   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5012     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5013       return 0;
5014
5015   /* All enumerals should also have the same name (modulo any numerical
5016      suffix).  */
5017   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5018     {
5019       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5020       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5021       int len_1 = strlen (name_1);
5022       int len_2 = strlen (name_2);
5023
5024       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5025       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5026       if (len_1 != len_2
5027           || strncmp (TYPE_FIELD_NAME (type1, i),
5028                       TYPE_FIELD_NAME (type2, i),
5029                       len_1) != 0)
5030         return 0;
5031     }
5032
5033   return 1;
5034 }
5035
5036 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5037    that are deemed "identical" for practical purposes.  Sometimes,
5038    enumerals are not strictly identical, but their types are so similar
5039    that they can be considered identical.
5040
5041    For instance, consider the following code:
5042
5043       type Color is (Black, Red, Green, Blue, White);
5044       type RGB_Color is new Color range Red .. Blue;
5045
5046    Type RGB_Color is a subrange of an implicit type which is a copy
5047    of type Color. If we call that implicit type RGB_ColorB ("B" is
5048    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5049    As a result, when an expression references any of the enumeral
5050    by name (Eg. "print green"), the expression is technically
5051    ambiguous and the user should be asked to disambiguate. But
5052    doing so would only hinder the user, since it wouldn't matter
5053    what choice he makes, the outcome would always be the same.
5054    So, for practical purposes, we consider them as the same.  */
5055
5056 static int
5057 symbols_are_identical_enums (struct block_symbol *syms, int nsyms)
5058 {
5059   int i;
5060
5061   /* Before performing a thorough comparison check of each type,
5062      we perform a series of inexpensive checks.  We expect that these
5063      checks will quickly fail in the vast majority of cases, and thus
5064      help prevent the unnecessary use of a more expensive comparison.
5065      Said comparison also expects us to make some of these checks
5066      (see ada_identical_enum_types_p).  */
5067
5068   /* Quick check: All symbols should have an enum type.  */
5069   for (i = 0; i < nsyms; i++)
5070     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5071       return 0;
5072
5073   /* Quick check: They should all have the same value.  */
5074   for (i = 1; i < nsyms; i++)
5075     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5076       return 0;
5077
5078   /* Quick check: They should all have the same number of enumerals.  */
5079   for (i = 1; i < nsyms; i++)
5080     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5081         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5082       return 0;
5083
5084   /* All the sanity checks passed, so we might have a set of
5085      identical enumeration types.  Perform a more complete
5086      comparison of the type of each symbol.  */
5087   for (i = 1; i < nsyms; i++)
5088     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5089                                      SYMBOL_TYPE (syms[0].symbol)))
5090       return 0;
5091
5092   return 1;
5093 }
5094
5095 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
5096    duplicate other symbols in the list (The only case I know of where
5097    this happens is when object files containing stabs-in-ecoff are
5098    linked with files containing ordinary ecoff debugging symbols (or no
5099    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5100    Returns the number of items in the modified list.  */
5101
5102 static int
5103 remove_extra_symbols (struct block_symbol *syms, int nsyms)
5104 {
5105   int i, j;
5106
5107   /* We should never be called with less than 2 symbols, as there
5108      cannot be any extra symbol in that case.  But it's easy to
5109      handle, since we have nothing to do in that case.  */
5110   if (nsyms < 2)
5111     return nsyms;
5112
5113   i = 0;
5114   while (i < nsyms)
5115     {
5116       int remove_p = 0;
5117
5118       /* If two symbols have the same name and one of them is a stub type,
5119          the get rid of the stub.  */
5120
5121       if (TYPE_STUB (SYMBOL_TYPE (syms[i].symbol))
5122           && SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL)
5123         {
5124           for (j = 0; j < nsyms; j++)
5125             {
5126               if (j != i
5127                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].symbol))
5128                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5129                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5130                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0)
5131                 remove_p = 1;
5132             }
5133         }
5134
5135       /* Two symbols with the same name, same class and same address
5136          should be identical.  */
5137
5138       else if (SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL
5139           && SYMBOL_CLASS (syms[i].symbol) == LOC_STATIC
5140           && is_nondebugging_type (SYMBOL_TYPE (syms[i].symbol)))
5141         {
5142           for (j = 0; j < nsyms; j += 1)
5143             {
5144               if (i != j
5145                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5146                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5147                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0
5148                   && SYMBOL_CLASS (syms[i].symbol)
5149                        == SYMBOL_CLASS (syms[j].symbol)
5150                   && SYMBOL_VALUE_ADDRESS (syms[i].symbol)
5151                   == SYMBOL_VALUE_ADDRESS (syms[j].symbol))
5152                 remove_p = 1;
5153             }
5154         }
5155       
5156       if (remove_p)
5157         {
5158           for (j = i + 1; j < nsyms; j += 1)
5159             syms[j - 1] = syms[j];
5160           nsyms -= 1;
5161         }
5162
5163       i += 1;
5164     }
5165
5166   /* If all the remaining symbols are identical enumerals, then
5167      just keep the first one and discard the rest.
5168
5169      Unlike what we did previously, we do not discard any entry
5170      unless they are ALL identical.  This is because the symbol
5171      comparison is not a strict comparison, but rather a practical
5172      comparison.  If all symbols are considered identical, then
5173      we can just go ahead and use the first one and discard the rest.
5174      But if we cannot reduce the list to a single element, we have
5175      to ask the user to disambiguate anyways.  And if we have to
5176      present a multiple-choice menu, it's less confusing if the list
5177      isn't missing some choices that were identical and yet distinct.  */
5178   if (symbols_are_identical_enums (syms, nsyms))
5179     nsyms = 1;
5180
5181   return nsyms;
5182 }
5183
5184 /* Given a type that corresponds to a renaming entity, use the type name
5185    to extract the scope (package name or function name, fully qualified,
5186    and following the GNAT encoding convention) where this renaming has been
5187    defined.  The string returned needs to be deallocated after use.  */
5188
5189 static char *
5190 xget_renaming_scope (struct type *renaming_type)
5191 {
5192   /* The renaming types adhere to the following convention:
5193      <scope>__<rename>___<XR extension>.
5194      So, to extract the scope, we search for the "___XR" extension,
5195      and then backtrack until we find the first "__".  */
5196
5197   const char *name = type_name_no_tag (renaming_type);
5198   const char *suffix = strstr (name, "___XR");
5199   const char *last;
5200   int scope_len;
5201   char *scope;
5202
5203   /* Now, backtrack a bit until we find the first "__".  Start looking
5204      at suffix - 3, as the <rename> part is at least one character long.  */
5205
5206   for (last = suffix - 3; last > name; last--)
5207     if (last[0] == '_' && last[1] == '_')
5208       break;
5209
5210   /* Make a copy of scope and return it.  */
5211
5212   scope_len = last - name;
5213   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
5214
5215   strncpy (scope, name, scope_len);
5216   scope[scope_len] = '\0';
5217
5218   return scope;
5219 }
5220
5221 /* Return nonzero if NAME corresponds to a package name.  */
5222
5223 static int
5224 is_package_name (const char *name)
5225 {
5226   /* Here, We take advantage of the fact that no symbols are generated
5227      for packages, while symbols are generated for each function.
5228      So the condition for NAME represent a package becomes equivalent
5229      to NAME not existing in our list of symbols.  There is only one
5230      small complication with library-level functions (see below).  */
5231
5232   char *fun_name;
5233
5234   /* If it is a function that has not been defined at library level,
5235      then we should be able to look it up in the symbols.  */
5236   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5237     return 0;
5238
5239   /* Library-level function names start with "_ada_".  See if function
5240      "_ada_" followed by NAME can be found.  */
5241
5242   /* Do a quick check that NAME does not contain "__", since library-level
5243      functions names cannot contain "__" in them.  */
5244   if (strstr (name, "__") != NULL)
5245     return 0;
5246
5247   fun_name = xstrprintf ("_ada_%s", name);
5248
5249   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
5250 }
5251
5252 /* Return nonzero if SYM corresponds to a renaming entity that is
5253    not visible from FUNCTION_NAME.  */
5254
5255 static int
5256 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5257 {
5258   char *scope;
5259   struct cleanup *old_chain;
5260
5261   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5262     return 0;
5263
5264   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5265   old_chain = make_cleanup (xfree, scope);
5266
5267   /* If the rename has been defined in a package, then it is visible.  */
5268   if (is_package_name (scope))
5269     {
5270       do_cleanups (old_chain);
5271       return 0;
5272     }
5273
5274   /* Check that the rename is in the current function scope by checking
5275      that its name starts with SCOPE.  */
5276
5277   /* If the function name starts with "_ada_", it means that it is
5278      a library-level function.  Strip this prefix before doing the
5279      comparison, as the encoding for the renaming does not contain
5280      this prefix.  */
5281   if (startswith (function_name, "_ada_"))
5282     function_name += 5;
5283
5284   {
5285     int is_invisible = !startswith (function_name, scope);
5286
5287     do_cleanups (old_chain);
5288     return is_invisible;
5289   }
5290 }
5291
5292 /* Remove entries from SYMS that corresponds to a renaming entity that
5293    is not visible from the function associated with CURRENT_BLOCK or
5294    that is superfluous due to the presence of more specific renaming
5295    information.  Places surviving symbols in the initial entries of
5296    SYMS and returns the number of surviving symbols.
5297    
5298    Rationale:
5299    First, in cases where an object renaming is implemented as a
5300    reference variable, GNAT may produce both the actual reference
5301    variable and the renaming encoding.  In this case, we discard the
5302    latter.
5303
5304    Second, GNAT emits a type following a specified encoding for each renaming
5305    entity.  Unfortunately, STABS currently does not support the definition
5306    of types that are local to a given lexical block, so all renamings types
5307    are emitted at library level.  As a consequence, if an application
5308    contains two renaming entities using the same name, and a user tries to
5309    print the value of one of these entities, the result of the ada symbol
5310    lookup will also contain the wrong renaming type.
5311
5312    This function partially covers for this limitation by attempting to
5313    remove from the SYMS list renaming symbols that should be visible
5314    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5315    method with the current information available.  The implementation
5316    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5317    
5318       - When the user tries to print a rename in a function while there
5319         is another rename entity defined in a package:  Normally, the
5320         rename in the function has precedence over the rename in the
5321         package, so the latter should be removed from the list.  This is
5322         currently not the case.
5323         
5324       - This function will incorrectly remove valid renames if
5325         the CURRENT_BLOCK corresponds to a function which symbol name
5326         has been changed by an "Export" pragma.  As a consequence,
5327         the user will be unable to print such rename entities.  */
5328
5329 static int
5330 remove_irrelevant_renamings (struct block_symbol *syms,
5331                              int nsyms, const struct block *current_block)
5332 {
5333   struct symbol *current_function;
5334   const char *current_function_name;
5335   int i;
5336   int is_new_style_renaming;
5337
5338   /* If there is both a renaming foo___XR... encoded as a variable and
5339      a simple variable foo in the same block, discard the latter.
5340      First, zero out such symbols, then compress.  */
5341   is_new_style_renaming = 0;
5342   for (i = 0; i < nsyms; i += 1)
5343     {
5344       struct symbol *sym = syms[i].symbol;
5345       const struct block *block = syms[i].block;
5346       const char *name;
5347       const char *suffix;
5348
5349       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5350         continue;
5351       name = SYMBOL_LINKAGE_NAME (sym);
5352       suffix = strstr (name, "___XR");
5353
5354       if (suffix != NULL)
5355         {
5356           int name_len = suffix - name;
5357           int j;
5358
5359           is_new_style_renaming = 1;
5360           for (j = 0; j < nsyms; j += 1)
5361             if (i != j && syms[j].symbol != NULL
5362                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].symbol),
5363                             name_len) == 0
5364                 && block == syms[j].block)
5365               syms[j].symbol = NULL;
5366         }
5367     }
5368   if (is_new_style_renaming)
5369     {
5370       int j, k;
5371
5372       for (j = k = 0; j < nsyms; j += 1)
5373         if (syms[j].symbol != NULL)
5374             {
5375               syms[k] = syms[j];
5376               k += 1;
5377             }
5378       return k;
5379     }
5380
5381   /* Extract the function name associated to CURRENT_BLOCK.
5382      Abort if unable to do so.  */
5383
5384   if (current_block == NULL)
5385     return nsyms;
5386
5387   current_function = block_linkage_function (current_block);
5388   if (current_function == NULL)
5389     return nsyms;
5390
5391   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5392   if (current_function_name == NULL)
5393     return nsyms;
5394
5395   /* Check each of the symbols, and remove it from the list if it is
5396      a type corresponding to a renaming that is out of the scope of
5397      the current block.  */
5398
5399   i = 0;
5400   while (i < nsyms)
5401     {
5402       if (ada_parse_renaming (syms[i].symbol, NULL, NULL, NULL)
5403           == ADA_OBJECT_RENAMING
5404           && old_renaming_is_invisible (syms[i].symbol, current_function_name))
5405         {
5406           int j;
5407
5408           for (j = i + 1; j < nsyms; j += 1)
5409             syms[j - 1] = syms[j];
5410           nsyms -= 1;
5411         }
5412       else
5413         i += 1;
5414     }
5415
5416   return nsyms;
5417 }
5418
5419 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5420    whose name and domain match NAME and DOMAIN respectively.
5421    If no match was found, then extend the search to "enclosing"
5422    routines (in other words, if we're inside a nested function,
5423    search the symbols defined inside the enclosing functions).
5424    If WILD_MATCH_P is nonzero, perform the naming matching in
5425    "wild" mode (see function "wild_match" for more info).
5426
5427    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5428
5429 static void
5430 ada_add_local_symbols (struct obstack *obstackp, const char *name,
5431                        const struct block *block, domain_enum domain,
5432                        int wild_match_p)
5433 {
5434   int block_depth = 0;
5435
5436   while (block != NULL)
5437     {
5438       block_depth += 1;
5439       ada_add_block_symbols (obstackp, block, name, domain, NULL,
5440                              wild_match_p);
5441
5442       /* If we found a non-function match, assume that's the one.  */
5443       if (is_nonfunction (defns_collected (obstackp, 0),
5444                           num_defns_collected (obstackp)))
5445         return;
5446
5447       block = BLOCK_SUPERBLOCK (block);
5448     }
5449
5450   /* If no luck so far, try to find NAME as a local symbol in some lexically
5451      enclosing subprogram.  */
5452   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5453     add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match_p);
5454 }
5455
5456 /* An object of this type is used as the user_data argument when
5457    calling the map_matching_symbols method.  */
5458
5459 struct match_data
5460 {
5461   struct objfile *objfile;
5462   struct obstack *obstackp;
5463   struct symbol *arg_sym;
5464   int found_sym;
5465 };
5466
5467 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5468    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5469    containing the obstack that collects the symbol list, the file that SYM
5470    must come from, a flag indicating whether a non-argument symbol has
5471    been found in the current block, and the last argument symbol
5472    passed in SYM within the current block (if any).  When SYM is null,
5473    marking the end of a block, the argument symbol is added if no
5474    other has been found.  */
5475
5476 static int
5477 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5478 {
5479   struct match_data *data = (struct match_data *) data0;
5480   
5481   if (sym == NULL)
5482     {
5483       if (!data->found_sym && data->arg_sym != NULL) 
5484         add_defn_to_vec (data->obstackp,
5485                          fixup_symbol_section (data->arg_sym, data->objfile),
5486                          block);
5487       data->found_sym = 0;
5488       data->arg_sym = NULL;
5489     }
5490   else 
5491     {
5492       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5493         return 0;
5494       else if (SYMBOL_IS_ARGUMENT (sym))
5495         data->arg_sym = sym;
5496       else
5497         {
5498           data->found_sym = 1;
5499           add_defn_to_vec (data->obstackp,
5500                            fixup_symbol_section (sym, data->objfile),
5501                            block);
5502         }
5503     }
5504   return 0;
5505 }
5506
5507 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are targetted
5508    by renamings matching NAME in BLOCK.  Add these symbols to OBSTACKP.  If
5509    WILD_MATCH_P is nonzero, perform the naming matching in "wild" mode (see
5510    function "wild_match" for more information).  Return whether we found such
5511    symbols.  */
5512
5513 static int
5514 ada_add_block_renamings (struct obstack *obstackp,
5515                          const struct block *block,
5516                          const char *name,
5517                          domain_enum domain,
5518                          int wild_match_p)
5519 {
5520   struct using_direct *renaming;
5521   int defns_mark = num_defns_collected (obstackp);
5522
5523   for (renaming = block_using (block);
5524        renaming != NULL;
5525        renaming = renaming->next)
5526     {
5527       const char *r_name;
5528       int name_match;
5529
5530       /* Avoid infinite recursions: skip this renaming if we are actually
5531          already traversing it.
5532
5533          Currently, symbol lookup in Ada don't use the namespace machinery from
5534          C++/Fortran support: skip namespace imports that use them.  */
5535       if (renaming->searched
5536           || (renaming->import_src != NULL
5537               && renaming->import_src[0] != '\0')
5538           || (renaming->import_dest != NULL
5539               && renaming->import_dest[0] != '\0'))
5540         continue;
5541       renaming->searched = 1;
5542
5543       /* TODO: here, we perform another name-based symbol lookup, which can
5544          pull its own multiple overloads.  In theory, we should be able to do
5545          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5546          not a simple name.  But in order to do this, we would need to enhance
5547          the DWARF reader to associate a symbol to this renaming, instead of a
5548          name.  So, for now, we do something simpler: re-use the C++/Fortran
5549          namespace machinery.  */
5550       r_name = (renaming->alias != NULL
5551                 ? renaming->alias
5552                 : renaming->declaration);
5553       name_match
5554         = wild_match_p ? wild_match (r_name, name) : strcmp (r_name, name);
5555       if (name_match == 0)
5556         ada_add_all_symbols (obstackp, block, renaming->declaration, domain,
5557                              1, NULL);
5558       renaming->searched = 0;
5559     }
5560   return num_defns_collected (obstackp) != defns_mark;
5561 }
5562
5563 /* Implements compare_names, but only applying the comparision using
5564    the given CASING.  */
5565
5566 static int
5567 compare_names_with_case (const char *string1, const char *string2,
5568                          enum case_sensitivity casing)
5569 {
5570   while (*string1 != '\0' && *string2 != '\0')
5571     {
5572       char c1, c2;
5573
5574       if (isspace (*string1) || isspace (*string2))
5575         return strcmp_iw_ordered (string1, string2);
5576
5577       if (casing == case_sensitive_off)
5578         {
5579           c1 = tolower (*string1);
5580           c2 = tolower (*string2);
5581         }
5582       else
5583         {
5584           c1 = *string1;
5585           c2 = *string2;
5586         }
5587       if (c1 != c2)
5588         break;
5589
5590       string1 += 1;
5591       string2 += 1;
5592     }
5593
5594   switch (*string1)
5595     {
5596     case '(':
5597       return strcmp_iw_ordered (string1, string2);
5598     case '_':
5599       if (*string2 == '\0')
5600         {
5601           if (is_name_suffix (string1))
5602             return 0;
5603           else
5604             return 1;
5605         }
5606       /* FALLTHROUGH */
5607     default:
5608       if (*string2 == '(')
5609         return strcmp_iw_ordered (string1, string2);
5610       else
5611         {
5612           if (casing == case_sensitive_off)
5613             return tolower (*string1) - tolower (*string2);
5614           else
5615             return *string1 - *string2;
5616         }
5617     }
5618 }
5619
5620 /* Compare STRING1 to STRING2, with results as for strcmp.
5621    Compatible with strcmp_iw_ordered in that...
5622
5623        strcmp_iw_ordered (STRING1, STRING2) <= 0
5624
5625    ... implies...
5626
5627        compare_names (STRING1, STRING2) <= 0
5628
5629    (they may differ as to what symbols compare equal).  */
5630
5631 static int
5632 compare_names (const char *string1, const char *string2)
5633 {
5634   int result;
5635
5636   /* Similar to what strcmp_iw_ordered does, we need to perform
5637      a case-insensitive comparison first, and only resort to
5638      a second, case-sensitive, comparison if the first one was
5639      not sufficient to differentiate the two strings.  */
5640
5641   result = compare_names_with_case (string1, string2, case_sensitive_off);
5642   if (result == 0)
5643     result = compare_names_with_case (string1, string2, case_sensitive_on);
5644
5645   return result;
5646 }
5647
5648 /* Add to OBSTACKP all non-local symbols whose name and domain match
5649    NAME and DOMAIN respectively.  The search is performed on GLOBAL_BLOCK
5650    symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise.  */
5651
5652 static void
5653 add_nonlocal_symbols (struct obstack *obstackp, const char *name,
5654                       domain_enum domain, int global,
5655                       int is_wild_match)
5656 {
5657   struct objfile *objfile;
5658   struct compunit_symtab *cu;
5659   struct match_data data;
5660
5661   memset (&data, 0, sizeof data);
5662   data.obstackp = obstackp;
5663
5664   ALL_OBJFILES (objfile)
5665     {
5666       data.objfile = objfile;
5667
5668       if (is_wild_match)
5669         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5670                                                aux_add_nonlocal_symbols, &data,
5671                                                wild_match, NULL);
5672       else
5673         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5674                                                aux_add_nonlocal_symbols, &data,
5675                                                full_match, compare_names);
5676
5677       ALL_OBJFILE_COMPUNITS (objfile, cu)
5678         {
5679           const struct block *global_block
5680             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5681
5682           if (ada_add_block_renamings (obstackp, global_block , name, domain,
5683                                        is_wild_match))
5684             data.found_sym = 1;
5685         }
5686     }
5687
5688   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5689     {
5690       ALL_OBJFILES (objfile)
5691         {
5692           char *name1 = (char *) alloca (strlen (name) + sizeof ("_ada_"));
5693           strcpy (name1, "_ada_");
5694           strcpy (name1 + sizeof ("_ada_") - 1, name);
5695           data.objfile = objfile;
5696           objfile->sf->qf->map_matching_symbols (objfile, name1, domain,
5697                                                  global,
5698                                                  aux_add_nonlocal_symbols,
5699                                                  &data,
5700                                                  full_match, compare_names);
5701         }
5702     }           
5703 }
5704
5705 /* Find symbols in DOMAIN matching NAME, in BLOCK and, if FULL_SEARCH is
5706    non-zero, enclosing scope and in global scopes, returning the number of
5707    matches.  Add these to OBSTACKP.
5708
5709    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5710    symbol match within the nest of blocks whose innermost member is BLOCK,
5711    is the one match returned (no other matches in that or
5712    enclosing blocks is returned).  If there are any matches in or
5713    surrounding BLOCK, then these alone are returned.
5714
5715    Names prefixed with "standard__" are handled specially: "standard__"
5716    is first stripped off, and only static and global symbols are searched.
5717
5718    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5719    to lookup global symbols.  */
5720
5721 static void
5722 ada_add_all_symbols (struct obstack *obstackp,
5723                      const struct block *block,
5724                      const char *name,
5725                      domain_enum domain,
5726                      int full_search,
5727                      int *made_global_lookup_p)
5728 {
5729   struct symbol *sym;
5730   const int wild_match_p = should_use_wild_match (name);
5731
5732   if (made_global_lookup_p)
5733     *made_global_lookup_p = 0;
5734
5735   /* Special case: If the user specifies a symbol name inside package
5736      Standard, do a non-wild matching of the symbol name without
5737      the "standard__" prefix.  This was primarily introduced in order
5738      to allow the user to specifically access the standard exceptions
5739      using, for instance, Standard.Constraint_Error when Constraint_Error
5740      is ambiguous (due to the user defining its own Constraint_Error
5741      entity inside its program).  */
5742   if (startswith (name, "standard__"))
5743     {
5744       block = NULL;
5745       name = name + sizeof ("standard__") - 1;
5746     }
5747
5748   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5749
5750   if (block != NULL)
5751     {
5752       if (full_search)
5753         ada_add_local_symbols (obstackp, name, block, domain, wild_match_p);
5754       else
5755         {
5756           /* In the !full_search case we're are being called by
5757              ada_iterate_over_symbols, and we don't want to search
5758              superblocks.  */
5759           ada_add_block_symbols (obstackp, block, name, domain, NULL,
5760                                  wild_match_p);
5761         }
5762       if (num_defns_collected (obstackp) > 0 || !full_search)
5763         return;
5764     }
5765
5766   /* No non-global symbols found.  Check our cache to see if we have
5767      already performed this search before.  If we have, then return
5768      the same result.  */
5769
5770   if (lookup_cached_symbol (name, domain, &sym, &block))
5771     {
5772       if (sym != NULL)
5773         add_defn_to_vec (obstackp, sym, block);
5774       return;
5775     }
5776
5777   if (made_global_lookup_p)
5778     *made_global_lookup_p = 1;
5779
5780   /* Search symbols from all global blocks.  */
5781  
5782   add_nonlocal_symbols (obstackp, name, domain, 1, wild_match_p);
5783
5784   /* Now add symbols from all per-file blocks if we've gotten no hits
5785      (not strictly correct, but perhaps better than an error).  */
5786
5787   if (num_defns_collected (obstackp) == 0)
5788     add_nonlocal_symbols (obstackp, name, domain, 0, wild_match_p);
5789 }
5790
5791 /* Find symbols in DOMAIN matching NAME, in BLOCK and, if full_search is
5792    non-zero, enclosing scope and in global scopes, returning the number of
5793    matches.
5794    Sets *RESULTS to point to a vector of (SYM,BLOCK) tuples,
5795    indicating the symbols found and the blocks and symbol tables (if
5796    any) in which they were found.  This vector is transient---good only to
5797    the next call of ada_lookup_symbol_list.
5798
5799    When full_search is non-zero, any non-function/non-enumeral
5800    symbol match within the nest of blocks whose innermost member is BLOCK,
5801    is the one match returned (no other matches in that or
5802    enclosing blocks is returned).  If there are any matches in or
5803    surrounding BLOCK, then these alone are returned.
5804
5805    Names prefixed with "standard__" are handled specially: "standard__"
5806    is first stripped off, and only static and global symbols are searched.  */
5807
5808 static int
5809 ada_lookup_symbol_list_worker (const char *name, const struct block *block,
5810                                domain_enum domain,
5811                                struct block_symbol **results,
5812                                int full_search)
5813 {
5814   const int wild_match_p = should_use_wild_match (name);
5815   int syms_from_global_search;
5816   int ndefns;
5817
5818   obstack_free (&symbol_list_obstack, NULL);
5819   obstack_init (&symbol_list_obstack);
5820   ada_add_all_symbols (&symbol_list_obstack, block, name, domain,
5821                        full_search, &syms_from_global_search);
5822
5823   ndefns = num_defns_collected (&symbol_list_obstack);
5824   *results = defns_collected (&symbol_list_obstack, 1);
5825
5826   ndefns = remove_extra_symbols (*results, ndefns);
5827
5828   if (ndefns == 0 && full_search && syms_from_global_search)
5829     cache_symbol (name, domain, NULL, NULL);
5830
5831   if (ndefns == 1 && full_search && syms_from_global_search)
5832     cache_symbol (name, domain, (*results)[0].symbol, (*results)[0].block);
5833
5834   ndefns = remove_irrelevant_renamings (*results, ndefns, block);
5835   return ndefns;
5836 }
5837
5838 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing scope and
5839    in global scopes, returning the number of matches, and setting *RESULTS
5840    to a vector of (SYM,BLOCK) tuples.
5841    See ada_lookup_symbol_list_worker for further details.  */
5842
5843 int
5844 ada_lookup_symbol_list (const char *name0, const struct block *block0,
5845                         domain_enum domain, struct block_symbol **results)
5846 {
5847   return ada_lookup_symbol_list_worker (name0, block0, domain, results, 1);
5848 }
5849
5850 /* Implementation of the la_iterate_over_symbols method.  */
5851
5852 static void
5853 ada_iterate_over_symbols (const struct block *block,
5854                           const char *name, domain_enum domain,
5855                           symbol_found_callback_ftype *callback,
5856                           void *data)
5857 {
5858   int ndefs, i;
5859   struct block_symbol *results;
5860
5861   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5862   for (i = 0; i < ndefs; ++i)
5863     {
5864       if (! (*callback) (results[i].symbol, data))
5865         break;
5866     }
5867 }
5868
5869 /* If NAME is the name of an entity, return a string that should
5870    be used to look that entity up in Ada units.
5871
5872    NAME can have any form that the "break" or "print" commands might
5873    recognize.  In other words, it does not have to be the "natural"
5874    name, or the "encoded" name.  */
5875
5876 std::string
5877 ada_name_for_lookup (const char *name)
5878 {
5879   int nlen = strlen (name);
5880
5881   if (name[0] == '<' && name[nlen - 1] == '>')
5882     return std::string (name + 1, nlen - 2);
5883   else
5884     return ada_encode (ada_fold_name (name));
5885 }
5886
5887 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5888    to 1, but choosing the first symbol found if there are multiple
5889    choices.
5890
5891    The result is stored in *INFO, which must be non-NULL.
5892    If no match is found, INFO->SYM is set to NULL.  */
5893
5894 void
5895 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5896                            domain_enum domain,
5897                            struct block_symbol *info)
5898 {
5899   struct block_symbol *candidates;
5900   int n_candidates;
5901
5902   gdb_assert (info != NULL);
5903   memset (info, 0, sizeof (struct block_symbol));
5904
5905   n_candidates = ada_lookup_symbol_list (name, block, domain, &candidates);
5906   if (n_candidates == 0)
5907     return;
5908
5909   *info = candidates[0];
5910   info->symbol = fixup_symbol_section (info->symbol, NULL);
5911 }
5912
5913 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5914    scope and in global scopes, or NULL if none.  NAME is folded and
5915    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5916    choosing the first symbol if there are multiple choices.
5917    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5918
5919 struct block_symbol
5920 ada_lookup_symbol (const char *name, const struct block *block0,
5921                    domain_enum domain, int *is_a_field_of_this)
5922 {
5923   struct block_symbol info;
5924
5925   if (is_a_field_of_this != NULL)
5926     *is_a_field_of_this = 0;
5927
5928   ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)),
5929                              block0, domain, &info);
5930   return info;
5931 }
5932
5933 static struct block_symbol
5934 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5935                             const char *name,
5936                             const struct block *block,
5937                             const domain_enum domain)
5938 {
5939   struct block_symbol sym;
5940
5941   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5942   if (sym.symbol != NULL)
5943     return sym;
5944
5945   /* If we haven't found a match at this point, try the primitive
5946      types.  In other languages, this search is performed before
5947      searching for global symbols in order to short-circuit that
5948      global-symbol search if it happens that the name corresponds
5949      to a primitive type.  But we cannot do the same in Ada, because
5950      it is perfectly legitimate for a program to declare a type which
5951      has the same name as a standard type.  If looking up a type in
5952      that situation, we have traditionally ignored the primitive type
5953      in favor of user-defined types.  This is why, unlike most other
5954      languages, we search the primitive types this late and only after
5955      having searched the global symbols without success.  */
5956
5957   if (domain == VAR_DOMAIN)
5958     {
5959       struct gdbarch *gdbarch;
5960
5961       if (block == NULL)
5962         gdbarch = target_gdbarch ();
5963       else
5964         gdbarch = block_gdbarch (block);
5965       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5966       if (sym.symbol != NULL)
5967         return sym;
5968     }
5969
5970   return (struct block_symbol) {NULL, NULL};
5971 }
5972
5973
5974 /* True iff STR is a possible encoded suffix of a normal Ada name
5975    that is to be ignored for matching purposes.  Suffixes of parallel
5976    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5977    are given by any of the regular expressions:
5978
5979    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5980    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5981    TKB              [subprogram suffix for task bodies]
5982    _E[0-9]+[bs]$    [protected object entry suffixes]
5983    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5984
5985    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5986    match is performed.  This sequence is used to differentiate homonyms,
5987    is an optional part of a valid name suffix.  */
5988
5989 static int
5990 is_name_suffix (const char *str)
5991 {
5992   int k;
5993   const char *matching;
5994   const int len = strlen (str);
5995
5996   /* Skip optional leading __[0-9]+.  */
5997
5998   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5999     {
6000       str += 3;
6001       while (isdigit (str[0]))
6002         str += 1;
6003     }
6004   
6005   /* [.$][0-9]+ */
6006
6007   if (str[0] == '.' || str[0] == '$')
6008     {
6009       matching = str + 1;
6010       while (isdigit (matching[0]))
6011         matching += 1;
6012       if (matching[0] == '\0')
6013         return 1;
6014     }
6015
6016   /* ___[0-9]+ */
6017
6018   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6019     {
6020       matching = str + 3;
6021       while (isdigit (matching[0]))
6022         matching += 1;
6023       if (matching[0] == '\0')
6024         return 1;
6025     }
6026
6027   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6028
6029   if (strcmp (str, "TKB") == 0)
6030     return 1;
6031
6032 #if 0
6033   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6034      with a N at the end.  Unfortunately, the compiler uses the same
6035      convention for other internal types it creates.  So treating
6036      all entity names that end with an "N" as a name suffix causes
6037      some regressions.  For instance, consider the case of an enumerated
6038      type.  To support the 'Image attribute, it creates an array whose
6039      name ends with N.
6040      Having a single character like this as a suffix carrying some
6041      information is a bit risky.  Perhaps we should change the encoding
6042      to be something like "_N" instead.  In the meantime, do not do
6043      the following check.  */
6044   /* Protected Object Subprograms */
6045   if (len == 1 && str [0] == 'N')
6046     return 1;
6047 #endif
6048
6049   /* _E[0-9]+[bs]$ */
6050   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6051     {
6052       matching = str + 3;
6053       while (isdigit (matching[0]))
6054         matching += 1;
6055       if ((matching[0] == 'b' || matching[0] == 's')
6056           && matching [1] == '\0')
6057         return 1;
6058     }
6059
6060   /* ??? We should not modify STR directly, as we are doing below.  This
6061      is fine in this case, but may become problematic later if we find
6062      that this alternative did not work, and want to try matching
6063      another one from the begining of STR.  Since we modified it, we
6064      won't be able to find the begining of the string anymore!  */
6065   if (str[0] == 'X')
6066     {
6067       str += 1;
6068       while (str[0] != '_' && str[0] != '\0')
6069         {
6070           if (str[0] != 'n' && str[0] != 'b')
6071             return 0;
6072           str += 1;
6073         }
6074     }
6075
6076   if (str[0] == '\000')
6077     return 1;
6078
6079   if (str[0] == '_')
6080     {
6081       if (str[1] != '_' || str[2] == '\000')
6082         return 0;
6083       if (str[2] == '_')
6084         {
6085           if (strcmp (str + 3, "JM") == 0)
6086             return 1;
6087           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6088              the LJM suffix in favor of the JM one.  But we will
6089              still accept LJM as a valid suffix for a reasonable
6090              amount of time, just to allow ourselves to debug programs
6091              compiled using an older version of GNAT.  */
6092           if (strcmp (str + 3, "LJM") == 0)
6093             return 1;
6094           if (str[3] != 'X')
6095             return 0;
6096           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6097               || str[4] == 'U' || str[4] == 'P')
6098             return 1;
6099           if (str[4] == 'R' && str[5] != 'T')
6100             return 1;
6101           return 0;
6102         }
6103       if (!isdigit (str[2]))
6104         return 0;
6105       for (k = 3; str[k] != '\0'; k += 1)
6106         if (!isdigit (str[k]) && str[k] != '_')
6107           return 0;
6108       return 1;
6109     }
6110   if (str[0] == '$' && isdigit (str[1]))
6111     {
6112       for (k = 2; str[k] != '\0'; k += 1)
6113         if (!isdigit (str[k]) && str[k] != '_')
6114           return 0;
6115       return 1;
6116     }
6117   return 0;
6118 }
6119
6120 /* Return non-zero if the string starting at NAME and ending before
6121    NAME_END contains no capital letters.  */
6122
6123 static int
6124 is_valid_name_for_wild_match (const char *name0)
6125 {
6126   const char *decoded_name = ada_decode (name0);
6127   int i;
6128
6129   /* If the decoded name starts with an angle bracket, it means that
6130      NAME0 does not follow the GNAT encoding format.  It should then
6131      not be allowed as a possible wild match.  */
6132   if (decoded_name[0] == '<')
6133     return 0;
6134
6135   for (i=0; decoded_name[i] != '\0'; i++)
6136     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6137       return 0;
6138
6139   return 1;
6140 }
6141
6142 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6143    that could start a simple name.  Assumes that *NAMEP points into
6144    the string beginning at NAME0.  */
6145
6146 static int
6147 advance_wild_match (const char **namep, const char *name0, int target0)
6148 {
6149   const char *name = *namep;
6150
6151   while (1)
6152     {
6153       int t0, t1;
6154
6155       t0 = *name;
6156       if (t0 == '_')
6157         {
6158           t1 = name[1];
6159           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6160             {
6161               name += 1;
6162               if (name == name0 + 5 && startswith (name0, "_ada"))
6163                 break;
6164               else
6165                 name += 1;
6166             }
6167           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6168                                  || name[2] == target0))
6169             {
6170               name += 2;
6171               break;
6172             }
6173           else
6174             return 0;
6175         }
6176       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6177         name += 1;
6178       else
6179         return 0;
6180     }
6181
6182   *namep = name;
6183   return 1;
6184 }
6185
6186 /* Return 0 iff NAME encodes a name of the form prefix.PATN.  Ignores any
6187    informational suffixes of NAME (i.e., for which is_name_suffix is
6188    true).  Assumes that PATN is a lower-cased Ada simple name.  */
6189
6190 static int
6191 wild_match (const char *name, const char *patn)
6192 {
6193   const char *p;
6194   const char *name0 = name;
6195
6196   while (1)
6197     {
6198       const char *match = name;
6199
6200       if (*name == *patn)
6201         {
6202           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6203             if (*p != *name)
6204               break;
6205           if (*p == '\0' && is_name_suffix (name))
6206             return match != name0 && !is_valid_name_for_wild_match (name0);
6207
6208           if (name[-1] == '_')
6209             name -= 1;
6210         }
6211       if (!advance_wild_match (&name, name0, *patn))
6212         return 1;
6213     }
6214 }
6215
6216 /* Returns 0 iff symbol name SYM_NAME matches SEARCH_NAME, apart from
6217    informational suffix.  */
6218
6219 static int
6220 full_match (const char *sym_name, const char *search_name)
6221 {
6222   return !match_name (sym_name, search_name, 0);
6223 }
6224
6225
6226 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to
6227    vector *defn_symbols, updating the list of symbols in OBSTACKP 
6228    (if necessary).  If WILD, treat as NAME with a wildcard prefix.
6229    OBJFILE is the section containing BLOCK.  */
6230
6231 static void
6232 ada_add_block_symbols (struct obstack *obstackp,
6233                        const struct block *block, const char *name,
6234                        domain_enum domain, struct objfile *objfile,
6235                        int wild)
6236 {
6237   struct block_iterator iter;
6238   int name_len = strlen (name);
6239   /* A matching argument symbol, if any.  */
6240   struct symbol *arg_sym;
6241   /* Set true when we find a matching non-argument symbol.  */
6242   int found_sym;
6243   struct symbol *sym;
6244
6245   arg_sym = NULL;
6246   found_sym = 0;
6247   if (wild)
6248     {
6249       for (sym = block_iter_match_first (block, name, wild_match, &iter);
6250            sym != NULL; sym = block_iter_match_next (name, wild_match, &iter))
6251       {
6252         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6253                                    SYMBOL_DOMAIN (sym), domain)
6254             && wild_match (SYMBOL_LINKAGE_NAME (sym), name) == 0)
6255           {
6256             if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
6257               continue;
6258             else if (SYMBOL_IS_ARGUMENT (sym))
6259               arg_sym = sym;
6260             else
6261               {
6262                 found_sym = 1;
6263                 add_defn_to_vec (obstackp,
6264                                  fixup_symbol_section (sym, objfile),
6265                                  block);
6266               }
6267           }
6268       }
6269     }
6270   else
6271     {
6272      for (sym = block_iter_match_first (block, name, full_match, &iter);
6273           sym != NULL; sym = block_iter_match_next (name, full_match, &iter))
6274       {
6275         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6276                                    SYMBOL_DOMAIN (sym), domain))
6277           {
6278             if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6279               {
6280                 if (SYMBOL_IS_ARGUMENT (sym))
6281                   arg_sym = sym;
6282                 else
6283                   {
6284                     found_sym = 1;
6285                     add_defn_to_vec (obstackp,
6286                                      fixup_symbol_section (sym, objfile),
6287                                      block);
6288                   }
6289               }
6290           }
6291       }
6292     }
6293
6294   /* Handle renamings.  */
6295
6296   if (ada_add_block_renamings (obstackp, block, name, domain, wild))
6297     found_sym = 1;
6298
6299   if (!found_sym && arg_sym != NULL)
6300     {
6301       add_defn_to_vec (obstackp,
6302                        fixup_symbol_section (arg_sym, objfile),
6303                        block);
6304     }
6305
6306   if (!wild)
6307     {
6308       arg_sym = NULL;
6309       found_sym = 0;
6310
6311       ALL_BLOCK_SYMBOLS (block, iter, sym)
6312       {
6313         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6314                                    SYMBOL_DOMAIN (sym), domain))
6315           {
6316             int cmp;
6317
6318             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6319             if (cmp == 0)
6320               {
6321                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6322                 if (cmp == 0)
6323                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6324                                  name_len);
6325               }
6326
6327             if (cmp == 0
6328                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6329               {
6330                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6331                   {
6332                     if (SYMBOL_IS_ARGUMENT (sym))
6333                       arg_sym = sym;
6334                     else
6335                       {
6336                         found_sym = 1;
6337                         add_defn_to_vec (obstackp,
6338                                          fixup_symbol_section (sym, objfile),
6339                                          block);
6340                       }
6341                   }
6342               }
6343           }
6344       }
6345
6346       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6347          They aren't parameters, right?  */
6348       if (!found_sym && arg_sym != NULL)
6349         {
6350           add_defn_to_vec (obstackp,
6351                            fixup_symbol_section (arg_sym, objfile),
6352                            block);
6353         }
6354     }
6355 }
6356 \f
6357
6358                                 /* Symbol Completion */
6359
6360 /* If SYM_NAME is a completion candidate for TEXT, return this symbol
6361    name in a form that's appropriate for the completion.  The result
6362    does not need to be deallocated, but is only good until the next call.
6363
6364    TEXT_LEN is equal to the length of TEXT.
6365    Perform a wild match if WILD_MATCH_P is set.
6366    ENCODED_P should be set if TEXT represents the start of a symbol name
6367    in its encoded form.  */
6368
6369 static const char *
6370 symbol_completion_match (const char *sym_name,
6371                          const char *text, int text_len,
6372                          int wild_match_p, int encoded_p)
6373 {
6374   const int verbatim_match = (text[0] == '<');
6375   int match = 0;
6376
6377   if (verbatim_match)
6378     {
6379       /* Strip the leading angle bracket.  */
6380       text = text + 1;
6381       text_len--;
6382     }
6383
6384   /* First, test against the fully qualified name of the symbol.  */
6385
6386   if (strncmp (sym_name, text, text_len) == 0)
6387     match = 1;
6388
6389   if (match && !encoded_p)
6390     {
6391       /* One needed check before declaring a positive match is to verify
6392          that iff we are doing a verbatim match, the decoded version
6393          of the symbol name starts with '<'.  Otherwise, this symbol name
6394          is not a suitable completion.  */
6395       const char *sym_name_copy = sym_name;
6396       int has_angle_bracket;
6397
6398       sym_name = ada_decode (sym_name);
6399       has_angle_bracket = (sym_name[0] == '<');
6400       match = (has_angle_bracket == verbatim_match);
6401       sym_name = sym_name_copy;
6402     }
6403
6404   if (match && !verbatim_match)
6405     {
6406       /* When doing non-verbatim match, another check that needs to
6407          be done is to verify that the potentially matching symbol name
6408          does not include capital letters, because the ada-mode would
6409          not be able to understand these symbol names without the
6410          angle bracket notation.  */
6411       const char *tmp;
6412
6413       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6414       if (*tmp != '\0')
6415         match = 0;
6416     }
6417
6418   /* Second: Try wild matching...  */
6419
6420   if (!match && wild_match_p)
6421     {
6422       /* Since we are doing wild matching, this means that TEXT
6423          may represent an unqualified symbol name.  We therefore must
6424          also compare TEXT against the unqualified name of the symbol.  */
6425       sym_name = ada_unqualified_name (ada_decode (sym_name));
6426
6427       if (strncmp (sym_name, text, text_len) == 0)
6428         match = 1;
6429     }
6430
6431   /* Finally: If we found a mach, prepare the result to return.  */
6432
6433   if (!match)
6434     return NULL;
6435
6436   if (verbatim_match)
6437     sym_name = add_angle_brackets (sym_name);
6438
6439   if (!encoded_p)
6440     sym_name = ada_decode (sym_name);
6441
6442   return sym_name;
6443 }
6444
6445 /* A companion function to ada_make_symbol_completion_list().
6446    Check if SYM_NAME represents a symbol which name would be suitable
6447    to complete TEXT (TEXT_LEN is the length of TEXT), in which case
6448    it is appended at the end of the given string vector SV.
6449
6450    ORIG_TEXT is the string original string from the user command
6451    that needs to be completed.  WORD is the entire command on which
6452    completion should be performed.  These two parameters are used to
6453    determine which part of the symbol name should be added to the
6454    completion vector.
6455    if WILD_MATCH_P is set, then wild matching is performed.
6456    ENCODED_P should be set if TEXT represents a symbol name in its
6457    encoded formed (in which case the completion should also be
6458    encoded).  */
6459
6460 static void
6461 symbol_completion_add (VEC(char_ptr) **sv,
6462                        const char *sym_name,
6463                        const char *text, int text_len,
6464                        const char *orig_text, const char *word,
6465                        int wild_match_p, int encoded_p)
6466 {
6467   const char *match = symbol_completion_match (sym_name, text, text_len,
6468                                                wild_match_p, encoded_p);
6469   char *completion;
6470
6471   if (match == NULL)
6472     return;
6473
6474   /* We found a match, so add the appropriate completion to the given
6475      string vector.  */
6476
6477   if (word == orig_text)
6478     {
6479       completion = (char *) xmalloc (strlen (match) + 5);
6480       strcpy (completion, match);
6481     }
6482   else if (word > orig_text)
6483     {
6484       /* Return some portion of sym_name.  */
6485       completion = (char *) xmalloc (strlen (match) + 5);
6486       strcpy (completion, match + (word - orig_text));
6487     }
6488   else
6489     {
6490       /* Return some of ORIG_TEXT plus sym_name.  */
6491       completion = (char *) xmalloc (strlen (match) + (orig_text - word) + 5);
6492       strncpy (completion, word, orig_text - word);
6493       completion[orig_text - word] = '\0';
6494       strcat (completion, match);
6495     }
6496
6497   VEC_safe_push (char_ptr, *sv, completion);
6498 }
6499
6500 /* An object of this type is passed as the user_data argument to the
6501    expand_symtabs_matching method.  */
6502 struct add_partial_datum
6503 {
6504   VEC(char_ptr) **completions;
6505   const char *text;
6506   int text_len;
6507   const char *text0;
6508   const char *word;
6509   int wild_match;
6510   int encoded;
6511 };
6512
6513 /* A callback for expand_symtabs_matching.  */
6514
6515 static int
6516 ada_complete_symbol_matcher (const char *name, void *user_data)
6517 {
6518   struct add_partial_datum *data = (struct add_partial_datum *) user_data;
6519   
6520   return symbol_completion_match (name, data->text, data->text_len,
6521                                   data->wild_match, data->encoded) != NULL;
6522 }
6523
6524 /* Return a list of possible symbol names completing TEXT0.  WORD is
6525    the entire command on which completion is made.  */
6526
6527 static VEC (char_ptr) *
6528 ada_make_symbol_completion_list (const char *text0, const char *word,
6529                                  enum type_code code)
6530 {
6531   char *text;
6532   int text_len;
6533   int wild_match_p;
6534   int encoded_p;
6535   VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128);
6536   struct symbol *sym;
6537   struct compunit_symtab *s;
6538   struct minimal_symbol *msymbol;
6539   struct objfile *objfile;
6540   const struct block *b, *surrounding_static_block = 0;
6541   int i;
6542   struct block_iterator iter;
6543   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6544
6545   gdb_assert (code == TYPE_CODE_UNDEF);
6546
6547   if (text0[0] == '<')
6548     {
6549       text = xstrdup (text0);
6550       make_cleanup (xfree, text);
6551       text_len = strlen (text);
6552       wild_match_p = 0;
6553       encoded_p = 1;
6554     }
6555   else
6556     {
6557       text = xstrdup (ada_encode (text0));
6558       make_cleanup (xfree, text);
6559       text_len = strlen (text);
6560       for (i = 0; i < text_len; i++)
6561         text[i] = tolower (text[i]);
6562
6563       encoded_p = (strstr (text0, "__") != NULL);
6564       /* If the name contains a ".", then the user is entering a fully
6565          qualified entity name, and the match must not be done in wild
6566          mode.  Similarly, if the user wants to complete what looks like
6567          an encoded name, the match must not be done in wild mode.  */
6568       wild_match_p = (strchr (text0, '.') == NULL && !encoded_p);
6569     }
6570
6571   /* First, look at the partial symtab symbols.  */
6572   {
6573     struct add_partial_datum data;
6574
6575     data.completions = &completions;
6576     data.text = text;
6577     data.text_len = text_len;
6578     data.text0 = text0;
6579     data.word = word;
6580     data.wild_match = wild_match_p;
6581     data.encoded = encoded_p;
6582     expand_symtabs_matching (NULL, ada_complete_symbol_matcher, NULL,
6583                              ALL_DOMAIN, &data);
6584   }
6585
6586   /* At this point scan through the misc symbol vectors and add each
6587      symbol you find to the list.  Eventually we want to ignore
6588      anything that isn't a text symbol (everything else will be
6589      handled by the psymtab code above).  */
6590
6591   ALL_MSYMBOLS (objfile, msymbol)
6592   {
6593     QUIT;
6594     symbol_completion_add (&completions, MSYMBOL_LINKAGE_NAME (msymbol),
6595                            text, text_len, text0, word, wild_match_p,
6596                            encoded_p);
6597   }
6598
6599   /* Search upwards from currently selected frame (so that we can
6600      complete on local vars.  */
6601
6602   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6603     {
6604       if (!BLOCK_SUPERBLOCK (b))
6605         surrounding_static_block = b;   /* For elmin of dups */
6606
6607       ALL_BLOCK_SYMBOLS (b, iter, sym)
6608       {
6609         symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6610                                text, text_len, text0, word,
6611                                wild_match_p, encoded_p);
6612       }
6613     }
6614
6615   /* Go through the symtabs and check the externs and statics for
6616      symbols which match.  */
6617
6618   ALL_COMPUNITS (objfile, s)
6619   {
6620     QUIT;
6621     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6622     ALL_BLOCK_SYMBOLS (b, iter, sym)
6623     {
6624       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6625                              text, text_len, text0, word,
6626                              wild_match_p, encoded_p);
6627     }
6628   }
6629
6630   ALL_COMPUNITS (objfile, s)
6631   {
6632     QUIT;
6633     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6634     /* Don't do this block twice.  */
6635     if (b == surrounding_static_block)
6636       continue;
6637     ALL_BLOCK_SYMBOLS (b, iter, sym)
6638     {
6639       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6640                              text, text_len, text0, word,
6641                              wild_match_p, encoded_p);
6642     }
6643   }
6644
6645   do_cleanups (old_chain);
6646   return completions;
6647 }
6648
6649                                 /* Field Access */
6650
6651 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6652    for tagged types.  */
6653
6654 static int
6655 ada_is_dispatch_table_ptr_type (struct type *type)
6656 {
6657   const char *name;
6658
6659   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6660     return 0;
6661
6662   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6663   if (name == NULL)
6664     return 0;
6665
6666   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6667 }
6668
6669 /* Return non-zero if TYPE is an interface tag.  */
6670
6671 static int
6672 ada_is_interface_tag (struct type *type)
6673 {
6674   const char *name = TYPE_NAME (type);
6675
6676   if (name == NULL)
6677     return 0;
6678
6679   return (strcmp (name, "ada__tags__interface_tag") == 0);
6680 }
6681
6682 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6683    to be invisible to users.  */
6684
6685 int
6686 ada_is_ignored_field (struct type *type, int field_num)
6687 {
6688   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6689     return 1;
6690
6691   /* Check the name of that field.  */
6692   {
6693     const char *name = TYPE_FIELD_NAME (type, field_num);
6694
6695     /* Anonymous field names should not be printed.
6696        brobecker/2007-02-20: I don't think this can actually happen
6697        but we don't want to print the value of annonymous fields anyway.  */
6698     if (name == NULL)
6699       return 1;
6700
6701     /* Normally, fields whose name start with an underscore ("_")
6702        are fields that have been internally generated by the compiler,
6703        and thus should not be printed.  The "_parent" field is special,
6704        however: This is a field internally generated by the compiler
6705        for tagged types, and it contains the components inherited from
6706        the parent type.  This field should not be printed as is, but
6707        should not be ignored either.  */
6708     if (name[0] == '_' && !startswith (name, "_parent"))
6709       return 1;
6710   }
6711
6712   /* If this is the dispatch table of a tagged type or an interface tag,
6713      then ignore.  */
6714   if (ada_is_tagged_type (type, 1)
6715       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6716           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6717     return 1;
6718
6719   /* Not a special field, so it should not be ignored.  */
6720   return 0;
6721 }
6722
6723 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6724    pointer or reference type whose ultimate target has a tag field.  */
6725
6726 int
6727 ada_is_tagged_type (struct type *type, int refok)
6728 {
6729   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL);
6730 }
6731
6732 /* True iff TYPE represents the type of X'Tag */
6733
6734 int
6735 ada_is_tag_type (struct type *type)
6736 {
6737   type = ada_check_typedef (type);
6738
6739   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6740     return 0;
6741   else
6742     {
6743       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6744
6745       return (name != NULL
6746               && strcmp (name, "ada__tags__dispatch_table") == 0);
6747     }
6748 }
6749
6750 /* The type of the tag on VAL.  */
6751
6752 struct type *
6753 ada_tag_type (struct value *val)
6754 {
6755   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0, NULL);
6756 }
6757
6758 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6759    retired at Ada 05).  */
6760
6761 static int
6762 is_ada95_tag (struct value *tag)
6763 {
6764   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6765 }
6766
6767 /* The value of the tag on VAL.  */
6768
6769 struct value *
6770 ada_value_tag (struct value *val)
6771 {
6772   return ada_value_struct_elt (val, "_tag", 0);
6773 }
6774
6775 /* The value of the tag on the object of type TYPE whose contents are
6776    saved at VALADDR, if it is non-null, or is at memory address
6777    ADDRESS.  */
6778
6779 static struct value *
6780 value_tag_from_contents_and_address (struct type *type,
6781                                      const gdb_byte *valaddr,
6782                                      CORE_ADDR address)
6783 {
6784   int tag_byte_offset;
6785   struct type *tag_type;
6786
6787   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6788                          NULL, NULL, NULL))
6789     {
6790       const gdb_byte *valaddr1 = ((valaddr == NULL)
6791                                   ? NULL
6792                                   : valaddr + tag_byte_offset);
6793       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6794
6795       return value_from_contents_and_address (tag_type, valaddr1, address1);
6796     }
6797   return NULL;
6798 }
6799
6800 static struct type *
6801 type_from_tag (struct value *tag)
6802 {
6803   const char *type_name = ada_tag_name (tag);
6804
6805   if (type_name != NULL)
6806     return ada_find_any_type (ada_encode (type_name));
6807   return NULL;
6808 }
6809
6810 /* Given a value OBJ of a tagged type, return a value of this
6811    type at the base address of the object.  The base address, as
6812    defined in Ada.Tags, it is the address of the primary tag of
6813    the object, and therefore where the field values of its full
6814    view can be fetched.  */
6815
6816 struct value *
6817 ada_tag_value_at_base_address (struct value *obj)
6818 {
6819   struct value *val;
6820   LONGEST offset_to_top = 0;
6821   struct type *ptr_type, *obj_type;
6822   struct value *tag;
6823   CORE_ADDR base_address;
6824
6825   obj_type = value_type (obj);
6826
6827   /* It is the responsability of the caller to deref pointers.  */
6828
6829   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6830       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6831     return obj;
6832
6833   tag = ada_value_tag (obj);
6834   if (!tag)
6835     return obj;
6836
6837   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6838
6839   if (is_ada95_tag (tag))
6840     return obj;
6841
6842   ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
6843   ptr_type = lookup_pointer_type (ptr_type);
6844   val = value_cast (ptr_type, tag);
6845   if (!val)
6846     return obj;
6847
6848   /* It is perfectly possible that an exception be raised while
6849      trying to determine the base address, just like for the tag;
6850      see ada_tag_name for more details.  We do not print the error
6851      message for the same reason.  */
6852
6853   TRY
6854     {
6855       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6856     }
6857
6858   CATCH (e, RETURN_MASK_ERROR)
6859     {
6860       return obj;
6861     }
6862   END_CATCH
6863
6864   /* If offset is null, nothing to do.  */
6865
6866   if (offset_to_top == 0)
6867     return obj;
6868
6869   /* -1 is a special case in Ada.Tags; however, what should be done
6870      is not quite clear from the documentation.  So do nothing for
6871      now.  */
6872
6873   if (offset_to_top == -1)
6874     return obj;
6875
6876   base_address = value_address (obj) - offset_to_top;
6877   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6878
6879   /* Make sure that we have a proper tag at the new address.
6880      Otherwise, offset_to_top is bogus (which can happen when
6881      the object is not initialized yet).  */
6882
6883   if (!tag)
6884     return obj;
6885
6886   obj_type = type_from_tag (tag);
6887
6888   if (!obj_type)
6889     return obj;
6890
6891   return value_from_contents_and_address (obj_type, NULL, base_address);
6892 }
6893
6894 /* Return the "ada__tags__type_specific_data" type.  */
6895
6896 static struct type *
6897 ada_get_tsd_type (struct inferior *inf)
6898 {
6899   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6900
6901   if (data->tsd_type == 0)
6902     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6903   return data->tsd_type;
6904 }
6905
6906 /* Return the TSD (type-specific data) associated to the given TAG.
6907    TAG is assumed to be the tag of a tagged-type entity.
6908
6909    May return NULL if we are unable to get the TSD.  */
6910
6911 static struct value *
6912 ada_get_tsd_from_tag (struct value *tag)
6913 {
6914   struct value *val;
6915   struct type *type;
6916
6917   /* First option: The TSD is simply stored as a field of our TAG.
6918      Only older versions of GNAT would use this format, but we have
6919      to test it first, because there are no visible markers for
6920      the current approach except the absence of that field.  */
6921
6922   val = ada_value_struct_elt (tag, "tsd", 1);
6923   if (val)
6924     return val;
6925
6926   /* Try the second representation for the dispatch table (in which
6927      there is no explicit 'tsd' field in the referent of the tag pointer,
6928      and instead the tsd pointer is stored just before the dispatch
6929      table.  */
6930
6931   type = ada_get_tsd_type (current_inferior());
6932   if (type == NULL)
6933     return NULL;
6934   type = lookup_pointer_type (lookup_pointer_type (type));
6935   val = value_cast (type, tag);
6936   if (val == NULL)
6937     return NULL;
6938   return value_ind (value_ptradd (val, -1));
6939 }
6940
6941 /* Given the TSD of a tag (type-specific data), return a string
6942    containing the name of the associated type.
6943
6944    The returned value is good until the next call.  May return NULL
6945    if we are unable to determine the tag name.  */
6946
6947 static char *
6948 ada_tag_name_from_tsd (struct value *tsd)
6949 {
6950   static char name[1024];
6951   char *p;
6952   struct value *val;
6953
6954   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6955   if (val == NULL)
6956     return NULL;
6957   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6958   for (p = name; *p != '\0'; p += 1)
6959     if (isalpha (*p))
6960       *p = tolower (*p);
6961   return name;
6962 }
6963
6964 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6965    a C string.
6966
6967    Return NULL if the TAG is not an Ada tag, or if we were unable to
6968    determine the name of that tag.  The result is good until the next
6969    call.  */
6970
6971 const char *
6972 ada_tag_name (struct value *tag)
6973 {
6974   char *name = NULL;
6975
6976   if (!ada_is_tag_type (value_type (tag)))
6977     return NULL;
6978
6979   /* It is perfectly possible that an exception be raised while trying
6980      to determine the TAG's name, even under normal circumstances:
6981      The associated variable may be uninitialized or corrupted, for
6982      instance. We do not let any exception propagate past this point.
6983      instead we return NULL.
6984
6985      We also do not print the error message either (which often is very
6986      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6987      the caller print a more meaningful message if necessary.  */
6988   TRY
6989     {
6990       struct value *tsd = ada_get_tsd_from_tag (tag);
6991
6992       if (tsd != NULL)
6993         name = ada_tag_name_from_tsd (tsd);
6994     }
6995   CATCH (e, RETURN_MASK_ERROR)
6996     {
6997     }
6998   END_CATCH
6999
7000   return name;
7001 }
7002
7003 /* The parent type of TYPE, or NULL if none.  */
7004
7005 struct type *
7006 ada_parent_type (struct type *type)
7007 {
7008   int i;
7009
7010   type = ada_check_typedef (type);
7011
7012   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
7013     return NULL;
7014
7015   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7016     if (ada_is_parent_field (type, i))
7017       {
7018         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
7019
7020         /* If the _parent field is a pointer, then dereference it.  */
7021         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
7022           parent_type = TYPE_TARGET_TYPE (parent_type);
7023         /* If there is a parallel XVS type, get the actual base type.  */
7024         parent_type = ada_get_base_type (parent_type);
7025
7026         return ada_check_typedef (parent_type);
7027       }
7028
7029   return NULL;
7030 }
7031
7032 /* True iff field number FIELD_NUM of structure type TYPE contains the
7033    parent-type (inherited) fields of a derived type.  Assumes TYPE is
7034    a structure type with at least FIELD_NUM+1 fields.  */
7035
7036 int
7037 ada_is_parent_field (struct type *type, int field_num)
7038 {
7039   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
7040
7041   return (name != NULL
7042           && (startswith (name, "PARENT")
7043               || startswith (name, "_parent")));
7044 }
7045
7046 /* True iff field number FIELD_NUM of structure type TYPE is a
7047    transparent wrapper field (which should be silently traversed when doing
7048    field selection and flattened when printing).  Assumes TYPE is a
7049    structure type with at least FIELD_NUM+1 fields.  Such fields are always
7050    structures.  */
7051
7052 int
7053 ada_is_wrapper_field (struct type *type, int field_num)
7054 {
7055   const char *name = TYPE_FIELD_NAME (type, field_num);
7056
7057   if (name != NULL && strcmp (name, "RETVAL") == 0)
7058     {
7059       /* This happens in functions with "out" or "in out" parameters
7060          which are passed by copy.  For such functions, GNAT describes
7061          the function's return type as being a struct where the return
7062          value is in a field called RETVAL, and where the other "out"
7063          or "in out" parameters are fields of that struct.  This is not
7064          a wrapper.  */
7065       return 0;
7066     }
7067
7068   return (name != NULL
7069           && (startswith (name, "PARENT")
7070               || strcmp (name, "REP") == 0
7071               || startswith (name, "_parent")
7072               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
7073 }
7074
7075 /* True iff field number FIELD_NUM of structure or union type TYPE
7076    is a variant wrapper.  Assumes TYPE is a structure type with at least
7077    FIELD_NUM+1 fields.  */
7078
7079 int
7080 ada_is_variant_part (struct type *type, int field_num)
7081 {
7082   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7083
7084   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7085           || (is_dynamic_field (type, field_num)
7086               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7087                   == TYPE_CODE_UNION)));
7088 }
7089
7090 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7091    whose discriminants are contained in the record type OUTER_TYPE,
7092    returns the type of the controlling discriminant for the variant.
7093    May return NULL if the type could not be found.  */
7094
7095 struct type *
7096 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7097 {
7098   char *name = ada_variant_discrim_name (var_type);
7099
7100   return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL);
7101 }
7102
7103 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7104    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7105    represents a 'when others' clause; otherwise 0.  */
7106
7107 int
7108 ada_is_others_clause (struct type *type, int field_num)
7109 {
7110   const char *name = TYPE_FIELD_NAME (type, field_num);
7111
7112   return (name != NULL && name[0] == 'O');
7113 }
7114
7115 /* Assuming that TYPE0 is the type of the variant part of a record,
7116    returns the name of the discriminant controlling the variant.
7117    The value is valid until the next call to ada_variant_discrim_name.  */
7118
7119 char *
7120 ada_variant_discrim_name (struct type *type0)
7121 {
7122   static char *result = NULL;
7123   static size_t result_len = 0;
7124   struct type *type;
7125   const char *name;
7126   const char *discrim_end;
7127   const char *discrim_start;
7128
7129   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7130     type = TYPE_TARGET_TYPE (type0);
7131   else
7132     type = type0;
7133
7134   name = ada_type_name (type);
7135
7136   if (name == NULL || name[0] == '\000')
7137     return "";
7138
7139   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7140        discrim_end -= 1)
7141     {
7142       if (startswith (discrim_end, "___XVN"))
7143         break;
7144     }
7145   if (discrim_end == name)
7146     return "";
7147
7148   for (discrim_start = discrim_end; discrim_start != name + 3;
7149        discrim_start -= 1)
7150     {
7151       if (discrim_start == name + 1)
7152         return "";
7153       if ((discrim_start > name + 3
7154            && startswith (discrim_start - 3, "___"))
7155           || discrim_start[-1] == '.')
7156         break;
7157     }
7158
7159   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7160   strncpy (result, discrim_start, discrim_end - discrim_start);
7161   result[discrim_end - discrim_start] = '\0';
7162   return result;
7163 }
7164
7165 /* Scan STR for a subtype-encoded number, beginning at position K.
7166    Put the position of the character just past the number scanned in
7167    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7168    Return 1 if there was a valid number at the given position, and 0
7169    otherwise.  A "subtype-encoded" number consists of the absolute value
7170    in decimal, followed by the letter 'm' to indicate a negative number.
7171    Assumes 0m does not occur.  */
7172
7173 int
7174 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7175 {
7176   ULONGEST RU;
7177
7178   if (!isdigit (str[k]))
7179     return 0;
7180
7181   /* Do it the hard way so as not to make any assumption about
7182      the relationship of unsigned long (%lu scan format code) and
7183      LONGEST.  */
7184   RU = 0;
7185   while (isdigit (str[k]))
7186     {
7187       RU = RU * 10 + (str[k] - '0');
7188       k += 1;
7189     }
7190
7191   if (str[k] == 'm')
7192     {
7193       if (R != NULL)
7194         *R = (-(LONGEST) (RU - 1)) - 1;
7195       k += 1;
7196     }
7197   else if (R != NULL)
7198     *R = (LONGEST) RU;
7199
7200   /* NOTE on the above: Technically, C does not say what the results of
7201      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7202      number representable as a LONGEST (although either would probably work
7203      in most implementations).  When RU>0, the locution in the then branch
7204      above is always equivalent to the negative of RU.  */
7205
7206   if (new_k != NULL)
7207     *new_k = k;
7208   return 1;
7209 }
7210
7211 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7212    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7213    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7214
7215 int
7216 ada_in_variant (LONGEST val, struct type *type, int field_num)
7217 {
7218   const char *name = TYPE_FIELD_NAME (type, field_num);
7219   int p;
7220
7221   p = 0;
7222   while (1)
7223     {
7224       switch (name[p])
7225         {
7226         case '\0':
7227           return 0;
7228         case 'S':
7229           {
7230             LONGEST W;
7231
7232             if (!ada_scan_number (name, p + 1, &W, &p))
7233               return 0;
7234             if (val == W)
7235               return 1;
7236             break;
7237           }
7238         case 'R':
7239           {
7240             LONGEST L, U;
7241
7242             if (!ada_scan_number (name, p + 1, &L, &p)
7243                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7244               return 0;
7245             if (val >= L && val <= U)
7246               return 1;
7247             break;
7248           }
7249         case 'O':
7250           return 1;
7251         default:
7252           return 0;
7253         }
7254     }
7255 }
7256
7257 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7258
7259 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7260    ARG_TYPE, extract and return the value of one of its (non-static)
7261    fields.  FIELDNO says which field.   Differs from value_primitive_field
7262    only in that it can handle packed values of arbitrary type.  */
7263
7264 static struct value *
7265 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7266                            struct type *arg_type)
7267 {
7268   struct type *type;
7269
7270   arg_type = ada_check_typedef (arg_type);
7271   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7272
7273   /* Handle packed fields.  */
7274
7275   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7276     {
7277       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7278       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7279
7280       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7281                                              offset + bit_pos / 8,
7282                                              bit_pos % 8, bit_size, type);
7283     }
7284   else
7285     return value_primitive_field (arg1, offset, fieldno, arg_type);
7286 }
7287
7288 /* Find field with name NAME in object of type TYPE.  If found, 
7289    set the following for each argument that is non-null:
7290     - *FIELD_TYPE_P to the field's type; 
7291     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7292       an object of that type;
7293     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7294     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7295       0 otherwise;
7296    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7297    fields up to but not including the desired field, or by the total
7298    number of fields if not found.   A NULL value of NAME never
7299    matches; the function just counts visible fields in this case.
7300    
7301    Returns 1 if found, 0 otherwise.  */
7302
7303 static int
7304 find_struct_field (const char *name, struct type *type, int offset,
7305                    struct type **field_type_p,
7306                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7307                    int *index_p)
7308 {
7309   int i;
7310
7311   type = ada_check_typedef (type);
7312
7313   if (field_type_p != NULL)
7314     *field_type_p = NULL;
7315   if (byte_offset_p != NULL)
7316     *byte_offset_p = 0;
7317   if (bit_offset_p != NULL)
7318     *bit_offset_p = 0;
7319   if (bit_size_p != NULL)
7320     *bit_size_p = 0;
7321
7322   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7323     {
7324       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7325       int fld_offset = offset + bit_pos / 8;
7326       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7327
7328       if (t_field_name == NULL)
7329         continue;
7330
7331       else if (name != NULL && field_name_match (t_field_name, name))
7332         {
7333           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7334
7335           if (field_type_p != NULL)
7336             *field_type_p = TYPE_FIELD_TYPE (type, i);
7337           if (byte_offset_p != NULL)
7338             *byte_offset_p = fld_offset;
7339           if (bit_offset_p != NULL)
7340             *bit_offset_p = bit_pos % 8;
7341           if (bit_size_p != NULL)
7342             *bit_size_p = bit_size;
7343           return 1;
7344         }
7345       else if (ada_is_wrapper_field (type, i))
7346         {
7347           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7348                                  field_type_p, byte_offset_p, bit_offset_p,
7349                                  bit_size_p, index_p))
7350             return 1;
7351         }
7352       else if (ada_is_variant_part (type, i))
7353         {
7354           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7355              fixed type?? */
7356           int j;
7357           struct type *field_type
7358             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7359
7360           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7361             {
7362               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7363                                      fld_offset
7364                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7365                                      field_type_p, byte_offset_p,
7366                                      bit_offset_p, bit_size_p, index_p))
7367                 return 1;
7368             }
7369         }
7370       else if (index_p != NULL)
7371         *index_p += 1;
7372     }
7373   return 0;
7374 }
7375
7376 /* Number of user-visible fields in record type TYPE.  */
7377
7378 static int
7379 num_visible_fields (struct type *type)
7380 {
7381   int n;
7382
7383   n = 0;
7384   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7385   return n;
7386 }
7387
7388 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7389    and search in it assuming it has (class) type TYPE.
7390    If found, return value, else return NULL.
7391
7392    Searches recursively through wrapper fields (e.g., '_parent').  */
7393
7394 static struct value *
7395 ada_search_struct_field (const char *name, struct value *arg, int offset,
7396                          struct type *type)
7397 {
7398   int i;
7399
7400   type = ada_check_typedef (type);
7401   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7402     {
7403       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7404
7405       if (t_field_name == NULL)
7406         continue;
7407
7408       else if (field_name_match (t_field_name, name))
7409         return ada_value_primitive_field (arg, offset, i, type);
7410
7411       else if (ada_is_wrapper_field (type, i))
7412         {
7413           struct value *v =     /* Do not let indent join lines here.  */
7414             ada_search_struct_field (name, arg,
7415                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7416                                      TYPE_FIELD_TYPE (type, i));
7417
7418           if (v != NULL)
7419             return v;
7420         }
7421
7422       else if (ada_is_variant_part (type, i))
7423         {
7424           /* PNH: Do we ever get here?  See find_struct_field.  */
7425           int j;
7426           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7427                                                                         i));
7428           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7429
7430           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7431             {
7432               struct value *v = ada_search_struct_field /* Force line
7433                                                            break.  */
7434                 (name, arg,
7435                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7436                  TYPE_FIELD_TYPE (field_type, j));
7437
7438               if (v != NULL)
7439                 return v;
7440             }
7441         }
7442     }
7443   return NULL;
7444 }
7445
7446 static struct value *ada_index_struct_field_1 (int *, struct value *,
7447                                                int, struct type *);
7448
7449
7450 /* Return field #INDEX in ARG, where the index is that returned by
7451  * find_struct_field through its INDEX_P argument.  Adjust the address
7452  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7453  * If found, return value, else return NULL.  */
7454
7455 static struct value *
7456 ada_index_struct_field (int index, struct value *arg, int offset,
7457                         struct type *type)
7458 {
7459   return ada_index_struct_field_1 (&index, arg, offset, type);
7460 }
7461
7462
7463 /* Auxiliary function for ada_index_struct_field.  Like
7464  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7465  * *INDEX_P.  */
7466
7467 static struct value *
7468 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7469                           struct type *type)
7470 {
7471   int i;
7472   type = ada_check_typedef (type);
7473
7474   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7475     {
7476       if (TYPE_FIELD_NAME (type, i) == NULL)
7477         continue;
7478       else if (ada_is_wrapper_field (type, i))
7479         {
7480           struct value *v =     /* Do not let indent join lines here.  */
7481             ada_index_struct_field_1 (index_p, arg,
7482                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7483                                       TYPE_FIELD_TYPE (type, i));
7484
7485           if (v != NULL)
7486             return v;
7487         }
7488
7489       else if (ada_is_variant_part (type, i))
7490         {
7491           /* PNH: Do we ever get here?  See ada_search_struct_field,
7492              find_struct_field.  */
7493           error (_("Cannot assign this kind of variant record"));
7494         }
7495       else if (*index_p == 0)
7496         return ada_value_primitive_field (arg, offset, i, type);
7497       else
7498         *index_p -= 1;
7499     }
7500   return NULL;
7501 }
7502
7503 /* Given ARG, a value of type (pointer or reference to a)*
7504    structure/union, extract the component named NAME from the ultimate
7505    target structure/union and return it as a value with its
7506    appropriate type.
7507
7508    The routine searches for NAME among all members of the structure itself
7509    and (recursively) among all members of any wrapper members
7510    (e.g., '_parent').
7511
7512    If NO_ERR, then simply return NULL in case of error, rather than 
7513    calling error.  */
7514
7515 struct value *
7516 ada_value_struct_elt (struct value *arg, char *name, int no_err)
7517 {
7518   struct type *t, *t1;
7519   struct value *v;
7520
7521   v = NULL;
7522   t1 = t = ada_check_typedef (value_type (arg));
7523   if (TYPE_CODE (t) == TYPE_CODE_REF)
7524     {
7525       t1 = TYPE_TARGET_TYPE (t);
7526       if (t1 == NULL)
7527         goto BadValue;
7528       t1 = ada_check_typedef (t1);
7529       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7530         {
7531           arg = coerce_ref (arg);
7532           t = t1;
7533         }
7534     }
7535
7536   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7537     {
7538       t1 = TYPE_TARGET_TYPE (t);
7539       if (t1 == NULL)
7540         goto BadValue;
7541       t1 = ada_check_typedef (t1);
7542       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7543         {
7544           arg = value_ind (arg);
7545           t = t1;
7546         }
7547       else
7548         break;
7549     }
7550
7551   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7552     goto BadValue;
7553
7554   if (t1 == t)
7555     v = ada_search_struct_field (name, arg, 0, t);
7556   else
7557     {
7558       int bit_offset, bit_size, byte_offset;
7559       struct type *field_type;
7560       CORE_ADDR address;
7561
7562       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7563         address = value_address (ada_value_ind (arg));
7564       else
7565         address = value_address (ada_coerce_ref (arg));
7566
7567       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL, 1);
7568       if (find_struct_field (name, t1, 0,
7569                              &field_type, &byte_offset, &bit_offset,
7570                              &bit_size, NULL))
7571         {
7572           if (bit_size != 0)
7573             {
7574               if (TYPE_CODE (t) == TYPE_CODE_REF)
7575                 arg = ada_coerce_ref (arg);
7576               else
7577                 arg = ada_value_ind (arg);
7578               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7579                                                   bit_offset, bit_size,
7580                                                   field_type);
7581             }
7582           else
7583             v = value_at_lazy (field_type, address + byte_offset);
7584         }
7585     }
7586
7587   if (v != NULL || no_err)
7588     return v;
7589   else
7590     error (_("There is no member named %s."), name);
7591
7592  BadValue:
7593   if (no_err)
7594     return NULL;
7595   else
7596     error (_("Attempt to extract a component of "
7597              "a value that is not a record."));
7598 }
7599
7600 /* Return a string representation of type TYPE.  */
7601
7602 static std::string
7603 type_as_string (struct type *type)
7604 {
7605   struct ui_file *tmp_stream = mem_fileopen ();
7606   struct cleanup *old_chain;
7607
7608   tmp_stream = mem_fileopen ();
7609   old_chain = make_cleanup_ui_file_delete (tmp_stream);
7610
7611   type_print (type, "", tmp_stream, -1);
7612   std::string str = ui_file_as_string (tmp_stream);
7613
7614   do_cleanups (old_chain);
7615   return str;
7616 }
7617
7618 /* Given a type TYPE, look up the type of the component of type named NAME.
7619    If DISPP is non-null, add its byte displacement from the beginning of a
7620    structure (pointed to by a value) of type TYPE to *DISPP (does not
7621    work for packed fields).
7622
7623    Matches any field whose name has NAME as a prefix, possibly
7624    followed by "___".
7625
7626    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7627    be a (pointer or reference)+ to a struct or union, and the
7628    ultimate target type will be searched.
7629
7630    Looks recursively into variant clauses and parent types.
7631
7632    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7633    TYPE is not a type of the right kind.  */
7634
7635 static struct type *
7636 ada_lookup_struct_elt_type (struct type *type, char *name, int refok,
7637                             int noerr, int *dispp)
7638 {
7639   int i;
7640
7641   if (name == NULL)
7642     goto BadName;
7643
7644   if (refok && type != NULL)
7645     while (1)
7646       {
7647         type = ada_check_typedef (type);
7648         if (TYPE_CODE (type) != TYPE_CODE_PTR
7649             && TYPE_CODE (type) != TYPE_CODE_REF)
7650           break;
7651         type = TYPE_TARGET_TYPE (type);
7652       }
7653
7654   if (type == NULL
7655       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7656           && TYPE_CODE (type) != TYPE_CODE_UNION))
7657     {
7658       if (noerr)
7659         return NULL;
7660
7661       error (_("Type %s is not a structure or union type"),
7662              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7663     }
7664
7665   type = to_static_fixed_type (type);
7666
7667   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7668     {
7669       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7670       struct type *t;
7671       int disp;
7672
7673       if (t_field_name == NULL)
7674         continue;
7675
7676       else if (field_name_match (t_field_name, name))
7677         {
7678           if (dispp != NULL)
7679             *dispp += TYPE_FIELD_BITPOS (type, i) / 8;
7680           return TYPE_FIELD_TYPE (type, i);
7681         }
7682
7683       else if (ada_is_wrapper_field (type, i))
7684         {
7685           disp = 0;
7686           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7687                                           0, 1, &disp);
7688           if (t != NULL)
7689             {
7690               if (dispp != NULL)
7691                 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7692               return t;
7693             }
7694         }
7695
7696       else if (ada_is_variant_part (type, i))
7697         {
7698           int j;
7699           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7700                                                                         i));
7701
7702           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7703             {
7704               /* FIXME pnh 2008/01/26: We check for a field that is
7705                  NOT wrapped in a struct, since the compiler sometimes
7706                  generates these for unchecked variant types.  Revisit
7707                  if the compiler changes this practice.  */
7708               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7709               disp = 0;
7710               if (v_field_name != NULL 
7711                   && field_name_match (v_field_name, name))
7712                 t = TYPE_FIELD_TYPE (field_type, j);
7713               else
7714                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7715                                                                  j),
7716                                                 name, 0, 1, &disp);
7717
7718               if (t != NULL)
7719                 {
7720                   if (dispp != NULL)
7721                     *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7722                   return t;
7723                 }
7724             }
7725         }
7726
7727     }
7728
7729 BadName:
7730   if (!noerr)
7731     {
7732       const char *name_str = name != NULL ? name : _("<null>");
7733
7734       error (_("Type %s has no component named %s"),
7735              type_as_string (type).c_str (), name_str);
7736     }
7737
7738   return NULL;
7739 }
7740
7741 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7742    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7743    represents an unchecked union (that is, the variant part of a
7744    record that is named in an Unchecked_Union pragma).  */
7745
7746 static int
7747 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7748 {
7749   char *discrim_name = ada_variant_discrim_name (var_type);
7750
7751   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) 
7752           == NULL);
7753 }
7754
7755
7756 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7757    within a value of type OUTER_TYPE that is stored in GDB at
7758    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7759    numbering from 0) is applicable.  Returns -1 if none are.  */
7760
7761 int
7762 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7763                            const gdb_byte *outer_valaddr)
7764 {
7765   int others_clause;
7766   int i;
7767   char *discrim_name = ada_variant_discrim_name (var_type);
7768   struct value *outer;
7769   struct value *discrim;
7770   LONGEST discrim_val;
7771
7772   /* Using plain value_from_contents_and_address here causes problems
7773      because we will end up trying to resolve a type that is currently
7774      being constructed.  */
7775   outer = value_from_contents_and_address_unresolved (outer_type,
7776                                                       outer_valaddr, 0);
7777   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7778   if (discrim == NULL)
7779     return -1;
7780   discrim_val = value_as_long (discrim);
7781
7782   others_clause = -1;
7783   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7784     {
7785       if (ada_is_others_clause (var_type, i))
7786         others_clause = i;
7787       else if (ada_in_variant (discrim_val, var_type, i))
7788         return i;
7789     }
7790
7791   return others_clause;
7792 }
7793 \f
7794
7795
7796                                 /* Dynamic-Sized Records */
7797
7798 /* Strategy: The type ostensibly attached to a value with dynamic size
7799    (i.e., a size that is not statically recorded in the debugging
7800    data) does not accurately reflect the size or layout of the value.
7801    Our strategy is to convert these values to values with accurate,
7802    conventional types that are constructed on the fly.  */
7803
7804 /* There is a subtle and tricky problem here.  In general, we cannot
7805    determine the size of dynamic records without its data.  However,
7806    the 'struct value' data structure, which GDB uses to represent
7807    quantities in the inferior process (the target), requires the size
7808    of the type at the time of its allocation in order to reserve space
7809    for GDB's internal copy of the data.  That's why the
7810    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7811    rather than struct value*s.
7812
7813    However, GDB's internal history variables ($1, $2, etc.) are
7814    struct value*s containing internal copies of the data that are not, in
7815    general, the same as the data at their corresponding addresses in
7816    the target.  Fortunately, the types we give to these values are all
7817    conventional, fixed-size types (as per the strategy described
7818    above), so that we don't usually have to perform the
7819    'to_fixed_xxx_type' conversions to look at their values.
7820    Unfortunately, there is one exception: if one of the internal
7821    history variables is an array whose elements are unconstrained
7822    records, then we will need to create distinct fixed types for each
7823    element selected.  */
7824
7825 /* The upshot of all of this is that many routines take a (type, host
7826    address, target address) triple as arguments to represent a value.
7827    The host address, if non-null, is supposed to contain an internal
7828    copy of the relevant data; otherwise, the program is to consult the
7829    target at the target address.  */
7830
7831 /* Assuming that VAL0 represents a pointer value, the result of
7832    dereferencing it.  Differs from value_ind in its treatment of
7833    dynamic-sized types.  */
7834
7835 struct value *
7836 ada_value_ind (struct value *val0)
7837 {
7838   struct value *val = value_ind (val0);
7839
7840   if (ada_is_tagged_type (value_type (val), 0))
7841     val = ada_tag_value_at_base_address (val);
7842
7843   return ada_to_fixed_value (val);
7844 }
7845
7846 /* The value resulting from dereferencing any "reference to"
7847    qualifiers on VAL0.  */
7848
7849 static struct value *
7850 ada_coerce_ref (struct value *val0)
7851 {
7852   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7853     {
7854       struct value *val = val0;
7855
7856       val = coerce_ref (val);
7857
7858       if (ada_is_tagged_type (value_type (val), 0))
7859         val = ada_tag_value_at_base_address (val);
7860
7861       return ada_to_fixed_value (val);
7862     }
7863   else
7864     return val0;
7865 }
7866
7867 /* Return OFF rounded upward if necessary to a multiple of
7868    ALIGNMENT (a power of 2).  */
7869
7870 static unsigned int
7871 align_value (unsigned int off, unsigned int alignment)
7872 {
7873   return (off + alignment - 1) & ~(alignment - 1);
7874 }
7875
7876 /* Return the bit alignment required for field #F of template type TYPE.  */
7877
7878 static unsigned int
7879 field_alignment (struct type *type, int f)
7880 {
7881   const char *name = TYPE_FIELD_NAME (type, f);
7882   int len;
7883   int align_offset;
7884
7885   /* The field name should never be null, unless the debugging information
7886      is somehow malformed.  In this case, we assume the field does not
7887      require any alignment.  */
7888   if (name == NULL)
7889     return 1;
7890
7891   len = strlen (name);
7892
7893   if (!isdigit (name[len - 1]))
7894     return 1;
7895
7896   if (isdigit (name[len - 2]))
7897     align_offset = len - 2;
7898   else
7899     align_offset = len - 1;
7900
7901   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7902     return TARGET_CHAR_BIT;
7903
7904   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7905 }
7906
7907 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7908
7909 static struct symbol *
7910 ada_find_any_type_symbol (const char *name)
7911 {
7912   struct symbol *sym;
7913
7914   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7915   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7916     return sym;
7917
7918   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7919   return sym;
7920 }
7921
7922 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7923    solely for types defined by debug info, it will not search the GDB
7924    primitive types.  */
7925
7926 static struct type *
7927 ada_find_any_type (const char *name)
7928 {
7929   struct symbol *sym = ada_find_any_type_symbol (name);
7930
7931   if (sym != NULL)
7932     return SYMBOL_TYPE (sym);
7933
7934   return NULL;
7935 }
7936
7937 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7938    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7939    symbol, in which case it is returned.  Otherwise, this looks for
7940    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7941    Return symbol if found, and NULL otherwise.  */
7942
7943 struct symbol *
7944 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7945 {
7946   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7947   struct symbol *sym;
7948
7949   if (strstr (name, "___XR") != NULL)
7950      return name_sym;
7951
7952   sym = find_old_style_renaming_symbol (name, block);
7953
7954   if (sym != NULL)
7955     return sym;
7956
7957   /* Not right yet.  FIXME pnh 7/20/2007.  */
7958   sym = ada_find_any_type_symbol (name);
7959   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7960     return sym;
7961   else
7962     return NULL;
7963 }
7964
7965 static struct symbol *
7966 find_old_style_renaming_symbol (const char *name, const struct block *block)
7967 {
7968   const struct symbol *function_sym = block_linkage_function (block);
7969   char *rename;
7970
7971   if (function_sym != NULL)
7972     {
7973       /* If the symbol is defined inside a function, NAME is not fully
7974          qualified.  This means we need to prepend the function name
7975          as well as adding the ``___XR'' suffix to build the name of
7976          the associated renaming symbol.  */
7977       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
7978       /* Function names sometimes contain suffixes used
7979          for instance to qualify nested subprograms.  When building
7980          the XR type name, we need to make sure that this suffix is
7981          not included.  So do not include any suffix in the function
7982          name length below.  */
7983       int function_name_len = ada_name_prefix_len (function_name);
7984       const int rename_len = function_name_len + 2      /*  "__" */
7985         + strlen (name) + 6 /* "___XR\0" */ ;
7986
7987       /* Strip the suffix if necessary.  */
7988       ada_remove_trailing_digits (function_name, &function_name_len);
7989       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
7990       ada_remove_Xbn_suffix (function_name, &function_name_len);
7991
7992       /* Library-level functions are a special case, as GNAT adds
7993          a ``_ada_'' prefix to the function name to avoid namespace
7994          pollution.  However, the renaming symbols themselves do not
7995          have this prefix, so we need to skip this prefix if present.  */
7996       if (function_name_len > 5 /* "_ada_" */
7997           && strstr (function_name, "_ada_") == function_name)
7998         {
7999           function_name += 5;
8000           function_name_len -= 5;
8001         }
8002
8003       rename = (char *) alloca (rename_len * sizeof (char));
8004       strncpy (rename, function_name, function_name_len);
8005       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8006                  "__%s___XR", name);
8007     }
8008   else
8009     {
8010       const int rename_len = strlen (name) + 6;
8011
8012       rename = (char *) alloca (rename_len * sizeof (char));
8013       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8014     }
8015
8016   return ada_find_any_type_symbol (rename);
8017 }
8018
8019 /* Because of GNAT encoding conventions, several GDB symbols may match a
8020    given type name.  If the type denoted by TYPE0 is to be preferred to
8021    that of TYPE1 for purposes of type printing, return non-zero;
8022    otherwise return 0.  */
8023
8024 int
8025 ada_prefer_type (struct type *type0, struct type *type1)
8026 {
8027   if (type1 == NULL)
8028     return 1;
8029   else if (type0 == NULL)
8030     return 0;
8031   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8032     return 1;
8033   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8034     return 0;
8035   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8036     return 1;
8037   else if (ada_is_constrained_packed_array_type (type0))
8038     return 1;
8039   else if (ada_is_array_descriptor_type (type0)
8040            && !ada_is_array_descriptor_type (type1))
8041     return 1;
8042   else
8043     {
8044       const char *type0_name = type_name_no_tag (type0);
8045       const char *type1_name = type_name_no_tag (type1);
8046
8047       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8048           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8049         return 1;
8050     }
8051   return 0;
8052 }
8053
8054 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
8055    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
8056
8057 const char *
8058 ada_type_name (struct type *type)
8059 {
8060   if (type == NULL)
8061     return NULL;
8062   else if (TYPE_NAME (type) != NULL)
8063     return TYPE_NAME (type);
8064   else
8065     return TYPE_TAG_NAME (type);
8066 }
8067
8068 /* Search the list of "descriptive" types associated to TYPE for a type
8069    whose name is NAME.  */
8070
8071 static struct type *
8072 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8073 {
8074   struct type *result, *tmp;
8075
8076   if (ada_ignore_descriptive_types_p)
8077     return NULL;
8078
8079   /* If there no descriptive-type info, then there is no parallel type
8080      to be found.  */
8081   if (!HAVE_GNAT_AUX_INFO (type))
8082     return NULL;
8083
8084   result = TYPE_DESCRIPTIVE_TYPE (type);
8085   while (result != NULL)
8086     {
8087       const char *result_name = ada_type_name (result);
8088
8089       if (result_name == NULL)
8090         {
8091           warning (_("unexpected null name on descriptive type"));
8092           return NULL;
8093         }
8094
8095       /* If the names match, stop.  */
8096       if (strcmp (result_name, name) == 0)
8097         break;
8098
8099       /* Otherwise, look at the next item on the list, if any.  */
8100       if (HAVE_GNAT_AUX_INFO (result))
8101         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8102       else
8103         tmp = NULL;
8104
8105       /* If not found either, try after having resolved the typedef.  */
8106       if (tmp != NULL)
8107         result = tmp;
8108       else
8109         {
8110           result = check_typedef (result);
8111           if (HAVE_GNAT_AUX_INFO (result))
8112             result = TYPE_DESCRIPTIVE_TYPE (result);
8113           else
8114             result = NULL;
8115         }
8116     }
8117
8118   /* If we didn't find a match, see whether this is a packed array.  With
8119      older compilers, the descriptive type information is either absent or
8120      irrelevant when it comes to packed arrays so the above lookup fails.
8121      Fall back to using a parallel lookup by name in this case.  */
8122   if (result == NULL && ada_is_constrained_packed_array_type (type))
8123     return ada_find_any_type (name);
8124
8125   return result;
8126 }
8127
8128 /* Find a parallel type to TYPE with the specified NAME, using the
8129    descriptive type taken from the debugging information, if available,
8130    and otherwise using the (slower) name-based method.  */
8131
8132 static struct type *
8133 ada_find_parallel_type_with_name (struct type *type, const char *name)
8134 {
8135   struct type *result = NULL;
8136
8137   if (HAVE_GNAT_AUX_INFO (type))
8138     result = find_parallel_type_by_descriptive_type (type, name);
8139   else
8140     result = ada_find_any_type (name);
8141
8142   return result;
8143 }
8144
8145 /* Same as above, but specify the name of the parallel type by appending
8146    SUFFIX to the name of TYPE.  */
8147
8148 struct type *
8149 ada_find_parallel_type (struct type *type, const char *suffix)
8150 {
8151   char *name;
8152   const char *type_name = ada_type_name (type);
8153   int len;
8154
8155   if (type_name == NULL)
8156     return NULL;
8157
8158   len = strlen (type_name);
8159
8160   name = (char *) alloca (len + strlen (suffix) + 1);
8161
8162   strcpy (name, type_name);
8163   strcpy (name + len, suffix);
8164
8165   return ada_find_parallel_type_with_name (type, name);
8166 }
8167
8168 /* If TYPE is a variable-size record type, return the corresponding template
8169    type describing its fields.  Otherwise, return NULL.  */
8170
8171 static struct type *
8172 dynamic_template_type (struct type *type)
8173 {
8174   type = ada_check_typedef (type);
8175
8176   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8177       || ada_type_name (type) == NULL)
8178     return NULL;
8179   else
8180     {
8181       int len = strlen (ada_type_name (type));
8182
8183       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8184         return type;
8185       else
8186         return ada_find_parallel_type (type, "___XVE");
8187     }
8188 }
8189
8190 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8191    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8192
8193 static int
8194 is_dynamic_field (struct type *templ_type, int field_num)
8195 {
8196   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8197
8198   return name != NULL
8199     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8200     && strstr (name, "___XVL") != NULL;
8201 }
8202
8203 /* The index of the variant field of TYPE, or -1 if TYPE does not
8204    represent a variant record type.  */
8205
8206 static int
8207 variant_field_index (struct type *type)
8208 {
8209   int f;
8210
8211   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8212     return -1;
8213
8214   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8215     {
8216       if (ada_is_variant_part (type, f))
8217         return f;
8218     }
8219   return -1;
8220 }
8221
8222 /* A record type with no fields.  */
8223
8224 static struct type *
8225 empty_record (struct type *templ)
8226 {
8227   struct type *type = alloc_type_copy (templ);
8228
8229   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8230   TYPE_NFIELDS (type) = 0;
8231   TYPE_FIELDS (type) = NULL;
8232   INIT_CPLUS_SPECIFIC (type);
8233   TYPE_NAME (type) = "<empty>";
8234   TYPE_TAG_NAME (type) = NULL;
8235   TYPE_LENGTH (type) = 0;
8236   return type;
8237 }
8238
8239 /* An ordinary record type (with fixed-length fields) that describes
8240    the value of type TYPE at VALADDR or ADDRESS (see comments at
8241    the beginning of this section) VAL according to GNAT conventions.
8242    DVAL0 should describe the (portion of a) record that contains any
8243    necessary discriminants.  It should be NULL if value_type (VAL) is
8244    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8245    variant field (unless unchecked) is replaced by a particular branch
8246    of the variant.
8247
8248    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8249    length are not statically known are discarded.  As a consequence,
8250    VALADDR, ADDRESS and DVAL0 are ignored.
8251
8252    NOTE: Limitations: For now, we assume that dynamic fields and
8253    variants occupy whole numbers of bytes.  However, they need not be
8254    byte-aligned.  */
8255
8256 struct type *
8257 ada_template_to_fixed_record_type_1 (struct type *type,
8258                                      const gdb_byte *valaddr,
8259                                      CORE_ADDR address, struct value *dval0,
8260                                      int keep_dynamic_fields)
8261 {
8262   struct value *mark = value_mark ();
8263   struct value *dval;
8264   struct type *rtype;
8265   int nfields, bit_len;
8266   int variant_field;
8267   long off;
8268   int fld_bit_len;
8269   int f;
8270
8271   /* Compute the number of fields in this record type that are going
8272      to be processed: unless keep_dynamic_fields, this includes only
8273      fields whose position and length are static will be processed.  */
8274   if (keep_dynamic_fields)
8275     nfields = TYPE_NFIELDS (type);
8276   else
8277     {
8278       nfields = 0;
8279       while (nfields < TYPE_NFIELDS (type)
8280              && !ada_is_variant_part (type, nfields)
8281              && !is_dynamic_field (type, nfields))
8282         nfields++;
8283     }
8284
8285   rtype = alloc_type_copy (type);
8286   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8287   INIT_CPLUS_SPECIFIC (rtype);
8288   TYPE_NFIELDS (rtype) = nfields;
8289   TYPE_FIELDS (rtype) = (struct field *)
8290     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8291   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8292   TYPE_NAME (rtype) = ada_type_name (type);
8293   TYPE_TAG_NAME (rtype) = NULL;
8294   TYPE_FIXED_INSTANCE (rtype) = 1;
8295
8296   off = 0;
8297   bit_len = 0;
8298   variant_field = -1;
8299
8300   for (f = 0; f < nfields; f += 1)
8301     {
8302       off = align_value (off, field_alignment (type, f))
8303         + TYPE_FIELD_BITPOS (type, f);
8304       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8305       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8306
8307       if (ada_is_variant_part (type, f))
8308         {
8309           variant_field = f;
8310           fld_bit_len = 0;
8311         }
8312       else if (is_dynamic_field (type, f))
8313         {
8314           const gdb_byte *field_valaddr = valaddr;
8315           CORE_ADDR field_address = address;
8316           struct type *field_type =
8317             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8318
8319           if (dval0 == NULL)
8320             {
8321               /* rtype's length is computed based on the run-time
8322                  value of discriminants.  If the discriminants are not
8323                  initialized, the type size may be completely bogus and
8324                  GDB may fail to allocate a value for it.  So check the
8325                  size first before creating the value.  */
8326               ada_ensure_varsize_limit (rtype);
8327               /* Using plain value_from_contents_and_address here
8328                  causes problems because we will end up trying to
8329                  resolve a type that is currently being
8330                  constructed.  */
8331               dval = value_from_contents_and_address_unresolved (rtype,
8332                                                                  valaddr,
8333                                                                  address);
8334               rtype = value_type (dval);
8335             }
8336           else
8337             dval = dval0;
8338
8339           /* If the type referenced by this field is an aligner type, we need
8340              to unwrap that aligner type, because its size might not be set.
8341              Keeping the aligner type would cause us to compute the wrong
8342              size for this field, impacting the offset of the all the fields
8343              that follow this one.  */
8344           if (ada_is_aligner_type (field_type))
8345             {
8346               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8347
8348               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8349               field_address = cond_offset_target (field_address, field_offset);
8350               field_type = ada_aligned_type (field_type);
8351             }
8352
8353           field_valaddr = cond_offset_host (field_valaddr,
8354                                             off / TARGET_CHAR_BIT);
8355           field_address = cond_offset_target (field_address,
8356                                               off / TARGET_CHAR_BIT);
8357
8358           /* Get the fixed type of the field.  Note that, in this case,
8359              we do not want to get the real type out of the tag: if
8360              the current field is the parent part of a tagged record,
8361              we will get the tag of the object.  Clearly wrong: the real
8362              type of the parent is not the real type of the child.  We
8363              would end up in an infinite loop.  */
8364           field_type = ada_get_base_type (field_type);
8365           field_type = ada_to_fixed_type (field_type, field_valaddr,
8366                                           field_address, dval, 0);
8367           /* If the field size is already larger than the maximum
8368              object size, then the record itself will necessarily
8369              be larger than the maximum object size.  We need to make
8370              this check now, because the size might be so ridiculously
8371              large (due to an uninitialized variable in the inferior)
8372              that it would cause an overflow when adding it to the
8373              record size.  */
8374           ada_ensure_varsize_limit (field_type);
8375
8376           TYPE_FIELD_TYPE (rtype, f) = field_type;
8377           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8378           /* The multiplication can potentially overflow.  But because
8379              the field length has been size-checked just above, and
8380              assuming that the maximum size is a reasonable value,
8381              an overflow should not happen in practice.  So rather than
8382              adding overflow recovery code to this already complex code,
8383              we just assume that it's not going to happen.  */
8384           fld_bit_len =
8385             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8386         }
8387       else
8388         {
8389           /* Note: If this field's type is a typedef, it is important
8390              to preserve the typedef layer.
8391
8392              Otherwise, we might be transforming a typedef to a fat
8393              pointer (encoding a pointer to an unconstrained array),
8394              into a basic fat pointer (encoding an unconstrained
8395              array).  As both types are implemented using the same
8396              structure, the typedef is the only clue which allows us
8397              to distinguish between the two options.  Stripping it
8398              would prevent us from printing this field appropriately.  */
8399           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8400           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8401           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8402             fld_bit_len =
8403               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8404           else
8405             {
8406               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8407
8408               /* We need to be careful of typedefs when computing
8409                  the length of our field.  If this is a typedef,
8410                  get the length of the target type, not the length
8411                  of the typedef.  */
8412               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8413                 field_type = ada_typedef_target_type (field_type);
8414
8415               fld_bit_len =
8416                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8417             }
8418         }
8419       if (off + fld_bit_len > bit_len)
8420         bit_len = off + fld_bit_len;
8421       off += fld_bit_len;
8422       TYPE_LENGTH (rtype) =
8423         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8424     }
8425
8426   /* We handle the variant part, if any, at the end because of certain
8427      odd cases in which it is re-ordered so as NOT to be the last field of
8428      the record.  This can happen in the presence of representation
8429      clauses.  */
8430   if (variant_field >= 0)
8431     {
8432       struct type *branch_type;
8433
8434       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8435
8436       if (dval0 == NULL)
8437         {
8438           /* Using plain value_from_contents_and_address here causes
8439              problems because we will end up trying to resolve a type
8440              that is currently being constructed.  */
8441           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8442                                                              address);
8443           rtype = value_type (dval);
8444         }
8445       else
8446         dval = dval0;
8447
8448       branch_type =
8449         to_fixed_variant_branch_type
8450         (TYPE_FIELD_TYPE (type, variant_field),
8451          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8452          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8453       if (branch_type == NULL)
8454         {
8455           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8456             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8457           TYPE_NFIELDS (rtype) -= 1;
8458         }
8459       else
8460         {
8461           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8462           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8463           fld_bit_len =
8464             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8465             TARGET_CHAR_BIT;
8466           if (off + fld_bit_len > bit_len)
8467             bit_len = off + fld_bit_len;
8468           TYPE_LENGTH (rtype) =
8469             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8470         }
8471     }
8472
8473   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8474      should contain the alignment of that record, which should be a strictly
8475      positive value.  If null or negative, then something is wrong, most
8476      probably in the debug info.  In that case, we don't round up the size
8477      of the resulting type.  If this record is not part of another structure,
8478      the current RTYPE length might be good enough for our purposes.  */
8479   if (TYPE_LENGTH (type) <= 0)
8480     {
8481       if (TYPE_NAME (rtype))
8482         warning (_("Invalid type size for `%s' detected: %d."),
8483                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8484       else
8485         warning (_("Invalid type size for <unnamed> detected: %d."),
8486                  TYPE_LENGTH (type));
8487     }
8488   else
8489     {
8490       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8491                                          TYPE_LENGTH (type));
8492     }
8493
8494   value_free_to_mark (mark);
8495   if (TYPE_LENGTH (rtype) > varsize_limit)
8496     error (_("record type with dynamic size is larger than varsize-limit"));
8497   return rtype;
8498 }
8499
8500 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8501    of 1.  */
8502
8503 static struct type *
8504 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8505                                CORE_ADDR address, struct value *dval0)
8506 {
8507   return ada_template_to_fixed_record_type_1 (type, valaddr,
8508                                               address, dval0, 1);
8509 }
8510
8511 /* An ordinary record type in which ___XVL-convention fields and
8512    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8513    static approximations, containing all possible fields.  Uses
8514    no runtime values.  Useless for use in values, but that's OK,
8515    since the results are used only for type determinations.   Works on both
8516    structs and unions.  Representation note: to save space, we memorize
8517    the result of this function in the TYPE_TARGET_TYPE of the
8518    template type.  */
8519
8520 static struct type *
8521 template_to_static_fixed_type (struct type *type0)
8522 {
8523   struct type *type;
8524   int nfields;
8525   int f;
8526
8527   /* No need no do anything if the input type is already fixed.  */
8528   if (TYPE_FIXED_INSTANCE (type0))
8529     return type0;
8530
8531   /* Likewise if we already have computed the static approximation.  */
8532   if (TYPE_TARGET_TYPE (type0) != NULL)
8533     return TYPE_TARGET_TYPE (type0);
8534
8535   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8536   type = type0;
8537   nfields = TYPE_NFIELDS (type0);
8538
8539   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8540      recompute all over next time.  */
8541   TYPE_TARGET_TYPE (type0) = type;
8542
8543   for (f = 0; f < nfields; f += 1)
8544     {
8545       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8546       struct type *new_type;
8547
8548       if (is_dynamic_field (type0, f))
8549         {
8550           field_type = ada_check_typedef (field_type);
8551           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8552         }
8553       else
8554         new_type = static_unwrap_type (field_type);
8555
8556       if (new_type != field_type)
8557         {
8558           /* Clone TYPE0 only the first time we get a new field type.  */
8559           if (type == type0)
8560             {
8561               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8562               TYPE_CODE (type) = TYPE_CODE (type0);
8563               INIT_CPLUS_SPECIFIC (type);
8564               TYPE_NFIELDS (type) = nfields;
8565               TYPE_FIELDS (type) = (struct field *)
8566                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8567               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8568                       sizeof (struct field) * nfields);
8569               TYPE_NAME (type) = ada_type_name (type0);
8570               TYPE_TAG_NAME (type) = NULL;
8571               TYPE_FIXED_INSTANCE (type) = 1;
8572               TYPE_LENGTH (type) = 0;
8573             }
8574           TYPE_FIELD_TYPE (type, f) = new_type;
8575           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8576         }
8577     }
8578
8579   return type;
8580 }
8581
8582 /* Given an object of type TYPE whose contents are at VALADDR and
8583    whose address in memory is ADDRESS, returns a revision of TYPE,
8584    which should be a non-dynamic-sized record, in which the variant
8585    part, if any, is replaced with the appropriate branch.  Looks
8586    for discriminant values in DVAL0, which can be NULL if the record
8587    contains the necessary discriminant values.  */
8588
8589 static struct type *
8590 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8591                                    CORE_ADDR address, struct value *dval0)
8592 {
8593   struct value *mark = value_mark ();
8594   struct value *dval;
8595   struct type *rtype;
8596   struct type *branch_type;
8597   int nfields = TYPE_NFIELDS (type);
8598   int variant_field = variant_field_index (type);
8599
8600   if (variant_field == -1)
8601     return type;
8602
8603   if (dval0 == NULL)
8604     {
8605       dval = value_from_contents_and_address (type, valaddr, address);
8606       type = value_type (dval);
8607     }
8608   else
8609     dval = dval0;
8610
8611   rtype = alloc_type_copy (type);
8612   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8613   INIT_CPLUS_SPECIFIC (rtype);
8614   TYPE_NFIELDS (rtype) = nfields;
8615   TYPE_FIELDS (rtype) =
8616     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8617   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8618           sizeof (struct field) * nfields);
8619   TYPE_NAME (rtype) = ada_type_name (type);
8620   TYPE_TAG_NAME (rtype) = NULL;
8621   TYPE_FIXED_INSTANCE (rtype) = 1;
8622   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8623
8624   branch_type = to_fixed_variant_branch_type
8625     (TYPE_FIELD_TYPE (type, variant_field),
8626      cond_offset_host (valaddr,
8627                        TYPE_FIELD_BITPOS (type, variant_field)
8628                        / TARGET_CHAR_BIT),
8629      cond_offset_target (address,
8630                          TYPE_FIELD_BITPOS (type, variant_field)
8631                          / TARGET_CHAR_BIT), dval);
8632   if (branch_type == NULL)
8633     {
8634       int f;
8635
8636       for (f = variant_field + 1; f < nfields; f += 1)
8637         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8638       TYPE_NFIELDS (rtype) -= 1;
8639     }
8640   else
8641     {
8642       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8643       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8644       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8645       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8646     }
8647   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8648
8649   value_free_to_mark (mark);
8650   return rtype;
8651 }
8652
8653 /* An ordinary record type (with fixed-length fields) that describes
8654    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8655    beginning of this section].   Any necessary discriminants' values
8656    should be in DVAL, a record value; it may be NULL if the object
8657    at ADDR itself contains any necessary discriminant values.
8658    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8659    values from the record are needed.  Except in the case that DVAL,
8660    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8661    unchecked) is replaced by a particular branch of the variant.
8662
8663    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8664    is questionable and may be removed.  It can arise during the
8665    processing of an unconstrained-array-of-record type where all the
8666    variant branches have exactly the same size.  This is because in
8667    such cases, the compiler does not bother to use the XVS convention
8668    when encoding the record.  I am currently dubious of this
8669    shortcut and suspect the compiler should be altered.  FIXME.  */
8670
8671 static struct type *
8672 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8673                       CORE_ADDR address, struct value *dval)
8674 {
8675   struct type *templ_type;
8676
8677   if (TYPE_FIXED_INSTANCE (type0))
8678     return type0;
8679
8680   templ_type = dynamic_template_type (type0);
8681
8682   if (templ_type != NULL)
8683     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8684   else if (variant_field_index (type0) >= 0)
8685     {
8686       if (dval == NULL && valaddr == NULL && address == 0)
8687         return type0;
8688       return to_record_with_fixed_variant_part (type0, valaddr, address,
8689                                                 dval);
8690     }
8691   else
8692     {
8693       TYPE_FIXED_INSTANCE (type0) = 1;
8694       return type0;
8695     }
8696
8697 }
8698
8699 /* An ordinary record type (with fixed-length fields) that describes
8700    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8701    union type.  Any necessary discriminants' values should be in DVAL,
8702    a record value.  That is, this routine selects the appropriate
8703    branch of the union at ADDR according to the discriminant value
8704    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8705    it represents a variant subject to a pragma Unchecked_Union.  */
8706
8707 static struct type *
8708 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8709                               CORE_ADDR address, struct value *dval)
8710 {
8711   int which;
8712   struct type *templ_type;
8713   struct type *var_type;
8714
8715   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8716     var_type = TYPE_TARGET_TYPE (var_type0);
8717   else
8718     var_type = var_type0;
8719
8720   templ_type = ada_find_parallel_type (var_type, "___XVU");
8721
8722   if (templ_type != NULL)
8723     var_type = templ_type;
8724
8725   if (is_unchecked_variant (var_type, value_type (dval)))
8726       return var_type0;
8727   which =
8728     ada_which_variant_applies (var_type,
8729                                value_type (dval), value_contents (dval));
8730
8731   if (which < 0)
8732     return empty_record (var_type);
8733   else if (is_dynamic_field (var_type, which))
8734     return to_fixed_record_type
8735       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8736        valaddr, address, dval);
8737   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8738     return
8739       to_fixed_record_type
8740       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8741   else
8742     return TYPE_FIELD_TYPE (var_type, which);
8743 }
8744
8745 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8746    ENCODING_TYPE, a type following the GNAT conventions for discrete
8747    type encodings, only carries redundant information.  */
8748
8749 static int
8750 ada_is_redundant_range_encoding (struct type *range_type,
8751                                  struct type *encoding_type)
8752 {
8753   struct type *fixed_range_type;
8754   const char *bounds_str;
8755   int n;
8756   LONGEST lo, hi;
8757
8758   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8759
8760   if (TYPE_CODE (get_base_type (range_type))
8761       != TYPE_CODE (get_base_type (encoding_type)))
8762     {
8763       /* The compiler probably used a simple base type to describe
8764          the range type instead of the range's actual base type,
8765          expecting us to get the real base type from the encoding
8766          anyway.  In this situation, the encoding cannot be ignored
8767          as redundant.  */
8768       return 0;
8769     }
8770
8771   if (is_dynamic_type (range_type))
8772     return 0;
8773
8774   if (TYPE_NAME (encoding_type) == NULL)
8775     return 0;
8776
8777   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8778   if (bounds_str == NULL)
8779     return 0;
8780
8781   n = 8; /* Skip "___XDLU_".  */
8782   if (!ada_scan_number (bounds_str, n, &lo, &n))
8783     return 0;
8784   if (TYPE_LOW_BOUND (range_type) != lo)
8785     return 0;
8786
8787   n += 2; /* Skip the "__" separator between the two bounds.  */
8788   if (!ada_scan_number (bounds_str, n, &hi, &n))
8789     return 0;
8790   if (TYPE_HIGH_BOUND (range_type) != hi)
8791     return 0;
8792
8793   return 1;
8794 }
8795
8796 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8797    a type following the GNAT encoding for describing array type
8798    indices, only carries redundant information.  */
8799
8800 static int
8801 ada_is_redundant_index_type_desc (struct type *array_type,
8802                                   struct type *desc_type)
8803 {
8804   struct type *this_layer = check_typedef (array_type);
8805   int i;
8806
8807   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8808     {
8809       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8810                                             TYPE_FIELD_TYPE (desc_type, i)))
8811         return 0;
8812       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8813     }
8814
8815   return 1;
8816 }
8817
8818 /* Assuming that TYPE0 is an array type describing the type of a value
8819    at ADDR, and that DVAL describes a record containing any
8820    discriminants used in TYPE0, returns a type for the value that
8821    contains no dynamic components (that is, no components whose sizes
8822    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8823    true, gives an error message if the resulting type's size is over
8824    varsize_limit.  */
8825
8826 static struct type *
8827 to_fixed_array_type (struct type *type0, struct value *dval,
8828                      int ignore_too_big)
8829 {
8830   struct type *index_type_desc;
8831   struct type *result;
8832   int constrained_packed_array_p;
8833   static const char *xa_suffix = "___XA";
8834
8835   type0 = ada_check_typedef (type0);
8836   if (TYPE_FIXED_INSTANCE (type0))
8837     return type0;
8838
8839   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8840   if (constrained_packed_array_p)
8841     type0 = decode_constrained_packed_array_type (type0);
8842
8843   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8844
8845   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8846      encoding suffixed with 'P' may still be generated.  If so,
8847      it should be used to find the XA type.  */
8848
8849   if (index_type_desc == NULL)
8850     {
8851       const char *type_name = ada_type_name (type0);
8852
8853       if (type_name != NULL)
8854         {
8855           const int len = strlen (type_name);
8856           char *name = (char *) alloca (len + strlen (xa_suffix));
8857
8858           if (type_name[len - 1] == 'P')
8859             {
8860               strcpy (name, type_name);
8861               strcpy (name + len - 1, xa_suffix);
8862               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8863             }
8864         }
8865     }
8866
8867   ada_fixup_array_indexes_type (index_type_desc);
8868   if (index_type_desc != NULL
8869       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8870     {
8871       /* Ignore this ___XA parallel type, as it does not bring any
8872          useful information.  This allows us to avoid creating fixed
8873          versions of the array's index types, which would be identical
8874          to the original ones.  This, in turn, can also help avoid
8875          the creation of fixed versions of the array itself.  */
8876       index_type_desc = NULL;
8877     }
8878
8879   if (index_type_desc == NULL)
8880     {
8881       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8882
8883       /* NOTE: elt_type---the fixed version of elt_type0---should never
8884          depend on the contents of the array in properly constructed
8885          debugging data.  */
8886       /* Create a fixed version of the array element type.
8887          We're not providing the address of an element here,
8888          and thus the actual object value cannot be inspected to do
8889          the conversion.  This should not be a problem, since arrays of
8890          unconstrained objects are not allowed.  In particular, all
8891          the elements of an array of a tagged type should all be of
8892          the same type specified in the debugging info.  No need to
8893          consult the object tag.  */
8894       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8895
8896       /* Make sure we always create a new array type when dealing with
8897          packed array types, since we're going to fix-up the array
8898          type length and element bitsize a little further down.  */
8899       if (elt_type0 == elt_type && !constrained_packed_array_p)
8900         result = type0;
8901       else
8902         result = create_array_type (alloc_type_copy (type0),
8903                                     elt_type, TYPE_INDEX_TYPE (type0));
8904     }
8905   else
8906     {
8907       int i;
8908       struct type *elt_type0;
8909
8910       elt_type0 = type0;
8911       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8912         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8913
8914       /* NOTE: result---the fixed version of elt_type0---should never
8915          depend on the contents of the array in properly constructed
8916          debugging data.  */
8917       /* Create a fixed version of the array element type.
8918          We're not providing the address of an element here,
8919          and thus the actual object value cannot be inspected to do
8920          the conversion.  This should not be a problem, since arrays of
8921          unconstrained objects are not allowed.  In particular, all
8922          the elements of an array of a tagged type should all be of
8923          the same type specified in the debugging info.  No need to
8924          consult the object tag.  */
8925       result =
8926         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8927
8928       elt_type0 = type0;
8929       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8930         {
8931           struct type *range_type =
8932             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8933
8934           result = create_array_type (alloc_type_copy (elt_type0),
8935                                       result, range_type);
8936           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8937         }
8938       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8939         error (_("array type with dynamic size is larger than varsize-limit"));
8940     }
8941
8942   /* We want to preserve the type name.  This can be useful when
8943      trying to get the type name of a value that has already been
8944      printed (for instance, if the user did "print VAR; whatis $".  */
8945   TYPE_NAME (result) = TYPE_NAME (type0);
8946
8947   if (constrained_packed_array_p)
8948     {
8949       /* So far, the resulting type has been created as if the original
8950          type was a regular (non-packed) array type.  As a result, the
8951          bitsize of the array elements needs to be set again, and the array
8952          length needs to be recomputed based on that bitsize.  */
8953       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8954       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8955
8956       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8957       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8958       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8959         TYPE_LENGTH (result)++;
8960     }
8961
8962   TYPE_FIXED_INSTANCE (result) = 1;
8963   return result;
8964 }
8965
8966
8967 /* A standard type (containing no dynamically sized components)
8968    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8969    DVAL describes a record containing any discriminants used in TYPE0,
8970    and may be NULL if there are none, or if the object of type TYPE at
8971    ADDRESS or in VALADDR contains these discriminants.
8972    
8973    If CHECK_TAG is not null, in the case of tagged types, this function
8974    attempts to locate the object's tag and use it to compute the actual
8975    type.  However, when ADDRESS is null, we cannot use it to determine the
8976    location of the tag, and therefore compute the tagged type's actual type.
8977    So we return the tagged type without consulting the tag.  */
8978    
8979 static struct type *
8980 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8981                    CORE_ADDR address, struct value *dval, int check_tag)
8982 {
8983   type = ada_check_typedef (type);
8984   switch (TYPE_CODE (type))
8985     {
8986     default:
8987       return type;
8988     case TYPE_CODE_STRUCT:
8989       {
8990         struct type *static_type = to_static_fixed_type (type);
8991         struct type *fixed_record_type =
8992           to_fixed_record_type (type, valaddr, address, NULL);
8993
8994         /* If STATIC_TYPE is a tagged type and we know the object's address,
8995            then we can determine its tag, and compute the object's actual
8996            type from there.  Note that we have to use the fixed record
8997            type (the parent part of the record may have dynamic fields
8998            and the way the location of _tag is expressed may depend on
8999            them).  */
9000
9001         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9002           {
9003             struct value *tag =
9004               value_tag_from_contents_and_address
9005               (fixed_record_type,
9006                valaddr,
9007                address);
9008             struct type *real_type = type_from_tag (tag);
9009             struct value *obj =
9010               value_from_contents_and_address (fixed_record_type,
9011                                                valaddr,
9012                                                address);
9013             fixed_record_type = value_type (obj);
9014             if (real_type != NULL)
9015               return to_fixed_record_type
9016                 (real_type, NULL,
9017                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9018           }
9019
9020         /* Check to see if there is a parallel ___XVZ variable.
9021            If there is, then it provides the actual size of our type.  */
9022         else if (ada_type_name (fixed_record_type) != NULL)
9023           {
9024             const char *name = ada_type_name (fixed_record_type);
9025             char *xvz_name
9026               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9027             int xvz_found = 0;
9028             LONGEST size;
9029
9030             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9031             size = get_int_var_value (xvz_name, &xvz_found);
9032             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9033               {
9034                 fixed_record_type = copy_type (fixed_record_type);
9035                 TYPE_LENGTH (fixed_record_type) = size;
9036
9037                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9038                    observed this when the debugging info is STABS, and
9039                    apparently it is something that is hard to fix.
9040
9041                    In practice, we don't need the actual type definition
9042                    at all, because the presence of the XVZ variable allows us
9043                    to assume that there must be a XVS type as well, which we
9044                    should be able to use later, when we need the actual type
9045                    definition.
9046
9047                    In the meantime, pretend that the "fixed" type we are
9048                    returning is NOT a stub, because this can cause trouble
9049                    when using this type to create new types targeting it.
9050                    Indeed, the associated creation routines often check
9051                    whether the target type is a stub and will try to replace
9052                    it, thus using a type with the wrong size.  This, in turn,
9053                    might cause the new type to have the wrong size too.
9054                    Consider the case of an array, for instance, where the size
9055                    of the array is computed from the number of elements in
9056                    our array multiplied by the size of its element.  */
9057                 TYPE_STUB (fixed_record_type) = 0;
9058               }
9059           }
9060         return fixed_record_type;
9061       }
9062     case TYPE_CODE_ARRAY:
9063       return to_fixed_array_type (type, dval, 1);
9064     case TYPE_CODE_UNION:
9065       if (dval == NULL)
9066         return type;
9067       else
9068         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9069     }
9070 }
9071
9072 /* The same as ada_to_fixed_type_1, except that it preserves the type
9073    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9074
9075    The typedef layer needs be preserved in order to differentiate between
9076    arrays and array pointers when both types are implemented using the same
9077    fat pointer.  In the array pointer case, the pointer is encoded as
9078    a typedef of the pointer type.  For instance, considering:
9079
9080           type String_Access is access String;
9081           S1 : String_Access := null;
9082
9083    To the debugger, S1 is defined as a typedef of type String.  But
9084    to the user, it is a pointer.  So if the user tries to print S1,
9085    we should not dereference the array, but print the array address
9086    instead.
9087
9088    If we didn't preserve the typedef layer, we would lose the fact that
9089    the type is to be presented as a pointer (needs de-reference before
9090    being printed).  And we would also use the source-level type name.  */
9091
9092 struct type *
9093 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9094                    CORE_ADDR address, struct value *dval, int check_tag)
9095
9096 {
9097   struct type *fixed_type =
9098     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9099
9100   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9101       then preserve the typedef layer.
9102
9103       Implementation note: We can only check the main-type portion of
9104       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9105       from TYPE now returns a type that has the same instance flags
9106       as TYPE.  For instance, if TYPE is a "typedef const", and its
9107       target type is a "struct", then the typedef elimination will return
9108       a "const" version of the target type.  See check_typedef for more
9109       details about how the typedef layer elimination is done.
9110
9111       brobecker/2010-11-19: It seems to me that the only case where it is
9112       useful to preserve the typedef layer is when dealing with fat pointers.
9113       Perhaps, we could add a check for that and preserve the typedef layer
9114       only in that situation.  But this seems unecessary so far, probably
9115       because we call check_typedef/ada_check_typedef pretty much everywhere.
9116       */
9117   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9118       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9119           == TYPE_MAIN_TYPE (fixed_type)))
9120     return type;
9121
9122   return fixed_type;
9123 }
9124
9125 /* A standard (static-sized) type corresponding as well as possible to
9126    TYPE0, but based on no runtime data.  */
9127
9128 static struct type *
9129 to_static_fixed_type (struct type *type0)
9130 {
9131   struct type *type;
9132
9133   if (type0 == NULL)
9134     return NULL;
9135
9136   if (TYPE_FIXED_INSTANCE (type0))
9137     return type0;
9138
9139   type0 = ada_check_typedef (type0);
9140
9141   switch (TYPE_CODE (type0))
9142     {
9143     default:
9144       return type0;
9145     case TYPE_CODE_STRUCT:
9146       type = dynamic_template_type (type0);
9147       if (type != NULL)
9148         return template_to_static_fixed_type (type);
9149       else
9150         return template_to_static_fixed_type (type0);
9151     case TYPE_CODE_UNION:
9152       type = ada_find_parallel_type (type0, "___XVU");
9153       if (type != NULL)
9154         return template_to_static_fixed_type (type);
9155       else
9156         return template_to_static_fixed_type (type0);
9157     }
9158 }
9159
9160 /* A static approximation of TYPE with all type wrappers removed.  */
9161
9162 static struct type *
9163 static_unwrap_type (struct type *type)
9164 {
9165   if (ada_is_aligner_type (type))
9166     {
9167       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9168       if (ada_type_name (type1) == NULL)
9169         TYPE_NAME (type1) = ada_type_name (type);
9170
9171       return static_unwrap_type (type1);
9172     }
9173   else
9174     {
9175       struct type *raw_real_type = ada_get_base_type (type);
9176
9177       if (raw_real_type == type)
9178         return type;
9179       else
9180         return to_static_fixed_type (raw_real_type);
9181     }
9182 }
9183
9184 /* In some cases, incomplete and private types require
9185    cross-references that are not resolved as records (for example,
9186       type Foo;
9187       type FooP is access Foo;
9188       V: FooP;
9189       type Foo is array ...;
9190    ).  In these cases, since there is no mechanism for producing
9191    cross-references to such types, we instead substitute for FooP a
9192    stub enumeration type that is nowhere resolved, and whose tag is
9193    the name of the actual type.  Call these types "non-record stubs".  */
9194
9195 /* A type equivalent to TYPE that is not a non-record stub, if one
9196    exists, otherwise TYPE.  */
9197
9198 struct type *
9199 ada_check_typedef (struct type *type)
9200 {
9201   if (type == NULL)
9202     return NULL;
9203
9204   /* If our type is a typedef type of a fat pointer, then we're done.
9205      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9206      what allows us to distinguish between fat pointers that represent
9207      array types, and fat pointers that represent array access types
9208      (in both cases, the compiler implements them as fat pointers).  */
9209   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9210       && is_thick_pntr (ada_typedef_target_type (type)))
9211     return type;
9212
9213   type = check_typedef (type);
9214   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9215       || !TYPE_STUB (type)
9216       || TYPE_TAG_NAME (type) == NULL)
9217     return type;
9218   else
9219     {
9220       const char *name = TYPE_TAG_NAME (type);
9221       struct type *type1 = ada_find_any_type (name);
9222
9223       if (type1 == NULL)
9224         return type;
9225
9226       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9227          stubs pointing to arrays, as we don't create symbols for array
9228          types, only for the typedef-to-array types).  If that's the case,
9229          strip the typedef layer.  */
9230       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9231         type1 = ada_check_typedef (type1);
9232
9233       return type1;
9234     }
9235 }
9236
9237 /* A value representing the data at VALADDR/ADDRESS as described by
9238    type TYPE0, but with a standard (static-sized) type that correctly
9239    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9240    type, then return VAL0 [this feature is simply to avoid redundant
9241    creation of struct values].  */
9242
9243 static struct value *
9244 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9245                            struct value *val0)
9246 {
9247   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9248
9249   if (type == type0 && val0 != NULL)
9250     return val0;
9251   else
9252     return value_from_contents_and_address (type, 0, address);
9253 }
9254
9255 /* A value representing VAL, but with a standard (static-sized) type
9256    that correctly describes it.  Does not necessarily create a new
9257    value.  */
9258
9259 struct value *
9260 ada_to_fixed_value (struct value *val)
9261 {
9262   val = unwrap_value (val);
9263   val = ada_to_fixed_value_create (value_type (val),
9264                                       value_address (val),
9265                                       val);
9266   return val;
9267 }
9268 \f
9269
9270 /* Attributes */
9271
9272 /* Table mapping attribute numbers to names.
9273    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9274
9275 static const char *attribute_names[] = {
9276   "<?>",
9277
9278   "first",
9279   "last",
9280   "length",
9281   "image",
9282   "max",
9283   "min",
9284   "modulus",
9285   "pos",
9286   "size",
9287   "tag",
9288   "val",
9289   0
9290 };
9291
9292 const char *
9293 ada_attribute_name (enum exp_opcode n)
9294 {
9295   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9296     return attribute_names[n - OP_ATR_FIRST + 1];
9297   else
9298     return attribute_names[0];
9299 }
9300
9301 /* Evaluate the 'POS attribute applied to ARG.  */
9302
9303 static LONGEST
9304 pos_atr (struct value *arg)
9305 {
9306   struct value *val = coerce_ref (arg);
9307   struct type *type = value_type (val);
9308   LONGEST result;
9309
9310   if (!discrete_type_p (type))
9311     error (_("'POS only defined on discrete types"));
9312
9313   if (!discrete_position (type, value_as_long (val), &result))
9314     error (_("enumeration value is invalid: can't find 'POS"));
9315
9316   return result;
9317 }
9318
9319 static struct value *
9320 value_pos_atr (struct type *type, struct value *arg)
9321 {
9322   return value_from_longest (type, pos_atr (arg));
9323 }
9324
9325 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9326
9327 static struct value *
9328 value_val_atr (struct type *type, struct value *arg)
9329 {
9330   if (!discrete_type_p (type))
9331     error (_("'VAL only defined on discrete types"));
9332   if (!integer_type_p (value_type (arg)))
9333     error (_("'VAL requires integral argument"));
9334
9335   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9336     {
9337       long pos = value_as_long (arg);
9338
9339       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9340         error (_("argument to 'VAL out of range"));
9341       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9342     }
9343   else
9344     return value_from_longest (type, value_as_long (arg));
9345 }
9346 \f
9347
9348                                 /* Evaluation */
9349
9350 /* True if TYPE appears to be an Ada character type.
9351    [At the moment, this is true only for Character and Wide_Character;
9352    It is a heuristic test that could stand improvement].  */
9353
9354 int
9355 ada_is_character_type (struct type *type)
9356 {
9357   const char *name;
9358
9359   /* If the type code says it's a character, then assume it really is,
9360      and don't check any further.  */
9361   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9362     return 1;
9363   
9364   /* Otherwise, assume it's a character type iff it is a discrete type
9365      with a known character type name.  */
9366   name = ada_type_name (type);
9367   return (name != NULL
9368           && (TYPE_CODE (type) == TYPE_CODE_INT
9369               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9370           && (strcmp (name, "character") == 0
9371               || strcmp (name, "wide_character") == 0
9372               || strcmp (name, "wide_wide_character") == 0
9373               || strcmp (name, "unsigned char") == 0));
9374 }
9375
9376 /* True if TYPE appears to be an Ada string type.  */
9377
9378 int
9379 ada_is_string_type (struct type *type)
9380 {
9381   type = ada_check_typedef (type);
9382   if (type != NULL
9383       && TYPE_CODE (type) != TYPE_CODE_PTR
9384       && (ada_is_simple_array_type (type)
9385           || ada_is_array_descriptor_type (type))
9386       && ada_array_arity (type) == 1)
9387     {
9388       struct type *elttype = ada_array_element_type (type, 1);
9389
9390       return ada_is_character_type (elttype);
9391     }
9392   else
9393     return 0;
9394 }
9395
9396 /* The compiler sometimes provides a parallel XVS type for a given
9397    PAD type.  Normally, it is safe to follow the PAD type directly,
9398    but older versions of the compiler have a bug that causes the offset
9399    of its "F" field to be wrong.  Following that field in that case
9400    would lead to incorrect results, but this can be worked around
9401    by ignoring the PAD type and using the associated XVS type instead.
9402
9403    Set to True if the debugger should trust the contents of PAD types.
9404    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9405 static int trust_pad_over_xvs = 1;
9406
9407 /* True if TYPE is a struct type introduced by the compiler to force the
9408    alignment of a value.  Such types have a single field with a
9409    distinctive name.  */
9410
9411 int
9412 ada_is_aligner_type (struct type *type)
9413 {
9414   type = ada_check_typedef (type);
9415
9416   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9417     return 0;
9418
9419   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9420           && TYPE_NFIELDS (type) == 1
9421           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9422 }
9423
9424 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9425    the parallel type.  */
9426
9427 struct type *
9428 ada_get_base_type (struct type *raw_type)
9429 {
9430   struct type *real_type_namer;
9431   struct type *raw_real_type;
9432
9433   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9434     return raw_type;
9435
9436   if (ada_is_aligner_type (raw_type))
9437     /* The encoding specifies that we should always use the aligner type.
9438        So, even if this aligner type has an associated XVS type, we should
9439        simply ignore it.
9440
9441        According to the compiler gurus, an XVS type parallel to an aligner
9442        type may exist because of a stabs limitation.  In stabs, aligner
9443        types are empty because the field has a variable-sized type, and
9444        thus cannot actually be used as an aligner type.  As a result,
9445        we need the associated parallel XVS type to decode the type.
9446        Since the policy in the compiler is to not change the internal
9447        representation based on the debugging info format, we sometimes
9448        end up having a redundant XVS type parallel to the aligner type.  */
9449     return raw_type;
9450
9451   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9452   if (real_type_namer == NULL
9453       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9454       || TYPE_NFIELDS (real_type_namer) != 1)
9455     return raw_type;
9456
9457   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9458     {
9459       /* This is an older encoding form where the base type needs to be
9460          looked up by name.  We prefer the newer enconding because it is
9461          more efficient.  */
9462       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9463       if (raw_real_type == NULL)
9464         return raw_type;
9465       else
9466         return raw_real_type;
9467     }
9468
9469   /* The field in our XVS type is a reference to the base type.  */
9470   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9471 }
9472
9473 /* The type of value designated by TYPE, with all aligners removed.  */
9474
9475 struct type *
9476 ada_aligned_type (struct type *type)
9477 {
9478   if (ada_is_aligner_type (type))
9479     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9480   else
9481     return ada_get_base_type (type);
9482 }
9483
9484
9485 /* The address of the aligned value in an object at address VALADDR
9486    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9487
9488 const gdb_byte *
9489 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9490 {
9491   if (ada_is_aligner_type (type))
9492     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9493                                    valaddr +
9494                                    TYPE_FIELD_BITPOS (type,
9495                                                       0) / TARGET_CHAR_BIT);
9496   else
9497     return valaddr;
9498 }
9499
9500
9501
9502 /* The printed representation of an enumeration literal with encoded
9503    name NAME.  The value is good to the next call of ada_enum_name.  */
9504 const char *
9505 ada_enum_name (const char *name)
9506 {
9507   static char *result;
9508   static size_t result_len = 0;
9509   const char *tmp;
9510
9511   /* First, unqualify the enumeration name:
9512      1. Search for the last '.' character.  If we find one, then skip
9513      all the preceding characters, the unqualified name starts
9514      right after that dot.
9515      2. Otherwise, we may be debugging on a target where the compiler
9516      translates dots into "__".  Search forward for double underscores,
9517      but stop searching when we hit an overloading suffix, which is
9518      of the form "__" followed by digits.  */
9519
9520   tmp = strrchr (name, '.');
9521   if (tmp != NULL)
9522     name = tmp + 1;
9523   else
9524     {
9525       while ((tmp = strstr (name, "__")) != NULL)
9526         {
9527           if (isdigit (tmp[2]))
9528             break;
9529           else
9530             name = tmp + 2;
9531         }
9532     }
9533
9534   if (name[0] == 'Q')
9535     {
9536       int v;
9537
9538       if (name[1] == 'U' || name[1] == 'W')
9539         {
9540           if (sscanf (name + 2, "%x", &v) != 1)
9541             return name;
9542         }
9543       else
9544         return name;
9545
9546       GROW_VECT (result, result_len, 16);
9547       if (isascii (v) && isprint (v))
9548         xsnprintf (result, result_len, "'%c'", v);
9549       else if (name[1] == 'U')
9550         xsnprintf (result, result_len, "[\"%02x\"]", v);
9551       else
9552         xsnprintf (result, result_len, "[\"%04x\"]", v);
9553
9554       return result;
9555     }
9556   else
9557     {
9558       tmp = strstr (name, "__");
9559       if (tmp == NULL)
9560         tmp = strstr (name, "$");
9561       if (tmp != NULL)
9562         {
9563           GROW_VECT (result, result_len, tmp - name + 1);
9564           strncpy (result, name, tmp - name);
9565           result[tmp - name] = '\0';
9566           return result;
9567         }
9568
9569       return name;
9570     }
9571 }
9572
9573 /* Evaluate the subexpression of EXP starting at *POS as for
9574    evaluate_type, updating *POS to point just past the evaluated
9575    expression.  */
9576
9577 static struct value *
9578 evaluate_subexp_type (struct expression *exp, int *pos)
9579 {
9580   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9581 }
9582
9583 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9584    value it wraps.  */
9585
9586 static struct value *
9587 unwrap_value (struct value *val)
9588 {
9589   struct type *type = ada_check_typedef (value_type (val));
9590
9591   if (ada_is_aligner_type (type))
9592     {
9593       struct value *v = ada_value_struct_elt (val, "F", 0);
9594       struct type *val_type = ada_check_typedef (value_type (v));
9595
9596       if (ada_type_name (val_type) == NULL)
9597         TYPE_NAME (val_type) = ada_type_name (type);
9598
9599       return unwrap_value (v);
9600     }
9601   else
9602     {
9603       struct type *raw_real_type =
9604         ada_check_typedef (ada_get_base_type (type));
9605
9606       /* If there is no parallel XVS or XVE type, then the value is
9607          already unwrapped.  Return it without further modification.  */
9608       if ((type == raw_real_type)
9609           && ada_find_parallel_type (type, "___XVE") == NULL)
9610         return val;
9611
9612       return
9613         coerce_unspec_val_to_type
9614         (val, ada_to_fixed_type (raw_real_type, 0,
9615                                  value_address (val),
9616                                  NULL, 1));
9617     }
9618 }
9619
9620 static struct value *
9621 cast_to_fixed (struct type *type, struct value *arg)
9622 {
9623   LONGEST val;
9624
9625   if (type == value_type (arg))
9626     return arg;
9627   else if (ada_is_fixed_point_type (value_type (arg)))
9628     val = ada_float_to_fixed (type,
9629                               ada_fixed_to_float (value_type (arg),
9630                                                   value_as_long (arg)));
9631   else
9632     {
9633       DOUBLEST argd = value_as_double (arg);
9634
9635       val = ada_float_to_fixed (type, argd);
9636     }
9637
9638   return value_from_longest (type, val);
9639 }
9640
9641 static struct value *
9642 cast_from_fixed (struct type *type, struct value *arg)
9643 {
9644   DOUBLEST val = ada_fixed_to_float (value_type (arg),
9645                                      value_as_long (arg));
9646
9647   return value_from_double (type, val);
9648 }
9649
9650 /* Given two array types T1 and T2, return nonzero iff both arrays
9651    contain the same number of elements.  */
9652
9653 static int
9654 ada_same_array_size_p (struct type *t1, struct type *t2)
9655 {
9656   LONGEST lo1, hi1, lo2, hi2;
9657
9658   /* Get the array bounds in order to verify that the size of
9659      the two arrays match.  */
9660   if (!get_array_bounds (t1, &lo1, &hi1)
9661       || !get_array_bounds (t2, &lo2, &hi2))
9662     error (_("unable to determine array bounds"));
9663
9664   /* To make things easier for size comparison, normalize a bit
9665      the case of empty arrays by making sure that the difference
9666      between upper bound and lower bound is always -1.  */
9667   if (lo1 > hi1)
9668     hi1 = lo1 - 1;
9669   if (lo2 > hi2)
9670     hi2 = lo2 - 1;
9671
9672   return (hi1 - lo1 == hi2 - lo2);
9673 }
9674
9675 /* Assuming that VAL is an array of integrals, and TYPE represents
9676    an array with the same number of elements, but with wider integral
9677    elements, return an array "casted" to TYPE.  In practice, this
9678    means that the returned array is built by casting each element
9679    of the original array into TYPE's (wider) element type.  */
9680
9681 static struct value *
9682 ada_promote_array_of_integrals (struct type *type, struct value *val)
9683 {
9684   struct type *elt_type = TYPE_TARGET_TYPE (type);
9685   LONGEST lo, hi;
9686   struct value *res;
9687   LONGEST i;
9688
9689   /* Verify that both val and type are arrays of scalars, and
9690      that the size of val's elements is smaller than the size
9691      of type's element.  */
9692   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9693   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9694   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9695   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9696   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9697               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9698
9699   if (!get_array_bounds (type, &lo, &hi))
9700     error (_("unable to determine array bounds"));
9701
9702   res = allocate_value (type);
9703
9704   /* Promote each array element.  */
9705   for (i = 0; i < hi - lo + 1; i++)
9706     {
9707       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9708
9709       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9710               value_contents_all (elt), TYPE_LENGTH (elt_type));
9711     }
9712
9713   return res;
9714 }
9715
9716 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9717    return the converted value.  */
9718
9719 static struct value *
9720 coerce_for_assign (struct type *type, struct value *val)
9721 {
9722   struct type *type2 = value_type (val);
9723
9724   if (type == type2)
9725     return val;
9726
9727   type2 = ada_check_typedef (type2);
9728   type = ada_check_typedef (type);
9729
9730   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9731       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9732     {
9733       val = ada_value_ind (val);
9734       type2 = value_type (val);
9735     }
9736
9737   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9738       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9739     {
9740       if (!ada_same_array_size_p (type, type2))
9741         error (_("cannot assign arrays of different length"));
9742
9743       if (is_integral_type (TYPE_TARGET_TYPE (type))
9744           && is_integral_type (TYPE_TARGET_TYPE (type2))
9745           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9746                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9747         {
9748           /* Allow implicit promotion of the array elements to
9749              a wider type.  */
9750           return ada_promote_array_of_integrals (type, val);
9751         }
9752
9753       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9754           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9755         error (_("Incompatible types in assignment"));
9756       deprecated_set_value_type (val, type);
9757     }
9758   return val;
9759 }
9760
9761 static struct value *
9762 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9763 {
9764   struct value *val;
9765   struct type *type1, *type2;
9766   LONGEST v, v1, v2;
9767
9768   arg1 = coerce_ref (arg1);
9769   arg2 = coerce_ref (arg2);
9770   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9771   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9772
9773   if (TYPE_CODE (type1) != TYPE_CODE_INT
9774       || TYPE_CODE (type2) != TYPE_CODE_INT)
9775     return value_binop (arg1, arg2, op);
9776
9777   switch (op)
9778     {
9779     case BINOP_MOD:
9780     case BINOP_DIV:
9781     case BINOP_REM:
9782       break;
9783     default:
9784       return value_binop (arg1, arg2, op);
9785     }
9786
9787   v2 = value_as_long (arg2);
9788   if (v2 == 0)
9789     error (_("second operand of %s must not be zero."), op_string (op));
9790
9791   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9792     return value_binop (arg1, arg2, op);
9793
9794   v1 = value_as_long (arg1);
9795   switch (op)
9796     {
9797     case BINOP_DIV:
9798       v = v1 / v2;
9799       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9800         v += v > 0 ? -1 : 1;
9801       break;
9802     case BINOP_REM:
9803       v = v1 % v2;
9804       if (v * v1 < 0)
9805         v -= v2;
9806       break;
9807     default:
9808       /* Should not reach this point.  */
9809       v = 0;
9810     }
9811
9812   val = allocate_value (type1);
9813   store_unsigned_integer (value_contents_raw (val),
9814                           TYPE_LENGTH (value_type (val)),
9815                           gdbarch_byte_order (get_type_arch (type1)), v);
9816   return val;
9817 }
9818
9819 static int
9820 ada_value_equal (struct value *arg1, struct value *arg2)
9821 {
9822   if (ada_is_direct_array_type (value_type (arg1))
9823       || ada_is_direct_array_type (value_type (arg2)))
9824     {
9825       /* Automatically dereference any array reference before
9826          we attempt to perform the comparison.  */
9827       arg1 = ada_coerce_ref (arg1);
9828       arg2 = ada_coerce_ref (arg2);
9829       
9830       arg1 = ada_coerce_to_simple_array (arg1);
9831       arg2 = ada_coerce_to_simple_array (arg2);
9832       if (TYPE_CODE (value_type (arg1)) != TYPE_CODE_ARRAY
9833           || TYPE_CODE (value_type (arg2)) != TYPE_CODE_ARRAY)
9834         error (_("Attempt to compare array with non-array"));
9835       /* FIXME: The following works only for types whose
9836          representations use all bits (no padding or undefined bits)
9837          and do not have user-defined equality.  */
9838       return
9839         TYPE_LENGTH (value_type (arg1)) == TYPE_LENGTH (value_type (arg2))
9840         && memcmp (value_contents (arg1), value_contents (arg2),
9841                    TYPE_LENGTH (value_type (arg1))) == 0;
9842     }
9843   return value_equal (arg1, arg2);
9844 }
9845
9846 /* Total number of component associations in the aggregate starting at
9847    index PC in EXP.  Assumes that index PC is the start of an
9848    OP_AGGREGATE.  */
9849
9850 static int
9851 num_component_specs (struct expression *exp, int pc)
9852 {
9853   int n, m, i;
9854
9855   m = exp->elts[pc + 1].longconst;
9856   pc += 3;
9857   n = 0;
9858   for (i = 0; i < m; i += 1)
9859     {
9860       switch (exp->elts[pc].opcode) 
9861         {
9862         default:
9863           n += 1;
9864           break;
9865         case OP_CHOICES:
9866           n += exp->elts[pc + 1].longconst;
9867           break;
9868         }
9869       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9870     }
9871   return n;
9872 }
9873
9874 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9875    component of LHS (a simple array or a record), updating *POS past
9876    the expression, assuming that LHS is contained in CONTAINER.  Does
9877    not modify the inferior's memory, nor does it modify LHS (unless
9878    LHS == CONTAINER).  */
9879
9880 static void
9881 assign_component (struct value *container, struct value *lhs, LONGEST index,
9882                   struct expression *exp, int *pos)
9883 {
9884   struct value *mark = value_mark ();
9885   struct value *elt;
9886
9887   if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY)
9888     {
9889       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9890       struct value *index_val = value_from_longest (index_type, index);
9891
9892       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9893     }
9894   else
9895     {
9896       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9897       elt = ada_to_fixed_value (elt);
9898     }
9899
9900   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9901     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9902   else
9903     value_assign_to_component (container, elt, 
9904                                ada_evaluate_subexp (NULL, exp, pos, 
9905                                                     EVAL_NORMAL));
9906
9907   value_free_to_mark (mark);
9908 }
9909
9910 /* Assuming that LHS represents an lvalue having a record or array
9911    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9912    of that aggregate's value to LHS, advancing *POS past the
9913    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9914    lvalue containing LHS (possibly LHS itself).  Does not modify
9915    the inferior's memory, nor does it modify the contents of 
9916    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9917
9918 static struct value *
9919 assign_aggregate (struct value *container, 
9920                   struct value *lhs, struct expression *exp, 
9921                   int *pos, enum noside noside)
9922 {
9923   struct type *lhs_type;
9924   int n = exp->elts[*pos+1].longconst;
9925   LONGEST low_index, high_index;
9926   int num_specs;
9927   LONGEST *indices;
9928   int max_indices, num_indices;
9929   int i;
9930
9931   *pos += 3;
9932   if (noside != EVAL_NORMAL)
9933     {
9934       for (i = 0; i < n; i += 1)
9935         ada_evaluate_subexp (NULL, exp, pos, noside);
9936       return container;
9937     }
9938
9939   container = ada_coerce_ref (container);
9940   if (ada_is_direct_array_type (value_type (container)))
9941     container = ada_coerce_to_simple_array (container);
9942   lhs = ada_coerce_ref (lhs);
9943   if (!deprecated_value_modifiable (lhs))
9944     error (_("Left operand of assignment is not a modifiable lvalue."));
9945
9946   lhs_type = value_type (lhs);
9947   if (ada_is_direct_array_type (lhs_type))
9948     {
9949       lhs = ada_coerce_to_simple_array (lhs);
9950       lhs_type = value_type (lhs);
9951       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9952       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9953     }
9954   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9955     {
9956       low_index = 0;
9957       high_index = num_visible_fields (lhs_type) - 1;
9958     }
9959   else
9960     error (_("Left-hand side must be array or record."));
9961
9962   num_specs = num_component_specs (exp, *pos - 3);
9963   max_indices = 4 * num_specs + 4;
9964   indices = XALLOCAVEC (LONGEST, max_indices);
9965   indices[0] = indices[1] = low_index - 1;
9966   indices[2] = indices[3] = high_index + 1;
9967   num_indices = 4;
9968
9969   for (i = 0; i < n; i += 1)
9970     {
9971       switch (exp->elts[*pos].opcode)
9972         {
9973           case OP_CHOICES:
9974             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9975                                            &num_indices, max_indices,
9976                                            low_index, high_index);
9977             break;
9978           case OP_POSITIONAL:
9979             aggregate_assign_positional (container, lhs, exp, pos, indices,
9980                                          &num_indices, max_indices,
9981                                          low_index, high_index);
9982             break;
9983           case OP_OTHERS:
9984             if (i != n-1)
9985               error (_("Misplaced 'others' clause"));
9986             aggregate_assign_others (container, lhs, exp, pos, indices, 
9987                                      num_indices, low_index, high_index);
9988             break;
9989           default:
9990             error (_("Internal error: bad aggregate clause"));
9991         }
9992     }
9993
9994   return container;
9995 }
9996               
9997 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9998    construct at *POS, updating *POS past the construct, given that
9999    the positions are relative to lower bound LOW, where HIGH is the 
10000    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10001    updating *NUM_INDICES as needed.  CONTAINER is as for
10002    assign_aggregate.  */
10003 static void
10004 aggregate_assign_positional (struct value *container,
10005                              struct value *lhs, struct expression *exp,
10006                              int *pos, LONGEST *indices, int *num_indices,
10007                              int max_indices, LONGEST low, LONGEST high) 
10008 {
10009   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10010   
10011   if (ind - 1 == high)
10012     warning (_("Extra components in aggregate ignored."));
10013   if (ind <= high)
10014     {
10015       add_component_interval (ind, ind, indices, num_indices, max_indices);
10016       *pos += 3;
10017       assign_component (container, lhs, ind, exp, pos);
10018     }
10019   else
10020     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10021 }
10022
10023 /* Assign into the components of LHS indexed by the OP_CHOICES
10024    construct at *POS, updating *POS past the construct, given that
10025    the allowable indices are LOW..HIGH.  Record the indices assigned
10026    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10027    needed.  CONTAINER is as for assign_aggregate.  */
10028 static void
10029 aggregate_assign_from_choices (struct value *container,
10030                                struct value *lhs, struct expression *exp,
10031                                int *pos, LONGEST *indices, int *num_indices,
10032                                int max_indices, LONGEST low, LONGEST high) 
10033 {
10034   int j;
10035   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10036   int choice_pos, expr_pc;
10037   int is_array = ada_is_direct_array_type (value_type (lhs));
10038
10039   choice_pos = *pos += 3;
10040
10041   for (j = 0; j < n_choices; j += 1)
10042     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10043   expr_pc = *pos;
10044   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10045   
10046   for (j = 0; j < n_choices; j += 1)
10047     {
10048       LONGEST lower, upper;
10049       enum exp_opcode op = exp->elts[choice_pos].opcode;
10050
10051       if (op == OP_DISCRETE_RANGE)
10052         {
10053           choice_pos += 1;
10054           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10055                                                       EVAL_NORMAL));
10056           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10057                                                       EVAL_NORMAL));
10058         }
10059       else if (is_array)
10060         {
10061           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10062                                                       EVAL_NORMAL));
10063           upper = lower;
10064         }
10065       else
10066         {
10067           int ind;
10068           const char *name;
10069
10070           switch (op)
10071             {
10072             case OP_NAME:
10073               name = &exp->elts[choice_pos + 2].string;
10074               break;
10075             case OP_VAR_VALUE:
10076               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10077               break;
10078             default:
10079               error (_("Invalid record component association."));
10080             }
10081           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10082           ind = 0;
10083           if (! find_struct_field (name, value_type (lhs), 0, 
10084                                    NULL, NULL, NULL, NULL, &ind))
10085             error (_("Unknown component name: %s."), name);
10086           lower = upper = ind;
10087         }
10088
10089       if (lower <= upper && (lower < low || upper > high))
10090         error (_("Index in component association out of bounds."));
10091
10092       add_component_interval (lower, upper, indices, num_indices,
10093                               max_indices);
10094       while (lower <= upper)
10095         {
10096           int pos1;
10097
10098           pos1 = expr_pc;
10099           assign_component (container, lhs, lower, exp, &pos1);
10100           lower += 1;
10101         }
10102     }
10103 }
10104
10105 /* Assign the value of the expression in the OP_OTHERS construct in
10106    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10107    have not been previously assigned.  The index intervals already assigned
10108    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10109    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10110 static void
10111 aggregate_assign_others (struct value *container,
10112                          struct value *lhs, struct expression *exp,
10113                          int *pos, LONGEST *indices, int num_indices,
10114                          LONGEST low, LONGEST high) 
10115 {
10116   int i;
10117   int expr_pc = *pos + 1;
10118   
10119   for (i = 0; i < num_indices - 2; i += 2)
10120     {
10121       LONGEST ind;
10122
10123       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10124         {
10125           int localpos;
10126
10127           localpos = expr_pc;
10128           assign_component (container, lhs, ind, exp, &localpos);
10129         }
10130     }
10131   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10132 }
10133
10134 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10135    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10136    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10137    MAX_SIZE.  The resulting intervals do not overlap.  */
10138 static void
10139 add_component_interval (LONGEST low, LONGEST high, 
10140                         LONGEST* indices, int *size, int max_size)
10141 {
10142   int i, j;
10143
10144   for (i = 0; i < *size; i += 2) {
10145     if (high >= indices[i] && low <= indices[i + 1])
10146       {
10147         int kh;
10148
10149         for (kh = i + 2; kh < *size; kh += 2)
10150           if (high < indices[kh])
10151             break;
10152         if (low < indices[i])
10153           indices[i] = low;
10154         indices[i + 1] = indices[kh - 1];
10155         if (high > indices[i + 1])
10156           indices[i + 1] = high;
10157         memcpy (indices + i + 2, indices + kh, *size - kh);
10158         *size -= kh - i - 2;
10159         return;
10160       }
10161     else if (high < indices[i])
10162       break;
10163   }
10164         
10165   if (*size == max_size)
10166     error (_("Internal error: miscounted aggregate components."));
10167   *size += 2;
10168   for (j = *size-1; j >= i+2; j -= 1)
10169     indices[j] = indices[j - 2];
10170   indices[i] = low;
10171   indices[i + 1] = high;
10172 }
10173
10174 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10175    is different.  */
10176
10177 static struct value *
10178 ada_value_cast (struct type *type, struct value *arg2, enum noside noside)
10179 {
10180   if (type == ada_check_typedef (value_type (arg2)))
10181     return arg2;
10182
10183   if (ada_is_fixed_point_type (type))
10184     return (cast_to_fixed (type, arg2));
10185
10186   if (ada_is_fixed_point_type (value_type (arg2)))
10187     return cast_from_fixed (type, arg2);
10188
10189   return value_cast (type, arg2);
10190 }
10191
10192 /*  Evaluating Ada expressions, and printing their result.
10193     ------------------------------------------------------
10194
10195     1. Introduction:
10196     ----------------
10197
10198     We usually evaluate an Ada expression in order to print its value.
10199     We also evaluate an expression in order to print its type, which
10200     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10201     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10202     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10203     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10204     similar.
10205
10206     Evaluating expressions is a little more complicated for Ada entities
10207     than it is for entities in languages such as C.  The main reason for
10208     this is that Ada provides types whose definition might be dynamic.
10209     One example of such types is variant records.  Or another example
10210     would be an array whose bounds can only be known at run time.
10211
10212     The following description is a general guide as to what should be
10213     done (and what should NOT be done) in order to evaluate an expression
10214     involving such types, and when.  This does not cover how the semantic
10215     information is encoded by GNAT as this is covered separatly.  For the
10216     document used as the reference for the GNAT encoding, see exp_dbug.ads
10217     in the GNAT sources.
10218
10219     Ideally, we should embed each part of this description next to its
10220     associated code.  Unfortunately, the amount of code is so vast right
10221     now that it's hard to see whether the code handling a particular
10222     situation might be duplicated or not.  One day, when the code is
10223     cleaned up, this guide might become redundant with the comments
10224     inserted in the code, and we might want to remove it.
10225
10226     2. ``Fixing'' an Entity, the Simple Case:
10227     -----------------------------------------
10228
10229     When evaluating Ada expressions, the tricky issue is that they may
10230     reference entities whose type contents and size are not statically
10231     known.  Consider for instance a variant record:
10232
10233        type Rec (Empty : Boolean := True) is record
10234           case Empty is
10235              when True => null;
10236              when False => Value : Integer;
10237           end case;
10238        end record;
10239        Yes : Rec := (Empty => False, Value => 1);
10240        No  : Rec := (empty => True);
10241
10242     The size and contents of that record depends on the value of the
10243     descriminant (Rec.Empty).  At this point, neither the debugging
10244     information nor the associated type structure in GDB are able to
10245     express such dynamic types.  So what the debugger does is to create
10246     "fixed" versions of the type that applies to the specific object.
10247     We also informally refer to this opperation as "fixing" an object,
10248     which means creating its associated fixed type.
10249
10250     Example: when printing the value of variable "Yes" above, its fixed
10251     type would look like this:
10252
10253        type Rec is record
10254           Empty : Boolean;
10255           Value : Integer;
10256        end record;
10257
10258     On the other hand, if we printed the value of "No", its fixed type
10259     would become:
10260
10261        type Rec is record
10262           Empty : Boolean;
10263        end record;
10264
10265     Things become a little more complicated when trying to fix an entity
10266     with a dynamic type that directly contains another dynamic type,
10267     such as an array of variant records, for instance.  There are
10268     two possible cases: Arrays, and records.
10269
10270     3. ``Fixing'' Arrays:
10271     ---------------------
10272
10273     The type structure in GDB describes an array in terms of its bounds,
10274     and the type of its elements.  By design, all elements in the array
10275     have the same type and we cannot represent an array of variant elements
10276     using the current type structure in GDB.  When fixing an array,
10277     we cannot fix the array element, as we would potentially need one
10278     fixed type per element of the array.  As a result, the best we can do
10279     when fixing an array is to produce an array whose bounds and size
10280     are correct (allowing us to read it from memory), but without having
10281     touched its element type.  Fixing each element will be done later,
10282     when (if) necessary.
10283
10284     Arrays are a little simpler to handle than records, because the same
10285     amount of memory is allocated for each element of the array, even if
10286     the amount of space actually used by each element differs from element
10287     to element.  Consider for instance the following array of type Rec:
10288
10289        type Rec_Array is array (1 .. 2) of Rec;
10290
10291     The actual amount of memory occupied by each element might be different
10292     from element to element, depending on the value of their discriminant.
10293     But the amount of space reserved for each element in the array remains
10294     fixed regardless.  So we simply need to compute that size using
10295     the debugging information available, from which we can then determine
10296     the array size (we multiply the number of elements of the array by
10297     the size of each element).
10298
10299     The simplest case is when we have an array of a constrained element
10300     type. For instance, consider the following type declarations:
10301
10302         type Bounded_String (Max_Size : Integer) is
10303            Length : Integer;
10304            Buffer : String (1 .. Max_Size);
10305         end record;
10306         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10307
10308     In this case, the compiler describes the array as an array of
10309     variable-size elements (identified by its XVS suffix) for which
10310     the size can be read in the parallel XVZ variable.
10311
10312     In the case of an array of an unconstrained element type, the compiler
10313     wraps the array element inside a private PAD type.  This type should not
10314     be shown to the user, and must be "unwrap"'ed before printing.  Note
10315     that we also use the adjective "aligner" in our code to designate
10316     these wrapper types.
10317
10318     In some cases, the size allocated for each element is statically
10319     known.  In that case, the PAD type already has the correct size,
10320     and the array element should remain unfixed.
10321
10322     But there are cases when this size is not statically known.
10323     For instance, assuming that "Five" is an integer variable:
10324
10325         type Dynamic is array (1 .. Five) of Integer;
10326         type Wrapper (Has_Length : Boolean := False) is record
10327            Data : Dynamic;
10328            case Has_Length is
10329               when True => Length : Integer;
10330               when False => null;
10331            end case;
10332         end record;
10333         type Wrapper_Array is array (1 .. 2) of Wrapper;
10334
10335         Hello : Wrapper_Array := (others => (Has_Length => True,
10336                                              Data => (others => 17),
10337                                              Length => 1));
10338
10339
10340     The debugging info would describe variable Hello as being an
10341     array of a PAD type.  The size of that PAD type is not statically
10342     known, but can be determined using a parallel XVZ variable.
10343     In that case, a copy of the PAD type with the correct size should
10344     be used for the fixed array.
10345
10346     3. ``Fixing'' record type objects:
10347     ----------------------------------
10348
10349     Things are slightly different from arrays in the case of dynamic
10350     record types.  In this case, in order to compute the associated
10351     fixed type, we need to determine the size and offset of each of
10352     its components.  This, in turn, requires us to compute the fixed
10353     type of each of these components.
10354
10355     Consider for instance the example:
10356
10357         type Bounded_String (Max_Size : Natural) is record
10358            Str : String (1 .. Max_Size);
10359            Length : Natural;
10360         end record;
10361         My_String : Bounded_String (Max_Size => 10);
10362
10363     In that case, the position of field "Length" depends on the size
10364     of field Str, which itself depends on the value of the Max_Size
10365     discriminant.  In order to fix the type of variable My_String,
10366     we need to fix the type of field Str.  Therefore, fixing a variant
10367     record requires us to fix each of its components.
10368
10369     However, if a component does not have a dynamic size, the component
10370     should not be fixed.  In particular, fields that use a PAD type
10371     should not fixed.  Here is an example where this might happen
10372     (assuming type Rec above):
10373
10374        type Container (Big : Boolean) is record
10375           First : Rec;
10376           After : Integer;
10377           case Big is
10378              when True => Another : Integer;
10379              when False => null;
10380           end case;
10381        end record;
10382        My_Container : Container := (Big => False,
10383                                     First => (Empty => True),
10384                                     After => 42);
10385
10386     In that example, the compiler creates a PAD type for component First,
10387     whose size is constant, and then positions the component After just
10388     right after it.  The offset of component After is therefore constant
10389     in this case.
10390
10391     The debugger computes the position of each field based on an algorithm
10392     that uses, among other things, the actual position and size of the field
10393     preceding it.  Let's now imagine that the user is trying to print
10394     the value of My_Container.  If the type fixing was recursive, we would
10395     end up computing the offset of field After based on the size of the
10396     fixed version of field First.  And since in our example First has
10397     only one actual field, the size of the fixed type is actually smaller
10398     than the amount of space allocated to that field, and thus we would
10399     compute the wrong offset of field After.
10400
10401     To make things more complicated, we need to watch out for dynamic
10402     components of variant records (identified by the ___XVL suffix in
10403     the component name).  Even if the target type is a PAD type, the size
10404     of that type might not be statically known.  So the PAD type needs
10405     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10406     we might end up with the wrong size for our component.  This can be
10407     observed with the following type declarations:
10408
10409         type Octal is new Integer range 0 .. 7;
10410         type Octal_Array is array (Positive range <>) of Octal;
10411         pragma Pack (Octal_Array);
10412
10413         type Octal_Buffer (Size : Positive) is record
10414            Buffer : Octal_Array (1 .. Size);
10415            Length : Integer;
10416         end record;
10417
10418     In that case, Buffer is a PAD type whose size is unset and needs
10419     to be computed by fixing the unwrapped type.
10420
10421     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10422     ----------------------------------------------------------
10423
10424     Lastly, when should the sub-elements of an entity that remained unfixed
10425     thus far, be actually fixed?
10426
10427     The answer is: Only when referencing that element.  For instance
10428     when selecting one component of a record, this specific component
10429     should be fixed at that point in time.  Or when printing the value
10430     of a record, each component should be fixed before its value gets
10431     printed.  Similarly for arrays, the element of the array should be
10432     fixed when printing each element of the array, or when extracting
10433     one element out of that array.  On the other hand, fixing should
10434     not be performed on the elements when taking a slice of an array!
10435
10436     Note that one of the side-effects of miscomputing the offset and
10437     size of each field is that we end up also miscomputing the size
10438     of the containing type.  This can have adverse results when computing
10439     the value of an entity.  GDB fetches the value of an entity based
10440     on the size of its type, and thus a wrong size causes GDB to fetch
10441     the wrong amount of memory.  In the case where the computed size is
10442     too small, GDB fetches too little data to print the value of our
10443     entiry.  Results in this case as unpredicatble, as we usually read
10444     past the buffer containing the data =:-o.  */
10445
10446 /* Implement the evaluate_exp routine in the exp_descriptor structure
10447    for the Ada language.  */
10448
10449 static struct value *
10450 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10451                      int *pos, enum noside noside)
10452 {
10453   enum exp_opcode op;
10454   int tem;
10455   int pc;
10456   int preeval_pos;
10457   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10458   struct type *type;
10459   int nargs, oplen;
10460   struct value **argvec;
10461
10462   pc = *pos;
10463   *pos += 1;
10464   op = exp->elts[pc].opcode;
10465
10466   switch (op)
10467     {
10468     default:
10469       *pos -= 1;
10470       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10471
10472       if (noside == EVAL_NORMAL)
10473         arg1 = unwrap_value (arg1);
10474
10475       /* If evaluating an OP_DOUBLE and an EXPECT_TYPE was provided,
10476          then we need to perform the conversion manually, because
10477          evaluate_subexp_standard doesn't do it.  This conversion is
10478          necessary in Ada because the different kinds of float/fixed
10479          types in Ada have different representations.
10480
10481          Similarly, we need to perform the conversion from OP_LONG
10482          ourselves.  */
10483       if ((op == OP_DOUBLE || op == OP_LONG) && expect_type != NULL)
10484         arg1 = ada_value_cast (expect_type, arg1, noside);
10485
10486       return arg1;
10487
10488     case OP_STRING:
10489       {
10490         struct value *result;
10491
10492         *pos -= 1;
10493         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10494         /* The result type will have code OP_STRING, bashed there from 
10495            OP_ARRAY.  Bash it back.  */
10496         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10497           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10498         return result;
10499       }
10500
10501     case UNOP_CAST:
10502       (*pos) += 2;
10503       type = exp->elts[pc + 1].type;
10504       arg1 = evaluate_subexp (type, exp, pos, noside);
10505       if (noside == EVAL_SKIP)
10506         goto nosideret;
10507       arg1 = ada_value_cast (type, arg1, noside);
10508       return arg1;
10509
10510     case UNOP_QUAL:
10511       (*pos) += 2;
10512       type = exp->elts[pc + 1].type;
10513       return ada_evaluate_subexp (type, exp, pos, noside);
10514
10515     case BINOP_ASSIGN:
10516       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10517       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10518         {
10519           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10520           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10521             return arg1;
10522           return ada_value_assign (arg1, arg1);
10523         }
10524       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10525          except if the lhs of our assignment is a convenience variable.
10526          In the case of assigning to a convenience variable, the lhs
10527          should be exactly the result of the evaluation of the rhs.  */
10528       type = value_type (arg1);
10529       if (VALUE_LVAL (arg1) == lval_internalvar)
10530          type = NULL;
10531       arg2 = evaluate_subexp (type, exp, pos, noside);
10532       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10533         return arg1;
10534       if (ada_is_fixed_point_type (value_type (arg1)))
10535         arg2 = cast_to_fixed (value_type (arg1), arg2);
10536       else if (ada_is_fixed_point_type (value_type (arg2)))
10537         error
10538           (_("Fixed-point values must be assigned to fixed-point variables"));
10539       else
10540         arg2 = coerce_for_assign (value_type (arg1), arg2);
10541       return ada_value_assign (arg1, arg2);
10542
10543     case BINOP_ADD:
10544       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10545       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10546       if (noside == EVAL_SKIP)
10547         goto nosideret;
10548       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10549         return (value_from_longest
10550                  (value_type (arg1),
10551                   value_as_long (arg1) + value_as_long (arg2)));
10552       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10553         return (value_from_longest
10554                  (value_type (arg2),
10555                   value_as_long (arg1) + value_as_long (arg2)));
10556       if ((ada_is_fixed_point_type (value_type (arg1))
10557            || ada_is_fixed_point_type (value_type (arg2)))
10558           && value_type (arg1) != value_type (arg2))
10559         error (_("Operands of fixed-point addition must have the same type"));
10560       /* Do the addition, and cast the result to the type of the first
10561          argument.  We cannot cast the result to a reference type, so if
10562          ARG1 is a reference type, find its underlying type.  */
10563       type = value_type (arg1);
10564       while (TYPE_CODE (type) == TYPE_CODE_REF)
10565         type = TYPE_TARGET_TYPE (type);
10566       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10567       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10568
10569     case BINOP_SUB:
10570       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10571       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10572       if (noside == EVAL_SKIP)
10573         goto nosideret;
10574       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10575         return (value_from_longest
10576                  (value_type (arg1),
10577                   value_as_long (arg1) - value_as_long (arg2)));
10578       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10579         return (value_from_longest
10580                  (value_type (arg2),
10581                   value_as_long (arg1) - value_as_long (arg2)));
10582       if ((ada_is_fixed_point_type (value_type (arg1))
10583            || ada_is_fixed_point_type (value_type (arg2)))
10584           && value_type (arg1) != value_type (arg2))
10585         error (_("Operands of fixed-point subtraction "
10586                  "must have the same type"));
10587       /* Do the substraction, and cast the result to the type of the first
10588          argument.  We cannot cast the result to a reference type, so if
10589          ARG1 is a reference type, find its underlying type.  */
10590       type = value_type (arg1);
10591       while (TYPE_CODE (type) == TYPE_CODE_REF)
10592         type = TYPE_TARGET_TYPE (type);
10593       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10594       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10595
10596     case BINOP_MUL:
10597     case BINOP_DIV:
10598     case BINOP_REM:
10599     case BINOP_MOD:
10600       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10601       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10602       if (noside == EVAL_SKIP)
10603         goto nosideret;
10604       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10605         {
10606           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10607           return value_zero (value_type (arg1), not_lval);
10608         }
10609       else
10610         {
10611           type = builtin_type (exp->gdbarch)->builtin_double;
10612           if (ada_is_fixed_point_type (value_type (arg1)))
10613             arg1 = cast_from_fixed (type, arg1);
10614           if (ada_is_fixed_point_type (value_type (arg2)))
10615             arg2 = cast_from_fixed (type, arg2);
10616           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10617           return ada_value_binop (arg1, arg2, op);
10618         }
10619
10620     case BINOP_EQUAL:
10621     case BINOP_NOTEQUAL:
10622       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10623       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10624       if (noside == EVAL_SKIP)
10625         goto nosideret;
10626       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10627         tem = 0;
10628       else
10629         {
10630           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10631           tem = ada_value_equal (arg1, arg2);
10632         }
10633       if (op == BINOP_NOTEQUAL)
10634         tem = !tem;
10635       type = language_bool_type (exp->language_defn, exp->gdbarch);
10636       return value_from_longest (type, (LONGEST) tem);
10637
10638     case UNOP_NEG:
10639       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10640       if (noside == EVAL_SKIP)
10641         goto nosideret;
10642       else if (ada_is_fixed_point_type (value_type (arg1)))
10643         return value_cast (value_type (arg1), value_neg (arg1));
10644       else
10645         {
10646           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10647           return value_neg (arg1);
10648         }
10649
10650     case BINOP_LOGICAL_AND:
10651     case BINOP_LOGICAL_OR:
10652     case UNOP_LOGICAL_NOT:
10653       {
10654         struct value *val;
10655
10656         *pos -= 1;
10657         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10658         type = language_bool_type (exp->language_defn, exp->gdbarch);
10659         return value_cast (type, val);
10660       }
10661
10662     case BINOP_BITWISE_AND:
10663     case BINOP_BITWISE_IOR:
10664     case BINOP_BITWISE_XOR:
10665       {
10666         struct value *val;
10667
10668         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10669         *pos = pc;
10670         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10671
10672         return value_cast (value_type (arg1), val);
10673       }
10674
10675     case OP_VAR_VALUE:
10676       *pos -= 1;
10677
10678       if (noside == EVAL_SKIP)
10679         {
10680           *pos += 4;
10681           goto nosideret;
10682         }
10683
10684       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10685         /* Only encountered when an unresolved symbol occurs in a
10686            context other than a function call, in which case, it is
10687            invalid.  */
10688         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10689                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10690
10691       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10692         {
10693           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10694           /* Check to see if this is a tagged type.  We also need to handle
10695              the case where the type is a reference to a tagged type, but
10696              we have to be careful to exclude pointers to tagged types.
10697              The latter should be shown as usual (as a pointer), whereas
10698              a reference should mostly be transparent to the user.  */
10699           if (ada_is_tagged_type (type, 0)
10700               || (TYPE_CODE (type) == TYPE_CODE_REF
10701                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10702             {
10703               /* Tagged types are a little special in the fact that the real
10704                  type is dynamic and can only be determined by inspecting the
10705                  object's tag.  This means that we need to get the object's
10706                  value first (EVAL_NORMAL) and then extract the actual object
10707                  type from its tag.
10708
10709                  Note that we cannot skip the final step where we extract
10710                  the object type from its tag, because the EVAL_NORMAL phase
10711                  results in dynamic components being resolved into fixed ones.
10712                  This can cause problems when trying to print the type
10713                  description of tagged types whose parent has a dynamic size:
10714                  We use the type name of the "_parent" component in order
10715                  to print the name of the ancestor type in the type description.
10716                  If that component had a dynamic size, the resolution into
10717                  a fixed type would result in the loss of that type name,
10718                  thus preventing us from printing the name of the ancestor
10719                  type in the type description.  */
10720               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10721
10722               if (TYPE_CODE (type) != TYPE_CODE_REF)
10723                 {
10724                   struct type *actual_type;
10725
10726                   actual_type = type_from_tag (ada_value_tag (arg1));
10727                   if (actual_type == NULL)
10728                     /* If, for some reason, we were unable to determine
10729                        the actual type from the tag, then use the static
10730                        approximation that we just computed as a fallback.
10731                        This can happen if the debugging information is
10732                        incomplete, for instance.  */
10733                     actual_type = type;
10734                   return value_zero (actual_type, not_lval);
10735                 }
10736               else
10737                 {
10738                   /* In the case of a ref, ada_coerce_ref takes care
10739                      of determining the actual type.  But the evaluation
10740                      should return a ref as it should be valid to ask
10741                      for its address; so rebuild a ref after coerce.  */
10742                   arg1 = ada_coerce_ref (arg1);
10743                   return value_ref (arg1);
10744                 }
10745             }
10746
10747           /* Records and unions for which GNAT encodings have been
10748              generated need to be statically fixed as well.
10749              Otherwise, non-static fixing produces a type where
10750              all dynamic properties are removed, which prevents "ptype"
10751              from being able to completely describe the type.
10752              For instance, a case statement in a variant record would be
10753              replaced by the relevant components based on the actual
10754              value of the discriminants.  */
10755           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10756                && dynamic_template_type (type) != NULL)
10757               || (TYPE_CODE (type) == TYPE_CODE_UNION
10758                   && ada_find_parallel_type (type, "___XVU") != NULL))
10759             {
10760               *pos += 4;
10761               return value_zero (to_static_fixed_type (type), not_lval);
10762             }
10763         }
10764
10765       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10766       return ada_to_fixed_value (arg1);
10767
10768     case OP_FUNCALL:
10769       (*pos) += 2;
10770
10771       /* Allocate arg vector, including space for the function to be
10772          called in argvec[0] and a terminating NULL.  */
10773       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10774       argvec = XALLOCAVEC (struct value *, nargs + 2);
10775
10776       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10777           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10778         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10779                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10780       else
10781         {
10782           for (tem = 0; tem <= nargs; tem += 1)
10783             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10784           argvec[tem] = 0;
10785
10786           if (noside == EVAL_SKIP)
10787             goto nosideret;
10788         }
10789
10790       if (ada_is_constrained_packed_array_type
10791           (desc_base_type (value_type (argvec[0]))))
10792         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10793       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10794                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10795         /* This is a packed array that has already been fixed, and
10796            therefore already coerced to a simple array.  Nothing further
10797            to do.  */
10798         ;
10799       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10800         {
10801           /* Make sure we dereference references so that all the code below
10802              feels like it's really handling the referenced value.  Wrapping
10803              types (for alignment) may be there, so make sure we strip them as
10804              well.  */
10805           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10806         }
10807       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10808                && VALUE_LVAL (argvec[0]) == lval_memory)
10809         argvec[0] = value_addr (argvec[0]);
10810
10811       type = ada_check_typedef (value_type (argvec[0]));
10812
10813       /* Ada allows us to implicitly dereference arrays when subscripting
10814          them.  So, if this is an array typedef (encoding use for array
10815          access types encoded as fat pointers), strip it now.  */
10816       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10817         type = ada_typedef_target_type (type);
10818
10819       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10820         {
10821           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10822             {
10823             case TYPE_CODE_FUNC:
10824               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10825               break;
10826             case TYPE_CODE_ARRAY:
10827               break;
10828             case TYPE_CODE_STRUCT:
10829               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10830                 argvec[0] = ada_value_ind (argvec[0]);
10831               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10832               break;
10833             default:
10834               error (_("cannot subscript or call something of type `%s'"),
10835                      ada_type_name (value_type (argvec[0])));
10836               break;
10837             }
10838         }
10839
10840       switch (TYPE_CODE (type))
10841         {
10842         case TYPE_CODE_FUNC:
10843           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10844             {
10845               struct type *rtype = TYPE_TARGET_TYPE (type);
10846
10847               if (TYPE_GNU_IFUNC (type))
10848                 return allocate_value (TYPE_TARGET_TYPE (rtype));
10849               return allocate_value (rtype);
10850             }
10851           return call_function_by_hand (argvec[0], nargs, argvec + 1);
10852         case TYPE_CODE_INTERNAL_FUNCTION:
10853           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10854             /* We don't know anything about what the internal
10855                function might return, but we have to return
10856                something.  */
10857             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10858                                not_lval);
10859           else
10860             return call_internal_function (exp->gdbarch, exp->language_defn,
10861                                            argvec[0], nargs, argvec + 1);
10862
10863         case TYPE_CODE_STRUCT:
10864           {
10865             int arity;
10866
10867             arity = ada_array_arity (type);
10868             type = ada_array_element_type (type, nargs);
10869             if (type == NULL)
10870               error (_("cannot subscript or call a record"));
10871             if (arity != nargs)
10872               error (_("wrong number of subscripts; expecting %d"), arity);
10873             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10874               return value_zero (ada_aligned_type (type), lval_memory);
10875             return
10876               unwrap_value (ada_value_subscript
10877                             (argvec[0], nargs, argvec + 1));
10878           }
10879         case TYPE_CODE_ARRAY:
10880           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10881             {
10882               type = ada_array_element_type (type, nargs);
10883               if (type == NULL)
10884                 error (_("element type of array unknown"));
10885               else
10886                 return value_zero (ada_aligned_type (type), lval_memory);
10887             }
10888           return
10889             unwrap_value (ada_value_subscript
10890                           (ada_coerce_to_simple_array (argvec[0]),
10891                            nargs, argvec + 1));
10892         case TYPE_CODE_PTR:     /* Pointer to array */
10893           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10894             {
10895               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10896               type = ada_array_element_type (type, nargs);
10897               if (type == NULL)
10898                 error (_("element type of array unknown"));
10899               else
10900                 return value_zero (ada_aligned_type (type), lval_memory);
10901             }
10902           return
10903             unwrap_value (ada_value_ptr_subscript (argvec[0],
10904                                                    nargs, argvec + 1));
10905
10906         default:
10907           error (_("Attempt to index or call something other than an "
10908                    "array or function"));
10909         }
10910
10911     case TERNOP_SLICE:
10912       {
10913         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10914         struct value *low_bound_val =
10915           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10916         struct value *high_bound_val =
10917           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10918         LONGEST low_bound;
10919         LONGEST high_bound;
10920
10921         low_bound_val = coerce_ref (low_bound_val);
10922         high_bound_val = coerce_ref (high_bound_val);
10923         low_bound = value_as_long (low_bound_val);
10924         high_bound = value_as_long (high_bound_val);
10925
10926         if (noside == EVAL_SKIP)
10927           goto nosideret;
10928
10929         /* If this is a reference to an aligner type, then remove all
10930            the aligners.  */
10931         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10932             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10933           TYPE_TARGET_TYPE (value_type (array)) =
10934             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10935
10936         if (ada_is_constrained_packed_array_type (value_type (array)))
10937           error (_("cannot slice a packed array"));
10938
10939         /* If this is a reference to an array or an array lvalue,
10940            convert to a pointer.  */
10941         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10942             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
10943                 && VALUE_LVAL (array) == lval_memory))
10944           array = value_addr (array);
10945
10946         if (noside == EVAL_AVOID_SIDE_EFFECTS
10947             && ada_is_array_descriptor_type (ada_check_typedef
10948                                              (value_type (array))))
10949           return empty_array (ada_type_of_array (array, 0), low_bound);
10950
10951         array = ada_coerce_to_simple_array_ptr (array);
10952
10953         /* If we have more than one level of pointer indirection,
10954            dereference the value until we get only one level.  */
10955         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
10956                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
10957                      == TYPE_CODE_PTR))
10958           array = value_ind (array);
10959
10960         /* Make sure we really do have an array type before going further,
10961            to avoid a SEGV when trying to get the index type or the target
10962            type later down the road if the debug info generated by
10963            the compiler is incorrect or incomplete.  */
10964         if (!ada_is_simple_array_type (value_type (array)))
10965           error (_("cannot take slice of non-array"));
10966
10967         if (TYPE_CODE (ada_check_typedef (value_type (array)))
10968             == TYPE_CODE_PTR)
10969           {
10970             struct type *type0 = ada_check_typedef (value_type (array));
10971
10972             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10973               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
10974             else
10975               {
10976                 struct type *arr_type0 =
10977                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10978
10979                 return ada_value_slice_from_ptr (array, arr_type0,
10980                                                  longest_to_int (low_bound),
10981                                                  longest_to_int (high_bound));
10982               }
10983           }
10984         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10985           return array;
10986         else if (high_bound < low_bound)
10987           return empty_array (value_type (array), low_bound);
10988         else
10989           return ada_value_slice (array, longest_to_int (low_bound),
10990                                   longest_to_int (high_bound));
10991       }
10992
10993     case UNOP_IN_RANGE:
10994       (*pos) += 2;
10995       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10996       type = check_typedef (exp->elts[pc + 1].type);
10997
10998       if (noside == EVAL_SKIP)
10999         goto nosideret;
11000
11001       switch (TYPE_CODE (type))
11002         {
11003         default:
11004           lim_warning (_("Membership test incompletely implemented; "
11005                          "always returns true"));
11006           type = language_bool_type (exp->language_defn, exp->gdbarch);
11007           return value_from_longest (type, (LONGEST) 1);
11008
11009         case TYPE_CODE_RANGE:
11010           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11011           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11012           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11013           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11014           type = language_bool_type (exp->language_defn, exp->gdbarch);
11015           return
11016             value_from_longest (type,
11017                                 (value_less (arg1, arg3)
11018                                  || value_equal (arg1, arg3))
11019                                 && (value_less (arg2, arg1)
11020                                     || value_equal (arg2, arg1)));
11021         }
11022
11023     case BINOP_IN_BOUNDS:
11024       (*pos) += 2;
11025       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11026       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11027
11028       if (noside == EVAL_SKIP)
11029         goto nosideret;
11030
11031       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11032         {
11033           type = language_bool_type (exp->language_defn, exp->gdbarch);
11034           return value_zero (type, not_lval);
11035         }
11036
11037       tem = longest_to_int (exp->elts[pc + 1].longconst);
11038
11039       type = ada_index_type (value_type (arg2), tem, "range");
11040       if (!type)
11041         type = value_type (arg1);
11042
11043       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11044       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11045
11046       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11047       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11048       type = language_bool_type (exp->language_defn, exp->gdbarch);
11049       return
11050         value_from_longest (type,
11051                             (value_less (arg1, arg3)
11052                              || value_equal (arg1, arg3))
11053                             && (value_less (arg2, arg1)
11054                                 || value_equal (arg2, arg1)));
11055
11056     case TERNOP_IN_RANGE:
11057       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11058       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11059       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11060
11061       if (noside == EVAL_SKIP)
11062         goto nosideret;
11063
11064       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11065       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11066       type = language_bool_type (exp->language_defn, exp->gdbarch);
11067       return
11068         value_from_longest (type,
11069                             (value_less (arg1, arg3)
11070                              || value_equal (arg1, arg3))
11071                             && (value_less (arg2, arg1)
11072                                 || value_equal (arg2, arg1)));
11073
11074     case OP_ATR_FIRST:
11075     case OP_ATR_LAST:
11076     case OP_ATR_LENGTH:
11077       {
11078         struct type *type_arg;
11079
11080         if (exp->elts[*pos].opcode == OP_TYPE)
11081           {
11082             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11083             arg1 = NULL;
11084             type_arg = check_typedef (exp->elts[pc + 2].type);
11085           }
11086         else
11087           {
11088             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11089             type_arg = NULL;
11090           }
11091
11092         if (exp->elts[*pos].opcode != OP_LONG)
11093           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11094         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11095         *pos += 4;
11096
11097         if (noside == EVAL_SKIP)
11098           goto nosideret;
11099
11100         if (type_arg == NULL)
11101           {
11102             arg1 = ada_coerce_ref (arg1);
11103
11104             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11105               arg1 = ada_coerce_to_simple_array (arg1);
11106
11107             if (op == OP_ATR_LENGTH)
11108               type = builtin_type (exp->gdbarch)->builtin_int;
11109             else
11110               {
11111                 type = ada_index_type (value_type (arg1), tem,
11112                                        ada_attribute_name (op));
11113                 if (type == NULL)
11114                   type = builtin_type (exp->gdbarch)->builtin_int;
11115               }
11116
11117             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11118               return allocate_value (type);
11119
11120             switch (op)
11121               {
11122               default:          /* Should never happen.  */
11123                 error (_("unexpected attribute encountered"));
11124               case OP_ATR_FIRST:
11125                 return value_from_longest
11126                         (type, ada_array_bound (arg1, tem, 0));
11127               case OP_ATR_LAST:
11128                 return value_from_longest
11129                         (type, ada_array_bound (arg1, tem, 1));
11130               case OP_ATR_LENGTH:
11131                 return value_from_longest
11132                         (type, ada_array_length (arg1, tem));
11133               }
11134           }
11135         else if (discrete_type_p (type_arg))
11136           {
11137             struct type *range_type;
11138             const char *name = ada_type_name (type_arg);
11139
11140             range_type = NULL;
11141             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11142               range_type = to_fixed_range_type (type_arg, NULL);
11143             if (range_type == NULL)
11144               range_type = type_arg;
11145             switch (op)
11146               {
11147               default:
11148                 error (_("unexpected attribute encountered"));
11149               case OP_ATR_FIRST:
11150                 return value_from_longest 
11151                   (range_type, ada_discrete_type_low_bound (range_type));
11152               case OP_ATR_LAST:
11153                 return value_from_longest
11154                   (range_type, ada_discrete_type_high_bound (range_type));
11155               case OP_ATR_LENGTH:
11156                 error (_("the 'length attribute applies only to array types"));
11157               }
11158           }
11159         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11160           error (_("unimplemented type attribute"));
11161         else
11162           {
11163             LONGEST low, high;
11164
11165             if (ada_is_constrained_packed_array_type (type_arg))
11166               type_arg = decode_constrained_packed_array_type (type_arg);
11167
11168             if (op == OP_ATR_LENGTH)
11169               type = builtin_type (exp->gdbarch)->builtin_int;
11170             else
11171               {
11172                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11173                 if (type == NULL)
11174                   type = builtin_type (exp->gdbarch)->builtin_int;
11175               }
11176
11177             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11178               return allocate_value (type);
11179
11180             switch (op)
11181               {
11182               default:
11183                 error (_("unexpected attribute encountered"));
11184               case OP_ATR_FIRST:
11185                 low = ada_array_bound_from_type (type_arg, tem, 0);
11186                 return value_from_longest (type, low);
11187               case OP_ATR_LAST:
11188                 high = ada_array_bound_from_type (type_arg, tem, 1);
11189                 return value_from_longest (type, high);
11190               case OP_ATR_LENGTH:
11191                 low = ada_array_bound_from_type (type_arg, tem, 0);
11192                 high = ada_array_bound_from_type (type_arg, tem, 1);
11193                 return value_from_longest (type, high - low + 1);
11194               }
11195           }
11196       }
11197
11198     case OP_ATR_TAG:
11199       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11200       if (noside == EVAL_SKIP)
11201         goto nosideret;
11202
11203       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11204         return value_zero (ada_tag_type (arg1), not_lval);
11205
11206       return ada_value_tag (arg1);
11207
11208     case OP_ATR_MIN:
11209     case OP_ATR_MAX:
11210       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11211       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11212       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11213       if (noside == EVAL_SKIP)
11214         goto nosideret;
11215       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11216         return value_zero (value_type (arg1), not_lval);
11217       else
11218         {
11219           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11220           return value_binop (arg1, arg2,
11221                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11222         }
11223
11224     case OP_ATR_MODULUS:
11225       {
11226         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11227
11228         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11229         if (noside == EVAL_SKIP)
11230           goto nosideret;
11231
11232         if (!ada_is_modular_type (type_arg))
11233           error (_("'modulus must be applied to modular type"));
11234
11235         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11236                                    ada_modulus (type_arg));
11237       }
11238
11239
11240     case OP_ATR_POS:
11241       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11242       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11243       if (noside == EVAL_SKIP)
11244         goto nosideret;
11245       type = builtin_type (exp->gdbarch)->builtin_int;
11246       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11247         return value_zero (type, not_lval);
11248       else
11249         return value_pos_atr (type, arg1);
11250
11251     case OP_ATR_SIZE:
11252       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11253       type = value_type (arg1);
11254
11255       /* If the argument is a reference, then dereference its type, since
11256          the user is really asking for the size of the actual object,
11257          not the size of the pointer.  */
11258       if (TYPE_CODE (type) == TYPE_CODE_REF)
11259         type = TYPE_TARGET_TYPE (type);
11260
11261       if (noside == EVAL_SKIP)
11262         goto nosideret;
11263       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11264         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11265       else
11266         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11267                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11268
11269     case OP_ATR_VAL:
11270       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11271       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11272       type = exp->elts[pc + 2].type;
11273       if (noside == EVAL_SKIP)
11274         goto nosideret;
11275       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11276         return value_zero (type, not_lval);
11277       else
11278         return value_val_atr (type, arg1);
11279
11280     case BINOP_EXP:
11281       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11282       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11283       if (noside == EVAL_SKIP)
11284         goto nosideret;
11285       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11286         return value_zero (value_type (arg1), not_lval);
11287       else
11288         {
11289           /* For integer exponentiation operations,
11290              only promote the first argument.  */
11291           if (is_integral_type (value_type (arg2)))
11292             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11293           else
11294             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11295
11296           return value_binop (arg1, arg2, op);
11297         }
11298
11299     case UNOP_PLUS:
11300       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11301       if (noside == EVAL_SKIP)
11302         goto nosideret;
11303       else
11304         return arg1;
11305
11306     case UNOP_ABS:
11307       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11308       if (noside == EVAL_SKIP)
11309         goto nosideret;
11310       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11311       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11312         return value_neg (arg1);
11313       else
11314         return arg1;
11315
11316     case UNOP_IND:
11317       preeval_pos = *pos;
11318       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11319       if (noside == EVAL_SKIP)
11320         goto nosideret;
11321       type = ada_check_typedef (value_type (arg1));
11322       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11323         {
11324           if (ada_is_array_descriptor_type (type))
11325             /* GDB allows dereferencing GNAT array descriptors.  */
11326             {
11327               struct type *arrType = ada_type_of_array (arg1, 0);
11328
11329               if (arrType == NULL)
11330                 error (_("Attempt to dereference null array pointer."));
11331               return value_at_lazy (arrType, 0);
11332             }
11333           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11334                    || TYPE_CODE (type) == TYPE_CODE_REF
11335                    /* In C you can dereference an array to get the 1st elt.  */
11336                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11337             {
11338             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11339                only be determined by inspecting the object's tag.
11340                This means that we need to evaluate completely the
11341                expression in order to get its type.  */
11342
11343               if ((TYPE_CODE (type) == TYPE_CODE_REF
11344                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11345                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11346                 {
11347                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11348                                           EVAL_NORMAL);
11349                   type = value_type (ada_value_ind (arg1));
11350                 }
11351               else
11352                 {
11353                   type = to_static_fixed_type
11354                     (ada_aligned_type
11355                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11356                 }
11357               ada_ensure_varsize_limit (type);
11358               return value_zero (type, lval_memory);
11359             }
11360           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11361             {
11362               /* GDB allows dereferencing an int.  */
11363               if (expect_type == NULL)
11364                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11365                                    lval_memory);
11366               else
11367                 {
11368                   expect_type = 
11369                     to_static_fixed_type (ada_aligned_type (expect_type));
11370                   return value_zero (expect_type, lval_memory);
11371                 }
11372             }
11373           else
11374             error (_("Attempt to take contents of a non-pointer value."));
11375         }
11376       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11377       type = ada_check_typedef (value_type (arg1));
11378
11379       if (TYPE_CODE (type) == TYPE_CODE_INT)
11380           /* GDB allows dereferencing an int.  If we were given
11381              the expect_type, then use that as the target type.
11382              Otherwise, assume that the target type is an int.  */
11383         {
11384           if (expect_type != NULL)
11385             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11386                                               arg1));
11387           else
11388             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11389                                   (CORE_ADDR) value_as_address (arg1));
11390         }
11391
11392       if (ada_is_array_descriptor_type (type))
11393         /* GDB allows dereferencing GNAT array descriptors.  */
11394         return ada_coerce_to_simple_array (arg1);
11395       else
11396         return ada_value_ind (arg1);
11397
11398     case STRUCTOP_STRUCT:
11399       tem = longest_to_int (exp->elts[pc + 1].longconst);
11400       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11401       preeval_pos = *pos;
11402       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11403       if (noside == EVAL_SKIP)
11404         goto nosideret;
11405       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11406         {
11407           struct type *type1 = value_type (arg1);
11408
11409           if (ada_is_tagged_type (type1, 1))
11410             {
11411               type = ada_lookup_struct_elt_type (type1,
11412                                                  &exp->elts[pc + 2].string,
11413                                                  1, 1, NULL);
11414
11415               /* If the field is not found, check if it exists in the
11416                  extension of this object's type. This means that we
11417                  need to evaluate completely the expression.  */
11418
11419               if (type == NULL)
11420                 {
11421                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11422                                           EVAL_NORMAL);
11423                   arg1 = ada_value_struct_elt (arg1,
11424                                                &exp->elts[pc + 2].string,
11425                                                0);
11426                   arg1 = unwrap_value (arg1);
11427                   type = value_type (ada_to_fixed_value (arg1));
11428                 }
11429             }
11430           else
11431             type =
11432               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11433                                           0, NULL);
11434
11435           return value_zero (ada_aligned_type (type), lval_memory);
11436         }
11437       else
11438         {
11439           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11440           arg1 = unwrap_value (arg1);
11441           return ada_to_fixed_value (arg1);
11442         }
11443
11444     case OP_TYPE:
11445       /* The value is not supposed to be used.  This is here to make it
11446          easier to accommodate expressions that contain types.  */
11447       (*pos) += 2;
11448       if (noside == EVAL_SKIP)
11449         goto nosideret;
11450       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11451         return allocate_value (exp->elts[pc + 1].type);
11452       else
11453         error (_("Attempt to use a type name as an expression"));
11454
11455     case OP_AGGREGATE:
11456     case OP_CHOICES:
11457     case OP_OTHERS:
11458     case OP_DISCRETE_RANGE:
11459     case OP_POSITIONAL:
11460     case OP_NAME:
11461       if (noside == EVAL_NORMAL)
11462         switch (op) 
11463           {
11464           case OP_NAME:
11465             error (_("Undefined name, ambiguous name, or renaming used in "
11466                      "component association: %s."), &exp->elts[pc+2].string);
11467           case OP_AGGREGATE:
11468             error (_("Aggregates only allowed on the right of an assignment"));
11469           default:
11470             internal_error (__FILE__, __LINE__,
11471                             _("aggregate apparently mangled"));
11472           }
11473
11474       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11475       *pos += oplen - 1;
11476       for (tem = 0; tem < nargs; tem += 1) 
11477         ada_evaluate_subexp (NULL, exp, pos, noside);
11478       goto nosideret;
11479     }
11480
11481 nosideret:
11482   return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
11483 }
11484 \f
11485
11486                                 /* Fixed point */
11487
11488 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11489    type name that encodes the 'small and 'delta information.
11490    Otherwise, return NULL.  */
11491
11492 static const char *
11493 fixed_type_info (struct type *type)
11494 {
11495   const char *name = ada_type_name (type);
11496   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11497
11498   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11499     {
11500       const char *tail = strstr (name, "___XF_");
11501
11502       if (tail == NULL)
11503         return NULL;
11504       else
11505         return tail + 5;
11506     }
11507   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11508     return fixed_type_info (TYPE_TARGET_TYPE (type));
11509   else
11510     return NULL;
11511 }
11512
11513 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11514
11515 int
11516 ada_is_fixed_point_type (struct type *type)
11517 {
11518   return fixed_type_info (type) != NULL;
11519 }
11520
11521 /* Return non-zero iff TYPE represents a System.Address type.  */
11522
11523 int
11524 ada_is_system_address_type (struct type *type)
11525 {
11526   return (TYPE_NAME (type)
11527           && strcmp (TYPE_NAME (type), "system__address") == 0);
11528 }
11529
11530 /* Assuming that TYPE is the representation of an Ada fixed-point
11531    type, return its delta, or -1 if the type is malformed and the
11532    delta cannot be determined.  */
11533
11534 DOUBLEST
11535 ada_delta (struct type *type)
11536 {
11537   const char *encoding = fixed_type_info (type);
11538   DOUBLEST num, den;
11539
11540   /* Strictly speaking, num and den are encoded as integer.  However,
11541      they may not fit into a long, and they will have to be converted
11542      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11543   if (sscanf (encoding, "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11544               &num, &den) < 2)
11545     return -1.0;
11546   else
11547     return num / den;
11548 }
11549
11550 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11551    factor ('SMALL value) associated with the type.  */
11552
11553 static DOUBLEST
11554 scaling_factor (struct type *type)
11555 {
11556   const char *encoding = fixed_type_info (type);
11557   DOUBLEST num0, den0, num1, den1;
11558   int n;
11559
11560   /* Strictly speaking, num's and den's are encoded as integer.  However,
11561      they may not fit into a long, and they will have to be converted
11562      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11563   n = sscanf (encoding,
11564               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT
11565               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11566               &num0, &den0, &num1, &den1);
11567
11568   if (n < 2)
11569     return 1.0;
11570   else if (n == 4)
11571     return num1 / den1;
11572   else
11573     return num0 / den0;
11574 }
11575
11576
11577 /* Assuming that X is the representation of a value of fixed-point
11578    type TYPE, return its floating-point equivalent.  */
11579
11580 DOUBLEST
11581 ada_fixed_to_float (struct type *type, LONGEST x)
11582 {
11583   return (DOUBLEST) x *scaling_factor (type);
11584 }
11585
11586 /* The representation of a fixed-point value of type TYPE
11587    corresponding to the value X.  */
11588
11589 LONGEST
11590 ada_float_to_fixed (struct type *type, DOUBLEST x)
11591 {
11592   return (LONGEST) (x / scaling_factor (type) + 0.5);
11593 }
11594
11595 \f
11596
11597                                 /* Range types */
11598
11599 /* Scan STR beginning at position K for a discriminant name, and
11600    return the value of that discriminant field of DVAL in *PX.  If
11601    PNEW_K is not null, put the position of the character beyond the
11602    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11603    not alter *PX and *PNEW_K if unsuccessful.  */
11604
11605 static int
11606 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11607                     int *pnew_k)
11608 {
11609   static char *bound_buffer = NULL;
11610   static size_t bound_buffer_len = 0;
11611   const char *pstart, *pend, *bound;
11612   struct value *bound_val;
11613
11614   if (dval == NULL || str == NULL || str[k] == '\0')
11615     return 0;
11616
11617   pstart = str + k;
11618   pend = strstr (pstart, "__");
11619   if (pend == NULL)
11620     {
11621       bound = pstart;
11622       k += strlen (bound);
11623     }
11624   else
11625     {
11626       int len = pend - pstart;
11627
11628       /* Strip __ and beyond.  */
11629       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11630       strncpy (bound_buffer, pstart, len);
11631       bound_buffer[len] = '\0';
11632
11633       bound = bound_buffer;
11634       k = pend - str;
11635     }
11636
11637   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11638   if (bound_val == NULL)
11639     return 0;
11640
11641   *px = value_as_long (bound_val);
11642   if (pnew_k != NULL)
11643     *pnew_k = k;
11644   return 1;
11645 }
11646
11647 /* Value of variable named NAME in the current environment.  If
11648    no such variable found, then if ERR_MSG is null, returns 0, and
11649    otherwise causes an error with message ERR_MSG.  */
11650
11651 static struct value *
11652 get_var_value (char *name, char *err_msg)
11653 {
11654   struct block_symbol *syms;
11655   int nsyms;
11656
11657   nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN,
11658                                   &syms);
11659
11660   if (nsyms != 1)
11661     {
11662       if (err_msg == NULL)
11663         return 0;
11664       else
11665         error (("%s"), err_msg);
11666     }
11667
11668   return value_of_variable (syms[0].symbol, syms[0].block);
11669 }
11670
11671 /* Value of integer variable named NAME in the current environment.  If
11672    no such variable found, returns 0, and sets *FLAG to 0.  If
11673    successful, sets *FLAG to 1.  */
11674
11675 LONGEST
11676 get_int_var_value (char *name, int *flag)
11677 {
11678   struct value *var_val = get_var_value (name, 0);
11679
11680   if (var_val == 0)
11681     {
11682       if (flag != NULL)
11683         *flag = 0;
11684       return 0;
11685     }
11686   else
11687     {
11688       if (flag != NULL)
11689         *flag = 1;
11690       return value_as_long (var_val);
11691     }
11692 }
11693
11694
11695 /* Return a range type whose base type is that of the range type named
11696    NAME in the current environment, and whose bounds are calculated
11697    from NAME according to the GNAT range encoding conventions.
11698    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11699    corresponding range type from debug information; fall back to using it
11700    if symbol lookup fails.  If a new type must be created, allocate it
11701    like ORIG_TYPE was.  The bounds information, in general, is encoded
11702    in NAME, the base type given in the named range type.  */
11703
11704 static struct type *
11705 to_fixed_range_type (struct type *raw_type, struct value *dval)
11706 {
11707   const char *name;
11708   struct type *base_type;
11709   const char *subtype_info;
11710
11711   gdb_assert (raw_type != NULL);
11712   gdb_assert (TYPE_NAME (raw_type) != NULL);
11713
11714   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11715     base_type = TYPE_TARGET_TYPE (raw_type);
11716   else
11717     base_type = raw_type;
11718
11719   name = TYPE_NAME (raw_type);
11720   subtype_info = strstr (name, "___XD");
11721   if (subtype_info == NULL)
11722     {
11723       LONGEST L = ada_discrete_type_low_bound (raw_type);
11724       LONGEST U = ada_discrete_type_high_bound (raw_type);
11725
11726       if (L < INT_MIN || U > INT_MAX)
11727         return raw_type;
11728       else
11729         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11730                                          L, U);
11731     }
11732   else
11733     {
11734       static char *name_buf = NULL;
11735       static size_t name_len = 0;
11736       int prefix_len = subtype_info - name;
11737       LONGEST L, U;
11738       struct type *type;
11739       const char *bounds_str;
11740       int n;
11741
11742       GROW_VECT (name_buf, name_len, prefix_len + 5);
11743       strncpy (name_buf, name, prefix_len);
11744       name_buf[prefix_len] = '\0';
11745
11746       subtype_info += 5;
11747       bounds_str = strchr (subtype_info, '_');
11748       n = 1;
11749
11750       if (*subtype_info == 'L')
11751         {
11752           if (!ada_scan_number (bounds_str, n, &L, &n)
11753               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11754             return raw_type;
11755           if (bounds_str[n] == '_')
11756             n += 2;
11757           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11758             n += 1;
11759           subtype_info += 1;
11760         }
11761       else
11762         {
11763           int ok;
11764
11765           strcpy (name_buf + prefix_len, "___L");
11766           L = get_int_var_value (name_buf, &ok);
11767           if (!ok)
11768             {
11769               lim_warning (_("Unknown lower bound, using 1."));
11770               L = 1;
11771             }
11772         }
11773
11774       if (*subtype_info == 'U')
11775         {
11776           if (!ada_scan_number (bounds_str, n, &U, &n)
11777               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11778             return raw_type;
11779         }
11780       else
11781         {
11782           int ok;
11783
11784           strcpy (name_buf + prefix_len, "___U");
11785           U = get_int_var_value (name_buf, &ok);
11786           if (!ok)
11787             {
11788               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11789               U = L;
11790             }
11791         }
11792
11793       type = create_static_range_type (alloc_type_copy (raw_type),
11794                                        base_type, L, U);
11795       TYPE_NAME (type) = name;
11796       return type;
11797     }
11798 }
11799
11800 /* True iff NAME is the name of a range type.  */
11801
11802 int
11803 ada_is_range_type_name (const char *name)
11804 {
11805   return (name != NULL && strstr (name, "___XD"));
11806 }
11807 \f
11808
11809                                 /* Modular types */
11810
11811 /* True iff TYPE is an Ada modular type.  */
11812
11813 int
11814 ada_is_modular_type (struct type *type)
11815 {
11816   struct type *subranged_type = get_base_type (type);
11817
11818   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11819           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11820           && TYPE_UNSIGNED (subranged_type));
11821 }
11822
11823 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11824
11825 ULONGEST
11826 ada_modulus (struct type *type)
11827 {
11828   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11829 }
11830 \f
11831
11832 /* Ada exception catchpoint support:
11833    ---------------------------------
11834
11835    We support 3 kinds of exception catchpoints:
11836      . catchpoints on Ada exceptions
11837      . catchpoints on unhandled Ada exceptions
11838      . catchpoints on failed assertions
11839
11840    Exceptions raised during failed assertions, or unhandled exceptions
11841    could perfectly be caught with the general catchpoint on Ada exceptions.
11842    However, we can easily differentiate these two special cases, and having
11843    the option to distinguish these two cases from the rest can be useful
11844    to zero-in on certain situations.
11845
11846    Exception catchpoints are a specialized form of breakpoint,
11847    since they rely on inserting breakpoints inside known routines
11848    of the GNAT runtime.  The implementation therefore uses a standard
11849    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11850    of breakpoint_ops.
11851
11852    Support in the runtime for exception catchpoints have been changed
11853    a few times already, and these changes affect the implementation
11854    of these catchpoints.  In order to be able to support several
11855    variants of the runtime, we use a sniffer that will determine
11856    the runtime variant used by the program being debugged.  */
11857
11858 /* Ada's standard exceptions.
11859
11860    The Ada 83 standard also defined Numeric_Error.  But there so many
11861    situations where it was unclear from the Ada 83 Reference Manual
11862    (RM) whether Constraint_Error or Numeric_Error should be raised,
11863    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11864    Interpretation saying that anytime the RM says that Numeric_Error
11865    should be raised, the implementation may raise Constraint_Error.
11866    Ada 95 went one step further and pretty much removed Numeric_Error
11867    from the list of standard exceptions (it made it a renaming of
11868    Constraint_Error, to help preserve compatibility when compiling
11869    an Ada83 compiler). As such, we do not include Numeric_Error from
11870    this list of standard exceptions.  */
11871
11872 static char *standard_exc[] = {
11873   "constraint_error",
11874   "program_error",
11875   "storage_error",
11876   "tasking_error"
11877 };
11878
11879 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11880
11881 /* A structure that describes how to support exception catchpoints
11882    for a given executable.  */
11883
11884 struct exception_support_info
11885 {
11886    /* The name of the symbol to break on in order to insert
11887       a catchpoint on exceptions.  */
11888    const char *catch_exception_sym;
11889
11890    /* The name of the symbol to break on in order to insert
11891       a catchpoint on unhandled exceptions.  */
11892    const char *catch_exception_unhandled_sym;
11893
11894    /* The name of the symbol to break on in order to insert
11895       a catchpoint on failed assertions.  */
11896    const char *catch_assert_sym;
11897
11898    /* Assuming that the inferior just triggered an unhandled exception
11899       catchpoint, this function is responsible for returning the address
11900       in inferior memory where the name of that exception is stored.
11901       Return zero if the address could not be computed.  */
11902    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11903 };
11904
11905 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11906 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11907
11908 /* The following exception support info structure describes how to
11909    implement exception catchpoints with the latest version of the
11910    Ada runtime (as of 2007-03-06).  */
11911
11912 static const struct exception_support_info default_exception_support_info =
11913 {
11914   "__gnat_debug_raise_exception", /* catch_exception_sym */
11915   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11916   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11917   ada_unhandled_exception_name_addr
11918 };
11919
11920 /* The following exception support info structure describes how to
11921    implement exception catchpoints with a slightly older version
11922    of the Ada runtime.  */
11923
11924 static const struct exception_support_info exception_support_info_fallback =
11925 {
11926   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11927   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11928   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11929   ada_unhandled_exception_name_addr_from_raise
11930 };
11931
11932 /* Return nonzero if we can detect the exception support routines
11933    described in EINFO.
11934
11935    This function errors out if an abnormal situation is detected
11936    (for instance, if we find the exception support routines, but
11937    that support is found to be incomplete).  */
11938
11939 static int
11940 ada_has_this_exception_support (const struct exception_support_info *einfo)
11941 {
11942   struct symbol *sym;
11943
11944   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11945      that should be compiled with debugging information.  As a result, we
11946      expect to find that symbol in the symtabs.  */
11947
11948   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11949   if (sym == NULL)
11950     {
11951       /* Perhaps we did not find our symbol because the Ada runtime was
11952          compiled without debugging info, or simply stripped of it.
11953          It happens on some GNU/Linux distributions for instance, where
11954          users have to install a separate debug package in order to get
11955          the runtime's debugging info.  In that situation, let the user
11956          know why we cannot insert an Ada exception catchpoint.
11957
11958          Note: Just for the purpose of inserting our Ada exception
11959          catchpoint, we could rely purely on the associated minimal symbol.
11960          But we would be operating in degraded mode anyway, since we are
11961          still lacking the debugging info needed later on to extract
11962          the name of the exception being raised (this name is printed in
11963          the catchpoint message, and is also used when trying to catch
11964          a specific exception).  We do not handle this case for now.  */
11965       struct bound_minimal_symbol msym
11966         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11967
11968       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11969         error (_("Your Ada runtime appears to be missing some debugging "
11970                  "information.\nCannot insert Ada exception catchpoint "
11971                  "in this configuration."));
11972
11973       return 0;
11974     }
11975
11976   /* Make sure that the symbol we found corresponds to a function.  */
11977
11978   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11979     error (_("Symbol \"%s\" is not a function (class = %d)"),
11980            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
11981
11982   return 1;
11983 }
11984
11985 /* Inspect the Ada runtime and determine which exception info structure
11986    should be used to provide support for exception catchpoints.
11987
11988    This function will always set the per-inferior exception_info,
11989    or raise an error.  */
11990
11991 static void
11992 ada_exception_support_info_sniffer (void)
11993 {
11994   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11995
11996   /* If the exception info is already known, then no need to recompute it.  */
11997   if (data->exception_info != NULL)
11998     return;
11999
12000   /* Check the latest (default) exception support info.  */
12001   if (ada_has_this_exception_support (&default_exception_support_info))
12002     {
12003       data->exception_info = &default_exception_support_info;
12004       return;
12005     }
12006
12007   /* Try our fallback exception suport info.  */
12008   if (ada_has_this_exception_support (&exception_support_info_fallback))
12009     {
12010       data->exception_info = &exception_support_info_fallback;
12011       return;
12012     }
12013
12014   /* Sometimes, it is normal for us to not be able to find the routine
12015      we are looking for.  This happens when the program is linked with
12016      the shared version of the GNAT runtime, and the program has not been
12017      started yet.  Inform the user of these two possible causes if
12018      applicable.  */
12019
12020   if (ada_update_initial_language (language_unknown) != language_ada)
12021     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12022
12023   /* If the symbol does not exist, then check that the program is
12024      already started, to make sure that shared libraries have been
12025      loaded.  If it is not started, this may mean that the symbol is
12026      in a shared library.  */
12027
12028   if (ptid_get_pid (inferior_ptid) == 0)
12029     error (_("Unable to insert catchpoint. Try to start the program first."));
12030
12031   /* At this point, we know that we are debugging an Ada program and
12032      that the inferior has been started, but we still are not able to
12033      find the run-time symbols.  That can mean that we are in
12034      configurable run time mode, or that a-except as been optimized
12035      out by the linker...  In any case, at this point it is not worth
12036      supporting this feature.  */
12037
12038   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12039 }
12040
12041 /* True iff FRAME is very likely to be that of a function that is
12042    part of the runtime system.  This is all very heuristic, but is
12043    intended to be used as advice as to what frames are uninteresting
12044    to most users.  */
12045
12046 static int
12047 is_known_support_routine (struct frame_info *frame)
12048 {
12049   struct symtab_and_line sal;
12050   char *func_name;
12051   enum language func_lang;
12052   int i;
12053   const char *fullname;
12054
12055   /* If this code does not have any debugging information (no symtab),
12056      This cannot be any user code.  */
12057
12058   find_frame_sal (frame, &sal);
12059   if (sal.symtab == NULL)
12060     return 1;
12061
12062   /* If there is a symtab, but the associated source file cannot be
12063      located, then assume this is not user code:  Selecting a frame
12064      for which we cannot display the code would not be very helpful
12065      for the user.  This should also take care of case such as VxWorks
12066      where the kernel has some debugging info provided for a few units.  */
12067
12068   fullname = symtab_to_fullname (sal.symtab);
12069   if (access (fullname, R_OK) != 0)
12070     return 1;
12071
12072   /* Check the unit filename againt the Ada runtime file naming.
12073      We also check the name of the objfile against the name of some
12074      known system libraries that sometimes come with debugging info
12075      too.  */
12076
12077   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12078     {
12079       re_comp (known_runtime_file_name_patterns[i]);
12080       if (re_exec (lbasename (sal.symtab->filename)))
12081         return 1;
12082       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12083           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12084         return 1;
12085     }
12086
12087   /* Check whether the function is a GNAT-generated entity.  */
12088
12089   find_frame_funname (frame, &func_name, &func_lang, NULL);
12090   if (func_name == NULL)
12091     return 1;
12092
12093   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12094     {
12095       re_comp (known_auxiliary_function_name_patterns[i]);
12096       if (re_exec (func_name))
12097         {
12098           xfree (func_name);
12099           return 1;
12100         }
12101     }
12102
12103   xfree (func_name);
12104   return 0;
12105 }
12106
12107 /* Find the first frame that contains debugging information and that is not
12108    part of the Ada run-time, starting from FI and moving upward.  */
12109
12110 void
12111 ada_find_printable_frame (struct frame_info *fi)
12112 {
12113   for (; fi != NULL; fi = get_prev_frame (fi))
12114     {
12115       if (!is_known_support_routine (fi))
12116         {
12117           select_frame (fi);
12118           break;
12119         }
12120     }
12121
12122 }
12123
12124 /* Assuming that the inferior just triggered an unhandled exception
12125    catchpoint, return the address in inferior memory where the name
12126    of the exception is stored.
12127    
12128    Return zero if the address could not be computed.  */
12129
12130 static CORE_ADDR
12131 ada_unhandled_exception_name_addr (void)
12132 {
12133   return parse_and_eval_address ("e.full_name");
12134 }
12135
12136 /* Same as ada_unhandled_exception_name_addr, except that this function
12137    should be used when the inferior uses an older version of the runtime,
12138    where the exception name needs to be extracted from a specific frame
12139    several frames up in the callstack.  */
12140
12141 static CORE_ADDR
12142 ada_unhandled_exception_name_addr_from_raise (void)
12143 {
12144   int frame_level;
12145   struct frame_info *fi;
12146   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12147   struct cleanup *old_chain;
12148
12149   /* To determine the name of this exception, we need to select
12150      the frame corresponding to RAISE_SYM_NAME.  This frame is
12151      at least 3 levels up, so we simply skip the first 3 frames
12152      without checking the name of their associated function.  */
12153   fi = get_current_frame ();
12154   for (frame_level = 0; frame_level < 3; frame_level += 1)
12155     if (fi != NULL)
12156       fi = get_prev_frame (fi); 
12157
12158   old_chain = make_cleanup (null_cleanup, NULL);
12159   while (fi != NULL)
12160     {
12161       char *func_name;
12162       enum language func_lang;
12163
12164       find_frame_funname (fi, &func_name, &func_lang, NULL);
12165       if (func_name != NULL)
12166         {
12167           make_cleanup (xfree, func_name);
12168
12169           if (strcmp (func_name,
12170                       data->exception_info->catch_exception_sym) == 0)
12171             break; /* We found the frame we were looking for...  */
12172           fi = get_prev_frame (fi);
12173         }
12174     }
12175   do_cleanups (old_chain);
12176
12177   if (fi == NULL)
12178     return 0;
12179
12180   select_frame (fi);
12181   return parse_and_eval_address ("id.full_name");
12182 }
12183
12184 /* Assuming the inferior just triggered an Ada exception catchpoint
12185    (of any type), return the address in inferior memory where the name
12186    of the exception is stored, if applicable.
12187
12188    Assumes the selected frame is the current frame.
12189
12190    Return zero if the address could not be computed, or if not relevant.  */
12191
12192 static CORE_ADDR
12193 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12194                            struct breakpoint *b)
12195 {
12196   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12197
12198   switch (ex)
12199     {
12200       case ada_catch_exception:
12201         return (parse_and_eval_address ("e.full_name"));
12202         break;
12203
12204       case ada_catch_exception_unhandled:
12205         return data->exception_info->unhandled_exception_name_addr ();
12206         break;
12207       
12208       case ada_catch_assert:
12209         return 0;  /* Exception name is not relevant in this case.  */
12210         break;
12211
12212       default:
12213         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12214         break;
12215     }
12216
12217   return 0; /* Should never be reached.  */
12218 }
12219
12220 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12221    any error that ada_exception_name_addr_1 might cause to be thrown.
12222    When an error is intercepted, a warning with the error message is printed,
12223    and zero is returned.  */
12224
12225 static CORE_ADDR
12226 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12227                          struct breakpoint *b)
12228 {
12229   CORE_ADDR result = 0;
12230
12231   TRY
12232     {
12233       result = ada_exception_name_addr_1 (ex, b);
12234     }
12235
12236   CATCH (e, RETURN_MASK_ERROR)
12237     {
12238       warning (_("failed to get exception name: %s"), e.message);
12239       return 0;
12240     }
12241   END_CATCH
12242
12243   return result;
12244 }
12245
12246 static char *ada_exception_catchpoint_cond_string (const char *excep_string);
12247
12248 /* Ada catchpoints.
12249
12250    In the case of catchpoints on Ada exceptions, the catchpoint will
12251    stop the target on every exception the program throws.  When a user
12252    specifies the name of a specific exception, we translate this
12253    request into a condition expression (in text form), and then parse
12254    it into an expression stored in each of the catchpoint's locations.
12255    We then use this condition to check whether the exception that was
12256    raised is the one the user is interested in.  If not, then the
12257    target is resumed again.  We store the name of the requested
12258    exception, in order to be able to re-set the condition expression
12259    when symbols change.  */
12260
12261 /* An instance of this type is used to represent an Ada catchpoint
12262    breakpoint location.  It includes a "struct bp_location" as a kind
12263    of base class; users downcast to "struct bp_location *" when
12264    needed.  */
12265
12266 struct ada_catchpoint_location
12267 {
12268   /* The base class.  */
12269   struct bp_location base;
12270
12271   /* The condition that checks whether the exception that was raised
12272      is the specific exception the user specified on catchpoint
12273      creation.  */
12274   expression_up excep_cond_expr;
12275 };
12276
12277 /* Implement the DTOR method in the bp_location_ops structure for all
12278    Ada exception catchpoint kinds.  */
12279
12280 static void
12281 ada_catchpoint_location_dtor (struct bp_location *bl)
12282 {
12283   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12284
12285   al->excep_cond_expr.reset ();
12286 }
12287
12288 /* The vtable to be used in Ada catchpoint locations.  */
12289
12290 static const struct bp_location_ops ada_catchpoint_location_ops =
12291 {
12292   ada_catchpoint_location_dtor
12293 };
12294
12295 /* An instance of this type is used to represent an Ada catchpoint.
12296    It includes a "struct breakpoint" as a kind of base class; users
12297    downcast to "struct breakpoint *" when needed.  */
12298
12299 struct ada_catchpoint
12300 {
12301   /* The base class.  */
12302   struct breakpoint base;
12303
12304   /* The name of the specific exception the user specified.  */
12305   char *excep_string;
12306 };
12307
12308 /* Parse the exception condition string in the context of each of the
12309    catchpoint's locations, and store them for later evaluation.  */
12310
12311 static void
12312 create_excep_cond_exprs (struct ada_catchpoint *c)
12313 {
12314   struct cleanup *old_chain;
12315   struct bp_location *bl;
12316   char *cond_string;
12317
12318   /* Nothing to do if there's no specific exception to catch.  */
12319   if (c->excep_string == NULL)
12320     return;
12321
12322   /* Same if there are no locations... */
12323   if (c->base.loc == NULL)
12324     return;
12325
12326   /* Compute the condition expression in text form, from the specific
12327      expection we want to catch.  */
12328   cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
12329   old_chain = make_cleanup (xfree, cond_string);
12330
12331   /* Iterate over all the catchpoint's locations, and parse an
12332      expression for each.  */
12333   for (bl = c->base.loc; bl != NULL; bl = bl->next)
12334     {
12335       struct ada_catchpoint_location *ada_loc
12336         = (struct ada_catchpoint_location *) bl;
12337       expression_up exp;
12338
12339       if (!bl->shlib_disabled)
12340         {
12341           const char *s;
12342
12343           s = cond_string;
12344           TRY
12345             {
12346               exp = parse_exp_1 (&s, bl->address,
12347                                  block_for_pc (bl->address),
12348                                  0);
12349             }
12350           CATCH (e, RETURN_MASK_ERROR)
12351             {
12352               warning (_("failed to reevaluate internal exception condition "
12353                          "for catchpoint %d: %s"),
12354                        c->base.number, e.message);
12355             }
12356           END_CATCH
12357         }
12358
12359       ada_loc->excep_cond_expr = std::move (exp);
12360     }
12361
12362   do_cleanups (old_chain);
12363 }
12364
12365 /* Implement the DTOR method in the breakpoint_ops structure for all
12366    exception catchpoint kinds.  */
12367
12368 static void
12369 dtor_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12370 {
12371   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12372
12373   xfree (c->excep_string);
12374
12375   bkpt_breakpoint_ops.dtor (b);
12376 }
12377
12378 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12379    structure for all exception catchpoint kinds.  */
12380
12381 static struct bp_location *
12382 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12383                              struct breakpoint *self)
12384 {
12385   struct ada_catchpoint_location *loc;
12386
12387   loc = new ada_catchpoint_location ();
12388   init_bp_location (&loc->base, &ada_catchpoint_location_ops, self);
12389   loc->excep_cond_expr = NULL;
12390   return &loc->base;
12391 }
12392
12393 /* Implement the RE_SET method in the breakpoint_ops structure for all
12394    exception catchpoint kinds.  */
12395
12396 static void
12397 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12398 {
12399   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12400
12401   /* Call the base class's method.  This updates the catchpoint's
12402      locations.  */
12403   bkpt_breakpoint_ops.re_set (b);
12404
12405   /* Reparse the exception conditional expressions.  One for each
12406      location.  */
12407   create_excep_cond_exprs (c);
12408 }
12409
12410 /* Returns true if we should stop for this breakpoint hit.  If the
12411    user specified a specific exception, we only want to cause a stop
12412    if the program thrown that exception.  */
12413
12414 static int
12415 should_stop_exception (const struct bp_location *bl)
12416 {
12417   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12418   const struct ada_catchpoint_location *ada_loc
12419     = (const struct ada_catchpoint_location *) bl;
12420   int stop;
12421
12422   /* With no specific exception, should always stop.  */
12423   if (c->excep_string == NULL)
12424     return 1;
12425
12426   if (ada_loc->excep_cond_expr == NULL)
12427     {
12428       /* We will have a NULL expression if back when we were creating
12429          the expressions, this location's had failed to parse.  */
12430       return 1;
12431     }
12432
12433   stop = 1;
12434   TRY
12435     {
12436       struct value *mark;
12437
12438       mark = value_mark ();
12439       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12440       value_free_to_mark (mark);
12441     }
12442   CATCH (ex, RETURN_MASK_ALL)
12443     {
12444       exception_fprintf (gdb_stderr, ex,
12445                          _("Error in testing exception condition:\n"));
12446     }
12447   END_CATCH
12448
12449   return stop;
12450 }
12451
12452 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12453    for all exception catchpoint kinds.  */
12454
12455 static void
12456 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12457 {
12458   bs->stop = should_stop_exception (bs->bp_location_at);
12459 }
12460
12461 /* Implement the PRINT_IT method in the breakpoint_ops structure
12462    for all exception catchpoint kinds.  */
12463
12464 static enum print_stop_action
12465 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12466 {
12467   struct ui_out *uiout = current_uiout;
12468   struct breakpoint *b = bs->breakpoint_at;
12469
12470   annotate_catchpoint (b->number);
12471
12472   if (uiout->is_mi_like_p ())
12473     {
12474       uiout->field_string ("reason",
12475                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12476       uiout->field_string ("disp", bpdisp_text (b->disposition));
12477     }
12478
12479   uiout->text (b->disposition == disp_del
12480                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12481   uiout->field_int ("bkptno", b->number);
12482   uiout->text (", ");
12483
12484   /* ada_exception_name_addr relies on the selected frame being the
12485      current frame.  Need to do this here because this function may be
12486      called more than once when printing a stop, and below, we'll
12487      select the first frame past the Ada run-time (see
12488      ada_find_printable_frame).  */
12489   select_frame (get_current_frame ());
12490
12491   switch (ex)
12492     {
12493       case ada_catch_exception:
12494       case ada_catch_exception_unhandled:
12495         {
12496           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12497           char exception_name[256];
12498
12499           if (addr != 0)
12500             {
12501               read_memory (addr, (gdb_byte *) exception_name,
12502                            sizeof (exception_name) - 1);
12503               exception_name [sizeof (exception_name) - 1] = '\0';
12504             }
12505           else
12506             {
12507               /* For some reason, we were unable to read the exception
12508                  name.  This could happen if the Runtime was compiled
12509                  without debugging info, for instance.  In that case,
12510                  just replace the exception name by the generic string
12511                  "exception" - it will read as "an exception" in the
12512                  notification we are about to print.  */
12513               memcpy (exception_name, "exception", sizeof ("exception"));
12514             }
12515           /* In the case of unhandled exception breakpoints, we print
12516              the exception name as "unhandled EXCEPTION_NAME", to make
12517              it clearer to the user which kind of catchpoint just got
12518              hit.  We used ui_out_text to make sure that this extra
12519              info does not pollute the exception name in the MI case.  */
12520           if (ex == ada_catch_exception_unhandled)
12521             uiout->text ("unhandled ");
12522           uiout->field_string ("exception-name", exception_name);
12523         }
12524         break;
12525       case ada_catch_assert:
12526         /* In this case, the name of the exception is not really
12527            important.  Just print "failed assertion" to make it clearer
12528            that his program just hit an assertion-failure catchpoint.
12529            We used ui_out_text because this info does not belong in
12530            the MI output.  */
12531         uiout->text ("failed assertion");
12532         break;
12533     }
12534   uiout->text (" at ");
12535   ada_find_printable_frame (get_current_frame ());
12536
12537   return PRINT_SRC_AND_LOC;
12538 }
12539
12540 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12541    for all exception catchpoint kinds.  */
12542
12543 static void
12544 print_one_exception (enum ada_exception_catchpoint_kind ex,
12545                      struct breakpoint *b, struct bp_location **last_loc)
12546
12547   struct ui_out *uiout = current_uiout;
12548   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12549   struct value_print_options opts;
12550
12551   get_user_print_options (&opts);
12552   if (opts.addressprint)
12553     {
12554       annotate_field (4);
12555       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12556     }
12557
12558   annotate_field (5);
12559   *last_loc = b->loc;
12560   switch (ex)
12561     {
12562       case ada_catch_exception:
12563         if (c->excep_string != NULL)
12564           {
12565             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12566
12567             uiout->field_string ("what", msg);
12568             xfree (msg);
12569           }
12570         else
12571           uiout->field_string ("what", "all Ada exceptions");
12572         
12573         break;
12574
12575       case ada_catch_exception_unhandled:
12576         uiout->field_string ("what", "unhandled Ada exceptions");
12577         break;
12578       
12579       case ada_catch_assert:
12580         uiout->field_string ("what", "failed Ada assertions");
12581         break;
12582
12583       default:
12584         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12585         break;
12586     }
12587 }
12588
12589 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12590    for all exception catchpoint kinds.  */
12591
12592 static void
12593 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12594                          struct breakpoint *b)
12595 {
12596   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12597   struct ui_out *uiout = current_uiout;
12598
12599   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12600                                                  : _("Catchpoint "));
12601   uiout->field_int ("bkptno", b->number);
12602   uiout->text (": ");
12603
12604   switch (ex)
12605     {
12606       case ada_catch_exception:
12607         if (c->excep_string != NULL)
12608           {
12609             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12610             struct cleanup *old_chain = make_cleanup (xfree, info);
12611
12612             uiout->text (info);
12613             do_cleanups (old_chain);
12614           }
12615         else
12616           uiout->text (_("all Ada exceptions"));
12617         break;
12618
12619       case ada_catch_exception_unhandled:
12620         uiout->text (_("unhandled Ada exceptions"));
12621         break;
12622       
12623       case ada_catch_assert:
12624         uiout->text (_("failed Ada assertions"));
12625         break;
12626
12627       default:
12628         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12629         break;
12630     }
12631 }
12632
12633 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12634    for all exception catchpoint kinds.  */
12635
12636 static void
12637 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12638                           struct breakpoint *b, struct ui_file *fp)
12639 {
12640   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12641
12642   switch (ex)
12643     {
12644       case ada_catch_exception:
12645         fprintf_filtered (fp, "catch exception");
12646         if (c->excep_string != NULL)
12647           fprintf_filtered (fp, " %s", c->excep_string);
12648         break;
12649
12650       case ada_catch_exception_unhandled:
12651         fprintf_filtered (fp, "catch exception unhandled");
12652         break;
12653
12654       case ada_catch_assert:
12655         fprintf_filtered (fp, "catch assert");
12656         break;
12657
12658       default:
12659         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12660     }
12661   print_recreate_thread (b, fp);
12662 }
12663
12664 /* Virtual table for "catch exception" breakpoints.  */
12665
12666 static void
12667 dtor_catch_exception (struct breakpoint *b)
12668 {
12669   dtor_exception (ada_catch_exception, b);
12670 }
12671
12672 static struct bp_location *
12673 allocate_location_catch_exception (struct breakpoint *self)
12674 {
12675   return allocate_location_exception (ada_catch_exception, self);
12676 }
12677
12678 static void
12679 re_set_catch_exception (struct breakpoint *b)
12680 {
12681   re_set_exception (ada_catch_exception, b);
12682 }
12683
12684 static void
12685 check_status_catch_exception (bpstat bs)
12686 {
12687   check_status_exception (ada_catch_exception, bs);
12688 }
12689
12690 static enum print_stop_action
12691 print_it_catch_exception (bpstat bs)
12692 {
12693   return print_it_exception (ada_catch_exception, bs);
12694 }
12695
12696 static void
12697 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12698 {
12699   print_one_exception (ada_catch_exception, b, last_loc);
12700 }
12701
12702 static void
12703 print_mention_catch_exception (struct breakpoint *b)
12704 {
12705   print_mention_exception (ada_catch_exception, b);
12706 }
12707
12708 static void
12709 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12710 {
12711   print_recreate_exception (ada_catch_exception, b, fp);
12712 }
12713
12714 static struct breakpoint_ops catch_exception_breakpoint_ops;
12715
12716 /* Virtual table for "catch exception unhandled" breakpoints.  */
12717
12718 static void
12719 dtor_catch_exception_unhandled (struct breakpoint *b)
12720 {
12721   dtor_exception (ada_catch_exception_unhandled, b);
12722 }
12723
12724 static struct bp_location *
12725 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12726 {
12727   return allocate_location_exception (ada_catch_exception_unhandled, self);
12728 }
12729
12730 static void
12731 re_set_catch_exception_unhandled (struct breakpoint *b)
12732 {
12733   re_set_exception (ada_catch_exception_unhandled, b);
12734 }
12735
12736 static void
12737 check_status_catch_exception_unhandled (bpstat bs)
12738 {
12739   check_status_exception (ada_catch_exception_unhandled, bs);
12740 }
12741
12742 static enum print_stop_action
12743 print_it_catch_exception_unhandled (bpstat bs)
12744 {
12745   return print_it_exception (ada_catch_exception_unhandled, bs);
12746 }
12747
12748 static void
12749 print_one_catch_exception_unhandled (struct breakpoint *b,
12750                                      struct bp_location **last_loc)
12751 {
12752   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12753 }
12754
12755 static void
12756 print_mention_catch_exception_unhandled (struct breakpoint *b)
12757 {
12758   print_mention_exception (ada_catch_exception_unhandled, b);
12759 }
12760
12761 static void
12762 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12763                                           struct ui_file *fp)
12764 {
12765   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12766 }
12767
12768 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12769
12770 /* Virtual table for "catch assert" breakpoints.  */
12771
12772 static void
12773 dtor_catch_assert (struct breakpoint *b)
12774 {
12775   dtor_exception (ada_catch_assert, b);
12776 }
12777
12778 static struct bp_location *
12779 allocate_location_catch_assert (struct breakpoint *self)
12780 {
12781   return allocate_location_exception (ada_catch_assert, self);
12782 }
12783
12784 static void
12785 re_set_catch_assert (struct breakpoint *b)
12786 {
12787   re_set_exception (ada_catch_assert, b);
12788 }
12789
12790 static void
12791 check_status_catch_assert (bpstat bs)
12792 {
12793   check_status_exception (ada_catch_assert, bs);
12794 }
12795
12796 static enum print_stop_action
12797 print_it_catch_assert (bpstat bs)
12798 {
12799   return print_it_exception (ada_catch_assert, bs);
12800 }
12801
12802 static void
12803 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12804 {
12805   print_one_exception (ada_catch_assert, b, last_loc);
12806 }
12807
12808 static void
12809 print_mention_catch_assert (struct breakpoint *b)
12810 {
12811   print_mention_exception (ada_catch_assert, b);
12812 }
12813
12814 static void
12815 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12816 {
12817   print_recreate_exception (ada_catch_assert, b, fp);
12818 }
12819
12820 static struct breakpoint_ops catch_assert_breakpoint_ops;
12821
12822 /* Return a newly allocated copy of the first space-separated token
12823    in ARGSP, and then adjust ARGSP to point immediately after that
12824    token.
12825
12826    Return NULL if ARGPS does not contain any more tokens.  */
12827
12828 static char *
12829 ada_get_next_arg (char **argsp)
12830 {
12831   char *args = *argsp;
12832   char *end;
12833   char *result;
12834
12835   args = skip_spaces (args);
12836   if (args[0] == '\0')
12837     return NULL; /* No more arguments.  */
12838   
12839   /* Find the end of the current argument.  */
12840
12841   end = skip_to_space (args);
12842
12843   /* Adjust ARGSP to point to the start of the next argument.  */
12844
12845   *argsp = end;
12846
12847   /* Make a copy of the current argument and return it.  */
12848
12849   result = (char *) xmalloc (end - args + 1);
12850   strncpy (result, args, end - args);
12851   result[end - args] = '\0';
12852   
12853   return result;
12854 }
12855
12856 /* Split the arguments specified in a "catch exception" command.  
12857    Set EX to the appropriate catchpoint type.
12858    Set EXCEP_STRING to the name of the specific exception if
12859    specified by the user.
12860    If a condition is found at the end of the arguments, the condition
12861    expression is stored in COND_STRING (memory must be deallocated
12862    after use).  Otherwise COND_STRING is set to NULL.  */
12863
12864 static void
12865 catch_ada_exception_command_split (char *args,
12866                                    enum ada_exception_catchpoint_kind *ex,
12867                                    char **excep_string,
12868                                    char **cond_string)
12869 {
12870   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
12871   char *exception_name;
12872   char *cond = NULL;
12873
12874   exception_name = ada_get_next_arg (&args);
12875   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
12876     {
12877       /* This is not an exception name; this is the start of a condition
12878          expression for a catchpoint on all exceptions.  So, "un-get"
12879          this token, and set exception_name to NULL.  */
12880       xfree (exception_name);
12881       exception_name = NULL;
12882       args -= 2;
12883     }
12884   make_cleanup (xfree, exception_name);
12885
12886   /* Check to see if we have a condition.  */
12887
12888   args = skip_spaces (args);
12889   if (startswith (args, "if")
12890       && (isspace (args[2]) || args[2] == '\0'))
12891     {
12892       args += 2;
12893       args = skip_spaces (args);
12894
12895       if (args[0] == '\0')
12896         error (_("Condition missing after `if' keyword"));
12897       cond = xstrdup (args);
12898       make_cleanup (xfree, cond);
12899
12900       args += strlen (args);
12901     }
12902
12903   /* Check that we do not have any more arguments.  Anything else
12904      is unexpected.  */
12905
12906   if (args[0] != '\0')
12907     error (_("Junk at end of expression"));
12908
12909   discard_cleanups (old_chain);
12910
12911   if (exception_name == NULL)
12912     {
12913       /* Catch all exceptions.  */
12914       *ex = ada_catch_exception;
12915       *excep_string = NULL;
12916     }
12917   else if (strcmp (exception_name, "unhandled") == 0)
12918     {
12919       /* Catch unhandled exceptions.  */
12920       *ex = ada_catch_exception_unhandled;
12921       *excep_string = NULL;
12922     }
12923   else
12924     {
12925       /* Catch a specific exception.  */
12926       *ex = ada_catch_exception;
12927       *excep_string = exception_name;
12928     }
12929   *cond_string = cond;
12930 }
12931
12932 /* Return the name of the symbol on which we should break in order to
12933    implement a catchpoint of the EX kind.  */
12934
12935 static const char *
12936 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12937 {
12938   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12939
12940   gdb_assert (data->exception_info != NULL);
12941
12942   switch (ex)
12943     {
12944       case ada_catch_exception:
12945         return (data->exception_info->catch_exception_sym);
12946         break;
12947       case ada_catch_exception_unhandled:
12948         return (data->exception_info->catch_exception_unhandled_sym);
12949         break;
12950       case ada_catch_assert:
12951         return (data->exception_info->catch_assert_sym);
12952         break;
12953       default:
12954         internal_error (__FILE__, __LINE__,
12955                         _("unexpected catchpoint kind (%d)"), ex);
12956     }
12957 }
12958
12959 /* Return the breakpoint ops "virtual table" used for catchpoints
12960    of the EX kind.  */
12961
12962 static const struct breakpoint_ops *
12963 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12964 {
12965   switch (ex)
12966     {
12967       case ada_catch_exception:
12968         return (&catch_exception_breakpoint_ops);
12969         break;
12970       case ada_catch_exception_unhandled:
12971         return (&catch_exception_unhandled_breakpoint_ops);
12972         break;
12973       case ada_catch_assert:
12974         return (&catch_assert_breakpoint_ops);
12975         break;
12976       default:
12977         internal_error (__FILE__, __LINE__,
12978                         _("unexpected catchpoint kind (%d)"), ex);
12979     }
12980 }
12981
12982 /* Return the condition that will be used to match the current exception
12983    being raised with the exception that the user wants to catch.  This
12984    assumes that this condition is used when the inferior just triggered
12985    an exception catchpoint.
12986    
12987    The string returned is a newly allocated string that needs to be
12988    deallocated later.  */
12989
12990 static char *
12991 ada_exception_catchpoint_cond_string (const char *excep_string)
12992 {
12993   int i;
12994
12995   /* The standard exceptions are a special case.  They are defined in
12996      runtime units that have been compiled without debugging info; if
12997      EXCEP_STRING is the not-fully-qualified name of a standard
12998      exception (e.g. "constraint_error") then, during the evaluation
12999      of the condition expression, the symbol lookup on this name would
13000      *not* return this standard exception.  The catchpoint condition
13001      may then be set only on user-defined exceptions which have the
13002      same not-fully-qualified name (e.g. my_package.constraint_error).
13003
13004      To avoid this unexcepted behavior, these standard exceptions are
13005      systematically prefixed by "standard".  This means that "catch
13006      exception constraint_error" is rewritten into "catch exception
13007      standard.constraint_error".
13008
13009      If an exception named contraint_error is defined in another package of
13010      the inferior program, then the only way to specify this exception as a
13011      breakpoint condition is to use its fully-qualified named:
13012      e.g. my_package.constraint_error.  */
13013
13014   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13015     {
13016       if (strcmp (standard_exc [i], excep_string) == 0)
13017         {
13018           return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
13019                              excep_string);
13020         }
13021     }
13022   return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
13023 }
13024
13025 /* Return the symtab_and_line that should be used to insert an exception
13026    catchpoint of the TYPE kind.
13027
13028    EXCEP_STRING should contain the name of a specific exception that
13029    the catchpoint should catch, or NULL otherwise.
13030
13031    ADDR_STRING returns the name of the function where the real
13032    breakpoint that implements the catchpoints is set, depending on the
13033    type of catchpoint we need to create.  */
13034
13035 static struct symtab_and_line
13036 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
13037                    char **addr_string, const struct breakpoint_ops **ops)
13038 {
13039   const char *sym_name;
13040   struct symbol *sym;
13041
13042   /* First, find out which exception support info to use.  */
13043   ada_exception_support_info_sniffer ();
13044
13045   /* Then lookup the function on which we will break in order to catch
13046      the Ada exceptions requested by the user.  */
13047   sym_name = ada_exception_sym_name (ex);
13048   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13049
13050   /* We can assume that SYM is not NULL at this stage.  If the symbol
13051      did not exist, ada_exception_support_info_sniffer would have
13052      raised an exception.
13053
13054      Also, ada_exception_support_info_sniffer should have already
13055      verified that SYM is a function symbol.  */
13056   gdb_assert (sym != NULL);
13057   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
13058
13059   /* Set ADDR_STRING.  */
13060   *addr_string = xstrdup (sym_name);
13061
13062   /* Set OPS.  */
13063   *ops = ada_exception_breakpoint_ops (ex);
13064
13065   return find_function_start_sal (sym, 1);
13066 }
13067
13068 /* Create an Ada exception catchpoint.
13069
13070    EX_KIND is the kind of exception catchpoint to be created.
13071
13072    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
13073    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13074    of the exception to which this catchpoint applies.  When not NULL,
13075    the string must be allocated on the heap, and its deallocation
13076    is no longer the responsibility of the caller.
13077
13078    COND_STRING, if not NULL, is the catchpoint condition.  This string
13079    must be allocated on the heap, and its deallocation is no longer
13080    the responsibility of the caller.
13081
13082    TEMPFLAG, if nonzero, means that the underlying breakpoint
13083    should be temporary.
13084
13085    FROM_TTY is the usual argument passed to all commands implementations.  */
13086
13087 void
13088 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13089                                  enum ada_exception_catchpoint_kind ex_kind,
13090                                  char *excep_string,
13091                                  char *cond_string,
13092                                  int tempflag,
13093                                  int disabled,
13094                                  int from_tty)
13095 {
13096   struct ada_catchpoint *c;
13097   char *addr_string = NULL;
13098   const struct breakpoint_ops *ops = NULL;
13099   struct symtab_and_line sal
13100     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
13101
13102   c = new ada_catchpoint ();
13103   init_ada_exception_breakpoint (&c->base, gdbarch, sal, addr_string,
13104                                  ops, tempflag, disabled, from_tty);
13105   c->excep_string = excep_string;
13106   create_excep_cond_exprs (c);
13107   if (cond_string != NULL)
13108     set_breakpoint_condition (&c->base, cond_string, from_tty);
13109   install_breakpoint (0, &c->base, 1);
13110 }
13111
13112 /* Implement the "catch exception" command.  */
13113
13114 static void
13115 catch_ada_exception_command (char *arg, int from_tty,
13116                              struct cmd_list_element *command)
13117 {
13118   struct gdbarch *gdbarch = get_current_arch ();
13119   int tempflag;
13120   enum ada_exception_catchpoint_kind ex_kind;
13121   char *excep_string = NULL;
13122   char *cond_string = NULL;
13123
13124   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13125
13126   if (!arg)
13127     arg = "";
13128   catch_ada_exception_command_split (arg, &ex_kind, &excep_string,
13129                                      &cond_string);
13130   create_ada_exception_catchpoint (gdbarch, ex_kind,
13131                                    excep_string, cond_string,
13132                                    tempflag, 1 /* enabled */,
13133                                    from_tty);
13134 }
13135
13136 /* Split the arguments specified in a "catch assert" command.
13137
13138    ARGS contains the command's arguments (or the empty string if
13139    no arguments were passed).
13140
13141    If ARGS contains a condition, set COND_STRING to that condition
13142    (the memory needs to be deallocated after use).  */
13143
13144 static void
13145 catch_ada_assert_command_split (char *args, char **cond_string)
13146 {
13147   args = skip_spaces (args);
13148
13149   /* Check whether a condition was provided.  */
13150   if (startswith (args, "if")
13151       && (isspace (args[2]) || args[2] == '\0'))
13152     {
13153       args += 2;
13154       args = skip_spaces (args);
13155       if (args[0] == '\0')
13156         error (_("condition missing after `if' keyword"));
13157       *cond_string = xstrdup (args);
13158     }
13159
13160   /* Otherwise, there should be no other argument at the end of
13161      the command.  */
13162   else if (args[0] != '\0')
13163     error (_("Junk at end of arguments."));
13164 }
13165
13166 /* Implement the "catch assert" command.  */
13167
13168 static void
13169 catch_assert_command (char *arg, int from_tty,
13170                       struct cmd_list_element *command)
13171 {
13172   struct gdbarch *gdbarch = get_current_arch ();
13173   int tempflag;
13174   char *cond_string = NULL;
13175
13176   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13177
13178   if (!arg)
13179     arg = "";
13180   catch_ada_assert_command_split (arg, &cond_string);
13181   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13182                                    NULL, cond_string,
13183                                    tempflag, 1 /* enabled */,
13184                                    from_tty);
13185 }
13186
13187 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13188
13189 static int
13190 ada_is_exception_sym (struct symbol *sym)
13191 {
13192   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
13193
13194   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13195           && SYMBOL_CLASS (sym) != LOC_BLOCK
13196           && SYMBOL_CLASS (sym) != LOC_CONST
13197           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13198           && type_name != NULL && strcmp (type_name, "exception") == 0);
13199 }
13200
13201 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13202    Ada exception object.  This matches all exceptions except the ones
13203    defined by the Ada language.  */
13204
13205 static int
13206 ada_is_non_standard_exception_sym (struct symbol *sym)
13207 {
13208   int i;
13209
13210   if (!ada_is_exception_sym (sym))
13211     return 0;
13212
13213   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13214     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13215       return 0;  /* A standard exception.  */
13216
13217   /* Numeric_Error is also a standard exception, so exclude it.
13218      See the STANDARD_EXC description for more details as to why
13219      this exception is not listed in that array.  */
13220   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13221     return 0;
13222
13223   return 1;
13224 }
13225
13226 /* A helper function for qsort, comparing two struct ada_exc_info
13227    objects.
13228
13229    The comparison is determined first by exception name, and then
13230    by exception address.  */
13231
13232 static int
13233 compare_ada_exception_info (const void *a, const void *b)
13234 {
13235   const struct ada_exc_info *exc_a = (struct ada_exc_info *) a;
13236   const struct ada_exc_info *exc_b = (struct ada_exc_info *) b;
13237   int result;
13238
13239   result = strcmp (exc_a->name, exc_b->name);
13240   if (result != 0)
13241     return result;
13242
13243   if (exc_a->addr < exc_b->addr)
13244     return -1;
13245   if (exc_a->addr > exc_b->addr)
13246     return 1;
13247
13248   return 0;
13249 }
13250
13251 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13252    routine, but keeping the first SKIP elements untouched.
13253
13254    All duplicates are also removed.  */
13255
13256 static void
13257 sort_remove_dups_ada_exceptions_list (VEC(ada_exc_info) **exceptions,
13258                                       int skip)
13259 {
13260   struct ada_exc_info *to_sort
13261     = VEC_address (ada_exc_info, *exceptions) + skip;
13262   int to_sort_len
13263     = VEC_length (ada_exc_info, *exceptions) - skip;
13264   int i, j;
13265
13266   qsort (to_sort, to_sort_len, sizeof (struct ada_exc_info),
13267          compare_ada_exception_info);
13268
13269   for (i = 1, j = 1; i < to_sort_len; i++)
13270     if (compare_ada_exception_info (&to_sort[i], &to_sort[j - 1]) != 0)
13271       to_sort[j++] = to_sort[i];
13272   to_sort_len = j;
13273   VEC_truncate(ada_exc_info, *exceptions, skip + to_sort_len);
13274 }
13275
13276 /* A function intended as the "name_matcher" callback in the struct
13277    quick_symbol_functions' expand_symtabs_matching method.
13278
13279    SEARCH_NAME is the symbol's search name.
13280
13281    If USER_DATA is not NULL, it is a pointer to a regext_t object
13282    used to match the symbol (by natural name).  Otherwise, when USER_DATA
13283    is null, no filtering is performed, and all symbols are a positive
13284    match.  */
13285
13286 static int
13287 ada_exc_search_name_matches (const char *search_name, void *user_data)
13288 {
13289   regex_t *preg = (regex_t *) user_data;
13290
13291   if (preg == NULL)
13292     return 1;
13293
13294   /* In Ada, the symbol "search name" is a linkage name, whereas
13295      the regular expression used to do the matching refers to
13296      the natural name.  So match against the decoded name.  */
13297   return (regexec (preg, ada_decode (search_name), 0, NULL, 0) == 0);
13298 }
13299
13300 /* Add all exceptions defined by the Ada standard whose name match
13301    a regular expression.
13302
13303    If PREG is not NULL, then this regexp_t object is used to
13304    perform the symbol name matching.  Otherwise, no name-based
13305    filtering is performed.
13306
13307    EXCEPTIONS is a vector of exceptions to which matching exceptions
13308    gets pushed.  */
13309
13310 static void
13311 ada_add_standard_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
13312 {
13313   int i;
13314
13315   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13316     {
13317       if (preg == NULL
13318           || regexec (preg, standard_exc[i], 0, NULL, 0) == 0)
13319         {
13320           struct bound_minimal_symbol msymbol
13321             = ada_lookup_simple_minsym (standard_exc[i]);
13322
13323           if (msymbol.minsym != NULL)
13324             {
13325               struct ada_exc_info info
13326                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13327
13328               VEC_safe_push (ada_exc_info, *exceptions, &info);
13329             }
13330         }
13331     }
13332 }
13333
13334 /* Add all Ada exceptions defined locally and accessible from the given
13335    FRAME.
13336
13337    If PREG is not NULL, then this regexp_t object is used to
13338    perform the symbol name matching.  Otherwise, no name-based
13339    filtering is performed.
13340
13341    EXCEPTIONS is a vector of exceptions to which matching exceptions
13342    gets pushed.  */
13343
13344 static void
13345 ada_add_exceptions_from_frame (regex_t *preg, struct frame_info *frame,
13346                                VEC(ada_exc_info) **exceptions)
13347 {
13348   const struct block *block = get_frame_block (frame, 0);
13349
13350   while (block != 0)
13351     {
13352       struct block_iterator iter;
13353       struct symbol *sym;
13354
13355       ALL_BLOCK_SYMBOLS (block, iter, sym)
13356         {
13357           switch (SYMBOL_CLASS (sym))
13358             {
13359             case LOC_TYPEDEF:
13360             case LOC_BLOCK:
13361             case LOC_CONST:
13362               break;
13363             default:
13364               if (ada_is_exception_sym (sym))
13365                 {
13366                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13367                                               SYMBOL_VALUE_ADDRESS (sym)};
13368
13369                   VEC_safe_push (ada_exc_info, *exceptions, &info);
13370                 }
13371             }
13372         }
13373       if (BLOCK_FUNCTION (block) != NULL)
13374         break;
13375       block = BLOCK_SUPERBLOCK (block);
13376     }
13377 }
13378
13379 /* Add all exceptions defined globally whose name name match
13380    a regular expression, excluding standard exceptions.
13381
13382    The reason we exclude standard exceptions is that they need
13383    to be handled separately: Standard exceptions are defined inside
13384    a runtime unit which is normally not compiled with debugging info,
13385    and thus usually do not show up in our symbol search.  However,
13386    if the unit was in fact built with debugging info, we need to
13387    exclude them because they would duplicate the entry we found
13388    during the special loop that specifically searches for those
13389    standard exceptions.
13390
13391    If PREG is not NULL, then this regexp_t object is used to
13392    perform the symbol name matching.  Otherwise, no name-based
13393    filtering is performed.
13394
13395    EXCEPTIONS is a vector of exceptions to which matching exceptions
13396    gets pushed.  */
13397
13398 static void
13399 ada_add_global_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
13400 {
13401   struct objfile *objfile;
13402   struct compunit_symtab *s;
13403
13404   expand_symtabs_matching (NULL, ada_exc_search_name_matches, NULL,
13405                            VARIABLES_DOMAIN, preg);
13406
13407   ALL_COMPUNITS (objfile, s)
13408     {
13409       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13410       int i;
13411
13412       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13413         {
13414           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13415           struct block_iterator iter;
13416           struct symbol *sym;
13417
13418           ALL_BLOCK_SYMBOLS (b, iter, sym)
13419             if (ada_is_non_standard_exception_sym (sym)
13420                 && (preg == NULL
13421                     || regexec (preg, SYMBOL_NATURAL_NAME (sym),
13422                                 0, NULL, 0) == 0))
13423               {
13424                 struct ada_exc_info info
13425                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13426
13427                 VEC_safe_push (ada_exc_info, *exceptions, &info);
13428               }
13429         }
13430     }
13431 }
13432
13433 /* Implements ada_exceptions_list with the regular expression passed
13434    as a regex_t, rather than a string.
13435
13436    If not NULL, PREG is used to filter out exceptions whose names
13437    do not match.  Otherwise, all exceptions are listed.  */
13438
13439 static VEC(ada_exc_info) *
13440 ada_exceptions_list_1 (regex_t *preg)
13441 {
13442   VEC(ada_exc_info) *result = NULL;
13443   struct cleanup *old_chain
13444     = make_cleanup (VEC_cleanup (ada_exc_info), &result);
13445   int prev_len;
13446
13447   /* First, list the known standard exceptions.  These exceptions
13448      need to be handled separately, as they are usually defined in
13449      runtime units that have been compiled without debugging info.  */
13450
13451   ada_add_standard_exceptions (preg, &result);
13452
13453   /* Next, find all exceptions whose scope is local and accessible
13454      from the currently selected frame.  */
13455
13456   if (has_stack_frames ())
13457     {
13458       prev_len = VEC_length (ada_exc_info, result);
13459       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13460                                      &result);
13461       if (VEC_length (ada_exc_info, result) > prev_len)
13462         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13463     }
13464
13465   /* Add all exceptions whose scope is global.  */
13466
13467   prev_len = VEC_length (ada_exc_info, result);
13468   ada_add_global_exceptions (preg, &result);
13469   if (VEC_length (ada_exc_info, result) > prev_len)
13470     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13471
13472   discard_cleanups (old_chain);
13473   return result;
13474 }
13475
13476 /* Return a vector of ada_exc_info.
13477
13478    If REGEXP is NULL, all exceptions are included in the result.
13479    Otherwise, it should contain a valid regular expression,
13480    and only the exceptions whose names match that regular expression
13481    are included in the result.
13482
13483    The exceptions are sorted in the following order:
13484      - Standard exceptions (defined by the Ada language), in
13485        alphabetical order;
13486      - Exceptions only visible from the current frame, in
13487        alphabetical order;
13488      - Exceptions whose scope is global, in alphabetical order.  */
13489
13490 VEC(ada_exc_info) *
13491 ada_exceptions_list (const char *regexp)
13492 {
13493   VEC(ada_exc_info) *result = NULL;
13494   struct cleanup *old_chain = NULL;
13495   regex_t reg;
13496
13497   if (regexp != NULL)
13498     old_chain = compile_rx_or_error (&reg, regexp,
13499                                      _("invalid regular expression"));
13500
13501   result = ada_exceptions_list_1 (regexp != NULL ? &reg : NULL);
13502
13503   if (old_chain != NULL)
13504     do_cleanups (old_chain);
13505   return result;
13506 }
13507
13508 /* Implement the "info exceptions" command.  */
13509
13510 static void
13511 info_exceptions_command (char *regexp, int from_tty)
13512 {
13513   VEC(ada_exc_info) *exceptions;
13514   struct cleanup *cleanup;
13515   struct gdbarch *gdbarch = get_current_arch ();
13516   int ix;
13517   struct ada_exc_info *info;
13518
13519   exceptions = ada_exceptions_list (regexp);
13520   cleanup = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions);
13521
13522   if (regexp != NULL)
13523     printf_filtered
13524       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13525   else
13526     printf_filtered (_("All defined Ada exceptions:\n"));
13527
13528   for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++)
13529     printf_filtered ("%s: %s\n", info->name, paddress (gdbarch, info->addr));
13530
13531   do_cleanups (cleanup);
13532 }
13533
13534                                 /* Operators */
13535 /* Information about operators given special treatment in functions
13536    below.  */
13537 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13538
13539 #define ADA_OPERATORS \
13540     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13541     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13542     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13543     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13544     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13545     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13546     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13547     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13548     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13549     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13550     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13551     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13552     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13553     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13554     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13555     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13556     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13557     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13558     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13559
13560 static void
13561 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13562                      int *argsp)
13563 {
13564   switch (exp->elts[pc - 1].opcode)
13565     {
13566     default:
13567       operator_length_standard (exp, pc, oplenp, argsp);
13568       break;
13569
13570 #define OP_DEFN(op, len, args, binop) \
13571     case op: *oplenp = len; *argsp = args; break;
13572       ADA_OPERATORS;
13573 #undef OP_DEFN
13574
13575     case OP_AGGREGATE:
13576       *oplenp = 3;
13577       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13578       break;
13579
13580     case OP_CHOICES:
13581       *oplenp = 3;
13582       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13583       break;
13584     }
13585 }
13586
13587 /* Implementation of the exp_descriptor method operator_check.  */
13588
13589 static int
13590 ada_operator_check (struct expression *exp, int pos,
13591                     int (*objfile_func) (struct objfile *objfile, void *data),
13592                     void *data)
13593 {
13594   const union exp_element *const elts = exp->elts;
13595   struct type *type = NULL;
13596
13597   switch (elts[pos].opcode)
13598     {
13599       case UNOP_IN_RANGE:
13600       case UNOP_QUAL:
13601         type = elts[pos + 1].type;
13602         break;
13603
13604       default:
13605         return operator_check_standard (exp, pos, objfile_func, data);
13606     }
13607
13608   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13609
13610   if (type && TYPE_OBJFILE (type)
13611       && (*objfile_func) (TYPE_OBJFILE (type), data))
13612     return 1;
13613
13614   return 0;
13615 }
13616
13617 static char *
13618 ada_op_name (enum exp_opcode opcode)
13619 {
13620   switch (opcode)
13621     {
13622     default:
13623       return op_name_standard (opcode);
13624
13625 #define OP_DEFN(op, len, args, binop) case op: return #op;
13626       ADA_OPERATORS;
13627 #undef OP_DEFN
13628
13629     case OP_AGGREGATE:
13630       return "OP_AGGREGATE";
13631     case OP_CHOICES:
13632       return "OP_CHOICES";
13633     case OP_NAME:
13634       return "OP_NAME";
13635     }
13636 }
13637
13638 /* As for operator_length, but assumes PC is pointing at the first
13639    element of the operator, and gives meaningful results only for the 
13640    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13641
13642 static void
13643 ada_forward_operator_length (struct expression *exp, int pc,
13644                              int *oplenp, int *argsp)
13645 {
13646   switch (exp->elts[pc].opcode)
13647     {
13648     default:
13649       *oplenp = *argsp = 0;
13650       break;
13651
13652 #define OP_DEFN(op, len, args, binop) \
13653     case op: *oplenp = len; *argsp = args; break;
13654       ADA_OPERATORS;
13655 #undef OP_DEFN
13656
13657     case OP_AGGREGATE:
13658       *oplenp = 3;
13659       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13660       break;
13661
13662     case OP_CHOICES:
13663       *oplenp = 3;
13664       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13665       break;
13666
13667     case OP_STRING:
13668     case OP_NAME:
13669       {
13670         int len = longest_to_int (exp->elts[pc + 1].longconst);
13671
13672         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13673         *argsp = 0;
13674         break;
13675       }
13676     }
13677 }
13678
13679 static int
13680 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13681 {
13682   enum exp_opcode op = exp->elts[elt].opcode;
13683   int oplen, nargs;
13684   int pc = elt;
13685   int i;
13686
13687   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13688
13689   switch (op)
13690     {
13691       /* Ada attributes ('Foo).  */
13692     case OP_ATR_FIRST:
13693     case OP_ATR_LAST:
13694     case OP_ATR_LENGTH:
13695     case OP_ATR_IMAGE:
13696     case OP_ATR_MAX:
13697     case OP_ATR_MIN:
13698     case OP_ATR_MODULUS:
13699     case OP_ATR_POS:
13700     case OP_ATR_SIZE:
13701     case OP_ATR_TAG:
13702     case OP_ATR_VAL:
13703       break;
13704
13705     case UNOP_IN_RANGE:
13706     case UNOP_QUAL:
13707       /* XXX: gdb_sprint_host_address, type_sprint */
13708       fprintf_filtered (stream, _("Type @"));
13709       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13710       fprintf_filtered (stream, " (");
13711       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13712       fprintf_filtered (stream, ")");
13713       break;
13714     case BINOP_IN_BOUNDS:
13715       fprintf_filtered (stream, " (%d)",
13716                         longest_to_int (exp->elts[pc + 2].longconst));
13717       break;
13718     case TERNOP_IN_RANGE:
13719       break;
13720
13721     case OP_AGGREGATE:
13722     case OP_OTHERS:
13723     case OP_DISCRETE_RANGE:
13724     case OP_POSITIONAL:
13725     case OP_CHOICES:
13726       break;
13727
13728     case OP_NAME:
13729     case OP_STRING:
13730       {
13731         char *name = &exp->elts[elt + 2].string;
13732         int len = longest_to_int (exp->elts[elt + 1].longconst);
13733
13734         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13735         break;
13736       }
13737
13738     default:
13739       return dump_subexp_body_standard (exp, stream, elt);
13740     }
13741
13742   elt += oplen;
13743   for (i = 0; i < nargs; i += 1)
13744     elt = dump_subexp (exp, stream, elt);
13745
13746   return elt;
13747 }
13748
13749 /* The Ada extension of print_subexp (q.v.).  */
13750
13751 static void
13752 ada_print_subexp (struct expression *exp, int *pos,
13753                   struct ui_file *stream, enum precedence prec)
13754 {
13755   int oplen, nargs, i;
13756   int pc = *pos;
13757   enum exp_opcode op = exp->elts[pc].opcode;
13758
13759   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13760
13761   *pos += oplen;
13762   switch (op)
13763     {
13764     default:
13765       *pos -= oplen;
13766       print_subexp_standard (exp, pos, stream, prec);
13767       return;
13768
13769     case OP_VAR_VALUE:
13770       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13771       return;
13772
13773     case BINOP_IN_BOUNDS:
13774       /* XXX: sprint_subexp */
13775       print_subexp (exp, pos, stream, PREC_SUFFIX);
13776       fputs_filtered (" in ", stream);
13777       print_subexp (exp, pos, stream, PREC_SUFFIX);
13778       fputs_filtered ("'range", stream);
13779       if (exp->elts[pc + 1].longconst > 1)
13780         fprintf_filtered (stream, "(%ld)",
13781                           (long) exp->elts[pc + 1].longconst);
13782       return;
13783
13784     case TERNOP_IN_RANGE:
13785       if (prec >= PREC_EQUAL)
13786         fputs_filtered ("(", stream);
13787       /* XXX: sprint_subexp */
13788       print_subexp (exp, pos, stream, PREC_SUFFIX);
13789       fputs_filtered (" in ", stream);
13790       print_subexp (exp, pos, stream, PREC_EQUAL);
13791       fputs_filtered (" .. ", stream);
13792       print_subexp (exp, pos, stream, PREC_EQUAL);
13793       if (prec >= PREC_EQUAL)
13794         fputs_filtered (")", stream);
13795       return;
13796
13797     case OP_ATR_FIRST:
13798     case OP_ATR_LAST:
13799     case OP_ATR_LENGTH:
13800     case OP_ATR_IMAGE:
13801     case OP_ATR_MAX:
13802     case OP_ATR_MIN:
13803     case OP_ATR_MODULUS:
13804     case OP_ATR_POS:
13805     case OP_ATR_SIZE:
13806     case OP_ATR_TAG:
13807     case OP_ATR_VAL:
13808       if (exp->elts[*pos].opcode == OP_TYPE)
13809         {
13810           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13811             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13812                            &type_print_raw_options);
13813           *pos += 3;
13814         }
13815       else
13816         print_subexp (exp, pos, stream, PREC_SUFFIX);
13817       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13818       if (nargs > 1)
13819         {
13820           int tem;
13821
13822           for (tem = 1; tem < nargs; tem += 1)
13823             {
13824               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13825               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13826             }
13827           fputs_filtered (")", stream);
13828         }
13829       return;
13830
13831     case UNOP_QUAL:
13832       type_print (exp->elts[pc + 1].type, "", stream, 0);
13833       fputs_filtered ("'(", stream);
13834       print_subexp (exp, pos, stream, PREC_PREFIX);
13835       fputs_filtered (")", stream);
13836       return;
13837
13838     case UNOP_IN_RANGE:
13839       /* XXX: sprint_subexp */
13840       print_subexp (exp, pos, stream, PREC_SUFFIX);
13841       fputs_filtered (" in ", stream);
13842       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13843                      &type_print_raw_options);
13844       return;
13845
13846     case OP_DISCRETE_RANGE:
13847       print_subexp (exp, pos, stream, PREC_SUFFIX);
13848       fputs_filtered ("..", stream);
13849       print_subexp (exp, pos, stream, PREC_SUFFIX);
13850       return;
13851
13852     case OP_OTHERS:
13853       fputs_filtered ("others => ", stream);
13854       print_subexp (exp, pos, stream, PREC_SUFFIX);
13855       return;
13856
13857     case OP_CHOICES:
13858       for (i = 0; i < nargs-1; i += 1)
13859         {
13860           if (i > 0)
13861             fputs_filtered ("|", stream);
13862           print_subexp (exp, pos, stream, PREC_SUFFIX);
13863         }
13864       fputs_filtered (" => ", stream);
13865       print_subexp (exp, pos, stream, PREC_SUFFIX);
13866       return;
13867       
13868     case OP_POSITIONAL:
13869       print_subexp (exp, pos, stream, PREC_SUFFIX);
13870       return;
13871
13872     case OP_AGGREGATE:
13873       fputs_filtered ("(", stream);
13874       for (i = 0; i < nargs; i += 1)
13875         {
13876           if (i > 0)
13877             fputs_filtered (", ", stream);
13878           print_subexp (exp, pos, stream, PREC_SUFFIX);
13879         }
13880       fputs_filtered (")", stream);
13881       return;
13882     }
13883 }
13884
13885 /* Table mapping opcodes into strings for printing operators
13886    and precedences of the operators.  */
13887
13888 static const struct op_print ada_op_print_tab[] = {
13889   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13890   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13891   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13892   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13893   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13894   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13895   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13896   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13897   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13898   {">=", BINOP_GEQ, PREC_ORDER, 0},
13899   {">", BINOP_GTR, PREC_ORDER, 0},
13900   {"<", BINOP_LESS, PREC_ORDER, 0},
13901   {">>", BINOP_RSH, PREC_SHIFT, 0},
13902   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13903   {"+", BINOP_ADD, PREC_ADD, 0},
13904   {"-", BINOP_SUB, PREC_ADD, 0},
13905   {"&", BINOP_CONCAT, PREC_ADD, 0},
13906   {"*", BINOP_MUL, PREC_MUL, 0},
13907   {"/", BINOP_DIV, PREC_MUL, 0},
13908   {"rem", BINOP_REM, PREC_MUL, 0},
13909   {"mod", BINOP_MOD, PREC_MUL, 0},
13910   {"**", BINOP_EXP, PREC_REPEAT, 0},
13911   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13912   {"-", UNOP_NEG, PREC_PREFIX, 0},
13913   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13914   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13915   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13916   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13917   {".all", UNOP_IND, PREC_SUFFIX, 1},
13918   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13919   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13920   {NULL, OP_NULL, PREC_SUFFIX, 0}
13921 };
13922 \f
13923 enum ada_primitive_types {
13924   ada_primitive_type_int,
13925   ada_primitive_type_long,
13926   ada_primitive_type_short,
13927   ada_primitive_type_char,
13928   ada_primitive_type_float,
13929   ada_primitive_type_double,
13930   ada_primitive_type_void,
13931   ada_primitive_type_long_long,
13932   ada_primitive_type_long_double,
13933   ada_primitive_type_natural,
13934   ada_primitive_type_positive,
13935   ada_primitive_type_system_address,
13936   nr_ada_primitive_types
13937 };
13938
13939 static void
13940 ada_language_arch_info (struct gdbarch *gdbarch,
13941                         struct language_arch_info *lai)
13942 {
13943   const struct builtin_type *builtin = builtin_type (gdbarch);
13944
13945   lai->primitive_type_vector
13946     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13947                               struct type *);
13948
13949   lai->primitive_type_vector [ada_primitive_type_int]
13950     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13951                          0, "integer");
13952   lai->primitive_type_vector [ada_primitive_type_long]
13953     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13954                          0, "long_integer");
13955   lai->primitive_type_vector [ada_primitive_type_short]
13956     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13957                          0, "short_integer");
13958   lai->string_char_type
13959     = lai->primitive_type_vector [ada_primitive_type_char]
13960     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13961   lai->primitive_type_vector [ada_primitive_type_float]
13962     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13963                        "float", gdbarch_float_format (gdbarch));
13964   lai->primitive_type_vector [ada_primitive_type_double]
13965     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13966                        "long_float", gdbarch_double_format (gdbarch));
13967   lai->primitive_type_vector [ada_primitive_type_long_long]
13968     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13969                          0, "long_long_integer");
13970   lai->primitive_type_vector [ada_primitive_type_long_double]
13971     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13972                        "long_long_float", gdbarch_long_double_format (gdbarch));
13973   lai->primitive_type_vector [ada_primitive_type_natural]
13974     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13975                          0, "natural");
13976   lai->primitive_type_vector [ada_primitive_type_positive]
13977     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13978                          0, "positive");
13979   lai->primitive_type_vector [ada_primitive_type_void]
13980     = builtin->builtin_void;
13981
13982   lai->primitive_type_vector [ada_primitive_type_system_address]
13983     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, 1, "void"));
13984   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
13985     = "system__address";
13986
13987   lai->bool_type_symbol = NULL;
13988   lai->bool_type_default = builtin->builtin_bool;
13989 }
13990 \f
13991                                 /* Language vector */
13992
13993 /* Not really used, but needed in the ada_language_defn.  */
13994
13995 static void
13996 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13997 {
13998   ada_emit_char (c, type, stream, quoter, 1);
13999 }
14000
14001 static int
14002 parse (struct parser_state *ps)
14003 {
14004   warnings_issued = 0;
14005   return ada_parse (ps);
14006 }
14007
14008 static const struct exp_descriptor ada_exp_descriptor = {
14009   ada_print_subexp,
14010   ada_operator_length,
14011   ada_operator_check,
14012   ada_op_name,
14013   ada_dump_subexp_body,
14014   ada_evaluate_subexp
14015 };
14016
14017 /* Implement the "la_get_symbol_name_cmp" language_defn method
14018    for Ada.  */
14019
14020 static symbol_name_cmp_ftype
14021 ada_get_symbol_name_cmp (const char *lookup_name)
14022 {
14023   if (should_use_wild_match (lookup_name))
14024     return wild_match;
14025   else
14026     return compare_names;
14027 }
14028
14029 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14030
14031 static struct value *
14032 ada_read_var_value (struct symbol *var, const struct block *var_block,
14033                     struct frame_info *frame)
14034 {
14035   const struct block *frame_block = NULL;
14036   struct symbol *renaming_sym = NULL;
14037
14038   /* The only case where default_read_var_value is not sufficient
14039      is when VAR is a renaming...  */
14040   if (frame)
14041     frame_block = get_frame_block (frame, NULL);
14042   if (frame_block)
14043     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14044   if (renaming_sym != NULL)
14045     return ada_read_renaming_var_value (renaming_sym, frame_block);
14046
14047   /* This is a typical case where we expect the default_read_var_value
14048      function to work.  */
14049   return default_read_var_value (var, var_block, frame);
14050 }
14051
14052 static const char *ada_extensions[] =
14053 {
14054   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14055 };
14056
14057 const struct language_defn ada_language_defn = {
14058   "ada",                        /* Language name */
14059   "Ada",
14060   language_ada,
14061   range_check_off,
14062   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14063                                    that's not quite what this means.  */
14064   array_row_major,
14065   macro_expansion_no,
14066   ada_extensions,
14067   &ada_exp_descriptor,
14068   parse,
14069   ada_yyerror,
14070   resolve,
14071   ada_printchar,                /* Print a character constant */
14072   ada_printstr,                 /* Function to print string constant */
14073   emit_char,                    /* Function to print single char (not used) */
14074   ada_print_type,               /* Print a type using appropriate syntax */
14075   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14076   ada_val_print,                /* Print a value using appropriate syntax */
14077   ada_value_print,              /* Print a top-level value */
14078   ada_read_var_value,           /* la_read_var_value */
14079   NULL,                         /* Language specific skip_trampoline */
14080   NULL,                         /* name_of_this */
14081   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14082   basic_lookup_transparent_type,        /* lookup_transparent_type */
14083   ada_la_decode,                /* Language specific symbol demangler */
14084   ada_sniff_from_mangled_name,
14085   NULL,                         /* Language specific
14086                                    class_name_from_physname */
14087   ada_op_print_tab,             /* expression operators for printing */
14088   0,                            /* c-style arrays */
14089   1,                            /* String lower bound */
14090   ada_get_gdb_completer_word_break_characters,
14091   ada_make_symbol_completion_list,
14092   ada_language_arch_info,
14093   ada_print_array_index,
14094   default_pass_by_reference,
14095   c_get_string,
14096   ada_get_symbol_name_cmp,      /* la_get_symbol_name_cmp */
14097   ada_iterate_over_symbols,
14098   &ada_varobj_ops,
14099   NULL,
14100   NULL,
14101   LANG_MAGIC
14102 };
14103
14104 /* Provide a prototype to silence -Wmissing-prototypes.  */
14105 extern initialize_file_ftype _initialize_ada_language;
14106
14107 /* Command-list for the "set/show ada" prefix command.  */
14108 static struct cmd_list_element *set_ada_list;
14109 static struct cmd_list_element *show_ada_list;
14110
14111 /* Implement the "set ada" prefix command.  */
14112
14113 static void
14114 set_ada_command (char *arg, int from_tty)
14115 {
14116   printf_unfiltered (_(\
14117 "\"set ada\" must be followed by the name of a setting.\n"));
14118   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14119 }
14120
14121 /* Implement the "show ada" prefix command.  */
14122
14123 static void
14124 show_ada_command (char *args, int from_tty)
14125 {
14126   cmd_show_list (show_ada_list, from_tty, "");
14127 }
14128
14129 static void
14130 initialize_ada_catchpoint_ops (void)
14131 {
14132   struct breakpoint_ops *ops;
14133
14134   initialize_breakpoint_ops ();
14135
14136   ops = &catch_exception_breakpoint_ops;
14137   *ops = bkpt_breakpoint_ops;
14138   ops->dtor = dtor_catch_exception;
14139   ops->allocate_location = allocate_location_catch_exception;
14140   ops->re_set = re_set_catch_exception;
14141   ops->check_status = check_status_catch_exception;
14142   ops->print_it = print_it_catch_exception;
14143   ops->print_one = print_one_catch_exception;
14144   ops->print_mention = print_mention_catch_exception;
14145   ops->print_recreate = print_recreate_catch_exception;
14146
14147   ops = &catch_exception_unhandled_breakpoint_ops;
14148   *ops = bkpt_breakpoint_ops;
14149   ops->dtor = dtor_catch_exception_unhandled;
14150   ops->allocate_location = allocate_location_catch_exception_unhandled;
14151   ops->re_set = re_set_catch_exception_unhandled;
14152   ops->check_status = check_status_catch_exception_unhandled;
14153   ops->print_it = print_it_catch_exception_unhandled;
14154   ops->print_one = print_one_catch_exception_unhandled;
14155   ops->print_mention = print_mention_catch_exception_unhandled;
14156   ops->print_recreate = print_recreate_catch_exception_unhandled;
14157
14158   ops = &catch_assert_breakpoint_ops;
14159   *ops = bkpt_breakpoint_ops;
14160   ops->dtor = dtor_catch_assert;
14161   ops->allocate_location = allocate_location_catch_assert;
14162   ops->re_set = re_set_catch_assert;
14163   ops->check_status = check_status_catch_assert;
14164   ops->print_it = print_it_catch_assert;
14165   ops->print_one = print_one_catch_assert;
14166   ops->print_mention = print_mention_catch_assert;
14167   ops->print_recreate = print_recreate_catch_assert;
14168 }
14169
14170 /* This module's 'new_objfile' observer.  */
14171
14172 static void
14173 ada_new_objfile_observer (struct objfile *objfile)
14174 {
14175   ada_clear_symbol_cache ();
14176 }
14177
14178 /* This module's 'free_objfile' observer.  */
14179
14180 static void
14181 ada_free_objfile_observer (struct objfile *objfile)
14182 {
14183   ada_clear_symbol_cache ();
14184 }
14185
14186 void
14187 _initialize_ada_language (void)
14188 {
14189   add_language (&ada_language_defn);
14190
14191   initialize_ada_catchpoint_ops ();
14192
14193   add_prefix_cmd ("ada", no_class, set_ada_command,
14194                   _("Prefix command for changing Ada-specfic settings"),
14195                   &set_ada_list, "set ada ", 0, &setlist);
14196
14197   add_prefix_cmd ("ada", no_class, show_ada_command,
14198                   _("Generic command for showing Ada-specific settings."),
14199                   &show_ada_list, "show ada ", 0, &showlist);
14200
14201   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14202                            &trust_pad_over_xvs, _("\
14203 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14204 Show whether an optimization trusting PAD types over XVS types is activated"),
14205                            _("\
14206 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14207 should normally trust the contents of PAD types, but certain older versions\n\
14208 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14209 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14210 work around this bug.  It is always safe to turn this option \"off\", but\n\
14211 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14212 this option to \"off\" unless necessary."),
14213                             NULL, NULL, &set_ada_list, &show_ada_list);
14214
14215   add_setshow_boolean_cmd ("print-signatures", class_vars,
14216                            &print_signatures, _("\
14217 Enable or disable the output of formal and return types for functions in the \
14218 overloads selection menu"), _("\
14219 Show whether the output of formal and return types for functions in the \
14220 overloads selection menu is activated"),
14221                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14222
14223   add_catch_command ("exception", _("\
14224 Catch Ada exceptions, when raised.\n\
14225 With an argument, catch only exceptions with the given name."),
14226                      catch_ada_exception_command,
14227                      NULL,
14228                      CATCH_PERMANENT,
14229                      CATCH_TEMPORARY);
14230   add_catch_command ("assert", _("\
14231 Catch failed Ada assertions, when raised.\n\
14232 With an argument, catch only exceptions with the given name."),
14233                      catch_assert_command,
14234                      NULL,
14235                      CATCH_PERMANENT,
14236                      CATCH_TEMPORARY);
14237
14238   varsize_limit = 65536;
14239
14240   add_info ("exceptions", info_exceptions_command,
14241             _("\
14242 List all Ada exception names.\n\
14243 If a regular expression is passed as an argument, only those matching\n\
14244 the regular expression are listed."));
14245
14246   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14247                   _("Set Ada maintenance-related variables."),
14248                   &maint_set_ada_cmdlist, "maintenance set ada ",
14249                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14250
14251   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14252                   _("Show Ada maintenance-related variables"),
14253                   &maint_show_ada_cmdlist, "maintenance show ada ",
14254                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14255
14256   add_setshow_boolean_cmd
14257     ("ignore-descriptive-types", class_maintenance,
14258      &ada_ignore_descriptive_types_p,
14259      _("Set whether descriptive types generated by GNAT should be ignored."),
14260      _("Show whether descriptive types generated by GNAT should be ignored."),
14261      _("\
14262 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14263 DWARF attribute."),
14264      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14265
14266   obstack_init (&symbol_list_obstack);
14267
14268   decoded_names_store = htab_create_alloc
14269     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
14270      NULL, xcalloc, xfree);
14271
14272   /* The ada-lang observers.  */
14273   observer_attach_new_objfile (ada_new_objfile_observer);
14274   observer_attach_free_objfile (ada_free_objfile_observer);
14275   observer_attach_inferior_exit (ada_inferior_exit);
14276
14277   /* Setup various context-specific data.  */
14278   ada_inferior_data
14279     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14280   ada_pspace_data_handle
14281     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14282 }