[Ada] ada_unpack_from_contents: Error if target buffer not large enough
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2015 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 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing
1456    suffixes that encode debugging information or leading _ada_ on
1457    SYM_NAME (see is_name_suffix commentary for the debugging
1458    information that is ignored).  If WILD, then NAME need only match a
1459    suffix of SYM_NAME minus the same suffixes.  Also returns 0 if
1460    either argument is NULL.  */
1461
1462 static int
1463 match_name (const char *sym_name, const char *name, int wild)
1464 {
1465   if (sym_name == NULL || name == NULL)
1466     return 0;
1467   else if (wild)
1468     return wild_match (sym_name, name) == 0;
1469   else
1470     {
1471       int len_name = strlen (name);
1472
1473       return (strncmp (sym_name, name, len_name) == 0
1474               && is_name_suffix (sym_name + len_name))
1475         || (startswith (sym_name, "_ada_")
1476             && strncmp (sym_name + 5, name, len_name) == 0
1477             && is_name_suffix (sym_name + len_name + 5));
1478     }
1479 }
1480 \f
1481
1482                                 /* Arrays */
1483
1484 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1485    generated by the GNAT compiler to describe the index type used
1486    for each dimension of an array, check whether it follows the latest
1487    known encoding.  If not, fix it up to conform to the latest encoding.
1488    Otherwise, do nothing.  This function also does nothing if
1489    INDEX_DESC_TYPE is NULL.
1490
1491    The GNAT encoding used to describle the array index type evolved a bit.
1492    Initially, the information would be provided through the name of each
1493    field of the structure type only, while the type of these fields was
1494    described as unspecified and irrelevant.  The debugger was then expected
1495    to perform a global type lookup using the name of that field in order
1496    to get access to the full index type description.  Because these global
1497    lookups can be very expensive, the encoding was later enhanced to make
1498    the global lookup unnecessary by defining the field type as being
1499    the full index type description.
1500
1501    The purpose of this routine is to allow us to support older versions
1502    of the compiler by detecting the use of the older encoding, and by
1503    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1504    we essentially replace each field's meaningless type by the associated
1505    index subtype).  */
1506
1507 void
1508 ada_fixup_array_indexes_type (struct type *index_desc_type)
1509 {
1510   int i;
1511
1512   if (index_desc_type == NULL)
1513     return;
1514   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1515
1516   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1517      to check one field only, no need to check them all).  If not, return
1518      now.
1519
1520      If our INDEX_DESC_TYPE was generated using the older encoding,
1521      the field type should be a meaningless integer type whose name
1522      is not equal to the field name.  */
1523   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1524       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1525                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1526     return;
1527
1528   /* Fixup each field of INDEX_DESC_TYPE.  */
1529   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1530    {
1531      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1532      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1533
1534      if (raw_type)
1535        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1536    }
1537 }
1538
1539 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1540
1541 static char *bound_name[] = {
1542   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1543   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1544 };
1545
1546 /* Maximum number of array dimensions we are prepared to handle.  */
1547
1548 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1549
1550
1551 /* The desc_* routines return primitive portions of array descriptors
1552    (fat pointers).  */
1553
1554 /* The descriptor or array type, if any, indicated by TYPE; removes
1555    level of indirection, if needed.  */
1556
1557 static struct type *
1558 desc_base_type (struct type *type)
1559 {
1560   if (type == NULL)
1561     return NULL;
1562   type = ada_check_typedef (type);
1563   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1564     type = ada_typedef_target_type (type);
1565
1566   if (type != NULL
1567       && (TYPE_CODE (type) == TYPE_CODE_PTR
1568           || TYPE_CODE (type) == TYPE_CODE_REF))
1569     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1570   else
1571     return type;
1572 }
1573
1574 /* True iff TYPE indicates a "thin" array pointer type.  */
1575
1576 static int
1577 is_thin_pntr (struct type *type)
1578 {
1579   return
1580     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1581     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1582 }
1583
1584 /* The descriptor type for thin pointer type TYPE.  */
1585
1586 static struct type *
1587 thin_descriptor_type (struct type *type)
1588 {
1589   struct type *base_type = desc_base_type (type);
1590
1591   if (base_type == NULL)
1592     return NULL;
1593   if (is_suffix (ada_type_name (base_type), "___XVE"))
1594     return base_type;
1595   else
1596     {
1597       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1598
1599       if (alt_type == NULL)
1600         return base_type;
1601       else
1602         return alt_type;
1603     }
1604 }
1605
1606 /* A pointer to the array data for thin-pointer value VAL.  */
1607
1608 static struct value *
1609 thin_data_pntr (struct value *val)
1610 {
1611   struct type *type = ada_check_typedef (value_type (val));
1612   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1613
1614   data_type = lookup_pointer_type (data_type);
1615
1616   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1617     return value_cast (data_type, value_copy (val));
1618   else
1619     return value_from_longest (data_type, value_address (val));
1620 }
1621
1622 /* True iff TYPE indicates a "thick" array pointer type.  */
1623
1624 static int
1625 is_thick_pntr (struct type *type)
1626 {
1627   type = desc_base_type (type);
1628   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1629           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1630 }
1631
1632 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1633    pointer to one, the type of its bounds data; otherwise, NULL.  */
1634
1635 static struct type *
1636 desc_bounds_type (struct type *type)
1637 {
1638   struct type *r;
1639
1640   type = desc_base_type (type);
1641
1642   if (type == NULL)
1643     return NULL;
1644   else if (is_thin_pntr (type))
1645     {
1646       type = thin_descriptor_type (type);
1647       if (type == NULL)
1648         return NULL;
1649       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1650       if (r != NULL)
1651         return ada_check_typedef (r);
1652     }
1653   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1654     {
1655       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1656       if (r != NULL)
1657         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1658     }
1659   return NULL;
1660 }
1661
1662 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1663    one, a pointer to its bounds data.   Otherwise NULL.  */
1664
1665 static struct value *
1666 desc_bounds (struct value *arr)
1667 {
1668   struct type *type = ada_check_typedef (value_type (arr));
1669
1670   if (is_thin_pntr (type))
1671     {
1672       struct type *bounds_type =
1673         desc_bounds_type (thin_descriptor_type (type));
1674       LONGEST addr;
1675
1676       if (bounds_type == NULL)
1677         error (_("Bad GNAT array descriptor"));
1678
1679       /* NOTE: The following calculation is not really kosher, but
1680          since desc_type is an XVE-encoded type (and shouldn't be),
1681          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1682       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1683         addr = value_as_long (arr);
1684       else
1685         addr = value_address (arr);
1686
1687       return
1688         value_from_longest (lookup_pointer_type (bounds_type),
1689                             addr - TYPE_LENGTH (bounds_type));
1690     }
1691
1692   else if (is_thick_pntr (type))
1693     {
1694       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1695                                                _("Bad GNAT array descriptor"));
1696       struct type *p_bounds_type = value_type (p_bounds);
1697
1698       if (p_bounds_type
1699           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1700         {
1701           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1702
1703           if (TYPE_STUB (target_type))
1704             p_bounds = value_cast (lookup_pointer_type
1705                                    (ada_check_typedef (target_type)),
1706                                    p_bounds);
1707         }
1708       else
1709         error (_("Bad GNAT array descriptor"));
1710
1711       return p_bounds;
1712     }
1713   else
1714     return NULL;
1715 }
1716
1717 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1718    position of the field containing the address of the bounds data.  */
1719
1720 static int
1721 fat_pntr_bounds_bitpos (struct type *type)
1722 {
1723   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1724 }
1725
1726 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1727    size of the field containing the address of the bounds data.  */
1728
1729 static int
1730 fat_pntr_bounds_bitsize (struct type *type)
1731 {
1732   type = desc_base_type (type);
1733
1734   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1735     return TYPE_FIELD_BITSIZE (type, 1);
1736   else
1737     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1738 }
1739
1740 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1741    pointer to one, the type of its array data (a array-with-no-bounds type);
1742    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1743    data.  */
1744
1745 static struct type *
1746 desc_data_target_type (struct type *type)
1747 {
1748   type = desc_base_type (type);
1749
1750   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1751   if (is_thin_pntr (type))
1752     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1753   else if (is_thick_pntr (type))
1754     {
1755       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1756
1757       if (data_type
1758           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1759         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1760     }
1761
1762   return NULL;
1763 }
1764
1765 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1766    its array data.  */
1767
1768 static struct value *
1769 desc_data (struct value *arr)
1770 {
1771   struct type *type = value_type (arr);
1772
1773   if (is_thin_pntr (type))
1774     return thin_data_pntr (arr);
1775   else if (is_thick_pntr (type))
1776     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1777                              _("Bad GNAT array descriptor"));
1778   else
1779     return NULL;
1780 }
1781
1782
1783 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1784    position of the field containing the address of the data.  */
1785
1786 static int
1787 fat_pntr_data_bitpos (struct type *type)
1788 {
1789   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1790 }
1791
1792 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1793    size of the field containing the address of the data.  */
1794
1795 static int
1796 fat_pntr_data_bitsize (struct type *type)
1797 {
1798   type = desc_base_type (type);
1799
1800   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1801     return TYPE_FIELD_BITSIZE (type, 0);
1802   else
1803     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1804 }
1805
1806 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1807    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1808    bound, if WHICH is 1.  The first bound is I=1.  */
1809
1810 static struct value *
1811 desc_one_bound (struct value *bounds, int i, int which)
1812 {
1813   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1814                            _("Bad GNAT array descriptor bounds"));
1815 }
1816
1817 /* If BOUNDS is an array-bounds structure type, return the bit position
1818    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1819    bound, if WHICH is 1.  The first bound is I=1.  */
1820
1821 static int
1822 desc_bound_bitpos (struct type *type, int i, int which)
1823 {
1824   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1825 }
1826
1827 /* If BOUNDS is an array-bounds structure type, return the bit field size
1828    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1829    bound, if WHICH is 1.  The first bound is I=1.  */
1830
1831 static int
1832 desc_bound_bitsize (struct type *type, int i, int which)
1833 {
1834   type = desc_base_type (type);
1835
1836   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1837     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1838   else
1839     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1840 }
1841
1842 /* If TYPE is the type of an array-bounds structure, the type of its
1843    Ith bound (numbering from 1).  Otherwise, NULL.  */
1844
1845 static struct type *
1846 desc_index_type (struct type *type, int i)
1847 {
1848   type = desc_base_type (type);
1849
1850   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1851     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1852   else
1853     return NULL;
1854 }
1855
1856 /* The number of index positions in the array-bounds type TYPE.
1857    Return 0 if TYPE is NULL.  */
1858
1859 static int
1860 desc_arity (struct type *type)
1861 {
1862   type = desc_base_type (type);
1863
1864   if (type != NULL)
1865     return TYPE_NFIELDS (type) / 2;
1866   return 0;
1867 }
1868
1869 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1870    an array descriptor type (representing an unconstrained array
1871    type).  */
1872
1873 static int
1874 ada_is_direct_array_type (struct type *type)
1875 {
1876   if (type == NULL)
1877     return 0;
1878   type = ada_check_typedef (type);
1879   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1880           || ada_is_array_descriptor_type (type));
1881 }
1882
1883 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1884  * to one.  */
1885
1886 static int
1887 ada_is_array_type (struct type *type)
1888 {
1889   while (type != NULL 
1890          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1891              || TYPE_CODE (type) == TYPE_CODE_REF))
1892     type = TYPE_TARGET_TYPE (type);
1893   return ada_is_direct_array_type (type);
1894 }
1895
1896 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1897
1898 int
1899 ada_is_simple_array_type (struct type *type)
1900 {
1901   if (type == NULL)
1902     return 0;
1903   type = ada_check_typedef (type);
1904   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1905           || (TYPE_CODE (type) == TYPE_CODE_PTR
1906               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1907                  == TYPE_CODE_ARRAY));
1908 }
1909
1910 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1911
1912 int
1913 ada_is_array_descriptor_type (struct type *type)
1914 {
1915   struct type *data_type = desc_data_target_type (type);
1916
1917   if (type == NULL)
1918     return 0;
1919   type = ada_check_typedef (type);
1920   return (data_type != NULL
1921           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1922           && desc_arity (desc_bounds_type (type)) > 0);
1923 }
1924
1925 /* Non-zero iff type is a partially mal-formed GNAT array
1926    descriptor.  FIXME: This is to compensate for some problems with
1927    debugging output from GNAT.  Re-examine periodically to see if it
1928    is still needed.  */
1929
1930 int
1931 ada_is_bogus_array_descriptor (struct type *type)
1932 {
1933   return
1934     type != NULL
1935     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1936     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1937         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1938     && !ada_is_array_descriptor_type (type);
1939 }
1940
1941
1942 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1943    (fat pointer) returns the type of the array data described---specifically,
1944    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1945    in from the descriptor; otherwise, they are left unspecified.  If
1946    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1947    returns NULL.  The result is simply the type of ARR if ARR is not
1948    a descriptor.  */
1949 struct type *
1950 ada_type_of_array (struct value *arr, int bounds)
1951 {
1952   if (ada_is_constrained_packed_array_type (value_type (arr)))
1953     return decode_constrained_packed_array_type (value_type (arr));
1954
1955   if (!ada_is_array_descriptor_type (value_type (arr)))
1956     return value_type (arr);
1957
1958   if (!bounds)
1959     {
1960       struct type *array_type =
1961         ada_check_typedef (desc_data_target_type (value_type (arr)));
1962
1963       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1964         TYPE_FIELD_BITSIZE (array_type, 0) =
1965           decode_packed_array_bitsize (value_type (arr));
1966       
1967       return array_type;
1968     }
1969   else
1970     {
1971       struct type *elt_type;
1972       int arity;
1973       struct value *descriptor;
1974
1975       elt_type = ada_array_element_type (value_type (arr), -1);
1976       arity = ada_array_arity (value_type (arr));
1977
1978       if (elt_type == NULL || arity == 0)
1979         return ada_check_typedef (value_type (arr));
1980
1981       descriptor = desc_bounds (arr);
1982       if (value_as_long (descriptor) == 0)
1983         return NULL;
1984       while (arity > 0)
1985         {
1986           struct type *range_type = alloc_type_copy (value_type (arr));
1987           struct type *array_type = alloc_type_copy (value_type (arr));
1988           struct value *low = desc_one_bound (descriptor, arity, 0);
1989           struct value *high = desc_one_bound (descriptor, arity, 1);
1990
1991           arity -= 1;
1992           create_static_range_type (range_type, value_type (low),
1993                                     longest_to_int (value_as_long (low)),
1994                                     longest_to_int (value_as_long (high)));
1995           elt_type = create_array_type (array_type, elt_type, range_type);
1996
1997           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1998             {
1999               /* We need to store the element packed bitsize, as well as
2000                  recompute the array size, because it was previously
2001                  computed based on the unpacked element size.  */
2002               LONGEST lo = value_as_long (low);
2003               LONGEST hi = value_as_long (high);
2004
2005               TYPE_FIELD_BITSIZE (elt_type, 0) =
2006                 decode_packed_array_bitsize (value_type (arr));
2007               /* If the array has no element, then the size is already
2008                  zero, and does not need to be recomputed.  */
2009               if (lo < hi)
2010                 {
2011                   int array_bitsize =
2012                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2013
2014                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2015                 }
2016             }
2017         }
2018
2019       return lookup_pointer_type (elt_type);
2020     }
2021 }
2022
2023 /* If ARR does not represent an array, returns ARR unchanged.
2024    Otherwise, returns either a standard GDB array with bounds set
2025    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2026    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2027
2028 struct value *
2029 ada_coerce_to_simple_array_ptr (struct value *arr)
2030 {
2031   if (ada_is_array_descriptor_type (value_type (arr)))
2032     {
2033       struct type *arrType = ada_type_of_array (arr, 1);
2034
2035       if (arrType == NULL)
2036         return NULL;
2037       return value_cast (arrType, value_copy (desc_data (arr)));
2038     }
2039   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2040     return decode_constrained_packed_array (arr);
2041   else
2042     return arr;
2043 }
2044
2045 /* If ARR does not represent an array, returns ARR unchanged.
2046    Otherwise, returns a standard GDB array describing ARR (which may
2047    be ARR itself if it already is in the proper form).  */
2048
2049 struct value *
2050 ada_coerce_to_simple_array (struct value *arr)
2051 {
2052   if (ada_is_array_descriptor_type (value_type (arr)))
2053     {
2054       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2055
2056       if (arrVal == NULL)
2057         error (_("Bounds unavailable for null array pointer."));
2058       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2059       return value_ind (arrVal);
2060     }
2061   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2062     return decode_constrained_packed_array (arr);
2063   else
2064     return arr;
2065 }
2066
2067 /* If TYPE represents a GNAT array type, return it translated to an
2068    ordinary GDB array type (possibly with BITSIZE fields indicating
2069    packing).  For other types, is the identity.  */
2070
2071 struct type *
2072 ada_coerce_to_simple_array_type (struct type *type)
2073 {
2074   if (ada_is_constrained_packed_array_type (type))
2075     return decode_constrained_packed_array_type (type);
2076
2077   if (ada_is_array_descriptor_type (type))
2078     return ada_check_typedef (desc_data_target_type (type));
2079
2080   return type;
2081 }
2082
2083 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2084
2085 static int
2086 ada_is_packed_array_type  (struct type *type)
2087 {
2088   if (type == NULL)
2089     return 0;
2090   type = desc_base_type (type);
2091   type = ada_check_typedef (type);
2092   return
2093     ada_type_name (type) != NULL
2094     && strstr (ada_type_name (type), "___XP") != NULL;
2095 }
2096
2097 /* Non-zero iff TYPE represents a standard GNAT constrained
2098    packed-array type.  */
2099
2100 int
2101 ada_is_constrained_packed_array_type (struct type *type)
2102 {
2103   return ada_is_packed_array_type (type)
2104     && !ada_is_array_descriptor_type (type);
2105 }
2106
2107 /* Non-zero iff TYPE represents an array descriptor for a
2108    unconstrained packed-array type.  */
2109
2110 static int
2111 ada_is_unconstrained_packed_array_type (struct type *type)
2112 {
2113   return ada_is_packed_array_type (type)
2114     && ada_is_array_descriptor_type (type);
2115 }
2116
2117 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2118    return the size of its elements in bits.  */
2119
2120 static long
2121 decode_packed_array_bitsize (struct type *type)
2122 {
2123   const char *raw_name;
2124   const char *tail;
2125   long bits;
2126
2127   /* Access to arrays implemented as fat pointers are encoded as a typedef
2128      of the fat pointer type.  We need the name of the fat pointer type
2129      to do the decoding, so strip the typedef layer.  */
2130   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2131     type = ada_typedef_target_type (type);
2132
2133   raw_name = ada_type_name (ada_check_typedef (type));
2134   if (!raw_name)
2135     raw_name = ada_type_name (desc_base_type (type));
2136
2137   if (!raw_name)
2138     return 0;
2139
2140   tail = strstr (raw_name, "___XP");
2141   gdb_assert (tail != NULL);
2142
2143   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2144     {
2145       lim_warning
2146         (_("could not understand bit size information on packed array"));
2147       return 0;
2148     }
2149
2150   return bits;
2151 }
2152
2153 /* Given that TYPE is a standard GDB array type with all bounds filled
2154    in, and that the element size of its ultimate scalar constituents
2155    (that is, either its elements, or, if it is an array of arrays, its
2156    elements' elements, etc.) is *ELT_BITS, return an identical type,
2157    but with the bit sizes of its elements (and those of any
2158    constituent arrays) recorded in the BITSIZE components of its
2159    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2160    in bits.
2161
2162    Note that, for arrays whose index type has an XA encoding where
2163    a bound references a record discriminant, getting that discriminant,
2164    and therefore the actual value of that bound, is not possible
2165    because none of the given parameters gives us access to the record.
2166    This function assumes that it is OK in the context where it is being
2167    used to return an array whose bounds are still dynamic and where
2168    the length is arbitrary.  */
2169
2170 static struct type *
2171 constrained_packed_array_type (struct type *type, long *elt_bits)
2172 {
2173   struct type *new_elt_type;
2174   struct type *new_type;
2175   struct type *index_type_desc;
2176   struct type *index_type;
2177   LONGEST low_bound, high_bound;
2178
2179   type = ada_check_typedef (type);
2180   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2181     return type;
2182
2183   index_type_desc = ada_find_parallel_type (type, "___XA");
2184   if (index_type_desc)
2185     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2186                                       NULL);
2187   else
2188     index_type = TYPE_INDEX_TYPE (type);
2189
2190   new_type = alloc_type_copy (type);
2191   new_elt_type =
2192     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2193                                    elt_bits);
2194   create_array_type (new_type, new_elt_type, index_type);
2195   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2196   TYPE_NAME (new_type) = ada_type_name (type);
2197
2198   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2199        && is_dynamic_type (check_typedef (index_type)))
2200       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2201     low_bound = high_bound = 0;
2202   if (high_bound < low_bound)
2203     *elt_bits = TYPE_LENGTH (new_type) = 0;
2204   else
2205     {
2206       *elt_bits *= (high_bound - low_bound + 1);
2207       TYPE_LENGTH (new_type) =
2208         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2209     }
2210
2211   TYPE_FIXED_INSTANCE (new_type) = 1;
2212   return new_type;
2213 }
2214
2215 /* The array type encoded by TYPE, where
2216    ada_is_constrained_packed_array_type (TYPE).  */
2217
2218 static struct type *
2219 decode_constrained_packed_array_type (struct type *type)
2220 {
2221   const char *raw_name = ada_type_name (ada_check_typedef (type));
2222   char *name;
2223   const char *tail;
2224   struct type *shadow_type;
2225   long bits;
2226
2227   if (!raw_name)
2228     raw_name = ada_type_name (desc_base_type (type));
2229
2230   if (!raw_name)
2231     return NULL;
2232
2233   name = (char *) alloca (strlen (raw_name) + 1);
2234   tail = strstr (raw_name, "___XP");
2235   type = desc_base_type (type);
2236
2237   memcpy (name, raw_name, tail - raw_name);
2238   name[tail - raw_name] = '\000';
2239
2240   shadow_type = ada_find_parallel_type_with_name (type, name);
2241
2242   if (shadow_type == NULL)
2243     {
2244       lim_warning (_("could not find bounds information on packed array"));
2245       return NULL;
2246     }
2247   shadow_type = check_typedef (shadow_type);
2248
2249   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2250     {
2251       lim_warning (_("could not understand bounds "
2252                      "information on packed array"));
2253       return NULL;
2254     }
2255
2256   bits = decode_packed_array_bitsize (type);
2257   return constrained_packed_array_type (shadow_type, &bits);
2258 }
2259
2260 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2261    array, returns a simple array that denotes that array.  Its type is a
2262    standard GDB array type except that the BITSIZEs of the array
2263    target types are set to the number of bits in each element, and the
2264    type length is set appropriately.  */
2265
2266 static struct value *
2267 decode_constrained_packed_array (struct value *arr)
2268 {
2269   struct type *type;
2270
2271   /* If our value is a pointer, then dereference it. Likewise if
2272      the value is a reference.  Make sure that this operation does not
2273      cause the target type to be fixed, as this would indirectly cause
2274      this array to be decoded.  The rest of the routine assumes that
2275      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2276      and "value_ind" routines to perform the dereferencing, as opposed
2277      to using "ada_coerce_ref" or "ada_value_ind".  */
2278   arr = coerce_ref (arr);
2279   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2280     arr = value_ind (arr);
2281
2282   type = decode_constrained_packed_array_type (value_type (arr));
2283   if (type == NULL)
2284     {
2285       error (_("can't unpack array"));
2286       return NULL;
2287     }
2288
2289   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2290       && ada_is_modular_type (value_type (arr)))
2291     {
2292        /* This is a (right-justified) modular type representing a packed
2293          array with no wrapper.  In order to interpret the value through
2294          the (left-justified) packed array type we just built, we must
2295          first left-justify it.  */
2296       int bit_size, bit_pos;
2297       ULONGEST mod;
2298
2299       mod = ada_modulus (value_type (arr)) - 1;
2300       bit_size = 0;
2301       while (mod > 0)
2302         {
2303           bit_size += 1;
2304           mod >>= 1;
2305         }
2306       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2307       arr = ada_value_primitive_packed_val (arr, NULL,
2308                                             bit_pos / HOST_CHAR_BIT,
2309                                             bit_pos % HOST_CHAR_BIT,
2310                                             bit_size,
2311                                             type);
2312     }
2313
2314   return coerce_unspec_val_to_type (arr, type);
2315 }
2316
2317
2318 /* The value of the element of packed array ARR at the ARITY indices
2319    given in IND.   ARR must be a simple array.  */
2320
2321 static struct value *
2322 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2323 {
2324   int i;
2325   int bits, elt_off, bit_off;
2326   long elt_total_bit_offset;
2327   struct type *elt_type;
2328   struct value *v;
2329
2330   bits = 0;
2331   elt_total_bit_offset = 0;
2332   elt_type = ada_check_typedef (value_type (arr));
2333   for (i = 0; i < arity; i += 1)
2334     {
2335       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2336           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2337         error
2338           (_("attempt to do packed indexing of "
2339              "something other than a packed array"));
2340       else
2341         {
2342           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2343           LONGEST lowerbound, upperbound;
2344           LONGEST idx;
2345
2346           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2347             {
2348               lim_warning (_("don't know bounds of array"));
2349               lowerbound = upperbound = 0;
2350             }
2351
2352           idx = pos_atr (ind[i]);
2353           if (idx < lowerbound || idx > upperbound)
2354             lim_warning (_("packed array index %ld out of bounds"),
2355                          (long) idx);
2356           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2357           elt_total_bit_offset += (idx - lowerbound) * bits;
2358           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2359         }
2360     }
2361   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2362   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2363
2364   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2365                                       bits, elt_type);
2366   return v;
2367 }
2368
2369 /* Non-zero iff TYPE includes negative integer values.  */
2370
2371 static int
2372 has_negatives (struct type *type)
2373 {
2374   switch (TYPE_CODE (type))
2375     {
2376     default:
2377       return 0;
2378     case TYPE_CODE_INT:
2379       return !TYPE_UNSIGNED (type);
2380     case TYPE_CODE_RANGE:
2381       return TYPE_LOW_BOUND (type) < 0;
2382     }
2383 }
2384
2385 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2386    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2387    the unpacked buffer.
2388
2389    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2390    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2391
2392    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2393    zero otherwise.
2394
2395    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2396
2397    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2398
2399 static void
2400 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2401                           gdb_byte *unpacked, int unpacked_len,
2402                           int is_big_endian, int is_signed_type,
2403                           int is_scalar)
2404 {
2405   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2406   int src_idx;                  /* Index into the source area */
2407   int src_bytes_left;           /* Number of source bytes left to process.  */
2408   int srcBitsLeft;              /* Number of source bits left to move */
2409   int unusedLS;                 /* Number of bits in next significant
2410                                    byte of source that are unused */
2411
2412   int unpacked_idx;             /* Index into the unpacked buffer */
2413   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2414
2415   unsigned long accum;          /* Staging area for bits being transferred */
2416   int accumSize;                /* Number of meaningful bits in accum */
2417   unsigned char sign;
2418
2419   /* Transmit bytes from least to most significant; delta is the direction
2420      the indices move.  */
2421   int delta = is_big_endian ? -1 : 1;
2422
2423   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2424      bits from SRC.  .*/
2425   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2426     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2427            bit_size, unpacked_len);
2428
2429   srcBitsLeft = bit_size;
2430   src_bytes_left = src_len;
2431   unpacked_bytes_left = unpacked_len;
2432   sign = 0;
2433
2434   if (is_big_endian)
2435     {
2436       src_idx = src_len - 1;
2437       if (is_signed_type
2438           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2439         sign = ~0;
2440
2441       unusedLS =
2442         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2443         % HOST_CHAR_BIT;
2444
2445       if (is_scalar)
2446         {
2447           accumSize = 0;
2448           unpacked_idx = unpacked_len - 1;
2449         }
2450       else
2451         {
2452           /* Non-scalar values must be aligned at a byte boundary...  */
2453           accumSize =
2454             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2455           /* ... And are placed at the beginning (most-significant) bytes
2456              of the target.  */
2457           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2458           unpacked_bytes_left = unpacked_idx + 1;
2459         }
2460     }
2461   else
2462     {
2463       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2464
2465       src_idx = unpacked_idx = 0;
2466       unusedLS = bit_offset;
2467       accumSize = 0;
2468
2469       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2470         sign = ~0;
2471     }
2472
2473   accum = 0;
2474   while (src_bytes_left > 0)
2475     {
2476       /* Mask for removing bits of the next source byte that are not
2477          part of the value.  */
2478       unsigned int unusedMSMask =
2479         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2480         1;
2481       /* Sign-extend bits for this byte.  */
2482       unsigned int signMask = sign & ~unusedMSMask;
2483
2484       accum |=
2485         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2486       accumSize += HOST_CHAR_BIT - unusedLS;
2487       if (accumSize >= HOST_CHAR_BIT)
2488         {
2489           unpacked[unpacked_idx] = accum & ~(~0L << HOST_CHAR_BIT);
2490           accumSize -= HOST_CHAR_BIT;
2491           accum >>= HOST_CHAR_BIT;
2492           unpacked_bytes_left -= 1;
2493           unpacked_idx += delta;
2494         }
2495       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2496       unusedLS = 0;
2497       src_bytes_left -= 1;
2498       src_idx += delta;
2499     }
2500   while (unpacked_bytes_left > 0)
2501     {
2502       accum |= sign << accumSize;
2503       unpacked[unpacked_idx] = accum & ~(~0L << HOST_CHAR_BIT);
2504       accumSize -= HOST_CHAR_BIT;
2505       if (accumSize < 0)
2506         accumSize = 0;
2507       accum >>= HOST_CHAR_BIT;
2508       unpacked_bytes_left -= 1;
2509       unpacked_idx += delta;
2510     }
2511 }
2512
2513 /* Create a new value of type TYPE from the contents of OBJ starting
2514    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2515    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2516    assigning through the result will set the field fetched from.
2517    VALADDR is ignored unless OBJ is NULL, in which case,
2518    VALADDR+OFFSET must address the start of storage containing the 
2519    packed value.  The value returned  in this case is never an lval.
2520    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2521
2522 struct value *
2523 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2524                                 long offset, int bit_offset, int bit_size,
2525                                 struct type *type)
2526 {
2527   struct value *v;
2528   gdb_byte *src;                /* First byte containing data to unpack */
2529   gdb_byte *unpacked;
2530   const int is_scalar = is_scalar_type (type);
2531   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2532   gdb_byte *staging = NULL;
2533   int staging_len = 0;
2534   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
2535
2536   type = ada_check_typedef (type);
2537
2538   if (obj == NULL)
2539     src = (gdb_byte *) valaddr + offset;
2540   else
2541     src = (gdb_byte *) value_contents (obj) + offset;
2542
2543   if (is_dynamic_type (type))
2544     {
2545       /* The length of TYPE might by dynamic, so we need to resolve
2546          TYPE in order to know its actual size, which we then use
2547          to create the contents buffer of the value we return.
2548          The difficulty is that the data containing our object is
2549          packed, and therefore maybe not at a byte boundary.  So, what
2550          we do, is unpack the data into a byte-aligned buffer, and then
2551          use that buffer as our object's value for resolving the type.  */
2552       staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2553       staging = malloc (staging_len);
2554       make_cleanup (xfree, staging);
2555
2556       ada_unpack_from_contents (src, bit_offset, bit_size,
2557                                 staging, staging_len,
2558                                 is_big_endian, has_negatives (type),
2559                                 is_scalar);
2560       type = resolve_dynamic_type (type, staging, 0);
2561       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2562         {
2563           /* This happens when the length of the object is dynamic,
2564              and is actually smaller than the space reserved for it.
2565              For instance, in an array of variant records, the bit_size
2566              we're given is the array stride, which is constant and
2567              normally equal to the maximum size of its element.
2568              But, in reality, each element only actually spans a portion
2569              of that stride.  */
2570           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2571         }
2572     }
2573
2574   if (obj == NULL)
2575     {
2576       v = allocate_value (type);
2577       src = (gdb_byte *) valaddr + offset;
2578     }
2579   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2580     {
2581       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2582
2583       v = value_at (type, value_address (obj) + offset);
2584       src = alloca (src_len);
2585       read_memory (value_address (v), src, src_len);
2586     }
2587   else
2588     {
2589       v = allocate_value (type);
2590       src = (gdb_byte *) value_contents (obj) + offset;
2591     }
2592
2593   if (obj != NULL)
2594     {
2595       long new_offset = offset;
2596
2597       set_value_component_location (v, obj);
2598       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2599       set_value_bitsize (v, bit_size);
2600       if (value_bitpos (v) >= HOST_CHAR_BIT)
2601         {
2602           ++new_offset;
2603           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2604         }
2605       set_value_offset (v, new_offset);
2606
2607       /* Also set the parent value.  This is needed when trying to
2608          assign a new value (in inferior memory).  */
2609       set_value_parent (v, obj);
2610     }
2611   else
2612     set_value_bitsize (v, bit_size);
2613   unpacked = (gdb_byte *) value_contents (v);
2614
2615   if (bit_size == 0)
2616     {
2617       memset (unpacked, 0, TYPE_LENGTH (type));
2618       do_cleanups (old_chain);
2619       return v;
2620     }
2621
2622   if (staging != NULL && staging_len == TYPE_LENGTH (type))
2623     {
2624       /* Small short-cut: If we've unpacked the data into a buffer
2625          of the same size as TYPE's length, then we can reuse that,
2626          instead of doing the unpacking again.  */
2627       memcpy (unpacked, staging, staging_len);
2628     }
2629   else
2630     ada_unpack_from_contents (src, bit_offset, bit_size,
2631                               unpacked, TYPE_LENGTH (type),
2632                               is_big_endian, has_negatives (type), is_scalar);
2633
2634   do_cleanups (old_chain);
2635   return v;
2636 }
2637
2638 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2639    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2640    not overlap.  */
2641 static void
2642 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2643            int src_offset, int n, int bits_big_endian_p)
2644 {
2645   unsigned int accum, mask;
2646   int accum_bits, chunk_size;
2647
2648   target += targ_offset / HOST_CHAR_BIT;
2649   targ_offset %= HOST_CHAR_BIT;
2650   source += src_offset / HOST_CHAR_BIT;
2651   src_offset %= HOST_CHAR_BIT;
2652   if (bits_big_endian_p)
2653     {
2654       accum = (unsigned char) *source;
2655       source += 1;
2656       accum_bits = HOST_CHAR_BIT - src_offset;
2657
2658       while (n > 0)
2659         {
2660           int unused_right;
2661
2662           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2663           accum_bits += HOST_CHAR_BIT;
2664           source += 1;
2665           chunk_size = HOST_CHAR_BIT - targ_offset;
2666           if (chunk_size > n)
2667             chunk_size = n;
2668           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2669           mask = ((1 << chunk_size) - 1) << unused_right;
2670           *target =
2671             (*target & ~mask)
2672             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2673           n -= chunk_size;
2674           accum_bits -= chunk_size;
2675           target += 1;
2676           targ_offset = 0;
2677         }
2678     }
2679   else
2680     {
2681       accum = (unsigned char) *source >> src_offset;
2682       source += 1;
2683       accum_bits = HOST_CHAR_BIT - src_offset;
2684
2685       while (n > 0)
2686         {
2687           accum = accum + ((unsigned char) *source << accum_bits);
2688           accum_bits += HOST_CHAR_BIT;
2689           source += 1;
2690           chunk_size = HOST_CHAR_BIT - targ_offset;
2691           if (chunk_size > n)
2692             chunk_size = n;
2693           mask = ((1 << chunk_size) - 1) << targ_offset;
2694           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2695           n -= chunk_size;
2696           accum_bits -= chunk_size;
2697           accum >>= chunk_size;
2698           target += 1;
2699           targ_offset = 0;
2700         }
2701     }
2702 }
2703
2704 /* Store the contents of FROMVAL into the location of TOVAL.
2705    Return a new value with the location of TOVAL and contents of
2706    FROMVAL.   Handles assignment into packed fields that have
2707    floating-point or non-scalar types.  */
2708
2709 static struct value *
2710 ada_value_assign (struct value *toval, struct value *fromval)
2711 {
2712   struct type *type = value_type (toval);
2713   int bits = value_bitsize (toval);
2714
2715   toval = ada_coerce_ref (toval);
2716   fromval = ada_coerce_ref (fromval);
2717
2718   if (ada_is_direct_array_type (value_type (toval)))
2719     toval = ada_coerce_to_simple_array (toval);
2720   if (ada_is_direct_array_type (value_type (fromval)))
2721     fromval = ada_coerce_to_simple_array (fromval);
2722
2723   if (!deprecated_value_modifiable (toval))
2724     error (_("Left operand of assignment is not a modifiable lvalue."));
2725
2726   if (VALUE_LVAL (toval) == lval_memory
2727       && bits > 0
2728       && (TYPE_CODE (type) == TYPE_CODE_FLT
2729           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2730     {
2731       int len = (value_bitpos (toval)
2732                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2733       int from_size;
2734       gdb_byte *buffer = (gdb_byte *) alloca (len);
2735       struct value *val;
2736       CORE_ADDR to_addr = value_address (toval);
2737
2738       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2739         fromval = value_cast (type, fromval);
2740
2741       read_memory (to_addr, buffer, len);
2742       from_size = value_bitsize (fromval);
2743       if (from_size == 0)
2744         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2745       if (gdbarch_bits_big_endian (get_type_arch (type)))
2746         move_bits (buffer, value_bitpos (toval),
2747                    value_contents (fromval), from_size - bits, bits, 1);
2748       else
2749         move_bits (buffer, value_bitpos (toval),
2750                    value_contents (fromval), 0, bits, 0);
2751       write_memory_with_notification (to_addr, buffer, len);
2752
2753       val = value_copy (toval);
2754       memcpy (value_contents_raw (val), value_contents (fromval),
2755               TYPE_LENGTH (type));
2756       deprecated_set_value_type (val, type);
2757
2758       return val;
2759     }
2760
2761   return value_assign (toval, fromval);
2762 }
2763
2764
2765 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2766    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2767    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2768    COMPONENT, and not the inferior's memory.  The current contents
2769    of COMPONENT are ignored.
2770
2771    Although not part of the initial design, this function also works
2772    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2773    had a null address, and COMPONENT had an address which is equal to
2774    its offset inside CONTAINER.  */
2775
2776 static void
2777 value_assign_to_component (struct value *container, struct value *component,
2778                            struct value *val)
2779 {
2780   LONGEST offset_in_container =
2781     (LONGEST)  (value_address (component) - value_address (container));
2782   int bit_offset_in_container =
2783     value_bitpos (component) - value_bitpos (container);
2784   int bits;
2785
2786   val = value_cast (value_type (component), val);
2787
2788   if (value_bitsize (component) == 0)
2789     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2790   else
2791     bits = value_bitsize (component);
2792
2793   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2794     move_bits (value_contents_writeable (container) + offset_in_container,
2795                value_bitpos (container) + bit_offset_in_container,
2796                value_contents (val),
2797                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2798                bits, 1);
2799   else
2800     move_bits (value_contents_writeable (container) + offset_in_container,
2801                value_bitpos (container) + bit_offset_in_container,
2802                value_contents (val), 0, bits, 0);
2803 }
2804
2805 /* The value of the element of array ARR at the ARITY indices given in IND.
2806    ARR may be either a simple array, GNAT array descriptor, or pointer
2807    thereto.  */
2808
2809 struct value *
2810 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2811 {
2812   int k;
2813   struct value *elt;
2814   struct type *elt_type;
2815
2816   elt = ada_coerce_to_simple_array (arr);
2817
2818   elt_type = ada_check_typedef (value_type (elt));
2819   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2820       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2821     return value_subscript_packed (elt, arity, ind);
2822
2823   for (k = 0; k < arity; k += 1)
2824     {
2825       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2826         error (_("too many subscripts (%d expected)"), k);
2827       elt = value_subscript (elt, pos_atr (ind[k]));
2828     }
2829   return elt;
2830 }
2831
2832 /* Assuming ARR is a pointer to a GDB array, the value of the element
2833    of *ARR at the ARITY indices given in IND.
2834    Does not read the entire array into memory.
2835
2836    Note: Unlike what one would expect, this function is used instead of
2837    ada_value_subscript for basically all non-packed array types.  The reason
2838    for this is that a side effect of doing our own pointer arithmetics instead
2839    of relying on value_subscript is that there is no implicit typedef peeling.
2840    This is important for arrays of array accesses, where it allows us to
2841    preserve the fact that the array's element is an array access, where the
2842    access part os encoded in a typedef layer.  */
2843
2844 static struct value *
2845 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2846 {
2847   int k;
2848   struct value *array_ind = ada_value_ind (arr);
2849   struct type *type
2850     = check_typedef (value_enclosing_type (array_ind));
2851
2852   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2853       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2854     return value_subscript_packed (array_ind, arity, ind);
2855
2856   for (k = 0; k < arity; k += 1)
2857     {
2858       LONGEST lwb, upb;
2859       struct value *lwb_value;
2860
2861       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2862         error (_("too many subscripts (%d expected)"), k);
2863       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2864                         value_copy (arr));
2865       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2866       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2867       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2868       type = TYPE_TARGET_TYPE (type);
2869     }
2870
2871   return value_ind (arr);
2872 }
2873
2874 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2875    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2876    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2877    this array is LOW, as per Ada rules.  */
2878 static struct value *
2879 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2880                           int low, int high)
2881 {
2882   struct type *type0 = ada_check_typedef (type);
2883   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2884   struct type *index_type
2885     = create_static_range_type (NULL, base_index_type, low, high);
2886   struct type *slice_type =
2887     create_array_type (NULL, TYPE_TARGET_TYPE (type0), index_type);
2888   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2889   LONGEST base_low_pos, low_pos;
2890   CORE_ADDR base;
2891
2892   if (!discrete_position (base_index_type, low, &low_pos)
2893       || !discrete_position (base_index_type, base_low, &base_low_pos))
2894     {
2895       warning (_("unable to get positions in slice, use bounds instead"));
2896       low_pos = low;
2897       base_low_pos = base_low;
2898     }
2899
2900   base = value_as_address (array_ptr)
2901     + ((low_pos - base_low_pos)
2902        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2903   return value_at_lazy (slice_type, base);
2904 }
2905
2906
2907 static struct value *
2908 ada_value_slice (struct value *array, int low, int high)
2909 {
2910   struct type *type = ada_check_typedef (value_type (array));
2911   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2912   struct type *index_type
2913     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2914   struct type *slice_type =
2915     create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2916   LONGEST low_pos, high_pos;
2917
2918   if (!discrete_position (base_index_type, low, &low_pos)
2919       || !discrete_position (base_index_type, high, &high_pos))
2920     {
2921       warning (_("unable to get positions in slice, use bounds instead"));
2922       low_pos = low;
2923       high_pos = high;
2924     }
2925
2926   return value_cast (slice_type,
2927                      value_slice (array, low, high_pos - low_pos + 1));
2928 }
2929
2930 /* If type is a record type in the form of a standard GNAT array
2931    descriptor, returns the number of dimensions for type.  If arr is a
2932    simple array, returns the number of "array of"s that prefix its
2933    type designation.  Otherwise, returns 0.  */
2934
2935 int
2936 ada_array_arity (struct type *type)
2937 {
2938   int arity;
2939
2940   if (type == NULL)
2941     return 0;
2942
2943   type = desc_base_type (type);
2944
2945   arity = 0;
2946   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2947     return desc_arity (desc_bounds_type (type));
2948   else
2949     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2950       {
2951         arity += 1;
2952         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2953       }
2954
2955   return arity;
2956 }
2957
2958 /* If TYPE is a record type in the form of a standard GNAT array
2959    descriptor or a simple array type, returns the element type for
2960    TYPE after indexing by NINDICES indices, or by all indices if
2961    NINDICES is -1.  Otherwise, returns NULL.  */
2962
2963 struct type *
2964 ada_array_element_type (struct type *type, int nindices)
2965 {
2966   type = desc_base_type (type);
2967
2968   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2969     {
2970       int k;
2971       struct type *p_array_type;
2972
2973       p_array_type = desc_data_target_type (type);
2974
2975       k = ada_array_arity (type);
2976       if (k == 0)
2977         return NULL;
2978
2979       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2980       if (nindices >= 0 && k > nindices)
2981         k = nindices;
2982       while (k > 0 && p_array_type != NULL)
2983         {
2984           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2985           k -= 1;
2986         }
2987       return p_array_type;
2988     }
2989   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2990     {
2991       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2992         {
2993           type = TYPE_TARGET_TYPE (type);
2994           nindices -= 1;
2995         }
2996       return type;
2997     }
2998
2999   return NULL;
3000 }
3001
3002 /* The type of nth index in arrays of given type (n numbering from 1).
3003    Does not examine memory.  Throws an error if N is invalid or TYPE
3004    is not an array type.  NAME is the name of the Ada attribute being
3005    evaluated ('range, 'first, 'last, or 'length); it is used in building
3006    the error message.  */
3007
3008 static struct type *
3009 ada_index_type (struct type *type, int n, const char *name)
3010 {
3011   struct type *result_type;
3012
3013   type = desc_base_type (type);
3014
3015   if (n < 0 || n > ada_array_arity (type))
3016     error (_("invalid dimension number to '%s"), name);
3017
3018   if (ada_is_simple_array_type (type))
3019     {
3020       int i;
3021
3022       for (i = 1; i < n; i += 1)
3023         type = TYPE_TARGET_TYPE (type);
3024       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3025       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3026          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3027          perhaps stabsread.c would make more sense.  */
3028       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3029         result_type = NULL;
3030     }
3031   else
3032     {
3033       result_type = desc_index_type (desc_bounds_type (type), n);
3034       if (result_type == NULL)
3035         error (_("attempt to take bound of something that is not an array"));
3036     }
3037
3038   return result_type;
3039 }
3040
3041 /* Given that arr is an array type, returns the lower bound of the
3042    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3043    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3044    array-descriptor type.  It works for other arrays with bounds supplied
3045    by run-time quantities other than discriminants.  */
3046
3047 static LONGEST
3048 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3049 {
3050   struct type *type, *index_type_desc, *index_type;
3051   int i;
3052
3053   gdb_assert (which == 0 || which == 1);
3054
3055   if (ada_is_constrained_packed_array_type (arr_type))
3056     arr_type = decode_constrained_packed_array_type (arr_type);
3057
3058   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3059     return (LONGEST) - which;
3060
3061   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3062     type = TYPE_TARGET_TYPE (arr_type);
3063   else
3064     type = arr_type;
3065
3066   if (TYPE_FIXED_INSTANCE (type))
3067     {
3068       /* The array has already been fixed, so we do not need to
3069          check the parallel ___XA type again.  That encoding has
3070          already been applied, so ignore it now.  */
3071       index_type_desc = NULL;
3072     }
3073   else
3074     {
3075       index_type_desc = ada_find_parallel_type (type, "___XA");
3076       ada_fixup_array_indexes_type (index_type_desc);
3077     }
3078
3079   if (index_type_desc != NULL)
3080     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3081                                       NULL);
3082   else
3083     {
3084       struct type *elt_type = check_typedef (type);
3085
3086       for (i = 1; i < n; i++)
3087         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3088
3089       index_type = TYPE_INDEX_TYPE (elt_type);
3090     }
3091
3092   return
3093     (LONGEST) (which == 0
3094                ? ada_discrete_type_low_bound (index_type)
3095                : ada_discrete_type_high_bound (index_type));
3096 }
3097
3098 /* Given that arr is an array value, returns the lower bound of the
3099    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3100    WHICH is 1.  This routine will also work for arrays with bounds
3101    supplied by run-time quantities other than discriminants.  */
3102
3103 static LONGEST
3104 ada_array_bound (struct value *arr, int n, int which)
3105 {
3106   struct type *arr_type;
3107
3108   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3109     arr = value_ind (arr);
3110   arr_type = value_enclosing_type (arr);
3111
3112   if (ada_is_constrained_packed_array_type (arr_type))
3113     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3114   else if (ada_is_simple_array_type (arr_type))
3115     return ada_array_bound_from_type (arr_type, n, which);
3116   else
3117     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3118 }
3119
3120 /* Given that arr is an array value, returns the length of the
3121    nth index.  This routine will also work for arrays with bounds
3122    supplied by run-time quantities other than discriminants.
3123    Does not work for arrays indexed by enumeration types with representation
3124    clauses at the moment.  */
3125
3126 static LONGEST
3127 ada_array_length (struct value *arr, int n)
3128 {
3129   struct type *arr_type, *index_type;
3130   int low, high;
3131
3132   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3133     arr = value_ind (arr);
3134   arr_type = value_enclosing_type (arr);
3135
3136   if (ada_is_constrained_packed_array_type (arr_type))
3137     return ada_array_length (decode_constrained_packed_array (arr), n);
3138
3139   if (ada_is_simple_array_type (arr_type))
3140     {
3141       low = ada_array_bound_from_type (arr_type, n, 0);
3142       high = ada_array_bound_from_type (arr_type, n, 1);
3143     }
3144   else
3145     {
3146       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3147       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3148     }
3149
3150   arr_type = check_typedef (arr_type);
3151   index_type = TYPE_INDEX_TYPE (arr_type);
3152   if (index_type != NULL)
3153     {
3154       struct type *base_type;
3155       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3156         base_type = TYPE_TARGET_TYPE (index_type);
3157       else
3158         base_type = index_type;
3159
3160       low = pos_atr (value_from_longest (base_type, low));
3161       high = pos_atr (value_from_longest (base_type, high));
3162     }
3163   return high - low + 1;
3164 }
3165
3166 /* An empty array whose type is that of ARR_TYPE (an array type),
3167    with bounds LOW to LOW-1.  */
3168
3169 static struct value *
3170 empty_array (struct type *arr_type, int low)
3171 {
3172   struct type *arr_type0 = ada_check_typedef (arr_type);
3173   struct type *index_type
3174     = create_static_range_type
3175         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3176   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3177
3178   return allocate_value (create_array_type (NULL, elt_type, index_type));
3179 }
3180 \f
3181
3182                                 /* Name resolution */
3183
3184 /* The "decoded" name for the user-definable Ada operator corresponding
3185    to OP.  */
3186
3187 static const char *
3188 ada_decoded_op_name (enum exp_opcode op)
3189 {
3190   int i;
3191
3192   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3193     {
3194       if (ada_opname_table[i].op == op)
3195         return ada_opname_table[i].decoded;
3196     }
3197   error (_("Could not find operator name for opcode"));
3198 }
3199
3200
3201 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3202    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3203    undefined namespace) and converts operators that are
3204    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3205    non-null, it provides a preferred result type [at the moment, only
3206    type void has any effect---causing procedures to be preferred over
3207    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3208    return type is preferred.  May change (expand) *EXP.  */
3209
3210 static void
3211 resolve (struct expression **expp, int void_context_p)
3212 {
3213   struct type *context_type = NULL;
3214   int pc = 0;
3215
3216   if (void_context_p)
3217     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3218
3219   resolve_subexp (expp, &pc, 1, context_type);
3220 }
3221
3222 /* Resolve the operator of the subexpression beginning at
3223    position *POS of *EXPP.  "Resolving" consists of replacing
3224    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3225    with their resolutions, replacing built-in operators with
3226    function calls to user-defined operators, where appropriate, and,
3227    when DEPROCEDURE_P is non-zero, converting function-valued variables
3228    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3229    are as in ada_resolve, above.  */
3230
3231 static struct value *
3232 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
3233                 struct type *context_type)
3234 {
3235   int pc = *pos;
3236   int i;
3237   struct expression *exp;       /* Convenience: == *expp.  */
3238   enum exp_opcode op = (*expp)->elts[pc].opcode;
3239   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3240   int nargs;                    /* Number of operands.  */
3241   int oplen;
3242
3243   argvec = NULL;
3244   nargs = 0;
3245   exp = *expp;
3246
3247   /* Pass one: resolve operands, saving their types and updating *pos,
3248      if needed.  */
3249   switch (op)
3250     {
3251     case OP_FUNCALL:
3252       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3253           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3254         *pos += 7;
3255       else
3256         {
3257           *pos += 3;
3258           resolve_subexp (expp, pos, 0, NULL);
3259         }
3260       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3261       break;
3262
3263     case UNOP_ADDR:
3264       *pos += 1;
3265       resolve_subexp (expp, pos, 0, NULL);
3266       break;
3267
3268     case UNOP_QUAL:
3269       *pos += 3;
3270       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3271       break;
3272
3273     case OP_ATR_MODULUS:
3274     case OP_ATR_SIZE:
3275     case OP_ATR_TAG:
3276     case OP_ATR_FIRST:
3277     case OP_ATR_LAST:
3278     case OP_ATR_LENGTH:
3279     case OP_ATR_POS:
3280     case OP_ATR_VAL:
3281     case OP_ATR_MIN:
3282     case OP_ATR_MAX:
3283     case TERNOP_IN_RANGE:
3284     case BINOP_IN_BOUNDS:
3285     case UNOP_IN_RANGE:
3286     case OP_AGGREGATE:
3287     case OP_OTHERS:
3288     case OP_CHOICES:
3289     case OP_POSITIONAL:
3290     case OP_DISCRETE_RANGE:
3291     case OP_NAME:
3292       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3293       *pos += oplen;
3294       break;
3295
3296     case BINOP_ASSIGN:
3297       {
3298         struct value *arg1;
3299
3300         *pos += 1;
3301         arg1 = resolve_subexp (expp, pos, 0, NULL);
3302         if (arg1 == NULL)
3303           resolve_subexp (expp, pos, 1, NULL);
3304         else
3305           resolve_subexp (expp, pos, 1, value_type (arg1));
3306         break;
3307       }
3308
3309     case UNOP_CAST:
3310       *pos += 3;
3311       nargs = 1;
3312       break;
3313
3314     case BINOP_ADD:
3315     case BINOP_SUB:
3316     case BINOP_MUL:
3317     case BINOP_DIV:
3318     case BINOP_REM:
3319     case BINOP_MOD:
3320     case BINOP_EXP:
3321     case BINOP_CONCAT:
3322     case BINOP_LOGICAL_AND:
3323     case BINOP_LOGICAL_OR:
3324     case BINOP_BITWISE_AND:
3325     case BINOP_BITWISE_IOR:
3326     case BINOP_BITWISE_XOR:
3327
3328     case BINOP_EQUAL:
3329     case BINOP_NOTEQUAL:
3330     case BINOP_LESS:
3331     case BINOP_GTR:
3332     case BINOP_LEQ:
3333     case BINOP_GEQ:
3334
3335     case BINOP_REPEAT:
3336     case BINOP_SUBSCRIPT:
3337     case BINOP_COMMA:
3338       *pos += 1;
3339       nargs = 2;
3340       break;
3341
3342     case UNOP_NEG:
3343     case UNOP_PLUS:
3344     case UNOP_LOGICAL_NOT:
3345     case UNOP_ABS:
3346     case UNOP_IND:
3347       *pos += 1;
3348       nargs = 1;
3349       break;
3350
3351     case OP_LONG:
3352     case OP_DOUBLE:
3353     case OP_VAR_VALUE:
3354       *pos += 4;
3355       break;
3356
3357     case OP_TYPE:
3358     case OP_BOOL:
3359     case OP_LAST:
3360     case OP_INTERNALVAR:
3361       *pos += 3;
3362       break;
3363
3364     case UNOP_MEMVAL:
3365       *pos += 3;
3366       nargs = 1;
3367       break;
3368
3369     case OP_REGISTER:
3370       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3371       break;
3372
3373     case STRUCTOP_STRUCT:
3374       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3375       nargs = 1;
3376       break;
3377
3378     case TERNOP_SLICE:
3379       *pos += 1;
3380       nargs = 3;
3381       break;
3382
3383     case OP_STRING:
3384       break;
3385
3386     default:
3387       error (_("Unexpected operator during name resolution"));
3388     }
3389
3390   argvec = XALLOCAVEC (struct value *, nargs + 1);
3391   for (i = 0; i < nargs; i += 1)
3392     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3393   argvec[i] = NULL;
3394   exp = *expp;
3395
3396   /* Pass two: perform any resolution on principal operator.  */
3397   switch (op)
3398     {
3399     default:
3400       break;
3401
3402     case OP_VAR_VALUE:
3403       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3404         {
3405           struct block_symbol *candidates;
3406           int n_candidates;
3407
3408           n_candidates =
3409             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3410                                     (exp->elts[pc + 2].symbol),
3411                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3412                                     &candidates);
3413
3414           if (n_candidates > 1)
3415             {
3416               /* Types tend to get re-introduced locally, so if there
3417                  are any local symbols that are not types, first filter
3418                  out all types.  */
3419               int j;
3420               for (j = 0; j < n_candidates; j += 1)
3421                 switch (SYMBOL_CLASS (candidates[j].symbol))
3422                   {
3423                   case LOC_REGISTER:
3424                   case LOC_ARG:
3425                   case LOC_REF_ARG:
3426                   case LOC_REGPARM_ADDR:
3427                   case LOC_LOCAL:
3428                   case LOC_COMPUTED:
3429                     goto FoundNonType;
3430                   default:
3431                     break;
3432                   }
3433             FoundNonType:
3434               if (j < n_candidates)
3435                 {
3436                   j = 0;
3437                   while (j < n_candidates)
3438                     {
3439                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3440                         {
3441                           candidates[j] = candidates[n_candidates - 1];
3442                           n_candidates -= 1;
3443                         }
3444                       else
3445                         j += 1;
3446                     }
3447                 }
3448             }
3449
3450           if (n_candidates == 0)
3451             error (_("No definition found for %s"),
3452                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3453           else if (n_candidates == 1)
3454             i = 0;
3455           else if (deprocedure_p
3456                    && !is_nonfunction (candidates, n_candidates))
3457             {
3458               i = ada_resolve_function
3459                 (candidates, n_candidates, NULL, 0,
3460                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3461                  context_type);
3462               if (i < 0)
3463                 error (_("Could not find a match for %s"),
3464                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3465             }
3466           else
3467             {
3468               printf_filtered (_("Multiple matches for %s\n"),
3469                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3470               user_select_syms (candidates, n_candidates, 1);
3471               i = 0;
3472             }
3473
3474           exp->elts[pc + 1].block = candidates[i].block;
3475           exp->elts[pc + 2].symbol = candidates[i].symbol;
3476           if (innermost_block == NULL
3477               || contained_in (candidates[i].block, innermost_block))
3478             innermost_block = candidates[i].block;
3479         }
3480
3481       if (deprocedure_p
3482           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3483               == TYPE_CODE_FUNC))
3484         {
3485           replace_operator_with_call (expp, pc, 0, 0,
3486                                       exp->elts[pc + 2].symbol,
3487                                       exp->elts[pc + 1].block);
3488           exp = *expp;
3489         }
3490       break;
3491
3492     case OP_FUNCALL:
3493       {
3494         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3495             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3496           {
3497             struct block_symbol *candidates;
3498             int n_candidates;
3499
3500             n_candidates =
3501               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3502                                       (exp->elts[pc + 5].symbol),
3503                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3504                                       &candidates);
3505             if (n_candidates == 1)
3506               i = 0;
3507             else
3508               {
3509                 i = ada_resolve_function
3510                   (candidates, n_candidates,
3511                    argvec, nargs,
3512                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3513                    context_type);
3514                 if (i < 0)
3515                   error (_("Could not find a match for %s"),
3516                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3517               }
3518
3519             exp->elts[pc + 4].block = candidates[i].block;
3520             exp->elts[pc + 5].symbol = candidates[i].symbol;
3521             if (innermost_block == NULL
3522                 || contained_in (candidates[i].block, innermost_block))
3523               innermost_block = candidates[i].block;
3524           }
3525       }
3526       break;
3527     case BINOP_ADD:
3528     case BINOP_SUB:
3529     case BINOP_MUL:
3530     case BINOP_DIV:
3531     case BINOP_REM:
3532     case BINOP_MOD:
3533     case BINOP_CONCAT:
3534     case BINOP_BITWISE_AND:
3535     case BINOP_BITWISE_IOR:
3536     case BINOP_BITWISE_XOR:
3537     case BINOP_EQUAL:
3538     case BINOP_NOTEQUAL:
3539     case BINOP_LESS:
3540     case BINOP_GTR:
3541     case BINOP_LEQ:
3542     case BINOP_GEQ:
3543     case BINOP_EXP:
3544     case UNOP_NEG:
3545     case UNOP_PLUS:
3546     case UNOP_LOGICAL_NOT:
3547     case UNOP_ABS:
3548       if (possible_user_operator_p (op, argvec))
3549         {
3550           struct block_symbol *candidates;
3551           int n_candidates;
3552
3553           n_candidates =
3554             ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)),
3555                                     (struct block *) NULL, VAR_DOMAIN,
3556                                     &candidates);
3557           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3558                                     ada_decoded_op_name (op), NULL);
3559           if (i < 0)
3560             break;
3561
3562           replace_operator_with_call (expp, pc, nargs, 1,
3563                                       candidates[i].symbol,
3564                                       candidates[i].block);
3565           exp = *expp;
3566         }
3567       break;
3568
3569     case OP_TYPE:
3570     case OP_REGISTER:
3571       return NULL;
3572     }
3573
3574   *pos = pc;
3575   return evaluate_subexp_type (exp, pos);
3576 }
3577
3578 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3579    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3580    a non-pointer.  */
3581 /* The term "match" here is rather loose.  The match is heuristic and
3582    liberal.  */
3583
3584 static int
3585 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3586 {
3587   ftype = ada_check_typedef (ftype);
3588   atype = ada_check_typedef (atype);
3589
3590   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3591     ftype = TYPE_TARGET_TYPE (ftype);
3592   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3593     atype = TYPE_TARGET_TYPE (atype);
3594
3595   switch (TYPE_CODE (ftype))
3596     {
3597     default:
3598       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3599     case TYPE_CODE_PTR:
3600       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3601         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3602                                TYPE_TARGET_TYPE (atype), 0);
3603       else
3604         return (may_deref
3605                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3606     case TYPE_CODE_INT:
3607     case TYPE_CODE_ENUM:
3608     case TYPE_CODE_RANGE:
3609       switch (TYPE_CODE (atype))
3610         {
3611         case TYPE_CODE_INT:
3612         case TYPE_CODE_ENUM:
3613         case TYPE_CODE_RANGE:
3614           return 1;
3615         default:
3616           return 0;
3617         }
3618
3619     case TYPE_CODE_ARRAY:
3620       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3621               || ada_is_array_descriptor_type (atype));
3622
3623     case TYPE_CODE_STRUCT:
3624       if (ada_is_array_descriptor_type (ftype))
3625         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3626                 || ada_is_array_descriptor_type (atype));
3627       else
3628         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3629                 && !ada_is_array_descriptor_type (atype));
3630
3631     case TYPE_CODE_UNION:
3632     case TYPE_CODE_FLT:
3633       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3634     }
3635 }
3636
3637 /* Return non-zero if the formals of FUNC "sufficiently match" the
3638    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3639    may also be an enumeral, in which case it is treated as a 0-
3640    argument function.  */
3641
3642 static int
3643 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3644 {
3645   int i;
3646   struct type *func_type = SYMBOL_TYPE (func);
3647
3648   if (SYMBOL_CLASS (func) == LOC_CONST
3649       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3650     return (n_actuals == 0);
3651   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3652     return 0;
3653
3654   if (TYPE_NFIELDS (func_type) != n_actuals)
3655     return 0;
3656
3657   for (i = 0; i < n_actuals; i += 1)
3658     {
3659       if (actuals[i] == NULL)
3660         return 0;
3661       else
3662         {
3663           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3664                                                                    i));
3665           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3666
3667           if (!ada_type_match (ftype, atype, 1))
3668             return 0;
3669         }
3670     }
3671   return 1;
3672 }
3673
3674 /* False iff function type FUNC_TYPE definitely does not produce a value
3675    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3676    FUNC_TYPE is not a valid function type with a non-null return type
3677    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3678
3679 static int
3680 return_match (struct type *func_type, struct type *context_type)
3681 {
3682   struct type *return_type;
3683
3684   if (func_type == NULL)
3685     return 1;
3686
3687   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3688     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3689   else
3690     return_type = get_base_type (func_type);
3691   if (return_type == NULL)
3692     return 1;
3693
3694   context_type = get_base_type (context_type);
3695
3696   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3697     return context_type == NULL || return_type == context_type;
3698   else if (context_type == NULL)
3699     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3700   else
3701     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3702 }
3703
3704
3705 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3706    function (if any) that matches the types of the NARGS arguments in
3707    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3708    that returns that type, then eliminate matches that don't.  If
3709    CONTEXT_TYPE is void and there is at least one match that does not
3710    return void, eliminate all matches that do.
3711
3712    Asks the user if there is more than one match remaining.  Returns -1
3713    if there is no such symbol or none is selected.  NAME is used
3714    solely for messages.  May re-arrange and modify SYMS in
3715    the process; the index returned is for the modified vector.  */
3716
3717 static int
3718 ada_resolve_function (struct block_symbol syms[],
3719                       int nsyms, struct value **args, int nargs,
3720                       const char *name, struct type *context_type)
3721 {
3722   int fallback;
3723   int k;
3724   int m;                        /* Number of hits */
3725
3726   m = 0;
3727   /* In the first pass of the loop, we only accept functions matching
3728      context_type.  If none are found, we add a second pass of the loop
3729      where every function is accepted.  */
3730   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3731     {
3732       for (k = 0; k < nsyms; k += 1)
3733         {
3734           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3735
3736           if (ada_args_match (syms[k].symbol, args, nargs)
3737               && (fallback || return_match (type, context_type)))
3738             {
3739               syms[m] = syms[k];
3740               m += 1;
3741             }
3742         }
3743     }
3744
3745   /* If we got multiple matches, ask the user which one to use.  Don't do this
3746      interactive thing during completion, though, as the purpose of the
3747      completion is providing a list of all possible matches.  Prompting the
3748      user to filter it down would be completely unexpected in this case.  */
3749   if (m == 0)
3750     return -1;
3751   else if (m > 1 && !parse_completion)
3752     {
3753       printf_filtered (_("Multiple matches for %s\n"), name);
3754       user_select_syms (syms, m, 1);
3755       return 0;
3756     }
3757   return 0;
3758 }
3759
3760 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3761    in a listing of choices during disambiguation (see sort_choices, below).
3762    The idea is that overloadings of a subprogram name from the
3763    same package should sort in their source order.  We settle for ordering
3764    such symbols by their trailing number (__N  or $N).  */
3765
3766 static int
3767 encoded_ordered_before (const char *N0, const char *N1)
3768 {
3769   if (N1 == NULL)
3770     return 0;
3771   else if (N0 == NULL)
3772     return 1;
3773   else
3774     {
3775       int k0, k1;
3776
3777       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3778         ;
3779       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3780         ;
3781       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3782           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3783         {
3784           int n0, n1;
3785
3786           n0 = k0;
3787           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3788             n0 -= 1;
3789           n1 = k1;
3790           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3791             n1 -= 1;
3792           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3793             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3794         }
3795       return (strcmp (N0, N1) < 0);
3796     }
3797 }
3798
3799 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3800    encoded names.  */
3801
3802 static void
3803 sort_choices (struct block_symbol syms[], int nsyms)
3804 {
3805   int i;
3806
3807   for (i = 1; i < nsyms; i += 1)
3808     {
3809       struct block_symbol sym = syms[i];
3810       int j;
3811
3812       for (j = i - 1; j >= 0; j -= 1)
3813         {
3814           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3815                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3816             break;
3817           syms[j + 1] = syms[j];
3818         }
3819       syms[j + 1] = sym;
3820     }
3821 }
3822
3823 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3824    by asking the user (if necessary), returning the number selected, 
3825    and setting the first elements of SYMS items.  Error if no symbols
3826    selected.  */
3827
3828 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3829    to be re-integrated one of these days.  */
3830
3831 int
3832 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3833 {
3834   int i;
3835   int *chosen = XALLOCAVEC (int , nsyms);
3836   int n_chosen;
3837   int first_choice = (max_results == 1) ? 1 : 2;
3838   const char *select_mode = multiple_symbols_select_mode ();
3839
3840   if (max_results < 1)
3841     error (_("Request to select 0 symbols!"));
3842   if (nsyms <= 1)
3843     return nsyms;
3844
3845   if (select_mode == multiple_symbols_cancel)
3846     error (_("\
3847 canceled because the command is ambiguous\n\
3848 See set/show multiple-symbol."));
3849   
3850   /* If select_mode is "all", then return all possible symbols.
3851      Only do that if more than one symbol can be selected, of course.
3852      Otherwise, display the menu as usual.  */
3853   if (select_mode == multiple_symbols_all && max_results > 1)
3854     return nsyms;
3855
3856   printf_unfiltered (_("[0] cancel\n"));
3857   if (max_results > 1)
3858     printf_unfiltered (_("[1] all\n"));
3859
3860   sort_choices (syms, nsyms);
3861
3862   for (i = 0; i < nsyms; i += 1)
3863     {
3864       if (syms[i].symbol == NULL)
3865         continue;
3866
3867       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3868         {
3869           struct symtab_and_line sal =
3870             find_function_start_sal (syms[i].symbol, 1);
3871
3872           if (sal.symtab == NULL)
3873             printf_unfiltered (_("[%d] %s at <no source file available>:%d\n"),
3874                                i + first_choice,
3875                                SYMBOL_PRINT_NAME (syms[i].symbol),
3876                                sal.line);
3877           else
3878             printf_unfiltered (_("[%d] %s at %s:%d\n"), i + first_choice,
3879                                SYMBOL_PRINT_NAME (syms[i].symbol),
3880                                symtab_to_filename_for_display (sal.symtab),
3881                                sal.line);
3882           continue;
3883         }
3884       else
3885         {
3886           int is_enumeral =
3887             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3888              && SYMBOL_TYPE (syms[i].symbol) != NULL
3889              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3890           struct symtab *symtab = NULL;
3891
3892           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3893             symtab = symbol_symtab (syms[i].symbol);
3894
3895           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3896             printf_unfiltered (_("[%d] %s at %s:%d\n"),
3897                                i + first_choice,
3898                                SYMBOL_PRINT_NAME (syms[i].symbol),
3899                                symtab_to_filename_for_display (symtab),
3900                                SYMBOL_LINE (syms[i].symbol));
3901           else if (is_enumeral
3902                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3903             {
3904               printf_unfiltered (("[%d] "), i + first_choice);
3905               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3906                               gdb_stdout, -1, 0, &type_print_raw_options);
3907               printf_unfiltered (_("'(%s) (enumeral)\n"),
3908                                  SYMBOL_PRINT_NAME (syms[i].symbol));
3909             }
3910           else if (symtab != NULL)
3911             printf_unfiltered (is_enumeral
3912                                ? _("[%d] %s in %s (enumeral)\n")
3913                                : _("[%d] %s at %s:?\n"),
3914                                i + first_choice,
3915                                SYMBOL_PRINT_NAME (syms[i].symbol),
3916                                symtab_to_filename_for_display (symtab));
3917           else
3918             printf_unfiltered (is_enumeral
3919                                ? _("[%d] %s (enumeral)\n")
3920                                : _("[%d] %s at ?\n"),
3921                                i + first_choice,
3922                                SYMBOL_PRINT_NAME (syms[i].symbol));
3923         }
3924     }
3925
3926   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3927                              "overload-choice");
3928
3929   for (i = 0; i < n_chosen; i += 1)
3930     syms[i] = syms[chosen[i]];
3931
3932   return n_chosen;
3933 }
3934
3935 /* Read and validate a set of numeric choices from the user in the
3936    range 0 .. N_CHOICES-1.  Place the results in increasing
3937    order in CHOICES[0 .. N-1], and return N.
3938
3939    The user types choices as a sequence of numbers on one line
3940    separated by blanks, encoding them as follows:
3941
3942      + A choice of 0 means to cancel the selection, throwing an error.
3943      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3944      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3945
3946    The user is not allowed to choose more than MAX_RESULTS values.
3947
3948    ANNOTATION_SUFFIX, if present, is used to annotate the input
3949    prompts (for use with the -f switch).  */
3950
3951 int
3952 get_selections (int *choices, int n_choices, int max_results,
3953                 int is_all_choice, char *annotation_suffix)
3954 {
3955   char *args;
3956   char *prompt;
3957   int n_chosen;
3958   int first_choice = is_all_choice ? 2 : 1;
3959
3960   prompt = getenv ("PS2");
3961   if (prompt == NULL)
3962     prompt = "> ";
3963
3964   args = command_line_input (prompt, 0, annotation_suffix);
3965
3966   if (args == NULL)
3967     error_no_arg (_("one or more choice numbers"));
3968
3969   n_chosen = 0;
3970
3971   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3972      order, as given in args.  Choices are validated.  */
3973   while (1)
3974     {
3975       char *args2;
3976       int choice, j;
3977
3978       args = skip_spaces (args);
3979       if (*args == '\0' && n_chosen == 0)
3980         error_no_arg (_("one or more choice numbers"));
3981       else if (*args == '\0')
3982         break;
3983
3984       choice = strtol (args, &args2, 10);
3985       if (args == args2 || choice < 0
3986           || choice > n_choices + first_choice - 1)
3987         error (_("Argument must be choice number"));
3988       args = args2;
3989
3990       if (choice == 0)
3991         error (_("cancelled"));
3992
3993       if (choice < first_choice)
3994         {
3995           n_chosen = n_choices;
3996           for (j = 0; j < n_choices; j += 1)
3997             choices[j] = j;
3998           break;
3999         }
4000       choice -= first_choice;
4001
4002       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4003         {
4004         }
4005
4006       if (j < 0 || choice != choices[j])
4007         {
4008           int k;
4009
4010           for (k = n_chosen - 1; k > j; k -= 1)
4011             choices[k + 1] = choices[k];
4012           choices[j + 1] = choice;
4013           n_chosen += 1;
4014         }
4015     }
4016
4017   if (n_chosen > max_results)
4018     error (_("Select no more than %d of the above"), max_results);
4019
4020   return n_chosen;
4021 }
4022
4023 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4024    on the function identified by SYM and BLOCK, and taking NARGS
4025    arguments.  Update *EXPP as needed to hold more space.  */
4026
4027 static void
4028 replace_operator_with_call (struct expression **expp, int pc, int nargs,
4029                             int oplen, struct symbol *sym,
4030                             const struct block *block)
4031 {
4032   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4033      symbol, -oplen for operator being replaced).  */
4034   struct expression *newexp = (struct expression *)
4035     xzalloc (sizeof (struct expression)
4036              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4037   struct expression *exp = *expp;
4038
4039   newexp->nelts = exp->nelts + 7 - oplen;
4040   newexp->language_defn = exp->language_defn;
4041   newexp->gdbarch = exp->gdbarch;
4042   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4043   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4044           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4045
4046   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4047   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4048
4049   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4050   newexp->elts[pc + 4].block = block;
4051   newexp->elts[pc + 5].symbol = sym;
4052
4053   *expp = newexp;
4054   xfree (exp);
4055 }
4056
4057 /* Type-class predicates */
4058
4059 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4060    or FLOAT).  */
4061
4062 static int
4063 numeric_type_p (struct type *type)
4064 {
4065   if (type == NULL)
4066     return 0;
4067   else
4068     {
4069       switch (TYPE_CODE (type))
4070         {
4071         case TYPE_CODE_INT:
4072         case TYPE_CODE_FLT:
4073           return 1;
4074         case TYPE_CODE_RANGE:
4075           return (type == TYPE_TARGET_TYPE (type)
4076                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4077         default:
4078           return 0;
4079         }
4080     }
4081 }
4082
4083 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4084
4085 static int
4086 integer_type_p (struct type *type)
4087 {
4088   if (type == NULL)
4089     return 0;
4090   else
4091     {
4092       switch (TYPE_CODE (type))
4093         {
4094         case TYPE_CODE_INT:
4095           return 1;
4096         case TYPE_CODE_RANGE:
4097           return (type == TYPE_TARGET_TYPE (type)
4098                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4099         default:
4100           return 0;
4101         }
4102     }
4103 }
4104
4105 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4106
4107 static int
4108 scalar_type_p (struct type *type)
4109 {
4110   if (type == NULL)
4111     return 0;
4112   else
4113     {
4114       switch (TYPE_CODE (type))
4115         {
4116         case TYPE_CODE_INT:
4117         case TYPE_CODE_RANGE:
4118         case TYPE_CODE_ENUM:
4119         case TYPE_CODE_FLT:
4120           return 1;
4121         default:
4122           return 0;
4123         }
4124     }
4125 }
4126
4127 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4128
4129 static int
4130 discrete_type_p (struct type *type)
4131 {
4132   if (type == NULL)
4133     return 0;
4134   else
4135     {
4136       switch (TYPE_CODE (type))
4137         {
4138         case TYPE_CODE_INT:
4139         case TYPE_CODE_RANGE:
4140         case TYPE_CODE_ENUM:
4141         case TYPE_CODE_BOOL:
4142           return 1;
4143         default:
4144           return 0;
4145         }
4146     }
4147 }
4148
4149 /* Returns non-zero if OP with operands in the vector ARGS could be
4150    a user-defined function.  Errs on the side of pre-defined operators
4151    (i.e., result 0).  */
4152
4153 static int
4154 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4155 {
4156   struct type *type0 =
4157     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4158   struct type *type1 =
4159     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4160
4161   if (type0 == NULL)
4162     return 0;
4163
4164   switch (op)
4165     {
4166     default:
4167       return 0;
4168
4169     case BINOP_ADD:
4170     case BINOP_SUB:
4171     case BINOP_MUL:
4172     case BINOP_DIV:
4173       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4174
4175     case BINOP_REM:
4176     case BINOP_MOD:
4177     case BINOP_BITWISE_AND:
4178     case BINOP_BITWISE_IOR:
4179     case BINOP_BITWISE_XOR:
4180       return (!(integer_type_p (type0) && integer_type_p (type1)));
4181
4182     case BINOP_EQUAL:
4183     case BINOP_NOTEQUAL:
4184     case BINOP_LESS:
4185     case BINOP_GTR:
4186     case BINOP_LEQ:
4187     case BINOP_GEQ:
4188       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4189
4190     case BINOP_CONCAT:
4191       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4192
4193     case BINOP_EXP:
4194       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4195
4196     case UNOP_NEG:
4197     case UNOP_PLUS:
4198     case UNOP_LOGICAL_NOT:
4199     case UNOP_ABS:
4200       return (!numeric_type_p (type0));
4201
4202     }
4203 }
4204 \f
4205                                 /* Renaming */
4206
4207 /* NOTES: 
4208
4209    1. In the following, we assume that a renaming type's name may
4210       have an ___XD suffix.  It would be nice if this went away at some
4211       point.
4212    2. We handle both the (old) purely type-based representation of 
4213       renamings and the (new) variable-based encoding.  At some point,
4214       it is devoutly to be hoped that the former goes away 
4215       (FIXME: hilfinger-2007-07-09).
4216    3. Subprogram renamings are not implemented, although the XRS
4217       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4218
4219 /* If SYM encodes a renaming, 
4220
4221        <renaming> renames <renamed entity>,
4222
4223    sets *LEN to the length of the renamed entity's name,
4224    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4225    the string describing the subcomponent selected from the renamed
4226    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4227    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4228    are undefined).  Otherwise, returns a value indicating the category
4229    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4230    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4231    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4232    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4233    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4234    may be NULL, in which case they are not assigned.
4235
4236    [Currently, however, GCC does not generate subprogram renamings.]  */
4237
4238 enum ada_renaming_category
4239 ada_parse_renaming (struct symbol *sym,
4240                     const char **renamed_entity, int *len, 
4241                     const char **renaming_expr)
4242 {
4243   enum ada_renaming_category kind;
4244   const char *info;
4245   const char *suffix;
4246
4247   if (sym == NULL)
4248     return ADA_NOT_RENAMING;
4249   switch (SYMBOL_CLASS (sym)) 
4250     {
4251     default:
4252       return ADA_NOT_RENAMING;
4253     case LOC_TYPEDEF:
4254       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4255                                        renamed_entity, len, renaming_expr);
4256     case LOC_LOCAL:
4257     case LOC_STATIC:
4258     case LOC_COMPUTED:
4259     case LOC_OPTIMIZED_OUT:
4260       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4261       if (info == NULL)
4262         return ADA_NOT_RENAMING;
4263       switch (info[5])
4264         {
4265         case '_':
4266           kind = ADA_OBJECT_RENAMING;
4267           info += 6;
4268           break;
4269         case 'E':
4270           kind = ADA_EXCEPTION_RENAMING;
4271           info += 7;
4272           break;
4273         case 'P':
4274           kind = ADA_PACKAGE_RENAMING;
4275           info += 7;
4276           break;
4277         case 'S':
4278           kind = ADA_SUBPROGRAM_RENAMING;
4279           info += 7;
4280           break;
4281         default:
4282           return ADA_NOT_RENAMING;
4283         }
4284     }
4285
4286   if (renamed_entity != NULL)
4287     *renamed_entity = info;
4288   suffix = strstr (info, "___XE");
4289   if (suffix == NULL || suffix == info)
4290     return ADA_NOT_RENAMING;
4291   if (len != NULL)
4292     *len = strlen (info) - strlen (suffix);
4293   suffix += 5;
4294   if (renaming_expr != NULL)
4295     *renaming_expr = suffix;
4296   return kind;
4297 }
4298
4299 /* Assuming TYPE encodes a renaming according to the old encoding in
4300    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4301    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4302    ADA_NOT_RENAMING otherwise.  */
4303 static enum ada_renaming_category
4304 parse_old_style_renaming (struct type *type,
4305                           const char **renamed_entity, int *len, 
4306                           const char **renaming_expr)
4307 {
4308   enum ada_renaming_category kind;
4309   const char *name;
4310   const char *info;
4311   const char *suffix;
4312
4313   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4314       || TYPE_NFIELDS (type) != 1)
4315     return ADA_NOT_RENAMING;
4316
4317   name = type_name_no_tag (type);
4318   if (name == NULL)
4319     return ADA_NOT_RENAMING;
4320   
4321   name = strstr (name, "___XR");
4322   if (name == NULL)
4323     return ADA_NOT_RENAMING;
4324   switch (name[5])
4325     {
4326     case '\0':
4327     case '_':
4328       kind = ADA_OBJECT_RENAMING;
4329       break;
4330     case 'E':
4331       kind = ADA_EXCEPTION_RENAMING;
4332       break;
4333     case 'P':
4334       kind = ADA_PACKAGE_RENAMING;
4335       break;
4336     case 'S':
4337       kind = ADA_SUBPROGRAM_RENAMING;
4338       break;
4339     default:
4340       return ADA_NOT_RENAMING;
4341     }
4342
4343   info = TYPE_FIELD_NAME (type, 0);
4344   if (info == NULL)
4345     return ADA_NOT_RENAMING;
4346   if (renamed_entity != NULL)
4347     *renamed_entity = info;
4348   suffix = strstr (info, "___XE");
4349   if (renaming_expr != NULL)
4350     *renaming_expr = suffix + 5;
4351   if (suffix == NULL || suffix == info)
4352     return ADA_NOT_RENAMING;
4353   if (len != NULL)
4354     *len = suffix - info;
4355   return kind;
4356 }
4357
4358 /* Compute the value of the given RENAMING_SYM, which is expected to
4359    be a symbol encoding a renaming expression.  BLOCK is the block
4360    used to evaluate the renaming.  */
4361
4362 static struct value *
4363 ada_read_renaming_var_value (struct symbol *renaming_sym,
4364                              const struct block *block)
4365 {
4366   const char *sym_name;
4367   struct expression *expr;
4368   struct value *value;
4369   struct cleanup *old_chain = NULL;
4370
4371   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4372   expr = parse_exp_1 (&sym_name, 0, block, 0);
4373   old_chain = make_cleanup (free_current_contents, &expr);
4374   value = evaluate_expression (expr);
4375
4376   do_cleanups (old_chain);
4377   return value;
4378 }
4379 \f
4380
4381                                 /* Evaluation: Function Calls */
4382
4383 /* Return an lvalue containing the value VAL.  This is the identity on
4384    lvalues, and otherwise has the side-effect of allocating memory
4385    in the inferior where a copy of the value contents is copied.  */
4386
4387 static struct value *
4388 ensure_lval (struct value *val)
4389 {
4390   if (VALUE_LVAL (val) == not_lval
4391       || VALUE_LVAL (val) == lval_internalvar)
4392     {
4393       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4394       const CORE_ADDR addr =
4395         value_as_long (value_allocate_space_in_inferior (len));
4396
4397       set_value_address (val, addr);
4398       VALUE_LVAL (val) = lval_memory;
4399       write_memory (addr, value_contents (val), len);
4400     }
4401
4402   return val;
4403 }
4404
4405 /* Return the value ACTUAL, converted to be an appropriate value for a
4406    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4407    allocating any necessary descriptors (fat pointers), or copies of
4408    values not residing in memory, updating it as needed.  */
4409
4410 struct value *
4411 ada_convert_actual (struct value *actual, struct type *formal_type0)
4412 {
4413   struct type *actual_type = ada_check_typedef (value_type (actual));
4414   struct type *formal_type = ada_check_typedef (formal_type0);
4415   struct type *formal_target =
4416     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4417     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4418   struct type *actual_target =
4419     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4420     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4421
4422   if (ada_is_array_descriptor_type (formal_target)
4423       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4424     return make_array_descriptor (formal_type, actual);
4425   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4426            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4427     {
4428       struct value *result;
4429
4430       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4431           && ada_is_array_descriptor_type (actual_target))
4432         result = desc_data (actual);
4433       else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR)
4434         {
4435           if (VALUE_LVAL (actual) != lval_memory)
4436             {
4437               struct value *val;
4438
4439               actual_type = ada_check_typedef (value_type (actual));
4440               val = allocate_value (actual_type);
4441               memcpy ((char *) value_contents_raw (val),
4442                       (char *) value_contents (actual),
4443                       TYPE_LENGTH (actual_type));
4444               actual = ensure_lval (val);
4445             }
4446           result = value_addr (actual);
4447         }
4448       else
4449         return actual;
4450       return value_cast_pointers (formal_type, result, 0);
4451     }
4452   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4453     return ada_value_ind (actual);
4454   else if (ada_is_aligner_type (formal_type))
4455     {
4456       /* We need to turn this parameter into an aligner type
4457          as well.  */
4458       struct value *aligner = allocate_value (formal_type);
4459       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4460
4461       value_assign_to_component (aligner, component, actual);
4462       return aligner;
4463     }
4464
4465   return actual;
4466 }
4467
4468 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4469    type TYPE.  This is usually an inefficient no-op except on some targets
4470    (such as AVR) where the representation of a pointer and an address
4471    differs.  */
4472
4473 static CORE_ADDR
4474 value_pointer (struct value *value, struct type *type)
4475 {
4476   struct gdbarch *gdbarch = get_type_arch (type);
4477   unsigned len = TYPE_LENGTH (type);
4478   gdb_byte *buf = (gdb_byte *) alloca (len);
4479   CORE_ADDR addr;
4480
4481   addr = value_address (value);
4482   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4483   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4484   return addr;
4485 }
4486
4487
4488 /* Push a descriptor of type TYPE for array value ARR on the stack at
4489    *SP, updating *SP to reflect the new descriptor.  Return either
4490    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4491    to-descriptor type rather than a descriptor type), a struct value *
4492    representing a pointer to this descriptor.  */
4493
4494 static struct value *
4495 make_array_descriptor (struct type *type, struct value *arr)
4496 {
4497   struct type *bounds_type = desc_bounds_type (type);
4498   struct type *desc_type = desc_base_type (type);
4499   struct value *descriptor = allocate_value (desc_type);
4500   struct value *bounds = allocate_value (bounds_type);
4501   int i;
4502
4503   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4504        i > 0; i -= 1)
4505     {
4506       modify_field (value_type (bounds), value_contents_writeable (bounds),
4507                     ada_array_bound (arr, i, 0),
4508                     desc_bound_bitpos (bounds_type, i, 0),
4509                     desc_bound_bitsize (bounds_type, i, 0));
4510       modify_field (value_type (bounds), value_contents_writeable (bounds),
4511                     ada_array_bound (arr, i, 1),
4512                     desc_bound_bitpos (bounds_type, i, 1),
4513                     desc_bound_bitsize (bounds_type, i, 1));
4514     }
4515
4516   bounds = ensure_lval (bounds);
4517
4518   modify_field (value_type (descriptor),
4519                 value_contents_writeable (descriptor),
4520                 value_pointer (ensure_lval (arr),
4521                                TYPE_FIELD_TYPE (desc_type, 0)),
4522                 fat_pntr_data_bitpos (desc_type),
4523                 fat_pntr_data_bitsize (desc_type));
4524
4525   modify_field (value_type (descriptor),
4526                 value_contents_writeable (descriptor),
4527                 value_pointer (bounds,
4528                                TYPE_FIELD_TYPE (desc_type, 1)),
4529                 fat_pntr_bounds_bitpos (desc_type),
4530                 fat_pntr_bounds_bitsize (desc_type));
4531
4532   descriptor = ensure_lval (descriptor);
4533
4534   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4535     return value_addr (descriptor);
4536   else
4537     return descriptor;
4538 }
4539 \f
4540                                 /* Symbol Cache Module */
4541
4542 /* Performance measurements made as of 2010-01-15 indicate that
4543    this cache does bring some noticeable improvements.  Depending
4544    on the type of entity being printed, the cache can make it as much
4545    as an order of magnitude faster than without it.
4546
4547    The descriptive type DWARF extension has significantly reduced
4548    the need for this cache, at least when DWARF is being used.  However,
4549    even in this case, some expensive name-based symbol searches are still
4550    sometimes necessary - to find an XVZ variable, mostly.  */
4551
4552 /* Initialize the contents of SYM_CACHE.  */
4553
4554 static void
4555 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4556 {
4557   obstack_init (&sym_cache->cache_space);
4558   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4559 }
4560
4561 /* Free the memory used by SYM_CACHE.  */
4562
4563 static void
4564 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4565 {
4566   obstack_free (&sym_cache->cache_space, NULL);
4567   xfree (sym_cache);
4568 }
4569
4570 /* Return the symbol cache associated to the given program space PSPACE.
4571    If not allocated for this PSPACE yet, allocate and initialize one.  */
4572
4573 static struct ada_symbol_cache *
4574 ada_get_symbol_cache (struct program_space *pspace)
4575 {
4576   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4577
4578   if (pspace_data->sym_cache == NULL)
4579     {
4580       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4581       ada_init_symbol_cache (pspace_data->sym_cache);
4582     }
4583
4584   return pspace_data->sym_cache;
4585 }
4586
4587 /* Clear all entries from the symbol cache.  */
4588
4589 static void
4590 ada_clear_symbol_cache (void)
4591 {
4592   struct ada_symbol_cache *sym_cache
4593     = ada_get_symbol_cache (current_program_space);
4594
4595   obstack_free (&sym_cache->cache_space, NULL);
4596   ada_init_symbol_cache (sym_cache);
4597 }
4598
4599 /* Search our cache for an entry matching NAME and DOMAIN.
4600    Return it if found, or NULL otherwise.  */
4601
4602 static struct cache_entry **
4603 find_entry (const char *name, domain_enum domain)
4604 {
4605   struct ada_symbol_cache *sym_cache
4606     = ada_get_symbol_cache (current_program_space);
4607   int h = msymbol_hash (name) % HASH_SIZE;
4608   struct cache_entry **e;
4609
4610   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4611     {
4612       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4613         return e;
4614     }
4615   return NULL;
4616 }
4617
4618 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4619    Return 1 if found, 0 otherwise.
4620
4621    If an entry was found and SYM is not NULL, set *SYM to the entry's
4622    SYM.  Same principle for BLOCK if not NULL.  */
4623
4624 static int
4625 lookup_cached_symbol (const char *name, domain_enum domain,
4626                       struct symbol **sym, const struct block **block)
4627 {
4628   struct cache_entry **e = find_entry (name, domain);
4629
4630   if (e == NULL)
4631     return 0;
4632   if (sym != NULL)
4633     *sym = (*e)->sym;
4634   if (block != NULL)
4635     *block = (*e)->block;
4636   return 1;
4637 }
4638
4639 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4640    in domain DOMAIN, save this result in our symbol cache.  */
4641
4642 static void
4643 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4644               const struct block *block)
4645 {
4646   struct ada_symbol_cache *sym_cache
4647     = ada_get_symbol_cache (current_program_space);
4648   int h;
4649   char *copy;
4650   struct cache_entry *e;
4651
4652   /* Symbols for builtin types don't have a block.
4653      For now don't cache such symbols.  */
4654   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4655     return;
4656
4657   /* If the symbol is a local symbol, then do not cache it, as a search
4658      for that symbol depends on the context.  To determine whether
4659      the symbol is local or not, we check the block where we found it
4660      against the global and static blocks of its associated symtab.  */
4661   if (sym
4662       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4663                             GLOBAL_BLOCK) != block
4664       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4665                             STATIC_BLOCK) != block)
4666     return;
4667
4668   h = msymbol_hash (name) % HASH_SIZE;
4669   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4670                                             sizeof (*e));
4671   e->next = sym_cache->root[h];
4672   sym_cache->root[h] = e;
4673   e->name = copy
4674     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4675   strcpy (copy, name);
4676   e->sym = sym;
4677   e->domain = domain;
4678   e->block = block;
4679 }
4680 \f
4681                                 /* Symbol Lookup */
4682
4683 /* Return nonzero if wild matching should be used when searching for
4684    all symbols matching LOOKUP_NAME.
4685
4686    LOOKUP_NAME is expected to be a symbol name after transformation
4687    for Ada lookups (see ada_name_for_lookup).  */
4688
4689 static int
4690 should_use_wild_match (const char *lookup_name)
4691 {
4692   return (strstr (lookup_name, "__") == NULL);
4693 }
4694
4695 /* Return the result of a standard (literal, C-like) lookup of NAME in
4696    given DOMAIN, visible from lexical block BLOCK.  */
4697
4698 static struct symbol *
4699 standard_lookup (const char *name, const struct block *block,
4700                  domain_enum domain)
4701 {
4702   /* Initialize it just to avoid a GCC false warning.  */
4703   struct block_symbol sym = {NULL, NULL};
4704
4705   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4706     return sym.symbol;
4707   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4708   cache_symbol (name, domain, sym.symbol, sym.block);
4709   return sym.symbol;
4710 }
4711
4712
4713 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4714    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4715    since they contend in overloading in the same way.  */
4716 static int
4717 is_nonfunction (struct block_symbol syms[], int n)
4718 {
4719   int i;
4720
4721   for (i = 0; i < n; i += 1)
4722     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4723         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4724             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4725       return 1;
4726
4727   return 0;
4728 }
4729
4730 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4731    struct types.  Otherwise, they may not.  */
4732
4733 static int
4734 equiv_types (struct type *type0, struct type *type1)
4735 {
4736   if (type0 == type1)
4737     return 1;
4738   if (type0 == NULL || type1 == NULL
4739       || TYPE_CODE (type0) != TYPE_CODE (type1))
4740     return 0;
4741   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4742        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4743       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4744       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4745     return 1;
4746
4747   return 0;
4748 }
4749
4750 /* True iff SYM0 represents the same entity as SYM1, or one that is
4751    no more defined than that of SYM1.  */
4752
4753 static int
4754 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4755 {
4756   if (sym0 == sym1)
4757     return 1;
4758   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4759       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4760     return 0;
4761
4762   switch (SYMBOL_CLASS (sym0))
4763     {
4764     case LOC_UNDEF:
4765       return 1;
4766     case LOC_TYPEDEF:
4767       {
4768         struct type *type0 = SYMBOL_TYPE (sym0);
4769         struct type *type1 = SYMBOL_TYPE (sym1);
4770         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4771         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4772         int len0 = strlen (name0);
4773
4774         return
4775           TYPE_CODE (type0) == TYPE_CODE (type1)
4776           && (equiv_types (type0, type1)
4777               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4778                   && startswith (name1 + len0, "___XV")));
4779       }
4780     case LOC_CONST:
4781       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4782         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4783     default:
4784       return 0;
4785     }
4786 }
4787
4788 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4789    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4790
4791 static void
4792 add_defn_to_vec (struct obstack *obstackp,
4793                  struct symbol *sym,
4794                  const struct block *block)
4795 {
4796   int i;
4797   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4798
4799   /* Do not try to complete stub types, as the debugger is probably
4800      already scanning all symbols matching a certain name at the
4801      time when this function is called.  Trying to replace the stub
4802      type by its associated full type will cause us to restart a scan
4803      which may lead to an infinite recursion.  Instead, the client
4804      collecting the matching symbols will end up collecting several
4805      matches, with at least one of them complete.  It can then filter
4806      out the stub ones if needed.  */
4807
4808   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4809     {
4810       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4811         return;
4812       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4813         {
4814           prevDefns[i].symbol = sym;
4815           prevDefns[i].block = block;
4816           return;
4817         }
4818     }
4819
4820   {
4821     struct block_symbol info;
4822
4823     info.symbol = sym;
4824     info.block = block;
4825     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4826   }
4827 }
4828
4829 /* Number of block_symbol structures currently collected in current vector in
4830    OBSTACKP.  */
4831
4832 static int
4833 num_defns_collected (struct obstack *obstackp)
4834 {
4835   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4836 }
4837
4838 /* Vector of block_symbol structures currently collected in current vector in
4839    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4840
4841 static struct block_symbol *
4842 defns_collected (struct obstack *obstackp, int finish)
4843 {
4844   if (finish)
4845     return (struct block_symbol *) obstack_finish (obstackp);
4846   else
4847     return (struct block_symbol *) obstack_base (obstackp);
4848 }
4849
4850 /* Return a bound minimal symbol matching NAME according to Ada
4851    decoding rules.  Returns an invalid symbol if there is no such
4852    minimal symbol.  Names prefixed with "standard__" are handled
4853    specially: "standard__" is first stripped off, and only static and
4854    global symbols are searched.  */
4855
4856 struct bound_minimal_symbol
4857 ada_lookup_simple_minsym (const char *name)
4858 {
4859   struct bound_minimal_symbol result;
4860   struct objfile *objfile;
4861   struct minimal_symbol *msymbol;
4862   const int wild_match_p = should_use_wild_match (name);
4863
4864   memset (&result, 0, sizeof (result));
4865
4866   /* Special case: If the user specifies a symbol name inside package
4867      Standard, do a non-wild matching of the symbol name without
4868      the "standard__" prefix.  This was primarily introduced in order
4869      to allow the user to specifically access the standard exceptions
4870      using, for instance, Standard.Constraint_Error when Constraint_Error
4871      is ambiguous (due to the user defining its own Constraint_Error
4872      entity inside its program).  */
4873   if (startswith (name, "standard__"))
4874     name += sizeof ("standard__") - 1;
4875
4876   ALL_MSYMBOLS (objfile, msymbol)
4877   {
4878     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), name, wild_match_p)
4879         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4880       {
4881         result.minsym = msymbol;
4882         result.objfile = objfile;
4883         break;
4884       }
4885   }
4886
4887   return result;
4888 }
4889
4890 /* For all subprograms that statically enclose the subprogram of the
4891    selected frame, add symbols matching identifier NAME in DOMAIN
4892    and their blocks to the list of data in OBSTACKP, as for
4893    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4894    with a wildcard prefix.  */
4895
4896 static void
4897 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4898                                   const char *name, domain_enum domain,
4899                                   int wild_match_p)
4900 {
4901 }
4902
4903 /* True if TYPE is definitely an artificial type supplied to a symbol
4904    for which no debugging information was given in the symbol file.  */
4905
4906 static int
4907 is_nondebugging_type (struct type *type)
4908 {
4909   const char *name = ada_type_name (type);
4910
4911   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4912 }
4913
4914 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4915    that are deemed "identical" for practical purposes.
4916
4917    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4918    types and that their number of enumerals is identical (in other
4919    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4920
4921 static int
4922 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4923 {
4924   int i;
4925
4926   /* The heuristic we use here is fairly conservative.  We consider
4927      that 2 enumerate types are identical if they have the same
4928      number of enumerals and that all enumerals have the same
4929      underlying value and name.  */
4930
4931   /* All enums in the type should have an identical underlying value.  */
4932   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4933     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4934       return 0;
4935
4936   /* All enumerals should also have the same name (modulo any numerical
4937      suffix).  */
4938   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4939     {
4940       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4941       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4942       int len_1 = strlen (name_1);
4943       int len_2 = strlen (name_2);
4944
4945       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4946       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4947       if (len_1 != len_2
4948           || strncmp (TYPE_FIELD_NAME (type1, i),
4949                       TYPE_FIELD_NAME (type2, i),
4950                       len_1) != 0)
4951         return 0;
4952     }
4953
4954   return 1;
4955 }
4956
4957 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4958    that are deemed "identical" for practical purposes.  Sometimes,
4959    enumerals are not strictly identical, but their types are so similar
4960    that they can be considered identical.
4961
4962    For instance, consider the following code:
4963
4964       type Color is (Black, Red, Green, Blue, White);
4965       type RGB_Color is new Color range Red .. Blue;
4966
4967    Type RGB_Color is a subrange of an implicit type which is a copy
4968    of type Color. If we call that implicit type RGB_ColorB ("B" is
4969    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4970    As a result, when an expression references any of the enumeral
4971    by name (Eg. "print green"), the expression is technically
4972    ambiguous and the user should be asked to disambiguate. But
4973    doing so would only hinder the user, since it wouldn't matter
4974    what choice he makes, the outcome would always be the same.
4975    So, for practical purposes, we consider them as the same.  */
4976
4977 static int
4978 symbols_are_identical_enums (struct block_symbol *syms, int nsyms)
4979 {
4980   int i;
4981
4982   /* Before performing a thorough comparison check of each type,
4983      we perform a series of inexpensive checks.  We expect that these
4984      checks will quickly fail in the vast majority of cases, and thus
4985      help prevent the unnecessary use of a more expensive comparison.
4986      Said comparison also expects us to make some of these checks
4987      (see ada_identical_enum_types_p).  */
4988
4989   /* Quick check: All symbols should have an enum type.  */
4990   for (i = 0; i < nsyms; i++)
4991     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
4992       return 0;
4993
4994   /* Quick check: They should all have the same value.  */
4995   for (i = 1; i < nsyms; i++)
4996     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4997       return 0;
4998
4999   /* Quick check: They should all have the same number of enumerals.  */
5000   for (i = 1; i < nsyms; i++)
5001     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5002         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5003       return 0;
5004
5005   /* All the sanity checks passed, so we might have a set of
5006      identical enumeration types.  Perform a more complete
5007      comparison of the type of each symbol.  */
5008   for (i = 1; i < nsyms; i++)
5009     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5010                                      SYMBOL_TYPE (syms[0].symbol)))
5011       return 0;
5012
5013   return 1;
5014 }
5015
5016 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
5017    duplicate other symbols in the list (The only case I know of where
5018    this happens is when object files containing stabs-in-ecoff are
5019    linked with files containing ordinary ecoff debugging symbols (or no
5020    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5021    Returns the number of items in the modified list.  */
5022
5023 static int
5024 remove_extra_symbols (struct block_symbol *syms, int nsyms)
5025 {
5026   int i, j;
5027
5028   /* We should never be called with less than 2 symbols, as there
5029      cannot be any extra symbol in that case.  But it's easy to
5030      handle, since we have nothing to do in that case.  */
5031   if (nsyms < 2)
5032     return nsyms;
5033
5034   i = 0;
5035   while (i < nsyms)
5036     {
5037       int remove_p = 0;
5038
5039       /* If two symbols have the same name and one of them is a stub type,
5040          the get rid of the stub.  */
5041
5042       if (TYPE_STUB (SYMBOL_TYPE (syms[i].symbol))
5043           && SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL)
5044         {
5045           for (j = 0; j < nsyms; j++)
5046             {
5047               if (j != i
5048                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].symbol))
5049                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5050                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5051                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0)
5052                 remove_p = 1;
5053             }
5054         }
5055
5056       /* Two symbols with the same name, same class and same address
5057          should be identical.  */
5058
5059       else if (SYMBOL_LINKAGE_NAME (syms[i].symbol) != NULL
5060           && SYMBOL_CLASS (syms[i].symbol) == LOC_STATIC
5061           && is_nondebugging_type (SYMBOL_TYPE (syms[i].symbol)))
5062         {
5063           for (j = 0; j < nsyms; j += 1)
5064             {
5065               if (i != j
5066                   && SYMBOL_LINKAGE_NAME (syms[j].symbol) != NULL
5067                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].symbol),
5068                              SYMBOL_LINKAGE_NAME (syms[j].symbol)) == 0
5069                   && SYMBOL_CLASS (syms[i].symbol)
5070                        == SYMBOL_CLASS (syms[j].symbol)
5071                   && SYMBOL_VALUE_ADDRESS (syms[i].symbol)
5072                   == SYMBOL_VALUE_ADDRESS (syms[j].symbol))
5073                 remove_p = 1;
5074             }
5075         }
5076       
5077       if (remove_p)
5078         {
5079           for (j = i + 1; j < nsyms; j += 1)
5080             syms[j - 1] = syms[j];
5081           nsyms -= 1;
5082         }
5083
5084       i += 1;
5085     }
5086
5087   /* If all the remaining symbols are identical enumerals, then
5088      just keep the first one and discard the rest.
5089
5090      Unlike what we did previously, we do not discard any entry
5091      unless they are ALL identical.  This is because the symbol
5092      comparison is not a strict comparison, but rather a practical
5093      comparison.  If all symbols are considered identical, then
5094      we can just go ahead and use the first one and discard the rest.
5095      But if we cannot reduce the list to a single element, we have
5096      to ask the user to disambiguate anyways.  And if we have to
5097      present a multiple-choice menu, it's less confusing if the list
5098      isn't missing some choices that were identical and yet distinct.  */
5099   if (symbols_are_identical_enums (syms, nsyms))
5100     nsyms = 1;
5101
5102   return nsyms;
5103 }
5104
5105 /* Given a type that corresponds to a renaming entity, use the type name
5106    to extract the scope (package name or function name, fully qualified,
5107    and following the GNAT encoding convention) where this renaming has been
5108    defined.  The string returned needs to be deallocated after use.  */
5109
5110 static char *
5111 xget_renaming_scope (struct type *renaming_type)
5112 {
5113   /* The renaming types adhere to the following convention:
5114      <scope>__<rename>___<XR extension>.
5115      So, to extract the scope, we search for the "___XR" extension,
5116      and then backtrack until we find the first "__".  */
5117
5118   const char *name = type_name_no_tag (renaming_type);
5119   const char *suffix = strstr (name, "___XR");
5120   const char *last;
5121   int scope_len;
5122   char *scope;
5123
5124   /* Now, backtrack a bit until we find the first "__".  Start looking
5125      at suffix - 3, as the <rename> part is at least one character long.  */
5126
5127   for (last = suffix - 3; last > name; last--)
5128     if (last[0] == '_' && last[1] == '_')
5129       break;
5130
5131   /* Make a copy of scope and return it.  */
5132
5133   scope_len = last - name;
5134   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
5135
5136   strncpy (scope, name, scope_len);
5137   scope[scope_len] = '\0';
5138
5139   return scope;
5140 }
5141
5142 /* Return nonzero if NAME corresponds to a package name.  */
5143
5144 static int
5145 is_package_name (const char *name)
5146 {
5147   /* Here, We take advantage of the fact that no symbols are generated
5148      for packages, while symbols are generated for each function.
5149      So the condition for NAME represent a package becomes equivalent
5150      to NAME not existing in our list of symbols.  There is only one
5151      small complication with library-level functions (see below).  */
5152
5153   char *fun_name;
5154
5155   /* If it is a function that has not been defined at library level,
5156      then we should be able to look it up in the symbols.  */
5157   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5158     return 0;
5159
5160   /* Library-level function names start with "_ada_".  See if function
5161      "_ada_" followed by NAME can be found.  */
5162
5163   /* Do a quick check that NAME does not contain "__", since library-level
5164      functions names cannot contain "__" in them.  */
5165   if (strstr (name, "__") != NULL)
5166     return 0;
5167
5168   fun_name = xstrprintf ("_ada_%s", name);
5169
5170   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
5171 }
5172
5173 /* Return nonzero if SYM corresponds to a renaming entity that is
5174    not visible from FUNCTION_NAME.  */
5175
5176 static int
5177 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5178 {
5179   char *scope;
5180   struct cleanup *old_chain;
5181
5182   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5183     return 0;
5184
5185   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5186   old_chain = make_cleanup (xfree, scope);
5187
5188   /* If the rename has been defined in a package, then it is visible.  */
5189   if (is_package_name (scope))
5190     {
5191       do_cleanups (old_chain);
5192       return 0;
5193     }
5194
5195   /* Check that the rename is in the current function scope by checking
5196      that its name starts with SCOPE.  */
5197
5198   /* If the function name starts with "_ada_", it means that it is
5199      a library-level function.  Strip this prefix before doing the
5200      comparison, as the encoding for the renaming does not contain
5201      this prefix.  */
5202   if (startswith (function_name, "_ada_"))
5203     function_name += 5;
5204
5205   {
5206     int is_invisible = !startswith (function_name, scope);
5207
5208     do_cleanups (old_chain);
5209     return is_invisible;
5210   }
5211 }
5212
5213 /* Remove entries from SYMS that corresponds to a renaming entity that
5214    is not visible from the function associated with CURRENT_BLOCK or
5215    that is superfluous due to the presence of more specific renaming
5216    information.  Places surviving symbols in the initial entries of
5217    SYMS and returns the number of surviving symbols.
5218    
5219    Rationale:
5220    First, in cases where an object renaming is implemented as a
5221    reference variable, GNAT may produce both the actual reference
5222    variable and the renaming encoding.  In this case, we discard the
5223    latter.
5224
5225    Second, GNAT emits a type following a specified encoding for each renaming
5226    entity.  Unfortunately, STABS currently does not support the definition
5227    of types that are local to a given lexical block, so all renamings types
5228    are emitted at library level.  As a consequence, if an application
5229    contains two renaming entities using the same name, and a user tries to
5230    print the value of one of these entities, the result of the ada symbol
5231    lookup will also contain the wrong renaming type.
5232
5233    This function partially covers for this limitation by attempting to
5234    remove from the SYMS list renaming symbols that should be visible
5235    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5236    method with the current information available.  The implementation
5237    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5238    
5239       - When the user tries to print a rename in a function while there
5240         is another rename entity defined in a package:  Normally, the
5241         rename in the function has precedence over the rename in the
5242         package, so the latter should be removed from the list.  This is
5243         currently not the case.
5244         
5245       - This function will incorrectly remove valid renames if
5246         the CURRENT_BLOCK corresponds to a function which symbol name
5247         has been changed by an "Export" pragma.  As a consequence,
5248         the user will be unable to print such rename entities.  */
5249
5250 static int
5251 remove_irrelevant_renamings (struct block_symbol *syms,
5252                              int nsyms, const struct block *current_block)
5253 {
5254   struct symbol *current_function;
5255   const char *current_function_name;
5256   int i;
5257   int is_new_style_renaming;
5258
5259   /* If there is both a renaming foo___XR... encoded as a variable and
5260      a simple variable foo in the same block, discard the latter.
5261      First, zero out such symbols, then compress.  */
5262   is_new_style_renaming = 0;
5263   for (i = 0; i < nsyms; i += 1)
5264     {
5265       struct symbol *sym = syms[i].symbol;
5266       const struct block *block = syms[i].block;
5267       const char *name;
5268       const char *suffix;
5269
5270       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5271         continue;
5272       name = SYMBOL_LINKAGE_NAME (sym);
5273       suffix = strstr (name, "___XR");
5274
5275       if (suffix != NULL)
5276         {
5277           int name_len = suffix - name;
5278           int j;
5279
5280           is_new_style_renaming = 1;
5281           for (j = 0; j < nsyms; j += 1)
5282             if (i != j && syms[j].symbol != NULL
5283                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].symbol),
5284                             name_len) == 0
5285                 && block == syms[j].block)
5286               syms[j].symbol = NULL;
5287         }
5288     }
5289   if (is_new_style_renaming)
5290     {
5291       int j, k;
5292
5293       for (j = k = 0; j < nsyms; j += 1)
5294         if (syms[j].symbol != NULL)
5295             {
5296               syms[k] = syms[j];
5297               k += 1;
5298             }
5299       return k;
5300     }
5301
5302   /* Extract the function name associated to CURRENT_BLOCK.
5303      Abort if unable to do so.  */
5304
5305   if (current_block == NULL)
5306     return nsyms;
5307
5308   current_function = block_linkage_function (current_block);
5309   if (current_function == NULL)
5310     return nsyms;
5311
5312   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5313   if (current_function_name == NULL)
5314     return nsyms;
5315
5316   /* Check each of the symbols, and remove it from the list if it is
5317      a type corresponding to a renaming that is out of the scope of
5318      the current block.  */
5319
5320   i = 0;
5321   while (i < nsyms)
5322     {
5323       if (ada_parse_renaming (syms[i].symbol, NULL, NULL, NULL)
5324           == ADA_OBJECT_RENAMING
5325           && old_renaming_is_invisible (syms[i].symbol, current_function_name))
5326         {
5327           int j;
5328
5329           for (j = i + 1; j < nsyms; j += 1)
5330             syms[j - 1] = syms[j];
5331           nsyms -= 1;
5332         }
5333       else
5334         i += 1;
5335     }
5336
5337   return nsyms;
5338 }
5339
5340 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5341    whose name and domain match NAME and DOMAIN respectively.
5342    If no match was found, then extend the search to "enclosing"
5343    routines (in other words, if we're inside a nested function,
5344    search the symbols defined inside the enclosing functions).
5345    If WILD_MATCH_P is nonzero, perform the naming matching in
5346    "wild" mode (see function "wild_match" for more info).
5347
5348    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5349
5350 static void
5351 ada_add_local_symbols (struct obstack *obstackp, const char *name,
5352                        const struct block *block, domain_enum domain,
5353                        int wild_match_p)
5354 {
5355   int block_depth = 0;
5356
5357   while (block != NULL)
5358     {
5359       block_depth += 1;
5360       ada_add_block_symbols (obstackp, block, name, domain, NULL,
5361                              wild_match_p);
5362
5363       /* If we found a non-function match, assume that's the one.  */
5364       if (is_nonfunction (defns_collected (obstackp, 0),
5365                           num_defns_collected (obstackp)))
5366         return;
5367
5368       block = BLOCK_SUPERBLOCK (block);
5369     }
5370
5371   /* If no luck so far, try to find NAME as a local symbol in some lexically
5372      enclosing subprogram.  */
5373   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5374     add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match_p);
5375 }
5376
5377 /* An object of this type is used as the user_data argument when
5378    calling the map_matching_symbols method.  */
5379
5380 struct match_data
5381 {
5382   struct objfile *objfile;
5383   struct obstack *obstackp;
5384   struct symbol *arg_sym;
5385   int found_sym;
5386 };
5387
5388 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5389    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5390    containing the obstack that collects the symbol list, the file that SYM
5391    must come from, a flag indicating whether a non-argument symbol has
5392    been found in the current block, and the last argument symbol
5393    passed in SYM within the current block (if any).  When SYM is null,
5394    marking the end of a block, the argument symbol is added if no
5395    other has been found.  */
5396
5397 static int
5398 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5399 {
5400   struct match_data *data = (struct match_data *) data0;
5401   
5402   if (sym == NULL)
5403     {
5404       if (!data->found_sym && data->arg_sym != NULL) 
5405         add_defn_to_vec (data->obstackp,
5406                          fixup_symbol_section (data->arg_sym, data->objfile),
5407                          block);
5408       data->found_sym = 0;
5409       data->arg_sym = NULL;
5410     }
5411   else 
5412     {
5413       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5414         return 0;
5415       else if (SYMBOL_IS_ARGUMENT (sym))
5416         data->arg_sym = sym;
5417       else
5418         {
5419           data->found_sym = 1;
5420           add_defn_to_vec (data->obstackp,
5421                            fixup_symbol_section (sym, data->objfile),
5422                            block);
5423         }
5424     }
5425   return 0;
5426 }
5427
5428 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are targetted
5429    by renamings matching NAME in BLOCK.  Add these symbols to OBSTACKP.  If
5430    WILD_MATCH_P is nonzero, perform the naming matching in "wild" mode (see
5431    function "wild_match" for more information).  Return whether we found such
5432    symbols.  */
5433
5434 static int
5435 ada_add_block_renamings (struct obstack *obstackp,
5436                          const struct block *block,
5437                          const char *name,
5438                          domain_enum domain,
5439                          int wild_match_p)
5440 {
5441   struct using_direct *renaming;
5442   int defns_mark = num_defns_collected (obstackp);
5443
5444   for (renaming = block_using (block);
5445        renaming != NULL;
5446        renaming = renaming->next)
5447     {
5448       const char *r_name;
5449       int name_match;
5450
5451       /* Avoid infinite recursions: skip this renaming if we are actually
5452          already traversing it.
5453
5454          Currently, symbol lookup in Ada don't use the namespace machinery from
5455          C++/Fortran support: skip namespace imports that use them.  */
5456       if (renaming->searched
5457           || (renaming->import_src != NULL
5458               && renaming->import_src[0] != '\0')
5459           || (renaming->import_dest != NULL
5460               && renaming->import_dest[0] != '\0'))
5461         continue;
5462       renaming->searched = 1;
5463
5464       /* TODO: here, we perform another name-based symbol lookup, which can
5465          pull its own multiple overloads.  In theory, we should be able to do
5466          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5467          not a simple name.  But in order to do this, we would need to enhance
5468          the DWARF reader to associate a symbol to this renaming, instead of a
5469          name.  So, for now, we do something simpler: re-use the C++/Fortran
5470          namespace machinery.  */
5471       r_name = (renaming->alias != NULL
5472                 ? renaming->alias
5473                 : renaming->declaration);
5474       name_match
5475         = wild_match_p ? wild_match (r_name, name) : strcmp (r_name, name);
5476       if (name_match == 0)
5477         ada_add_all_symbols (obstackp, block, renaming->declaration, domain,
5478                              1, NULL);
5479       renaming->searched = 0;
5480     }
5481   return num_defns_collected (obstackp) != defns_mark;
5482 }
5483
5484 /* Implements compare_names, but only applying the comparision using
5485    the given CASING.  */
5486
5487 static int
5488 compare_names_with_case (const char *string1, const char *string2,
5489                          enum case_sensitivity casing)
5490 {
5491   while (*string1 != '\0' && *string2 != '\0')
5492     {
5493       char c1, c2;
5494
5495       if (isspace (*string1) || isspace (*string2))
5496         return strcmp_iw_ordered (string1, string2);
5497
5498       if (casing == case_sensitive_off)
5499         {
5500           c1 = tolower (*string1);
5501           c2 = tolower (*string2);
5502         }
5503       else
5504         {
5505           c1 = *string1;
5506           c2 = *string2;
5507         }
5508       if (c1 != c2)
5509         break;
5510
5511       string1 += 1;
5512       string2 += 1;
5513     }
5514
5515   switch (*string1)
5516     {
5517     case '(':
5518       return strcmp_iw_ordered (string1, string2);
5519     case '_':
5520       if (*string2 == '\0')
5521         {
5522           if (is_name_suffix (string1))
5523             return 0;
5524           else
5525             return 1;
5526         }
5527       /* FALLTHROUGH */
5528     default:
5529       if (*string2 == '(')
5530         return strcmp_iw_ordered (string1, string2);
5531       else
5532         {
5533           if (casing == case_sensitive_off)
5534             return tolower (*string1) - tolower (*string2);
5535           else
5536             return *string1 - *string2;
5537         }
5538     }
5539 }
5540
5541 /* Compare STRING1 to STRING2, with results as for strcmp.
5542    Compatible with strcmp_iw_ordered in that...
5543
5544        strcmp_iw_ordered (STRING1, STRING2) <= 0
5545
5546    ... implies...
5547
5548        compare_names (STRING1, STRING2) <= 0
5549
5550    (they may differ as to what symbols compare equal).  */
5551
5552 static int
5553 compare_names (const char *string1, const char *string2)
5554 {
5555   int result;
5556
5557   /* Similar to what strcmp_iw_ordered does, we need to perform
5558      a case-insensitive comparison first, and only resort to
5559      a second, case-sensitive, comparison if the first one was
5560      not sufficient to differentiate the two strings.  */
5561
5562   result = compare_names_with_case (string1, string2, case_sensitive_off);
5563   if (result == 0)
5564     result = compare_names_with_case (string1, string2, case_sensitive_on);
5565
5566   return result;
5567 }
5568
5569 /* Add to OBSTACKP all non-local symbols whose name and domain match
5570    NAME and DOMAIN respectively.  The search is performed on GLOBAL_BLOCK
5571    symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise.  */
5572
5573 static void
5574 add_nonlocal_symbols (struct obstack *obstackp, const char *name,
5575                       domain_enum domain, int global,
5576                       int is_wild_match)
5577 {
5578   struct objfile *objfile;
5579   struct compunit_symtab *cu;
5580   struct match_data data;
5581
5582   memset (&data, 0, sizeof data);
5583   data.obstackp = obstackp;
5584
5585   ALL_OBJFILES (objfile)
5586     {
5587       data.objfile = objfile;
5588
5589       if (is_wild_match)
5590         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5591                                                aux_add_nonlocal_symbols, &data,
5592                                                wild_match, NULL);
5593       else
5594         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5595                                                aux_add_nonlocal_symbols, &data,
5596                                                full_match, compare_names);
5597
5598       ALL_OBJFILE_COMPUNITS (objfile, cu)
5599         {
5600           const struct block *global_block
5601             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5602
5603           if (ada_add_block_renamings (obstackp, global_block , name, domain,
5604                                        is_wild_match))
5605             data.found_sym = 1;
5606         }
5607     }
5608
5609   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5610     {
5611       ALL_OBJFILES (objfile)
5612         {
5613           char *name1 = (char *) alloca (strlen (name) + sizeof ("_ada_"));
5614           strcpy (name1, "_ada_");
5615           strcpy (name1 + sizeof ("_ada_") - 1, name);
5616           data.objfile = objfile;
5617           objfile->sf->qf->map_matching_symbols (objfile, name1, domain,
5618                                                  global,
5619                                                  aux_add_nonlocal_symbols,
5620                                                  &data,
5621                                                  full_match, compare_names);
5622         }
5623     }           
5624 }
5625
5626 /* Find symbols in DOMAIN matching NAME, in BLOCK and, if FULL_SEARCH is
5627    non-zero, enclosing scope and in global scopes, returning the number of
5628    matches.  Add these to OBSTACKP.
5629
5630    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5631    symbol match within the nest of blocks whose innermost member is BLOCK,
5632    is the one match returned (no other matches in that or
5633    enclosing blocks is returned).  If there are any matches in or
5634    surrounding BLOCK, then these alone are returned.
5635
5636    Names prefixed with "standard__" are handled specially: "standard__"
5637    is first stripped off, and only static and global symbols are searched.
5638
5639    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5640    to lookup global symbols.  */
5641
5642 static void
5643 ada_add_all_symbols (struct obstack *obstackp,
5644                      const struct block *block,
5645                      const char *name,
5646                      domain_enum domain,
5647                      int full_search,
5648                      int *made_global_lookup_p)
5649 {
5650   struct symbol *sym;
5651   const int wild_match_p = should_use_wild_match (name);
5652
5653   if (made_global_lookup_p)
5654     *made_global_lookup_p = 0;
5655
5656   /* Special case: If the user specifies a symbol name inside package
5657      Standard, do a non-wild matching of the symbol name without
5658      the "standard__" prefix.  This was primarily introduced in order
5659      to allow the user to specifically access the standard exceptions
5660      using, for instance, Standard.Constraint_Error when Constraint_Error
5661      is ambiguous (due to the user defining its own Constraint_Error
5662      entity inside its program).  */
5663   if (startswith (name, "standard__"))
5664     {
5665       block = NULL;
5666       name = name + sizeof ("standard__") - 1;
5667     }
5668
5669   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5670
5671   if (block != NULL)
5672     {
5673       if (full_search)
5674         ada_add_local_symbols (obstackp, name, block, domain, wild_match_p);
5675       else
5676         {
5677           /* In the !full_search case we're are being called by
5678              ada_iterate_over_symbols, and we don't want to search
5679              superblocks.  */
5680           ada_add_block_symbols (obstackp, block, name, domain, NULL,
5681                                  wild_match_p);
5682         }
5683       if (num_defns_collected (obstackp) > 0 || !full_search)
5684         return;
5685     }
5686
5687   /* No non-global symbols found.  Check our cache to see if we have
5688      already performed this search before.  If we have, then return
5689      the same result.  */
5690
5691   if (lookup_cached_symbol (name, domain, &sym, &block))
5692     {
5693       if (sym != NULL)
5694         add_defn_to_vec (obstackp, sym, block);
5695       return;
5696     }
5697
5698   if (made_global_lookup_p)
5699     *made_global_lookup_p = 1;
5700
5701   /* Search symbols from all global blocks.  */
5702  
5703   add_nonlocal_symbols (obstackp, name, domain, 1, wild_match_p);
5704
5705   /* Now add symbols from all per-file blocks if we've gotten no hits
5706      (not strictly correct, but perhaps better than an error).  */
5707
5708   if (num_defns_collected (obstackp) == 0)
5709     add_nonlocal_symbols (obstackp, name, domain, 0, wild_match_p);
5710 }
5711
5712 /* Find symbols in DOMAIN matching NAME, in BLOCK and, if full_search is
5713    non-zero, enclosing scope and in global scopes, returning the number of
5714    matches.
5715    Sets *RESULTS to point to a vector of (SYM,BLOCK) tuples,
5716    indicating the symbols found and the blocks and symbol tables (if
5717    any) in which they were found.  This vector is transient---good only to
5718    the next call of ada_lookup_symbol_list.
5719
5720    When full_search is non-zero, any non-function/non-enumeral
5721    symbol match within the nest of blocks whose innermost member is BLOCK,
5722    is the one match returned (no other matches in that or
5723    enclosing blocks is returned).  If there are any matches in or
5724    surrounding BLOCK, then these alone are returned.
5725
5726    Names prefixed with "standard__" are handled specially: "standard__"
5727    is first stripped off, and only static and global symbols are searched.  */
5728
5729 static int
5730 ada_lookup_symbol_list_worker (const char *name, const struct block *block,
5731                                domain_enum domain,
5732                                struct block_symbol **results,
5733                                int full_search)
5734 {
5735   const int wild_match_p = should_use_wild_match (name);
5736   int syms_from_global_search;
5737   int ndefns;
5738
5739   obstack_free (&symbol_list_obstack, NULL);
5740   obstack_init (&symbol_list_obstack);
5741   ada_add_all_symbols (&symbol_list_obstack, block, name, domain,
5742                        full_search, &syms_from_global_search);
5743
5744   ndefns = num_defns_collected (&symbol_list_obstack);
5745   *results = defns_collected (&symbol_list_obstack, 1);
5746
5747   ndefns = remove_extra_symbols (*results, ndefns);
5748
5749   if (ndefns == 0 && full_search && syms_from_global_search)
5750     cache_symbol (name, domain, NULL, NULL);
5751
5752   if (ndefns == 1 && full_search && syms_from_global_search)
5753     cache_symbol (name, domain, (*results)[0].symbol, (*results)[0].block);
5754
5755   ndefns = remove_irrelevant_renamings (*results, ndefns, block);
5756   return ndefns;
5757 }
5758
5759 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing scope and
5760    in global scopes, returning the number of matches, and setting *RESULTS
5761    to a vector of (SYM,BLOCK) tuples.
5762    See ada_lookup_symbol_list_worker for further details.  */
5763
5764 int
5765 ada_lookup_symbol_list (const char *name0, const struct block *block0,
5766                         domain_enum domain, struct block_symbol **results)
5767 {
5768   return ada_lookup_symbol_list_worker (name0, block0, domain, results, 1);
5769 }
5770
5771 /* Implementation of the la_iterate_over_symbols method.  */
5772
5773 static void
5774 ada_iterate_over_symbols (const struct block *block,
5775                           const char *name, domain_enum domain,
5776                           symbol_found_callback_ftype *callback,
5777                           void *data)
5778 {
5779   int ndefs, i;
5780   struct block_symbol *results;
5781
5782   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5783   for (i = 0; i < ndefs; ++i)
5784     {
5785       if (! (*callback) (results[i].symbol, data))
5786         break;
5787     }
5788 }
5789
5790 /* If NAME is the name of an entity, return a string that should
5791    be used to look that entity up in Ada units.  This string should
5792    be deallocated after use using xfree.
5793
5794    NAME can have any form that the "break" or "print" commands might
5795    recognize.  In other words, it does not have to be the "natural"
5796    name, or the "encoded" name.  */
5797
5798 char *
5799 ada_name_for_lookup (const char *name)
5800 {
5801   char *canon;
5802   int nlen = strlen (name);
5803
5804   if (name[0] == '<' && name[nlen - 1] == '>')
5805     {
5806       canon = (char *) xmalloc (nlen - 1);
5807       memcpy (canon, name + 1, nlen - 2);
5808       canon[nlen - 2] = '\0';
5809     }
5810   else
5811     canon = xstrdup (ada_encode (ada_fold_name (name)));
5812   return canon;
5813 }
5814
5815 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5816    to 1, but choosing the first symbol found if there are multiple
5817    choices.
5818
5819    The result is stored in *INFO, which must be non-NULL.
5820    If no match is found, INFO->SYM is set to NULL.  */
5821
5822 void
5823 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5824                            domain_enum domain,
5825                            struct block_symbol *info)
5826 {
5827   struct block_symbol *candidates;
5828   int n_candidates;
5829
5830   gdb_assert (info != NULL);
5831   memset (info, 0, sizeof (struct block_symbol));
5832
5833   n_candidates = ada_lookup_symbol_list (name, block, domain, &candidates);
5834   if (n_candidates == 0)
5835     return;
5836
5837   *info = candidates[0];
5838   info->symbol = fixup_symbol_section (info->symbol, NULL);
5839 }
5840
5841 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5842    scope and in global scopes, or NULL if none.  NAME is folded and
5843    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5844    choosing the first symbol if there are multiple choices.
5845    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5846
5847 struct block_symbol
5848 ada_lookup_symbol (const char *name, const struct block *block0,
5849                    domain_enum domain, int *is_a_field_of_this)
5850 {
5851   struct block_symbol info;
5852
5853   if (is_a_field_of_this != NULL)
5854     *is_a_field_of_this = 0;
5855
5856   ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)),
5857                              block0, domain, &info);
5858   return info;
5859 }
5860
5861 static struct block_symbol
5862 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5863                             const char *name,
5864                             const struct block *block,
5865                             const domain_enum domain)
5866 {
5867   struct block_symbol sym;
5868
5869   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5870   if (sym.symbol != NULL)
5871     return sym;
5872
5873   /* If we haven't found a match at this point, try the primitive
5874      types.  In other languages, this search is performed before
5875      searching for global symbols in order to short-circuit that
5876      global-symbol search if it happens that the name corresponds
5877      to a primitive type.  But we cannot do the same in Ada, because
5878      it is perfectly legitimate for a program to declare a type which
5879      has the same name as a standard type.  If looking up a type in
5880      that situation, we have traditionally ignored the primitive type
5881      in favor of user-defined types.  This is why, unlike most other
5882      languages, we search the primitive types this late and only after
5883      having searched the global symbols without success.  */
5884
5885   if (domain == VAR_DOMAIN)
5886     {
5887       struct gdbarch *gdbarch;
5888
5889       if (block == NULL)
5890         gdbarch = target_gdbarch ();
5891       else
5892         gdbarch = block_gdbarch (block);
5893       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5894       if (sym.symbol != NULL)
5895         return sym;
5896     }
5897
5898   return (struct block_symbol) {NULL, NULL};
5899 }
5900
5901
5902 /* True iff STR is a possible encoded suffix of a normal Ada name
5903    that is to be ignored for matching purposes.  Suffixes of parallel
5904    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5905    are given by any of the regular expressions:
5906
5907    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5908    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5909    TKB              [subprogram suffix for task bodies]
5910    _E[0-9]+[bs]$    [protected object entry suffixes]
5911    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5912
5913    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5914    match is performed.  This sequence is used to differentiate homonyms,
5915    is an optional part of a valid name suffix.  */
5916
5917 static int
5918 is_name_suffix (const char *str)
5919 {
5920   int k;
5921   const char *matching;
5922   const int len = strlen (str);
5923
5924   /* Skip optional leading __[0-9]+.  */
5925
5926   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5927     {
5928       str += 3;
5929       while (isdigit (str[0]))
5930         str += 1;
5931     }
5932   
5933   /* [.$][0-9]+ */
5934
5935   if (str[0] == '.' || str[0] == '$')
5936     {
5937       matching = str + 1;
5938       while (isdigit (matching[0]))
5939         matching += 1;
5940       if (matching[0] == '\0')
5941         return 1;
5942     }
5943
5944   /* ___[0-9]+ */
5945
5946   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5947     {
5948       matching = str + 3;
5949       while (isdigit (matching[0]))
5950         matching += 1;
5951       if (matching[0] == '\0')
5952         return 1;
5953     }
5954
5955   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5956
5957   if (strcmp (str, "TKB") == 0)
5958     return 1;
5959
5960 #if 0
5961   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5962      with a N at the end.  Unfortunately, the compiler uses the same
5963      convention for other internal types it creates.  So treating
5964      all entity names that end with an "N" as a name suffix causes
5965      some regressions.  For instance, consider the case of an enumerated
5966      type.  To support the 'Image attribute, it creates an array whose
5967      name ends with N.
5968      Having a single character like this as a suffix carrying some
5969      information is a bit risky.  Perhaps we should change the encoding
5970      to be something like "_N" instead.  In the meantime, do not do
5971      the following check.  */
5972   /* Protected Object Subprograms */
5973   if (len == 1 && str [0] == 'N')
5974     return 1;
5975 #endif
5976
5977   /* _E[0-9]+[bs]$ */
5978   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5979     {
5980       matching = str + 3;
5981       while (isdigit (matching[0]))
5982         matching += 1;
5983       if ((matching[0] == 'b' || matching[0] == 's')
5984           && matching [1] == '\0')
5985         return 1;
5986     }
5987
5988   /* ??? We should not modify STR directly, as we are doing below.  This
5989      is fine in this case, but may become problematic later if we find
5990      that this alternative did not work, and want to try matching
5991      another one from the begining of STR.  Since we modified it, we
5992      won't be able to find the begining of the string anymore!  */
5993   if (str[0] == 'X')
5994     {
5995       str += 1;
5996       while (str[0] != '_' && str[0] != '\0')
5997         {
5998           if (str[0] != 'n' && str[0] != 'b')
5999             return 0;
6000           str += 1;
6001         }
6002     }
6003
6004   if (str[0] == '\000')
6005     return 1;
6006
6007   if (str[0] == '_')
6008     {
6009       if (str[1] != '_' || str[2] == '\000')
6010         return 0;
6011       if (str[2] == '_')
6012         {
6013           if (strcmp (str + 3, "JM") == 0)
6014             return 1;
6015           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6016              the LJM suffix in favor of the JM one.  But we will
6017              still accept LJM as a valid suffix for a reasonable
6018              amount of time, just to allow ourselves to debug programs
6019              compiled using an older version of GNAT.  */
6020           if (strcmp (str + 3, "LJM") == 0)
6021             return 1;
6022           if (str[3] != 'X')
6023             return 0;
6024           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6025               || str[4] == 'U' || str[4] == 'P')
6026             return 1;
6027           if (str[4] == 'R' && str[5] != 'T')
6028             return 1;
6029           return 0;
6030         }
6031       if (!isdigit (str[2]))
6032         return 0;
6033       for (k = 3; str[k] != '\0'; k += 1)
6034         if (!isdigit (str[k]) && str[k] != '_')
6035           return 0;
6036       return 1;
6037     }
6038   if (str[0] == '$' && isdigit (str[1]))
6039     {
6040       for (k = 2; str[k] != '\0'; k += 1)
6041         if (!isdigit (str[k]) && str[k] != '_')
6042           return 0;
6043       return 1;
6044     }
6045   return 0;
6046 }
6047
6048 /* Return non-zero if the string starting at NAME and ending before
6049    NAME_END contains no capital letters.  */
6050
6051 static int
6052 is_valid_name_for_wild_match (const char *name0)
6053 {
6054   const char *decoded_name = ada_decode (name0);
6055   int i;
6056
6057   /* If the decoded name starts with an angle bracket, it means that
6058      NAME0 does not follow the GNAT encoding format.  It should then
6059      not be allowed as a possible wild match.  */
6060   if (decoded_name[0] == '<')
6061     return 0;
6062
6063   for (i=0; decoded_name[i] != '\0'; i++)
6064     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6065       return 0;
6066
6067   return 1;
6068 }
6069
6070 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6071    that could start a simple name.  Assumes that *NAMEP points into
6072    the string beginning at NAME0.  */
6073
6074 static int
6075 advance_wild_match (const char **namep, const char *name0, int target0)
6076 {
6077   const char *name = *namep;
6078
6079   while (1)
6080     {
6081       int t0, t1;
6082
6083       t0 = *name;
6084       if (t0 == '_')
6085         {
6086           t1 = name[1];
6087           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6088             {
6089               name += 1;
6090               if (name == name0 + 5 && startswith (name0, "_ada"))
6091                 break;
6092               else
6093                 name += 1;
6094             }
6095           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6096                                  || name[2] == target0))
6097             {
6098               name += 2;
6099               break;
6100             }
6101           else
6102             return 0;
6103         }
6104       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6105         name += 1;
6106       else
6107         return 0;
6108     }
6109
6110   *namep = name;
6111   return 1;
6112 }
6113
6114 /* Return 0 iff NAME encodes a name of the form prefix.PATN.  Ignores any
6115    informational suffixes of NAME (i.e., for which is_name_suffix is
6116    true).  Assumes that PATN is a lower-cased Ada simple name.  */
6117
6118 static int
6119 wild_match (const char *name, const char *patn)
6120 {
6121   const char *p;
6122   const char *name0 = name;
6123
6124   while (1)
6125     {
6126       const char *match = name;
6127
6128       if (*name == *patn)
6129         {
6130           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6131             if (*p != *name)
6132               break;
6133           if (*p == '\0' && is_name_suffix (name))
6134             return match != name0 && !is_valid_name_for_wild_match (name0);
6135
6136           if (name[-1] == '_')
6137             name -= 1;
6138         }
6139       if (!advance_wild_match (&name, name0, *patn))
6140         return 1;
6141     }
6142 }
6143
6144 /* Returns 0 iff symbol name SYM_NAME matches SEARCH_NAME, apart from
6145    informational suffix.  */
6146
6147 static int
6148 full_match (const char *sym_name, const char *search_name)
6149 {
6150   return !match_name (sym_name, search_name, 0);
6151 }
6152
6153
6154 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to
6155    vector *defn_symbols, updating the list of symbols in OBSTACKP 
6156    (if necessary).  If WILD, treat as NAME with a wildcard prefix.
6157    OBJFILE is the section containing BLOCK.  */
6158
6159 static void
6160 ada_add_block_symbols (struct obstack *obstackp,
6161                        const struct block *block, const char *name,
6162                        domain_enum domain, struct objfile *objfile,
6163                        int wild)
6164 {
6165   struct block_iterator iter;
6166   int name_len = strlen (name);
6167   /* A matching argument symbol, if any.  */
6168   struct symbol *arg_sym;
6169   /* Set true when we find a matching non-argument symbol.  */
6170   int found_sym;
6171   struct symbol *sym;
6172
6173   arg_sym = NULL;
6174   found_sym = 0;
6175   if (wild)
6176     {
6177       for (sym = block_iter_match_first (block, name, wild_match, &iter);
6178            sym != NULL; sym = block_iter_match_next (name, wild_match, &iter))
6179       {
6180         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6181                                    SYMBOL_DOMAIN (sym), domain)
6182             && wild_match (SYMBOL_LINKAGE_NAME (sym), name) == 0)
6183           {
6184             if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
6185               continue;
6186             else if (SYMBOL_IS_ARGUMENT (sym))
6187               arg_sym = sym;
6188             else
6189               {
6190                 found_sym = 1;
6191                 add_defn_to_vec (obstackp,
6192                                  fixup_symbol_section (sym, objfile),
6193                                  block);
6194               }
6195           }
6196       }
6197     }
6198   else
6199     {
6200      for (sym = block_iter_match_first (block, name, full_match, &iter);
6201           sym != NULL; sym = block_iter_match_next (name, full_match, &iter))
6202       {
6203         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6204                                    SYMBOL_DOMAIN (sym), domain))
6205           {
6206             if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6207               {
6208                 if (SYMBOL_IS_ARGUMENT (sym))
6209                   arg_sym = sym;
6210                 else
6211                   {
6212                     found_sym = 1;
6213                     add_defn_to_vec (obstackp,
6214                                      fixup_symbol_section (sym, objfile),
6215                                      block);
6216                   }
6217               }
6218           }
6219       }
6220     }
6221
6222   /* Handle renamings.  */
6223
6224   if (ada_add_block_renamings (obstackp, block, name, domain, wild))
6225     found_sym = 1;
6226
6227   if (!found_sym && arg_sym != NULL)
6228     {
6229       add_defn_to_vec (obstackp,
6230                        fixup_symbol_section (arg_sym, objfile),
6231                        block);
6232     }
6233
6234   if (!wild)
6235     {
6236       arg_sym = NULL;
6237       found_sym = 0;
6238
6239       ALL_BLOCK_SYMBOLS (block, iter, sym)
6240       {
6241         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6242                                    SYMBOL_DOMAIN (sym), domain))
6243           {
6244             int cmp;
6245
6246             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6247             if (cmp == 0)
6248               {
6249                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6250                 if (cmp == 0)
6251                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6252                                  name_len);
6253               }
6254
6255             if (cmp == 0
6256                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6257               {
6258                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6259                   {
6260                     if (SYMBOL_IS_ARGUMENT (sym))
6261                       arg_sym = sym;
6262                     else
6263                       {
6264                         found_sym = 1;
6265                         add_defn_to_vec (obstackp,
6266                                          fixup_symbol_section (sym, objfile),
6267                                          block);
6268                       }
6269                   }
6270               }
6271           }
6272       }
6273
6274       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6275          They aren't parameters, right?  */
6276       if (!found_sym && arg_sym != NULL)
6277         {
6278           add_defn_to_vec (obstackp,
6279                            fixup_symbol_section (arg_sym, objfile),
6280                            block);
6281         }
6282     }
6283 }
6284 \f
6285
6286                                 /* Symbol Completion */
6287
6288 /* If SYM_NAME is a completion candidate for TEXT, return this symbol
6289    name in a form that's appropriate for the completion.  The result
6290    does not need to be deallocated, but is only good until the next call.
6291
6292    TEXT_LEN is equal to the length of TEXT.
6293    Perform a wild match if WILD_MATCH_P is set.
6294    ENCODED_P should be set if TEXT represents the start of a symbol name
6295    in its encoded form.  */
6296
6297 static const char *
6298 symbol_completion_match (const char *sym_name,
6299                          const char *text, int text_len,
6300                          int wild_match_p, int encoded_p)
6301 {
6302   const int verbatim_match = (text[0] == '<');
6303   int match = 0;
6304
6305   if (verbatim_match)
6306     {
6307       /* Strip the leading angle bracket.  */
6308       text = text + 1;
6309       text_len--;
6310     }
6311
6312   /* First, test against the fully qualified name of the symbol.  */
6313
6314   if (strncmp (sym_name, text, text_len) == 0)
6315     match = 1;
6316
6317   if (match && !encoded_p)
6318     {
6319       /* One needed check before declaring a positive match is to verify
6320          that iff we are doing a verbatim match, the decoded version
6321          of the symbol name starts with '<'.  Otherwise, this symbol name
6322          is not a suitable completion.  */
6323       const char *sym_name_copy = sym_name;
6324       int has_angle_bracket;
6325
6326       sym_name = ada_decode (sym_name);
6327       has_angle_bracket = (sym_name[0] == '<');
6328       match = (has_angle_bracket == verbatim_match);
6329       sym_name = sym_name_copy;
6330     }
6331
6332   if (match && !verbatim_match)
6333     {
6334       /* When doing non-verbatim match, another check that needs to
6335          be done is to verify that the potentially matching symbol name
6336          does not include capital letters, because the ada-mode would
6337          not be able to understand these symbol names without the
6338          angle bracket notation.  */
6339       const char *tmp;
6340
6341       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6342       if (*tmp != '\0')
6343         match = 0;
6344     }
6345
6346   /* Second: Try wild matching...  */
6347
6348   if (!match && wild_match_p)
6349     {
6350       /* Since we are doing wild matching, this means that TEXT
6351          may represent an unqualified symbol name.  We therefore must
6352          also compare TEXT against the unqualified name of the symbol.  */
6353       sym_name = ada_unqualified_name (ada_decode (sym_name));
6354
6355       if (strncmp (sym_name, text, text_len) == 0)
6356         match = 1;
6357     }
6358
6359   /* Finally: If we found a mach, prepare the result to return.  */
6360
6361   if (!match)
6362     return NULL;
6363
6364   if (verbatim_match)
6365     sym_name = add_angle_brackets (sym_name);
6366
6367   if (!encoded_p)
6368     sym_name = ada_decode (sym_name);
6369
6370   return sym_name;
6371 }
6372
6373 /* A companion function to ada_make_symbol_completion_list().
6374    Check if SYM_NAME represents a symbol which name would be suitable
6375    to complete TEXT (TEXT_LEN is the length of TEXT), in which case
6376    it is appended at the end of the given string vector SV.
6377
6378    ORIG_TEXT is the string original string from the user command
6379    that needs to be completed.  WORD is the entire command on which
6380    completion should be performed.  These two parameters are used to
6381    determine which part of the symbol name should be added to the
6382    completion vector.
6383    if WILD_MATCH_P is set, then wild matching is performed.
6384    ENCODED_P should be set if TEXT represents a symbol name in its
6385    encoded formed (in which case the completion should also be
6386    encoded).  */
6387
6388 static void
6389 symbol_completion_add (VEC(char_ptr) **sv,
6390                        const char *sym_name,
6391                        const char *text, int text_len,
6392                        const char *orig_text, const char *word,
6393                        int wild_match_p, int encoded_p)
6394 {
6395   const char *match = symbol_completion_match (sym_name, text, text_len,
6396                                                wild_match_p, encoded_p);
6397   char *completion;
6398
6399   if (match == NULL)
6400     return;
6401
6402   /* We found a match, so add the appropriate completion to the given
6403      string vector.  */
6404
6405   if (word == orig_text)
6406     {
6407       completion = (char *) xmalloc (strlen (match) + 5);
6408       strcpy (completion, match);
6409     }
6410   else if (word > orig_text)
6411     {
6412       /* Return some portion of sym_name.  */
6413       completion = (char *) xmalloc (strlen (match) + 5);
6414       strcpy (completion, match + (word - orig_text));
6415     }
6416   else
6417     {
6418       /* Return some of ORIG_TEXT plus sym_name.  */
6419       completion = (char *) xmalloc (strlen (match) + (orig_text - word) + 5);
6420       strncpy (completion, word, orig_text - word);
6421       completion[orig_text - word] = '\0';
6422       strcat (completion, match);
6423     }
6424
6425   VEC_safe_push (char_ptr, *sv, completion);
6426 }
6427
6428 /* An object of this type is passed as the user_data argument to the
6429    expand_symtabs_matching method.  */
6430 struct add_partial_datum
6431 {
6432   VEC(char_ptr) **completions;
6433   const char *text;
6434   int text_len;
6435   const char *text0;
6436   const char *word;
6437   int wild_match;
6438   int encoded;
6439 };
6440
6441 /* A callback for expand_symtabs_matching.  */
6442
6443 static int
6444 ada_complete_symbol_matcher (const char *name, void *user_data)
6445 {
6446   struct add_partial_datum *data = (struct add_partial_datum *) user_data;
6447   
6448   return symbol_completion_match (name, data->text, data->text_len,
6449                                   data->wild_match, data->encoded) != NULL;
6450 }
6451
6452 /* Return a list of possible symbol names completing TEXT0.  WORD is
6453    the entire command on which completion is made.  */
6454
6455 static VEC (char_ptr) *
6456 ada_make_symbol_completion_list (const char *text0, const char *word,
6457                                  enum type_code code)
6458 {
6459   char *text;
6460   int text_len;
6461   int wild_match_p;
6462   int encoded_p;
6463   VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128);
6464   struct symbol *sym;
6465   struct compunit_symtab *s;
6466   struct minimal_symbol *msymbol;
6467   struct objfile *objfile;
6468   const struct block *b, *surrounding_static_block = 0;
6469   int i;
6470   struct block_iterator iter;
6471   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6472
6473   gdb_assert (code == TYPE_CODE_UNDEF);
6474
6475   if (text0[0] == '<')
6476     {
6477       text = xstrdup (text0);
6478       make_cleanup (xfree, text);
6479       text_len = strlen (text);
6480       wild_match_p = 0;
6481       encoded_p = 1;
6482     }
6483   else
6484     {
6485       text = xstrdup (ada_encode (text0));
6486       make_cleanup (xfree, text);
6487       text_len = strlen (text);
6488       for (i = 0; i < text_len; i++)
6489         text[i] = tolower (text[i]);
6490
6491       encoded_p = (strstr (text0, "__") != NULL);
6492       /* If the name contains a ".", then the user is entering a fully
6493          qualified entity name, and the match must not be done in wild
6494          mode.  Similarly, if the user wants to complete what looks like
6495          an encoded name, the match must not be done in wild mode.  */
6496       wild_match_p = (strchr (text0, '.') == NULL && !encoded_p);
6497     }
6498
6499   /* First, look at the partial symtab symbols.  */
6500   {
6501     struct add_partial_datum data;
6502
6503     data.completions = &completions;
6504     data.text = text;
6505     data.text_len = text_len;
6506     data.text0 = text0;
6507     data.word = word;
6508     data.wild_match = wild_match_p;
6509     data.encoded = encoded_p;
6510     expand_symtabs_matching (NULL, ada_complete_symbol_matcher, NULL,
6511                              ALL_DOMAIN, &data);
6512   }
6513
6514   /* At this point scan through the misc symbol vectors and add each
6515      symbol you find to the list.  Eventually we want to ignore
6516      anything that isn't a text symbol (everything else will be
6517      handled by the psymtab code above).  */
6518
6519   ALL_MSYMBOLS (objfile, msymbol)
6520   {
6521     QUIT;
6522     symbol_completion_add (&completions, MSYMBOL_LINKAGE_NAME (msymbol),
6523                            text, text_len, text0, word, wild_match_p,
6524                            encoded_p);
6525   }
6526
6527   /* Search upwards from currently selected frame (so that we can
6528      complete on local vars.  */
6529
6530   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6531     {
6532       if (!BLOCK_SUPERBLOCK (b))
6533         surrounding_static_block = b;   /* For elmin of dups */
6534
6535       ALL_BLOCK_SYMBOLS (b, iter, sym)
6536       {
6537         symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6538                                text, text_len, text0, word,
6539                                wild_match_p, encoded_p);
6540       }
6541     }
6542
6543   /* Go through the symtabs and check the externs and statics for
6544      symbols which match.  */
6545
6546   ALL_COMPUNITS (objfile, s)
6547   {
6548     QUIT;
6549     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6550     ALL_BLOCK_SYMBOLS (b, iter, sym)
6551     {
6552       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6553                              text, text_len, text0, word,
6554                              wild_match_p, encoded_p);
6555     }
6556   }
6557
6558   ALL_COMPUNITS (objfile, s)
6559   {
6560     QUIT;
6561     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6562     /* Don't do this block twice.  */
6563     if (b == surrounding_static_block)
6564       continue;
6565     ALL_BLOCK_SYMBOLS (b, iter, sym)
6566     {
6567       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6568                              text, text_len, text0, word,
6569                              wild_match_p, encoded_p);
6570     }
6571   }
6572
6573   do_cleanups (old_chain);
6574   return completions;
6575 }
6576
6577                                 /* Field Access */
6578
6579 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6580    for tagged types.  */
6581
6582 static int
6583 ada_is_dispatch_table_ptr_type (struct type *type)
6584 {
6585   const char *name;
6586
6587   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6588     return 0;
6589
6590   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6591   if (name == NULL)
6592     return 0;
6593
6594   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6595 }
6596
6597 /* Return non-zero if TYPE is an interface tag.  */
6598
6599 static int
6600 ada_is_interface_tag (struct type *type)
6601 {
6602   const char *name = TYPE_NAME (type);
6603
6604   if (name == NULL)
6605     return 0;
6606
6607   return (strcmp (name, "ada__tags__interface_tag") == 0);
6608 }
6609
6610 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6611    to be invisible to users.  */
6612
6613 int
6614 ada_is_ignored_field (struct type *type, int field_num)
6615 {
6616   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6617     return 1;
6618
6619   /* Check the name of that field.  */
6620   {
6621     const char *name = TYPE_FIELD_NAME (type, field_num);
6622
6623     /* Anonymous field names should not be printed.
6624        brobecker/2007-02-20: I don't think this can actually happen
6625        but we don't want to print the value of annonymous fields anyway.  */
6626     if (name == NULL)
6627       return 1;
6628
6629     /* Normally, fields whose name start with an underscore ("_")
6630        are fields that have been internally generated by the compiler,
6631        and thus should not be printed.  The "_parent" field is special,
6632        however: This is a field internally generated by the compiler
6633        for tagged types, and it contains the components inherited from
6634        the parent type.  This field should not be printed as is, but
6635        should not be ignored either.  */
6636     if (name[0] == '_' && !startswith (name, "_parent"))
6637       return 1;
6638   }
6639
6640   /* If this is the dispatch table of a tagged type or an interface tag,
6641      then ignore.  */
6642   if (ada_is_tagged_type (type, 1)
6643       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6644           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6645     return 1;
6646
6647   /* Not a special field, so it should not be ignored.  */
6648   return 0;
6649 }
6650
6651 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6652    pointer or reference type whose ultimate target has a tag field.  */
6653
6654 int
6655 ada_is_tagged_type (struct type *type, int refok)
6656 {
6657   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL);
6658 }
6659
6660 /* True iff TYPE represents the type of X'Tag */
6661
6662 int
6663 ada_is_tag_type (struct type *type)
6664 {
6665   type = ada_check_typedef (type);
6666
6667   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6668     return 0;
6669   else
6670     {
6671       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6672
6673       return (name != NULL
6674               && strcmp (name, "ada__tags__dispatch_table") == 0);
6675     }
6676 }
6677
6678 /* The type of the tag on VAL.  */
6679
6680 struct type *
6681 ada_tag_type (struct value *val)
6682 {
6683   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0, NULL);
6684 }
6685
6686 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6687    retired at Ada 05).  */
6688
6689 static int
6690 is_ada95_tag (struct value *tag)
6691 {
6692   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6693 }
6694
6695 /* The value of the tag on VAL.  */
6696
6697 struct value *
6698 ada_value_tag (struct value *val)
6699 {
6700   return ada_value_struct_elt (val, "_tag", 0);
6701 }
6702
6703 /* The value of the tag on the object of type TYPE whose contents are
6704    saved at VALADDR, if it is non-null, or is at memory address
6705    ADDRESS.  */
6706
6707 static struct value *
6708 value_tag_from_contents_and_address (struct type *type,
6709                                      const gdb_byte *valaddr,
6710                                      CORE_ADDR address)
6711 {
6712   int tag_byte_offset;
6713   struct type *tag_type;
6714
6715   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6716                          NULL, NULL, NULL))
6717     {
6718       const gdb_byte *valaddr1 = ((valaddr == NULL)
6719                                   ? NULL
6720                                   : valaddr + tag_byte_offset);
6721       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6722
6723       return value_from_contents_and_address (tag_type, valaddr1, address1);
6724     }
6725   return NULL;
6726 }
6727
6728 static struct type *
6729 type_from_tag (struct value *tag)
6730 {
6731   const char *type_name = ada_tag_name (tag);
6732
6733   if (type_name != NULL)
6734     return ada_find_any_type (ada_encode (type_name));
6735   return NULL;
6736 }
6737
6738 /* Given a value OBJ of a tagged type, return a value of this
6739    type at the base address of the object.  The base address, as
6740    defined in Ada.Tags, it is the address of the primary tag of
6741    the object, and therefore where the field values of its full
6742    view can be fetched.  */
6743
6744 struct value *
6745 ada_tag_value_at_base_address (struct value *obj)
6746 {
6747   struct value *val;
6748   LONGEST offset_to_top = 0;
6749   struct type *ptr_type, *obj_type;
6750   struct value *tag;
6751   CORE_ADDR base_address;
6752
6753   obj_type = value_type (obj);
6754
6755   /* It is the responsability of the caller to deref pointers.  */
6756
6757   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6758       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6759     return obj;
6760
6761   tag = ada_value_tag (obj);
6762   if (!tag)
6763     return obj;
6764
6765   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6766
6767   if (is_ada95_tag (tag))
6768     return obj;
6769
6770   ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
6771   ptr_type = lookup_pointer_type (ptr_type);
6772   val = value_cast (ptr_type, tag);
6773   if (!val)
6774     return obj;
6775
6776   /* It is perfectly possible that an exception be raised while
6777      trying to determine the base address, just like for the tag;
6778      see ada_tag_name for more details.  We do not print the error
6779      message for the same reason.  */
6780
6781   TRY
6782     {
6783       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6784     }
6785
6786   CATCH (e, RETURN_MASK_ERROR)
6787     {
6788       return obj;
6789     }
6790   END_CATCH
6791
6792   /* If offset is null, nothing to do.  */
6793
6794   if (offset_to_top == 0)
6795     return obj;
6796
6797   /* -1 is a special case in Ada.Tags; however, what should be done
6798      is not quite clear from the documentation.  So do nothing for
6799      now.  */
6800
6801   if (offset_to_top == -1)
6802     return obj;
6803
6804   base_address = value_address (obj) - offset_to_top;
6805   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6806
6807   /* Make sure that we have a proper tag at the new address.
6808      Otherwise, offset_to_top is bogus (which can happen when
6809      the object is not initialized yet).  */
6810
6811   if (!tag)
6812     return obj;
6813
6814   obj_type = type_from_tag (tag);
6815
6816   if (!obj_type)
6817     return obj;
6818
6819   return value_from_contents_and_address (obj_type, NULL, base_address);
6820 }
6821
6822 /* Return the "ada__tags__type_specific_data" type.  */
6823
6824 static struct type *
6825 ada_get_tsd_type (struct inferior *inf)
6826 {
6827   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6828
6829   if (data->tsd_type == 0)
6830     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6831   return data->tsd_type;
6832 }
6833
6834 /* Return the TSD (type-specific data) associated to the given TAG.
6835    TAG is assumed to be the tag of a tagged-type entity.
6836
6837    May return NULL if we are unable to get the TSD.  */
6838
6839 static struct value *
6840 ada_get_tsd_from_tag (struct value *tag)
6841 {
6842   struct value *val;
6843   struct type *type;
6844
6845   /* First option: The TSD is simply stored as a field of our TAG.
6846      Only older versions of GNAT would use this format, but we have
6847      to test it first, because there are no visible markers for
6848      the current approach except the absence of that field.  */
6849
6850   val = ada_value_struct_elt (tag, "tsd", 1);
6851   if (val)
6852     return val;
6853
6854   /* Try the second representation for the dispatch table (in which
6855      there is no explicit 'tsd' field in the referent of the tag pointer,
6856      and instead the tsd pointer is stored just before the dispatch
6857      table.  */
6858
6859   type = ada_get_tsd_type (current_inferior());
6860   if (type == NULL)
6861     return NULL;
6862   type = lookup_pointer_type (lookup_pointer_type (type));
6863   val = value_cast (type, tag);
6864   if (val == NULL)
6865     return NULL;
6866   return value_ind (value_ptradd (val, -1));
6867 }
6868
6869 /* Given the TSD of a tag (type-specific data), return a string
6870    containing the name of the associated type.
6871
6872    The returned value is good until the next call.  May return NULL
6873    if we are unable to determine the tag name.  */
6874
6875 static char *
6876 ada_tag_name_from_tsd (struct value *tsd)
6877 {
6878   static char name[1024];
6879   char *p;
6880   struct value *val;
6881
6882   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6883   if (val == NULL)
6884     return NULL;
6885   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6886   for (p = name; *p != '\0'; p += 1)
6887     if (isalpha (*p))
6888       *p = tolower (*p);
6889   return name;
6890 }
6891
6892 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6893    a C string.
6894
6895    Return NULL if the TAG is not an Ada tag, or if we were unable to
6896    determine the name of that tag.  The result is good until the next
6897    call.  */
6898
6899 const char *
6900 ada_tag_name (struct value *tag)
6901 {
6902   char *name = NULL;
6903
6904   if (!ada_is_tag_type (value_type (tag)))
6905     return NULL;
6906
6907   /* It is perfectly possible that an exception be raised while trying
6908      to determine the TAG's name, even under normal circumstances:
6909      The associated variable may be uninitialized or corrupted, for
6910      instance. We do not let any exception propagate past this point.
6911      instead we return NULL.
6912
6913      We also do not print the error message either (which often is very
6914      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6915      the caller print a more meaningful message if necessary.  */
6916   TRY
6917     {
6918       struct value *tsd = ada_get_tsd_from_tag (tag);
6919
6920       if (tsd != NULL)
6921         name = ada_tag_name_from_tsd (tsd);
6922     }
6923   CATCH (e, RETURN_MASK_ERROR)
6924     {
6925     }
6926   END_CATCH
6927
6928   return name;
6929 }
6930
6931 /* The parent type of TYPE, or NULL if none.  */
6932
6933 struct type *
6934 ada_parent_type (struct type *type)
6935 {
6936   int i;
6937
6938   type = ada_check_typedef (type);
6939
6940   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6941     return NULL;
6942
6943   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6944     if (ada_is_parent_field (type, i))
6945       {
6946         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6947
6948         /* If the _parent field is a pointer, then dereference it.  */
6949         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6950           parent_type = TYPE_TARGET_TYPE (parent_type);
6951         /* If there is a parallel XVS type, get the actual base type.  */
6952         parent_type = ada_get_base_type (parent_type);
6953
6954         return ada_check_typedef (parent_type);
6955       }
6956
6957   return NULL;
6958 }
6959
6960 /* True iff field number FIELD_NUM of structure type TYPE contains the
6961    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6962    a structure type with at least FIELD_NUM+1 fields.  */
6963
6964 int
6965 ada_is_parent_field (struct type *type, int field_num)
6966 {
6967   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6968
6969   return (name != NULL
6970           && (startswith (name, "PARENT")
6971               || startswith (name, "_parent")));
6972 }
6973
6974 /* True iff field number FIELD_NUM of structure type TYPE is a
6975    transparent wrapper field (which should be silently traversed when doing
6976    field selection and flattened when printing).  Assumes TYPE is a
6977    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6978    structures.  */
6979
6980 int
6981 ada_is_wrapper_field (struct type *type, int field_num)
6982 {
6983   const char *name = TYPE_FIELD_NAME (type, field_num);
6984
6985   return (name != NULL
6986           && (startswith (name, "PARENT")
6987               || strcmp (name, "REP") == 0
6988               || startswith (name, "_parent")
6989               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6990 }
6991
6992 /* True iff field number FIELD_NUM of structure or union type TYPE
6993    is a variant wrapper.  Assumes TYPE is a structure type with at least
6994    FIELD_NUM+1 fields.  */
6995
6996 int
6997 ada_is_variant_part (struct type *type, int field_num)
6998 {
6999   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7000
7001   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7002           || (is_dynamic_field (type, field_num)
7003               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7004                   == TYPE_CODE_UNION)));
7005 }
7006
7007 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7008    whose discriminants are contained in the record type OUTER_TYPE,
7009    returns the type of the controlling discriminant for the variant.
7010    May return NULL if the type could not be found.  */
7011
7012 struct type *
7013 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7014 {
7015   char *name = ada_variant_discrim_name (var_type);
7016
7017   return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL);
7018 }
7019
7020 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7021    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7022    represents a 'when others' clause; otherwise 0.  */
7023
7024 int
7025 ada_is_others_clause (struct type *type, int field_num)
7026 {
7027   const char *name = TYPE_FIELD_NAME (type, field_num);
7028
7029   return (name != NULL && name[0] == 'O');
7030 }
7031
7032 /* Assuming that TYPE0 is the type of the variant part of a record,
7033    returns the name of the discriminant controlling the variant.
7034    The value is valid until the next call to ada_variant_discrim_name.  */
7035
7036 char *
7037 ada_variant_discrim_name (struct type *type0)
7038 {
7039   static char *result = NULL;
7040   static size_t result_len = 0;
7041   struct type *type;
7042   const char *name;
7043   const char *discrim_end;
7044   const char *discrim_start;
7045
7046   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7047     type = TYPE_TARGET_TYPE (type0);
7048   else
7049     type = type0;
7050
7051   name = ada_type_name (type);
7052
7053   if (name == NULL || name[0] == '\000')
7054     return "";
7055
7056   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7057        discrim_end -= 1)
7058     {
7059       if (startswith (discrim_end, "___XVN"))
7060         break;
7061     }
7062   if (discrim_end == name)
7063     return "";
7064
7065   for (discrim_start = discrim_end; discrim_start != name + 3;
7066        discrim_start -= 1)
7067     {
7068       if (discrim_start == name + 1)
7069         return "";
7070       if ((discrim_start > name + 3
7071            && startswith (discrim_start - 3, "___"))
7072           || discrim_start[-1] == '.')
7073         break;
7074     }
7075
7076   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7077   strncpy (result, discrim_start, discrim_end - discrim_start);
7078   result[discrim_end - discrim_start] = '\0';
7079   return result;
7080 }
7081
7082 /* Scan STR for a subtype-encoded number, beginning at position K.
7083    Put the position of the character just past the number scanned in
7084    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7085    Return 1 if there was a valid number at the given position, and 0
7086    otherwise.  A "subtype-encoded" number consists of the absolute value
7087    in decimal, followed by the letter 'm' to indicate a negative number.
7088    Assumes 0m does not occur.  */
7089
7090 int
7091 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7092 {
7093   ULONGEST RU;
7094
7095   if (!isdigit (str[k]))
7096     return 0;
7097
7098   /* Do it the hard way so as not to make any assumption about
7099      the relationship of unsigned long (%lu scan format code) and
7100      LONGEST.  */
7101   RU = 0;
7102   while (isdigit (str[k]))
7103     {
7104       RU = RU * 10 + (str[k] - '0');
7105       k += 1;
7106     }
7107
7108   if (str[k] == 'm')
7109     {
7110       if (R != NULL)
7111         *R = (-(LONGEST) (RU - 1)) - 1;
7112       k += 1;
7113     }
7114   else if (R != NULL)
7115     *R = (LONGEST) RU;
7116
7117   /* NOTE on the above: Technically, C does not say what the results of
7118      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7119      number representable as a LONGEST (although either would probably work
7120      in most implementations).  When RU>0, the locution in the then branch
7121      above is always equivalent to the negative of RU.  */
7122
7123   if (new_k != NULL)
7124     *new_k = k;
7125   return 1;
7126 }
7127
7128 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7129    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7130    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7131
7132 int
7133 ada_in_variant (LONGEST val, struct type *type, int field_num)
7134 {
7135   const char *name = TYPE_FIELD_NAME (type, field_num);
7136   int p;
7137
7138   p = 0;
7139   while (1)
7140     {
7141       switch (name[p])
7142         {
7143         case '\0':
7144           return 0;
7145         case 'S':
7146           {
7147             LONGEST W;
7148
7149             if (!ada_scan_number (name, p + 1, &W, &p))
7150               return 0;
7151             if (val == W)
7152               return 1;
7153             break;
7154           }
7155         case 'R':
7156           {
7157             LONGEST L, U;
7158
7159             if (!ada_scan_number (name, p + 1, &L, &p)
7160                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7161               return 0;
7162             if (val >= L && val <= U)
7163               return 1;
7164             break;
7165           }
7166         case 'O':
7167           return 1;
7168         default:
7169           return 0;
7170         }
7171     }
7172 }
7173
7174 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7175
7176 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7177    ARG_TYPE, extract and return the value of one of its (non-static)
7178    fields.  FIELDNO says which field.   Differs from value_primitive_field
7179    only in that it can handle packed values of arbitrary type.  */
7180
7181 static struct value *
7182 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7183                            struct type *arg_type)
7184 {
7185   struct type *type;
7186
7187   arg_type = ada_check_typedef (arg_type);
7188   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7189
7190   /* Handle packed fields.  */
7191
7192   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7193     {
7194       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7195       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7196
7197       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7198                                              offset + bit_pos / 8,
7199                                              bit_pos % 8, bit_size, type);
7200     }
7201   else
7202     return value_primitive_field (arg1, offset, fieldno, arg_type);
7203 }
7204
7205 /* Find field with name NAME in object of type TYPE.  If found, 
7206    set the following for each argument that is non-null:
7207     - *FIELD_TYPE_P to the field's type; 
7208     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7209       an object of that type;
7210     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7211     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7212       0 otherwise;
7213    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7214    fields up to but not including the desired field, or by the total
7215    number of fields if not found.   A NULL value of NAME never
7216    matches; the function just counts visible fields in this case.
7217    
7218    Returns 1 if found, 0 otherwise.  */
7219
7220 static int
7221 find_struct_field (const char *name, struct type *type, int offset,
7222                    struct type **field_type_p,
7223                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7224                    int *index_p)
7225 {
7226   int i;
7227
7228   type = ada_check_typedef (type);
7229
7230   if (field_type_p != NULL)
7231     *field_type_p = NULL;
7232   if (byte_offset_p != NULL)
7233     *byte_offset_p = 0;
7234   if (bit_offset_p != NULL)
7235     *bit_offset_p = 0;
7236   if (bit_size_p != NULL)
7237     *bit_size_p = 0;
7238
7239   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7240     {
7241       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7242       int fld_offset = offset + bit_pos / 8;
7243       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7244
7245       if (t_field_name == NULL)
7246         continue;
7247
7248       else if (name != NULL && field_name_match (t_field_name, name))
7249         {
7250           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7251
7252           if (field_type_p != NULL)
7253             *field_type_p = TYPE_FIELD_TYPE (type, i);
7254           if (byte_offset_p != NULL)
7255             *byte_offset_p = fld_offset;
7256           if (bit_offset_p != NULL)
7257             *bit_offset_p = bit_pos % 8;
7258           if (bit_size_p != NULL)
7259             *bit_size_p = bit_size;
7260           return 1;
7261         }
7262       else if (ada_is_wrapper_field (type, i))
7263         {
7264           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7265                                  field_type_p, byte_offset_p, bit_offset_p,
7266                                  bit_size_p, index_p))
7267             return 1;
7268         }
7269       else if (ada_is_variant_part (type, i))
7270         {
7271           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7272              fixed type?? */
7273           int j;
7274           struct type *field_type
7275             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7276
7277           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7278             {
7279               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7280                                      fld_offset
7281                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7282                                      field_type_p, byte_offset_p,
7283                                      bit_offset_p, bit_size_p, index_p))
7284                 return 1;
7285             }
7286         }
7287       else if (index_p != NULL)
7288         *index_p += 1;
7289     }
7290   return 0;
7291 }
7292
7293 /* Number of user-visible fields in record type TYPE.  */
7294
7295 static int
7296 num_visible_fields (struct type *type)
7297 {
7298   int n;
7299
7300   n = 0;
7301   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7302   return n;
7303 }
7304
7305 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7306    and search in it assuming it has (class) type TYPE.
7307    If found, return value, else return NULL.
7308
7309    Searches recursively through wrapper fields (e.g., '_parent').  */
7310
7311 static struct value *
7312 ada_search_struct_field (const char *name, struct value *arg, int offset,
7313                          struct type *type)
7314 {
7315   int i;
7316
7317   type = ada_check_typedef (type);
7318   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7319     {
7320       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7321
7322       if (t_field_name == NULL)
7323         continue;
7324
7325       else if (field_name_match (t_field_name, name))
7326         return ada_value_primitive_field (arg, offset, i, type);
7327
7328       else if (ada_is_wrapper_field (type, i))
7329         {
7330           struct value *v =     /* Do not let indent join lines here.  */
7331             ada_search_struct_field (name, arg,
7332                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7333                                      TYPE_FIELD_TYPE (type, i));
7334
7335           if (v != NULL)
7336             return v;
7337         }
7338
7339       else if (ada_is_variant_part (type, i))
7340         {
7341           /* PNH: Do we ever get here?  See find_struct_field.  */
7342           int j;
7343           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7344                                                                         i));
7345           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7346
7347           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7348             {
7349               struct value *v = ada_search_struct_field /* Force line
7350                                                            break.  */
7351                 (name, arg,
7352                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7353                  TYPE_FIELD_TYPE (field_type, j));
7354
7355               if (v != NULL)
7356                 return v;
7357             }
7358         }
7359     }
7360   return NULL;
7361 }
7362
7363 static struct value *ada_index_struct_field_1 (int *, struct value *,
7364                                                int, struct type *);
7365
7366
7367 /* Return field #INDEX in ARG, where the index is that returned by
7368  * find_struct_field through its INDEX_P argument.  Adjust the address
7369  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7370  * If found, return value, else return NULL.  */
7371
7372 static struct value *
7373 ada_index_struct_field (int index, struct value *arg, int offset,
7374                         struct type *type)
7375 {
7376   return ada_index_struct_field_1 (&index, arg, offset, type);
7377 }
7378
7379
7380 /* Auxiliary function for ada_index_struct_field.  Like
7381  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7382  * *INDEX_P.  */
7383
7384 static struct value *
7385 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7386                           struct type *type)
7387 {
7388   int i;
7389   type = ada_check_typedef (type);
7390
7391   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7392     {
7393       if (TYPE_FIELD_NAME (type, i) == NULL)
7394         continue;
7395       else if (ada_is_wrapper_field (type, i))
7396         {
7397           struct value *v =     /* Do not let indent join lines here.  */
7398             ada_index_struct_field_1 (index_p, arg,
7399                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7400                                       TYPE_FIELD_TYPE (type, i));
7401
7402           if (v != NULL)
7403             return v;
7404         }
7405
7406       else if (ada_is_variant_part (type, i))
7407         {
7408           /* PNH: Do we ever get here?  See ada_search_struct_field,
7409              find_struct_field.  */
7410           error (_("Cannot assign this kind of variant record"));
7411         }
7412       else if (*index_p == 0)
7413         return ada_value_primitive_field (arg, offset, i, type);
7414       else
7415         *index_p -= 1;
7416     }
7417   return NULL;
7418 }
7419
7420 /* Given ARG, a value of type (pointer or reference to a)*
7421    structure/union, extract the component named NAME from the ultimate
7422    target structure/union and return it as a value with its
7423    appropriate type.
7424
7425    The routine searches for NAME among all members of the structure itself
7426    and (recursively) among all members of any wrapper members
7427    (e.g., '_parent').
7428
7429    If NO_ERR, then simply return NULL in case of error, rather than 
7430    calling error.  */
7431
7432 struct value *
7433 ada_value_struct_elt (struct value *arg, char *name, int no_err)
7434 {
7435   struct type *t, *t1;
7436   struct value *v;
7437
7438   v = NULL;
7439   t1 = t = ada_check_typedef (value_type (arg));
7440   if (TYPE_CODE (t) == TYPE_CODE_REF)
7441     {
7442       t1 = TYPE_TARGET_TYPE (t);
7443       if (t1 == NULL)
7444         goto BadValue;
7445       t1 = ada_check_typedef (t1);
7446       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7447         {
7448           arg = coerce_ref (arg);
7449           t = t1;
7450         }
7451     }
7452
7453   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7454     {
7455       t1 = TYPE_TARGET_TYPE (t);
7456       if (t1 == NULL)
7457         goto BadValue;
7458       t1 = ada_check_typedef (t1);
7459       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7460         {
7461           arg = value_ind (arg);
7462           t = t1;
7463         }
7464       else
7465         break;
7466     }
7467
7468   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7469     goto BadValue;
7470
7471   if (t1 == t)
7472     v = ada_search_struct_field (name, arg, 0, t);
7473   else
7474     {
7475       int bit_offset, bit_size, byte_offset;
7476       struct type *field_type;
7477       CORE_ADDR address;
7478
7479       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7480         address = value_address (ada_value_ind (arg));
7481       else
7482         address = value_address (ada_coerce_ref (arg));
7483
7484       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL, 1);
7485       if (find_struct_field (name, t1, 0,
7486                              &field_type, &byte_offset, &bit_offset,
7487                              &bit_size, NULL))
7488         {
7489           if (bit_size != 0)
7490             {
7491               if (TYPE_CODE (t) == TYPE_CODE_REF)
7492                 arg = ada_coerce_ref (arg);
7493               else
7494                 arg = ada_value_ind (arg);
7495               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7496                                                   bit_offset, bit_size,
7497                                                   field_type);
7498             }
7499           else
7500             v = value_at_lazy (field_type, address + byte_offset);
7501         }
7502     }
7503
7504   if (v != NULL || no_err)
7505     return v;
7506   else
7507     error (_("There is no member named %s."), name);
7508
7509  BadValue:
7510   if (no_err)
7511     return NULL;
7512   else
7513     error (_("Attempt to extract a component of "
7514              "a value that is not a record."));
7515 }
7516
7517 /* Given a type TYPE, look up the type of the component of type named NAME.
7518    If DISPP is non-null, add its byte displacement from the beginning of a
7519    structure (pointed to by a value) of type TYPE to *DISPP (does not
7520    work for packed fields).
7521
7522    Matches any field whose name has NAME as a prefix, possibly
7523    followed by "___".
7524
7525    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7526    be a (pointer or reference)+ to a struct or union, and the
7527    ultimate target type will be searched.
7528
7529    Looks recursively into variant clauses and parent types.
7530
7531    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7532    TYPE is not a type of the right kind.  */
7533
7534 static struct type *
7535 ada_lookup_struct_elt_type (struct type *type, char *name, int refok,
7536                             int noerr, int *dispp)
7537 {
7538   int i;
7539
7540   if (name == NULL)
7541     goto BadName;
7542
7543   if (refok && type != NULL)
7544     while (1)
7545       {
7546         type = ada_check_typedef (type);
7547         if (TYPE_CODE (type) != TYPE_CODE_PTR
7548             && TYPE_CODE (type) != TYPE_CODE_REF)
7549           break;
7550         type = TYPE_TARGET_TYPE (type);
7551       }
7552
7553   if (type == NULL
7554       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7555           && TYPE_CODE (type) != TYPE_CODE_UNION))
7556     {
7557       if (noerr)
7558         return NULL;
7559       else
7560         {
7561           target_terminal_ours ();
7562           gdb_flush (gdb_stdout);
7563           if (type == NULL)
7564             error (_("Type (null) is not a structure or union type"));
7565           else
7566             {
7567               /* XXX: type_sprint */
7568               fprintf_unfiltered (gdb_stderr, _("Type "));
7569               type_print (type, "", gdb_stderr, -1);
7570               error (_(" is not a structure or union type"));
7571             }
7572         }
7573     }
7574
7575   type = to_static_fixed_type (type);
7576
7577   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7578     {
7579       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7580       struct type *t;
7581       int disp;
7582
7583       if (t_field_name == NULL)
7584         continue;
7585
7586       else if (field_name_match (t_field_name, name))
7587         {
7588           if (dispp != NULL)
7589             *dispp += TYPE_FIELD_BITPOS (type, i) / 8;
7590           return TYPE_FIELD_TYPE (type, i);
7591         }
7592
7593       else if (ada_is_wrapper_field (type, i))
7594         {
7595           disp = 0;
7596           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7597                                           0, 1, &disp);
7598           if (t != NULL)
7599             {
7600               if (dispp != NULL)
7601                 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7602               return t;
7603             }
7604         }
7605
7606       else if (ada_is_variant_part (type, i))
7607         {
7608           int j;
7609           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7610                                                                         i));
7611
7612           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7613             {
7614               /* FIXME pnh 2008/01/26: We check for a field that is
7615                  NOT wrapped in a struct, since the compiler sometimes
7616                  generates these for unchecked variant types.  Revisit
7617                  if the compiler changes this practice.  */
7618               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7619               disp = 0;
7620               if (v_field_name != NULL 
7621                   && field_name_match (v_field_name, name))
7622                 t = TYPE_FIELD_TYPE (field_type, j);
7623               else
7624                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7625                                                                  j),
7626                                                 name, 0, 1, &disp);
7627
7628               if (t != NULL)
7629                 {
7630                   if (dispp != NULL)
7631                     *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7632                   return t;
7633                 }
7634             }
7635         }
7636
7637     }
7638
7639 BadName:
7640   if (!noerr)
7641     {
7642       target_terminal_ours ();
7643       gdb_flush (gdb_stdout);
7644       if (name == NULL)
7645         {
7646           /* XXX: type_sprint */
7647           fprintf_unfiltered (gdb_stderr, _("Type "));
7648           type_print (type, "", gdb_stderr, -1);
7649           error (_(" has no component named <null>"));
7650         }
7651       else
7652         {
7653           /* XXX: type_sprint */
7654           fprintf_unfiltered (gdb_stderr, _("Type "));
7655           type_print (type, "", gdb_stderr, -1);
7656           error (_(" has no component named %s"), name);
7657         }
7658     }
7659
7660   return NULL;
7661 }
7662
7663 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7664    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7665    represents an unchecked union (that is, the variant part of a
7666    record that is named in an Unchecked_Union pragma).  */
7667
7668 static int
7669 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7670 {
7671   char *discrim_name = ada_variant_discrim_name (var_type);
7672
7673   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) 
7674           == NULL);
7675 }
7676
7677
7678 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7679    within a value of type OUTER_TYPE that is stored in GDB at
7680    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7681    numbering from 0) is applicable.  Returns -1 if none are.  */
7682
7683 int
7684 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7685                            const gdb_byte *outer_valaddr)
7686 {
7687   int others_clause;
7688   int i;
7689   char *discrim_name = ada_variant_discrim_name (var_type);
7690   struct value *outer;
7691   struct value *discrim;
7692   LONGEST discrim_val;
7693
7694   /* Using plain value_from_contents_and_address here causes problems
7695      because we will end up trying to resolve a type that is currently
7696      being constructed.  */
7697   outer = value_from_contents_and_address_unresolved (outer_type,
7698                                                       outer_valaddr, 0);
7699   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7700   if (discrim == NULL)
7701     return -1;
7702   discrim_val = value_as_long (discrim);
7703
7704   others_clause = -1;
7705   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7706     {
7707       if (ada_is_others_clause (var_type, i))
7708         others_clause = i;
7709       else if (ada_in_variant (discrim_val, var_type, i))
7710         return i;
7711     }
7712
7713   return others_clause;
7714 }
7715 \f
7716
7717
7718                                 /* Dynamic-Sized Records */
7719
7720 /* Strategy: The type ostensibly attached to a value with dynamic size
7721    (i.e., a size that is not statically recorded in the debugging
7722    data) does not accurately reflect the size or layout of the value.
7723    Our strategy is to convert these values to values with accurate,
7724    conventional types that are constructed on the fly.  */
7725
7726 /* There is a subtle and tricky problem here.  In general, we cannot
7727    determine the size of dynamic records without its data.  However,
7728    the 'struct value' data structure, which GDB uses to represent
7729    quantities in the inferior process (the target), requires the size
7730    of the type at the time of its allocation in order to reserve space
7731    for GDB's internal copy of the data.  That's why the
7732    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7733    rather than struct value*s.
7734
7735    However, GDB's internal history variables ($1, $2, etc.) are
7736    struct value*s containing internal copies of the data that are not, in
7737    general, the same as the data at their corresponding addresses in
7738    the target.  Fortunately, the types we give to these values are all
7739    conventional, fixed-size types (as per the strategy described
7740    above), so that we don't usually have to perform the
7741    'to_fixed_xxx_type' conversions to look at their values.
7742    Unfortunately, there is one exception: if one of the internal
7743    history variables is an array whose elements are unconstrained
7744    records, then we will need to create distinct fixed types for each
7745    element selected.  */
7746
7747 /* The upshot of all of this is that many routines take a (type, host
7748    address, target address) triple as arguments to represent a value.
7749    The host address, if non-null, is supposed to contain an internal
7750    copy of the relevant data; otherwise, the program is to consult the
7751    target at the target address.  */
7752
7753 /* Assuming that VAL0 represents a pointer value, the result of
7754    dereferencing it.  Differs from value_ind in its treatment of
7755    dynamic-sized types.  */
7756
7757 struct value *
7758 ada_value_ind (struct value *val0)
7759 {
7760   struct value *val = value_ind (val0);
7761
7762   if (ada_is_tagged_type (value_type (val), 0))
7763     val = ada_tag_value_at_base_address (val);
7764
7765   return ada_to_fixed_value (val);
7766 }
7767
7768 /* The value resulting from dereferencing any "reference to"
7769    qualifiers on VAL0.  */
7770
7771 static struct value *
7772 ada_coerce_ref (struct value *val0)
7773 {
7774   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7775     {
7776       struct value *val = val0;
7777
7778       val = coerce_ref (val);
7779
7780       if (ada_is_tagged_type (value_type (val), 0))
7781         val = ada_tag_value_at_base_address (val);
7782
7783       return ada_to_fixed_value (val);
7784     }
7785   else
7786     return val0;
7787 }
7788
7789 /* Return OFF rounded upward if necessary to a multiple of
7790    ALIGNMENT (a power of 2).  */
7791
7792 static unsigned int
7793 align_value (unsigned int off, unsigned int alignment)
7794 {
7795   return (off + alignment - 1) & ~(alignment - 1);
7796 }
7797
7798 /* Return the bit alignment required for field #F of template type TYPE.  */
7799
7800 static unsigned int
7801 field_alignment (struct type *type, int f)
7802 {
7803   const char *name = TYPE_FIELD_NAME (type, f);
7804   int len;
7805   int align_offset;
7806
7807   /* The field name should never be null, unless the debugging information
7808      is somehow malformed.  In this case, we assume the field does not
7809      require any alignment.  */
7810   if (name == NULL)
7811     return 1;
7812
7813   len = strlen (name);
7814
7815   if (!isdigit (name[len - 1]))
7816     return 1;
7817
7818   if (isdigit (name[len - 2]))
7819     align_offset = len - 2;
7820   else
7821     align_offset = len - 1;
7822
7823   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7824     return TARGET_CHAR_BIT;
7825
7826   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7827 }
7828
7829 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7830
7831 static struct symbol *
7832 ada_find_any_type_symbol (const char *name)
7833 {
7834   struct symbol *sym;
7835
7836   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7837   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7838     return sym;
7839
7840   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7841   return sym;
7842 }
7843
7844 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7845    solely for types defined by debug info, it will not search the GDB
7846    primitive types.  */
7847
7848 static struct type *
7849 ada_find_any_type (const char *name)
7850 {
7851   struct symbol *sym = ada_find_any_type_symbol (name);
7852
7853   if (sym != NULL)
7854     return SYMBOL_TYPE (sym);
7855
7856   return NULL;
7857 }
7858
7859 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7860    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7861    symbol, in which case it is returned.  Otherwise, this looks for
7862    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7863    Return symbol if found, and NULL otherwise.  */
7864
7865 struct symbol *
7866 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7867 {
7868   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7869   struct symbol *sym;
7870
7871   if (strstr (name, "___XR") != NULL)
7872      return name_sym;
7873
7874   sym = find_old_style_renaming_symbol (name, block);
7875
7876   if (sym != NULL)
7877     return sym;
7878
7879   /* Not right yet.  FIXME pnh 7/20/2007.  */
7880   sym = ada_find_any_type_symbol (name);
7881   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7882     return sym;
7883   else
7884     return NULL;
7885 }
7886
7887 static struct symbol *
7888 find_old_style_renaming_symbol (const char *name, const struct block *block)
7889 {
7890   const struct symbol *function_sym = block_linkage_function (block);
7891   char *rename;
7892
7893   if (function_sym != NULL)
7894     {
7895       /* If the symbol is defined inside a function, NAME is not fully
7896          qualified.  This means we need to prepend the function name
7897          as well as adding the ``___XR'' suffix to build the name of
7898          the associated renaming symbol.  */
7899       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
7900       /* Function names sometimes contain suffixes used
7901          for instance to qualify nested subprograms.  When building
7902          the XR type name, we need to make sure that this suffix is
7903          not included.  So do not include any suffix in the function
7904          name length below.  */
7905       int function_name_len = ada_name_prefix_len (function_name);
7906       const int rename_len = function_name_len + 2      /*  "__" */
7907         + strlen (name) + 6 /* "___XR\0" */ ;
7908
7909       /* Strip the suffix if necessary.  */
7910       ada_remove_trailing_digits (function_name, &function_name_len);
7911       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
7912       ada_remove_Xbn_suffix (function_name, &function_name_len);
7913
7914       /* Library-level functions are a special case, as GNAT adds
7915          a ``_ada_'' prefix to the function name to avoid namespace
7916          pollution.  However, the renaming symbols themselves do not
7917          have this prefix, so we need to skip this prefix if present.  */
7918       if (function_name_len > 5 /* "_ada_" */
7919           && strstr (function_name, "_ada_") == function_name)
7920         {
7921           function_name += 5;
7922           function_name_len -= 5;
7923         }
7924
7925       rename = (char *) alloca (rename_len * sizeof (char));
7926       strncpy (rename, function_name, function_name_len);
7927       xsnprintf (rename + function_name_len, rename_len - function_name_len,
7928                  "__%s___XR", name);
7929     }
7930   else
7931     {
7932       const int rename_len = strlen (name) + 6;
7933
7934       rename = (char *) alloca (rename_len * sizeof (char));
7935       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
7936     }
7937
7938   return ada_find_any_type_symbol (rename);
7939 }
7940
7941 /* Because of GNAT encoding conventions, several GDB symbols may match a
7942    given type name.  If the type denoted by TYPE0 is to be preferred to
7943    that of TYPE1 for purposes of type printing, return non-zero;
7944    otherwise return 0.  */
7945
7946 int
7947 ada_prefer_type (struct type *type0, struct type *type1)
7948 {
7949   if (type1 == NULL)
7950     return 1;
7951   else if (type0 == NULL)
7952     return 0;
7953   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
7954     return 1;
7955   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
7956     return 0;
7957   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7958     return 1;
7959   else if (ada_is_constrained_packed_array_type (type0))
7960     return 1;
7961   else if (ada_is_array_descriptor_type (type0)
7962            && !ada_is_array_descriptor_type (type1))
7963     return 1;
7964   else
7965     {
7966       const char *type0_name = type_name_no_tag (type0);
7967       const char *type1_name = type_name_no_tag (type1);
7968
7969       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7970           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7971         return 1;
7972     }
7973   return 0;
7974 }
7975
7976 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
7977    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
7978
7979 const char *
7980 ada_type_name (struct type *type)
7981 {
7982   if (type == NULL)
7983     return NULL;
7984   else if (TYPE_NAME (type) != NULL)
7985     return TYPE_NAME (type);
7986   else
7987     return TYPE_TAG_NAME (type);
7988 }
7989
7990 /* Search the list of "descriptive" types associated to TYPE for a type
7991    whose name is NAME.  */
7992
7993 static struct type *
7994 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7995 {
7996   struct type *result, *tmp;
7997
7998   if (ada_ignore_descriptive_types_p)
7999     return NULL;
8000
8001   /* If there no descriptive-type info, then there is no parallel type
8002      to be found.  */
8003   if (!HAVE_GNAT_AUX_INFO (type))
8004     return NULL;
8005
8006   result = TYPE_DESCRIPTIVE_TYPE (type);
8007   while (result != NULL)
8008     {
8009       const char *result_name = ada_type_name (result);
8010
8011       if (result_name == NULL)
8012         {
8013           warning (_("unexpected null name on descriptive type"));
8014           return NULL;
8015         }
8016
8017       /* If the names match, stop.  */
8018       if (strcmp (result_name, name) == 0)
8019         break;
8020
8021       /* Otherwise, look at the next item on the list, if any.  */
8022       if (HAVE_GNAT_AUX_INFO (result))
8023         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8024       else
8025         tmp = NULL;
8026
8027       /* If not found either, try after having resolved the typedef.  */
8028       if (tmp != NULL)
8029         result = tmp;
8030       else
8031         {
8032           result = check_typedef (result);
8033           if (HAVE_GNAT_AUX_INFO (result))
8034             result = TYPE_DESCRIPTIVE_TYPE (result);
8035           else
8036             result = NULL;
8037         }
8038     }
8039
8040   /* If we didn't find a match, see whether this is a packed array.  With
8041      older compilers, the descriptive type information is either absent or
8042      irrelevant when it comes to packed arrays so the above lookup fails.
8043      Fall back to using a parallel lookup by name in this case.  */
8044   if (result == NULL && ada_is_constrained_packed_array_type (type))
8045     return ada_find_any_type (name);
8046
8047   return result;
8048 }
8049
8050 /* Find a parallel type to TYPE with the specified NAME, using the
8051    descriptive type taken from the debugging information, if available,
8052    and otherwise using the (slower) name-based method.  */
8053
8054 static struct type *
8055 ada_find_parallel_type_with_name (struct type *type, const char *name)
8056 {
8057   struct type *result = NULL;
8058
8059   if (HAVE_GNAT_AUX_INFO (type))
8060     result = find_parallel_type_by_descriptive_type (type, name);
8061   else
8062     result = ada_find_any_type (name);
8063
8064   return result;
8065 }
8066
8067 /* Same as above, but specify the name of the parallel type by appending
8068    SUFFIX to the name of TYPE.  */
8069
8070 struct type *
8071 ada_find_parallel_type (struct type *type, const char *suffix)
8072 {
8073   char *name;
8074   const char *type_name = ada_type_name (type);
8075   int len;
8076
8077   if (type_name == NULL)
8078     return NULL;
8079
8080   len = strlen (type_name);
8081
8082   name = (char *) alloca (len + strlen (suffix) + 1);
8083
8084   strcpy (name, type_name);
8085   strcpy (name + len, suffix);
8086
8087   return ada_find_parallel_type_with_name (type, name);
8088 }
8089
8090 /* If TYPE is a variable-size record type, return the corresponding template
8091    type describing its fields.  Otherwise, return NULL.  */
8092
8093 static struct type *
8094 dynamic_template_type (struct type *type)
8095 {
8096   type = ada_check_typedef (type);
8097
8098   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8099       || ada_type_name (type) == NULL)
8100     return NULL;
8101   else
8102     {
8103       int len = strlen (ada_type_name (type));
8104
8105       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8106         return type;
8107       else
8108         return ada_find_parallel_type (type, "___XVE");
8109     }
8110 }
8111
8112 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8113    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8114
8115 static int
8116 is_dynamic_field (struct type *templ_type, int field_num)
8117 {
8118   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8119
8120   return name != NULL
8121     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8122     && strstr (name, "___XVL") != NULL;
8123 }
8124
8125 /* The index of the variant field of TYPE, or -1 if TYPE does not
8126    represent a variant record type.  */
8127
8128 static int
8129 variant_field_index (struct type *type)
8130 {
8131   int f;
8132
8133   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8134     return -1;
8135
8136   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8137     {
8138       if (ada_is_variant_part (type, f))
8139         return f;
8140     }
8141   return -1;
8142 }
8143
8144 /* A record type with no fields.  */
8145
8146 static struct type *
8147 empty_record (struct type *templ)
8148 {
8149   struct type *type = alloc_type_copy (templ);
8150
8151   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8152   TYPE_NFIELDS (type) = 0;
8153   TYPE_FIELDS (type) = NULL;
8154   INIT_CPLUS_SPECIFIC (type);
8155   TYPE_NAME (type) = "<empty>";
8156   TYPE_TAG_NAME (type) = NULL;
8157   TYPE_LENGTH (type) = 0;
8158   return type;
8159 }
8160
8161 /* An ordinary record type (with fixed-length fields) that describes
8162    the value of type TYPE at VALADDR or ADDRESS (see comments at
8163    the beginning of this section) VAL according to GNAT conventions.
8164    DVAL0 should describe the (portion of a) record that contains any
8165    necessary discriminants.  It should be NULL if value_type (VAL) is
8166    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8167    variant field (unless unchecked) is replaced by a particular branch
8168    of the variant.
8169
8170    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8171    length are not statically known are discarded.  As a consequence,
8172    VALADDR, ADDRESS and DVAL0 are ignored.
8173
8174    NOTE: Limitations: For now, we assume that dynamic fields and
8175    variants occupy whole numbers of bytes.  However, they need not be
8176    byte-aligned.  */
8177
8178 struct type *
8179 ada_template_to_fixed_record_type_1 (struct type *type,
8180                                      const gdb_byte *valaddr,
8181                                      CORE_ADDR address, struct value *dval0,
8182                                      int keep_dynamic_fields)
8183 {
8184   struct value *mark = value_mark ();
8185   struct value *dval;
8186   struct type *rtype;
8187   int nfields, bit_len;
8188   int variant_field;
8189   long off;
8190   int fld_bit_len;
8191   int f;
8192
8193   /* Compute the number of fields in this record type that are going
8194      to be processed: unless keep_dynamic_fields, this includes only
8195      fields whose position and length are static will be processed.  */
8196   if (keep_dynamic_fields)
8197     nfields = TYPE_NFIELDS (type);
8198   else
8199     {
8200       nfields = 0;
8201       while (nfields < TYPE_NFIELDS (type)
8202              && !ada_is_variant_part (type, nfields)
8203              && !is_dynamic_field (type, nfields))
8204         nfields++;
8205     }
8206
8207   rtype = alloc_type_copy (type);
8208   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8209   INIT_CPLUS_SPECIFIC (rtype);
8210   TYPE_NFIELDS (rtype) = nfields;
8211   TYPE_FIELDS (rtype) = (struct field *)
8212     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8213   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8214   TYPE_NAME (rtype) = ada_type_name (type);
8215   TYPE_TAG_NAME (rtype) = NULL;
8216   TYPE_FIXED_INSTANCE (rtype) = 1;
8217
8218   off = 0;
8219   bit_len = 0;
8220   variant_field = -1;
8221
8222   for (f = 0; f < nfields; f += 1)
8223     {
8224       off = align_value (off, field_alignment (type, f))
8225         + TYPE_FIELD_BITPOS (type, f);
8226       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8227       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8228
8229       if (ada_is_variant_part (type, f))
8230         {
8231           variant_field = f;
8232           fld_bit_len = 0;
8233         }
8234       else if (is_dynamic_field (type, f))
8235         {
8236           const gdb_byte *field_valaddr = valaddr;
8237           CORE_ADDR field_address = address;
8238           struct type *field_type =
8239             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8240
8241           if (dval0 == NULL)
8242             {
8243               /* rtype's length is computed based on the run-time
8244                  value of discriminants.  If the discriminants are not
8245                  initialized, the type size may be completely bogus and
8246                  GDB may fail to allocate a value for it.  So check the
8247                  size first before creating the value.  */
8248               ada_ensure_varsize_limit (rtype);
8249               /* Using plain value_from_contents_and_address here
8250                  causes problems because we will end up trying to
8251                  resolve a type that is currently being
8252                  constructed.  */
8253               dval = value_from_contents_and_address_unresolved (rtype,
8254                                                                  valaddr,
8255                                                                  address);
8256               rtype = value_type (dval);
8257             }
8258           else
8259             dval = dval0;
8260
8261           /* If the type referenced by this field is an aligner type, we need
8262              to unwrap that aligner type, because its size might not be set.
8263              Keeping the aligner type would cause us to compute the wrong
8264              size for this field, impacting the offset of the all the fields
8265              that follow this one.  */
8266           if (ada_is_aligner_type (field_type))
8267             {
8268               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8269
8270               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8271               field_address = cond_offset_target (field_address, field_offset);
8272               field_type = ada_aligned_type (field_type);
8273             }
8274
8275           field_valaddr = cond_offset_host (field_valaddr,
8276                                             off / TARGET_CHAR_BIT);
8277           field_address = cond_offset_target (field_address,
8278                                               off / TARGET_CHAR_BIT);
8279
8280           /* Get the fixed type of the field.  Note that, in this case,
8281              we do not want to get the real type out of the tag: if
8282              the current field is the parent part of a tagged record,
8283              we will get the tag of the object.  Clearly wrong: the real
8284              type of the parent is not the real type of the child.  We
8285              would end up in an infinite loop.  */
8286           field_type = ada_get_base_type (field_type);
8287           field_type = ada_to_fixed_type (field_type, field_valaddr,
8288                                           field_address, dval, 0);
8289           /* If the field size is already larger than the maximum
8290              object size, then the record itself will necessarily
8291              be larger than the maximum object size.  We need to make
8292              this check now, because the size might be so ridiculously
8293              large (due to an uninitialized variable in the inferior)
8294              that it would cause an overflow when adding it to the
8295              record size.  */
8296           ada_ensure_varsize_limit (field_type);
8297
8298           TYPE_FIELD_TYPE (rtype, f) = field_type;
8299           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8300           /* The multiplication can potentially overflow.  But because
8301              the field length has been size-checked just above, and
8302              assuming that the maximum size is a reasonable value,
8303              an overflow should not happen in practice.  So rather than
8304              adding overflow recovery code to this already complex code,
8305              we just assume that it's not going to happen.  */
8306           fld_bit_len =
8307             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8308         }
8309       else
8310         {
8311           /* Note: If this field's type is a typedef, it is important
8312              to preserve the typedef layer.
8313
8314              Otherwise, we might be transforming a typedef to a fat
8315              pointer (encoding a pointer to an unconstrained array),
8316              into a basic fat pointer (encoding an unconstrained
8317              array).  As both types are implemented using the same
8318              structure, the typedef is the only clue which allows us
8319              to distinguish between the two options.  Stripping it
8320              would prevent us from printing this field appropriately.  */
8321           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8322           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8323           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8324             fld_bit_len =
8325               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8326           else
8327             {
8328               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8329
8330               /* We need to be careful of typedefs when computing
8331                  the length of our field.  If this is a typedef,
8332                  get the length of the target type, not the length
8333                  of the typedef.  */
8334               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8335                 field_type = ada_typedef_target_type (field_type);
8336
8337               fld_bit_len =
8338                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8339             }
8340         }
8341       if (off + fld_bit_len > bit_len)
8342         bit_len = off + fld_bit_len;
8343       off += fld_bit_len;
8344       TYPE_LENGTH (rtype) =
8345         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8346     }
8347
8348   /* We handle the variant part, if any, at the end because of certain
8349      odd cases in which it is re-ordered so as NOT to be the last field of
8350      the record.  This can happen in the presence of representation
8351      clauses.  */
8352   if (variant_field >= 0)
8353     {
8354       struct type *branch_type;
8355
8356       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8357
8358       if (dval0 == NULL)
8359         {
8360           /* Using plain value_from_contents_and_address here causes
8361              problems because we will end up trying to resolve a type
8362              that is currently being constructed.  */
8363           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8364                                                              address);
8365           rtype = value_type (dval);
8366         }
8367       else
8368         dval = dval0;
8369
8370       branch_type =
8371         to_fixed_variant_branch_type
8372         (TYPE_FIELD_TYPE (type, variant_field),
8373          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8374          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8375       if (branch_type == NULL)
8376         {
8377           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8378             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8379           TYPE_NFIELDS (rtype) -= 1;
8380         }
8381       else
8382         {
8383           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8384           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8385           fld_bit_len =
8386             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8387             TARGET_CHAR_BIT;
8388           if (off + fld_bit_len > bit_len)
8389             bit_len = off + fld_bit_len;
8390           TYPE_LENGTH (rtype) =
8391             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8392         }
8393     }
8394
8395   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8396      should contain the alignment of that record, which should be a strictly
8397      positive value.  If null or negative, then something is wrong, most
8398      probably in the debug info.  In that case, we don't round up the size
8399      of the resulting type.  If this record is not part of another structure,
8400      the current RTYPE length might be good enough for our purposes.  */
8401   if (TYPE_LENGTH (type) <= 0)
8402     {
8403       if (TYPE_NAME (rtype))
8404         warning (_("Invalid type size for `%s' detected: %d."),
8405                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8406       else
8407         warning (_("Invalid type size for <unnamed> detected: %d."),
8408                  TYPE_LENGTH (type));
8409     }
8410   else
8411     {
8412       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8413                                          TYPE_LENGTH (type));
8414     }
8415
8416   value_free_to_mark (mark);
8417   if (TYPE_LENGTH (rtype) > varsize_limit)
8418     error (_("record type with dynamic size is larger than varsize-limit"));
8419   return rtype;
8420 }
8421
8422 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8423    of 1.  */
8424
8425 static struct type *
8426 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8427                                CORE_ADDR address, struct value *dval0)
8428 {
8429   return ada_template_to_fixed_record_type_1 (type, valaddr,
8430                                               address, dval0, 1);
8431 }
8432
8433 /* An ordinary record type in which ___XVL-convention fields and
8434    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8435    static approximations, containing all possible fields.  Uses
8436    no runtime values.  Useless for use in values, but that's OK,
8437    since the results are used only for type determinations.   Works on both
8438    structs and unions.  Representation note: to save space, we memorize
8439    the result of this function in the TYPE_TARGET_TYPE of the
8440    template type.  */
8441
8442 static struct type *
8443 template_to_static_fixed_type (struct type *type0)
8444 {
8445   struct type *type;
8446   int nfields;
8447   int f;
8448
8449   /* No need no do anything if the input type is already fixed.  */
8450   if (TYPE_FIXED_INSTANCE (type0))
8451     return type0;
8452
8453   /* Likewise if we already have computed the static approximation.  */
8454   if (TYPE_TARGET_TYPE (type0) != NULL)
8455     return TYPE_TARGET_TYPE (type0);
8456
8457   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8458   type = type0;
8459   nfields = TYPE_NFIELDS (type0);
8460
8461   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8462      recompute all over next time.  */
8463   TYPE_TARGET_TYPE (type0) = type;
8464
8465   for (f = 0; f < nfields; f += 1)
8466     {
8467       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8468       struct type *new_type;
8469
8470       if (is_dynamic_field (type0, f))
8471         {
8472           field_type = ada_check_typedef (field_type);
8473           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8474         }
8475       else
8476         new_type = static_unwrap_type (field_type);
8477
8478       if (new_type != field_type)
8479         {
8480           /* Clone TYPE0 only the first time we get a new field type.  */
8481           if (type == type0)
8482             {
8483               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8484               TYPE_CODE (type) = TYPE_CODE (type0);
8485               INIT_CPLUS_SPECIFIC (type);
8486               TYPE_NFIELDS (type) = nfields;
8487               TYPE_FIELDS (type) = (struct field *)
8488                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8489               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8490                       sizeof (struct field) * nfields);
8491               TYPE_NAME (type) = ada_type_name (type0);
8492               TYPE_TAG_NAME (type) = NULL;
8493               TYPE_FIXED_INSTANCE (type) = 1;
8494               TYPE_LENGTH (type) = 0;
8495             }
8496           TYPE_FIELD_TYPE (type, f) = new_type;
8497           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8498         }
8499     }
8500
8501   return type;
8502 }
8503
8504 /* Given an object of type TYPE whose contents are at VALADDR and
8505    whose address in memory is ADDRESS, returns a revision of TYPE,
8506    which should be a non-dynamic-sized record, in which the variant
8507    part, if any, is replaced with the appropriate branch.  Looks
8508    for discriminant values in DVAL0, which can be NULL if the record
8509    contains the necessary discriminant values.  */
8510
8511 static struct type *
8512 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8513                                    CORE_ADDR address, struct value *dval0)
8514 {
8515   struct value *mark = value_mark ();
8516   struct value *dval;
8517   struct type *rtype;
8518   struct type *branch_type;
8519   int nfields = TYPE_NFIELDS (type);
8520   int variant_field = variant_field_index (type);
8521
8522   if (variant_field == -1)
8523     return type;
8524
8525   if (dval0 == NULL)
8526     {
8527       dval = value_from_contents_and_address (type, valaddr, address);
8528       type = value_type (dval);
8529     }
8530   else
8531     dval = dval0;
8532
8533   rtype = alloc_type_copy (type);
8534   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8535   INIT_CPLUS_SPECIFIC (rtype);
8536   TYPE_NFIELDS (rtype) = nfields;
8537   TYPE_FIELDS (rtype) =
8538     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8539   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8540           sizeof (struct field) * nfields);
8541   TYPE_NAME (rtype) = ada_type_name (type);
8542   TYPE_TAG_NAME (rtype) = NULL;
8543   TYPE_FIXED_INSTANCE (rtype) = 1;
8544   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8545
8546   branch_type = to_fixed_variant_branch_type
8547     (TYPE_FIELD_TYPE (type, variant_field),
8548      cond_offset_host (valaddr,
8549                        TYPE_FIELD_BITPOS (type, variant_field)
8550                        / TARGET_CHAR_BIT),
8551      cond_offset_target (address,
8552                          TYPE_FIELD_BITPOS (type, variant_field)
8553                          / TARGET_CHAR_BIT), dval);
8554   if (branch_type == NULL)
8555     {
8556       int f;
8557
8558       for (f = variant_field + 1; f < nfields; f += 1)
8559         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8560       TYPE_NFIELDS (rtype) -= 1;
8561     }
8562   else
8563     {
8564       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8565       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8566       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8567       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8568     }
8569   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8570
8571   value_free_to_mark (mark);
8572   return rtype;
8573 }
8574
8575 /* An ordinary record type (with fixed-length fields) that describes
8576    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8577    beginning of this section].   Any necessary discriminants' values
8578    should be in DVAL, a record value; it may be NULL if the object
8579    at ADDR itself contains any necessary discriminant values.
8580    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8581    values from the record are needed.  Except in the case that DVAL,
8582    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8583    unchecked) is replaced by a particular branch of the variant.
8584
8585    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8586    is questionable and may be removed.  It can arise during the
8587    processing of an unconstrained-array-of-record type where all the
8588    variant branches have exactly the same size.  This is because in
8589    such cases, the compiler does not bother to use the XVS convention
8590    when encoding the record.  I am currently dubious of this
8591    shortcut and suspect the compiler should be altered.  FIXME.  */
8592
8593 static struct type *
8594 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8595                       CORE_ADDR address, struct value *dval)
8596 {
8597   struct type *templ_type;
8598
8599   if (TYPE_FIXED_INSTANCE (type0))
8600     return type0;
8601
8602   templ_type = dynamic_template_type (type0);
8603
8604   if (templ_type != NULL)
8605     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8606   else if (variant_field_index (type0) >= 0)
8607     {
8608       if (dval == NULL && valaddr == NULL && address == 0)
8609         return type0;
8610       return to_record_with_fixed_variant_part (type0, valaddr, address,
8611                                                 dval);
8612     }
8613   else
8614     {
8615       TYPE_FIXED_INSTANCE (type0) = 1;
8616       return type0;
8617     }
8618
8619 }
8620
8621 /* An ordinary record type (with fixed-length fields) that describes
8622    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8623    union type.  Any necessary discriminants' values should be in DVAL,
8624    a record value.  That is, this routine selects the appropriate
8625    branch of the union at ADDR according to the discriminant value
8626    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8627    it represents a variant subject to a pragma Unchecked_Union.  */
8628
8629 static struct type *
8630 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8631                               CORE_ADDR address, struct value *dval)
8632 {
8633   int which;
8634   struct type *templ_type;
8635   struct type *var_type;
8636
8637   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8638     var_type = TYPE_TARGET_TYPE (var_type0);
8639   else
8640     var_type = var_type0;
8641
8642   templ_type = ada_find_parallel_type (var_type, "___XVU");
8643
8644   if (templ_type != NULL)
8645     var_type = templ_type;
8646
8647   if (is_unchecked_variant (var_type, value_type (dval)))
8648       return var_type0;
8649   which =
8650     ada_which_variant_applies (var_type,
8651                                value_type (dval), value_contents (dval));
8652
8653   if (which < 0)
8654     return empty_record (var_type);
8655   else if (is_dynamic_field (var_type, which))
8656     return to_fixed_record_type
8657       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8658        valaddr, address, dval);
8659   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8660     return
8661       to_fixed_record_type
8662       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8663   else
8664     return TYPE_FIELD_TYPE (var_type, which);
8665 }
8666
8667 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8668    ENCODING_TYPE, a type following the GNAT conventions for discrete
8669    type encodings, only carries redundant information.  */
8670
8671 static int
8672 ada_is_redundant_range_encoding (struct type *range_type,
8673                                  struct type *encoding_type)
8674 {
8675   struct type *fixed_range_type;
8676   const char *bounds_str;
8677   int n;
8678   LONGEST lo, hi;
8679
8680   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8681
8682   if (TYPE_CODE (get_base_type (range_type))
8683       != TYPE_CODE (get_base_type (encoding_type)))
8684     {
8685       /* The compiler probably used a simple base type to describe
8686          the range type instead of the range's actual base type,
8687          expecting us to get the real base type from the encoding
8688          anyway.  In this situation, the encoding cannot be ignored
8689          as redundant.  */
8690       return 0;
8691     }
8692
8693   if (is_dynamic_type (range_type))
8694     return 0;
8695
8696   if (TYPE_NAME (encoding_type) == NULL)
8697     return 0;
8698
8699   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8700   if (bounds_str == NULL)
8701     return 0;
8702
8703   n = 8; /* Skip "___XDLU_".  */
8704   if (!ada_scan_number (bounds_str, n, &lo, &n))
8705     return 0;
8706   if (TYPE_LOW_BOUND (range_type) != lo)
8707     return 0;
8708
8709   n += 2; /* Skip the "__" separator between the two bounds.  */
8710   if (!ada_scan_number (bounds_str, n, &hi, &n))
8711     return 0;
8712   if (TYPE_HIGH_BOUND (range_type) != hi)
8713     return 0;
8714
8715   return 1;
8716 }
8717
8718 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8719    a type following the GNAT encoding for describing array type
8720    indices, only carries redundant information.  */
8721
8722 static int
8723 ada_is_redundant_index_type_desc (struct type *array_type,
8724                                   struct type *desc_type)
8725 {
8726   struct type *this_layer = check_typedef (array_type);
8727   int i;
8728
8729   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8730     {
8731       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8732                                             TYPE_FIELD_TYPE (desc_type, i)))
8733         return 0;
8734       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8735     }
8736
8737   return 1;
8738 }
8739
8740 /* Assuming that TYPE0 is an array type describing the type of a value
8741    at ADDR, and that DVAL describes a record containing any
8742    discriminants used in TYPE0, returns a type for the value that
8743    contains no dynamic components (that is, no components whose sizes
8744    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8745    true, gives an error message if the resulting type's size is over
8746    varsize_limit.  */
8747
8748 static struct type *
8749 to_fixed_array_type (struct type *type0, struct value *dval,
8750                      int ignore_too_big)
8751 {
8752   struct type *index_type_desc;
8753   struct type *result;
8754   int constrained_packed_array_p;
8755   static const char *xa_suffix = "___XA";
8756
8757   type0 = ada_check_typedef (type0);
8758   if (TYPE_FIXED_INSTANCE (type0))
8759     return type0;
8760
8761   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8762   if (constrained_packed_array_p)
8763     type0 = decode_constrained_packed_array_type (type0);
8764
8765   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8766
8767   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8768      encoding suffixed with 'P' may still be generated.  If so,
8769      it should be used to find the XA type.  */
8770
8771   if (index_type_desc == NULL)
8772     {
8773       const char *type_name = ada_type_name (type0);
8774
8775       if (type_name != NULL)
8776         {
8777           const int len = strlen (type_name);
8778           char *name = (char *) alloca (len + strlen (xa_suffix));
8779
8780           if (type_name[len - 1] == 'P')
8781             {
8782               strcpy (name, type_name);
8783               strcpy (name + len - 1, xa_suffix);
8784               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8785             }
8786         }
8787     }
8788
8789   ada_fixup_array_indexes_type (index_type_desc);
8790   if (index_type_desc != NULL
8791       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8792     {
8793       /* Ignore this ___XA parallel type, as it does not bring any
8794          useful information.  This allows us to avoid creating fixed
8795          versions of the array's index types, which would be identical
8796          to the original ones.  This, in turn, can also help avoid
8797          the creation of fixed versions of the array itself.  */
8798       index_type_desc = NULL;
8799     }
8800
8801   if (index_type_desc == NULL)
8802     {
8803       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8804
8805       /* NOTE: elt_type---the fixed version of elt_type0---should never
8806          depend on the contents of the array in properly constructed
8807          debugging data.  */
8808       /* Create a fixed version of the array element type.
8809          We're not providing the address of an element here,
8810          and thus the actual object value cannot be inspected to do
8811          the conversion.  This should not be a problem, since arrays of
8812          unconstrained objects are not allowed.  In particular, all
8813          the elements of an array of a tagged type should all be of
8814          the same type specified in the debugging info.  No need to
8815          consult the object tag.  */
8816       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8817
8818       /* Make sure we always create a new array type when dealing with
8819          packed array types, since we're going to fix-up the array
8820          type length and element bitsize a little further down.  */
8821       if (elt_type0 == elt_type && !constrained_packed_array_p)
8822         result = type0;
8823       else
8824         result = create_array_type (alloc_type_copy (type0),
8825                                     elt_type, TYPE_INDEX_TYPE (type0));
8826     }
8827   else
8828     {
8829       int i;
8830       struct type *elt_type0;
8831
8832       elt_type0 = type0;
8833       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8834         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8835
8836       /* NOTE: result---the fixed version of elt_type0---should never
8837          depend on the contents of the array in properly constructed
8838          debugging data.  */
8839       /* Create a fixed version of the array element type.
8840          We're not providing the address of an element here,
8841          and thus the actual object value cannot be inspected to do
8842          the conversion.  This should not be a problem, since arrays of
8843          unconstrained objects are not allowed.  In particular, all
8844          the elements of an array of a tagged type should all be of
8845          the same type specified in the debugging info.  No need to
8846          consult the object tag.  */
8847       result =
8848         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8849
8850       elt_type0 = type0;
8851       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8852         {
8853           struct type *range_type =
8854             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8855
8856           result = create_array_type (alloc_type_copy (elt_type0),
8857                                       result, range_type);
8858           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8859         }
8860       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8861         error (_("array type with dynamic size is larger than varsize-limit"));
8862     }
8863
8864   /* We want to preserve the type name.  This can be useful when
8865      trying to get the type name of a value that has already been
8866      printed (for instance, if the user did "print VAR; whatis $".  */
8867   TYPE_NAME (result) = TYPE_NAME (type0);
8868
8869   if (constrained_packed_array_p)
8870     {
8871       /* So far, the resulting type has been created as if the original
8872          type was a regular (non-packed) array type.  As a result, the
8873          bitsize of the array elements needs to be set again, and the array
8874          length needs to be recomputed based on that bitsize.  */
8875       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8876       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8877
8878       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8879       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8880       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8881         TYPE_LENGTH (result)++;
8882     }
8883
8884   TYPE_FIXED_INSTANCE (result) = 1;
8885   return result;
8886 }
8887
8888
8889 /* A standard type (containing no dynamically sized components)
8890    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8891    DVAL describes a record containing any discriminants used in TYPE0,
8892    and may be NULL if there are none, or if the object of type TYPE at
8893    ADDRESS or in VALADDR contains these discriminants.
8894    
8895    If CHECK_TAG is not null, in the case of tagged types, this function
8896    attempts to locate the object's tag and use it to compute the actual
8897    type.  However, when ADDRESS is null, we cannot use it to determine the
8898    location of the tag, and therefore compute the tagged type's actual type.
8899    So we return the tagged type without consulting the tag.  */
8900    
8901 static struct type *
8902 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8903                    CORE_ADDR address, struct value *dval, int check_tag)
8904 {
8905   type = ada_check_typedef (type);
8906   switch (TYPE_CODE (type))
8907     {
8908     default:
8909       return type;
8910     case TYPE_CODE_STRUCT:
8911       {
8912         struct type *static_type = to_static_fixed_type (type);
8913         struct type *fixed_record_type =
8914           to_fixed_record_type (type, valaddr, address, NULL);
8915
8916         /* If STATIC_TYPE is a tagged type and we know the object's address,
8917            then we can determine its tag, and compute the object's actual
8918            type from there.  Note that we have to use the fixed record
8919            type (the parent part of the record may have dynamic fields
8920            and the way the location of _tag is expressed may depend on
8921            them).  */
8922
8923         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8924           {
8925             struct value *tag =
8926               value_tag_from_contents_and_address
8927               (fixed_record_type,
8928                valaddr,
8929                address);
8930             struct type *real_type = type_from_tag (tag);
8931             struct value *obj =
8932               value_from_contents_and_address (fixed_record_type,
8933                                                valaddr,
8934                                                address);
8935             fixed_record_type = value_type (obj);
8936             if (real_type != NULL)
8937               return to_fixed_record_type
8938                 (real_type, NULL,
8939                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8940           }
8941
8942         /* Check to see if there is a parallel ___XVZ variable.
8943            If there is, then it provides the actual size of our type.  */
8944         else if (ada_type_name (fixed_record_type) != NULL)
8945           {
8946             const char *name = ada_type_name (fixed_record_type);
8947             char *xvz_name
8948               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8949             int xvz_found = 0;
8950             LONGEST size;
8951
8952             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8953             size = get_int_var_value (xvz_name, &xvz_found);
8954             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8955               {
8956                 fixed_record_type = copy_type (fixed_record_type);
8957                 TYPE_LENGTH (fixed_record_type) = size;
8958
8959                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8960                    observed this when the debugging info is STABS, and
8961                    apparently it is something that is hard to fix.
8962
8963                    In practice, we don't need the actual type definition
8964                    at all, because the presence of the XVZ variable allows us
8965                    to assume that there must be a XVS type as well, which we
8966                    should be able to use later, when we need the actual type
8967                    definition.
8968
8969                    In the meantime, pretend that the "fixed" type we are
8970                    returning is NOT a stub, because this can cause trouble
8971                    when using this type to create new types targeting it.
8972                    Indeed, the associated creation routines often check
8973                    whether the target type is a stub and will try to replace
8974                    it, thus using a type with the wrong size.  This, in turn,
8975                    might cause the new type to have the wrong size too.
8976                    Consider the case of an array, for instance, where the size
8977                    of the array is computed from the number of elements in
8978                    our array multiplied by the size of its element.  */
8979                 TYPE_STUB (fixed_record_type) = 0;
8980               }
8981           }
8982         return fixed_record_type;
8983       }
8984     case TYPE_CODE_ARRAY:
8985       return to_fixed_array_type (type, dval, 1);
8986     case TYPE_CODE_UNION:
8987       if (dval == NULL)
8988         return type;
8989       else
8990         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8991     }
8992 }
8993
8994 /* The same as ada_to_fixed_type_1, except that it preserves the type
8995    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8996
8997    The typedef layer needs be preserved in order to differentiate between
8998    arrays and array pointers when both types are implemented using the same
8999    fat pointer.  In the array pointer case, the pointer is encoded as
9000    a typedef of the pointer type.  For instance, considering:
9001
9002           type String_Access is access String;
9003           S1 : String_Access := null;
9004
9005    To the debugger, S1 is defined as a typedef of type String.  But
9006    to the user, it is a pointer.  So if the user tries to print S1,
9007    we should not dereference the array, but print the array address
9008    instead.
9009
9010    If we didn't preserve the typedef layer, we would lose the fact that
9011    the type is to be presented as a pointer (needs de-reference before
9012    being printed).  And we would also use the source-level type name.  */
9013
9014 struct type *
9015 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9016                    CORE_ADDR address, struct value *dval, int check_tag)
9017
9018 {
9019   struct type *fixed_type =
9020     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9021
9022   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9023       then preserve the typedef layer.
9024
9025       Implementation note: We can only check the main-type portion of
9026       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9027       from TYPE now returns a type that has the same instance flags
9028       as TYPE.  For instance, if TYPE is a "typedef const", and its
9029       target type is a "struct", then the typedef elimination will return
9030       a "const" version of the target type.  See check_typedef for more
9031       details about how the typedef layer elimination is done.
9032
9033       brobecker/2010-11-19: It seems to me that the only case where it is
9034       useful to preserve the typedef layer is when dealing with fat pointers.
9035       Perhaps, we could add a check for that and preserve the typedef layer
9036       only in that situation.  But this seems unecessary so far, probably
9037       because we call check_typedef/ada_check_typedef pretty much everywhere.
9038       */
9039   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9040       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9041           == TYPE_MAIN_TYPE (fixed_type)))
9042     return type;
9043
9044   return fixed_type;
9045 }
9046
9047 /* A standard (static-sized) type corresponding as well as possible to
9048    TYPE0, but based on no runtime data.  */
9049
9050 static struct type *
9051 to_static_fixed_type (struct type *type0)
9052 {
9053   struct type *type;
9054
9055   if (type0 == NULL)
9056     return NULL;
9057
9058   if (TYPE_FIXED_INSTANCE (type0))
9059     return type0;
9060
9061   type0 = ada_check_typedef (type0);
9062
9063   switch (TYPE_CODE (type0))
9064     {
9065     default:
9066       return type0;
9067     case TYPE_CODE_STRUCT:
9068       type = dynamic_template_type (type0);
9069       if (type != NULL)
9070         return template_to_static_fixed_type (type);
9071       else
9072         return template_to_static_fixed_type (type0);
9073     case TYPE_CODE_UNION:
9074       type = ada_find_parallel_type (type0, "___XVU");
9075       if (type != NULL)
9076         return template_to_static_fixed_type (type);
9077       else
9078         return template_to_static_fixed_type (type0);
9079     }
9080 }
9081
9082 /* A static approximation of TYPE with all type wrappers removed.  */
9083
9084 static struct type *
9085 static_unwrap_type (struct type *type)
9086 {
9087   if (ada_is_aligner_type (type))
9088     {
9089       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9090       if (ada_type_name (type1) == NULL)
9091         TYPE_NAME (type1) = ada_type_name (type);
9092
9093       return static_unwrap_type (type1);
9094     }
9095   else
9096     {
9097       struct type *raw_real_type = ada_get_base_type (type);
9098
9099       if (raw_real_type == type)
9100         return type;
9101       else
9102         return to_static_fixed_type (raw_real_type);
9103     }
9104 }
9105
9106 /* In some cases, incomplete and private types require
9107    cross-references that are not resolved as records (for example,
9108       type Foo;
9109       type FooP is access Foo;
9110       V: FooP;
9111       type Foo is array ...;
9112    ).  In these cases, since there is no mechanism for producing
9113    cross-references to such types, we instead substitute for FooP a
9114    stub enumeration type that is nowhere resolved, and whose tag is
9115    the name of the actual type.  Call these types "non-record stubs".  */
9116
9117 /* A type equivalent to TYPE that is not a non-record stub, if one
9118    exists, otherwise TYPE.  */
9119
9120 struct type *
9121 ada_check_typedef (struct type *type)
9122 {
9123   if (type == NULL)
9124     return NULL;
9125
9126   /* If our type is a typedef type of a fat pointer, then we're done.
9127      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9128      what allows us to distinguish between fat pointers that represent
9129      array types, and fat pointers that represent array access types
9130      (in both cases, the compiler implements them as fat pointers).  */
9131   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9132       && is_thick_pntr (ada_typedef_target_type (type)))
9133     return type;
9134
9135   type = check_typedef (type);
9136   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9137       || !TYPE_STUB (type)
9138       || TYPE_TAG_NAME (type) == NULL)
9139     return type;
9140   else
9141     {
9142       const char *name = TYPE_TAG_NAME (type);
9143       struct type *type1 = ada_find_any_type (name);
9144
9145       if (type1 == NULL)
9146         return type;
9147
9148       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9149          stubs pointing to arrays, as we don't create symbols for array
9150          types, only for the typedef-to-array types).  If that's the case,
9151          strip the typedef layer.  */
9152       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9153         type1 = ada_check_typedef (type1);
9154
9155       return type1;
9156     }
9157 }
9158
9159 /* A value representing the data at VALADDR/ADDRESS as described by
9160    type TYPE0, but with a standard (static-sized) type that correctly
9161    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9162    type, then return VAL0 [this feature is simply to avoid redundant
9163    creation of struct values].  */
9164
9165 static struct value *
9166 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9167                            struct value *val0)
9168 {
9169   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9170
9171   if (type == type0 && val0 != NULL)
9172     return val0;
9173   else
9174     return value_from_contents_and_address (type, 0, address);
9175 }
9176
9177 /* A value representing VAL, but with a standard (static-sized) type
9178    that correctly describes it.  Does not necessarily create a new
9179    value.  */
9180
9181 struct value *
9182 ada_to_fixed_value (struct value *val)
9183 {
9184   val = unwrap_value (val);
9185   val = ada_to_fixed_value_create (value_type (val),
9186                                       value_address (val),
9187                                       val);
9188   return val;
9189 }
9190 \f
9191
9192 /* Attributes */
9193
9194 /* Table mapping attribute numbers to names.
9195    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9196
9197 static const char *attribute_names[] = {
9198   "<?>",
9199
9200   "first",
9201   "last",
9202   "length",
9203   "image",
9204   "max",
9205   "min",
9206   "modulus",
9207   "pos",
9208   "size",
9209   "tag",
9210   "val",
9211   0
9212 };
9213
9214 const char *
9215 ada_attribute_name (enum exp_opcode n)
9216 {
9217   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9218     return attribute_names[n - OP_ATR_FIRST + 1];
9219   else
9220     return attribute_names[0];
9221 }
9222
9223 /* Evaluate the 'POS attribute applied to ARG.  */
9224
9225 static LONGEST
9226 pos_atr (struct value *arg)
9227 {
9228   struct value *val = coerce_ref (arg);
9229   struct type *type = value_type (val);
9230   LONGEST result;
9231
9232   if (!discrete_type_p (type))
9233     error (_("'POS only defined on discrete types"));
9234
9235   if (!discrete_position (type, value_as_long (val), &result))
9236     error (_("enumeration value is invalid: can't find 'POS"));
9237
9238   return result;
9239 }
9240
9241 static struct value *
9242 value_pos_atr (struct type *type, struct value *arg)
9243 {
9244   return value_from_longest (type, pos_atr (arg));
9245 }
9246
9247 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9248
9249 static struct value *
9250 value_val_atr (struct type *type, struct value *arg)
9251 {
9252   if (!discrete_type_p (type))
9253     error (_("'VAL only defined on discrete types"));
9254   if (!integer_type_p (value_type (arg)))
9255     error (_("'VAL requires integral argument"));
9256
9257   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9258     {
9259       long pos = value_as_long (arg);
9260
9261       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9262         error (_("argument to 'VAL out of range"));
9263       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9264     }
9265   else
9266     return value_from_longest (type, value_as_long (arg));
9267 }
9268 \f
9269
9270                                 /* Evaluation */
9271
9272 /* True if TYPE appears to be an Ada character type.
9273    [At the moment, this is true only for Character and Wide_Character;
9274    It is a heuristic test that could stand improvement].  */
9275
9276 int
9277 ada_is_character_type (struct type *type)
9278 {
9279   const char *name;
9280
9281   /* If the type code says it's a character, then assume it really is,
9282      and don't check any further.  */
9283   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9284     return 1;
9285   
9286   /* Otherwise, assume it's a character type iff it is a discrete type
9287      with a known character type name.  */
9288   name = ada_type_name (type);
9289   return (name != NULL
9290           && (TYPE_CODE (type) == TYPE_CODE_INT
9291               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9292           && (strcmp (name, "character") == 0
9293               || strcmp (name, "wide_character") == 0
9294               || strcmp (name, "wide_wide_character") == 0
9295               || strcmp (name, "unsigned char") == 0));
9296 }
9297
9298 /* True if TYPE appears to be an Ada string type.  */
9299
9300 int
9301 ada_is_string_type (struct type *type)
9302 {
9303   type = ada_check_typedef (type);
9304   if (type != NULL
9305       && TYPE_CODE (type) != TYPE_CODE_PTR
9306       && (ada_is_simple_array_type (type)
9307           || ada_is_array_descriptor_type (type))
9308       && ada_array_arity (type) == 1)
9309     {
9310       struct type *elttype = ada_array_element_type (type, 1);
9311
9312       return ada_is_character_type (elttype);
9313     }
9314   else
9315     return 0;
9316 }
9317
9318 /* The compiler sometimes provides a parallel XVS type for a given
9319    PAD type.  Normally, it is safe to follow the PAD type directly,
9320    but older versions of the compiler have a bug that causes the offset
9321    of its "F" field to be wrong.  Following that field in that case
9322    would lead to incorrect results, but this can be worked around
9323    by ignoring the PAD type and using the associated XVS type instead.
9324
9325    Set to True if the debugger should trust the contents of PAD types.
9326    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9327 static int trust_pad_over_xvs = 1;
9328
9329 /* True if TYPE is a struct type introduced by the compiler to force the
9330    alignment of a value.  Such types have a single field with a
9331    distinctive name.  */
9332
9333 int
9334 ada_is_aligner_type (struct type *type)
9335 {
9336   type = ada_check_typedef (type);
9337
9338   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9339     return 0;
9340
9341   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9342           && TYPE_NFIELDS (type) == 1
9343           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9344 }
9345
9346 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9347    the parallel type.  */
9348
9349 struct type *
9350 ada_get_base_type (struct type *raw_type)
9351 {
9352   struct type *real_type_namer;
9353   struct type *raw_real_type;
9354
9355   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9356     return raw_type;
9357
9358   if (ada_is_aligner_type (raw_type))
9359     /* The encoding specifies that we should always use the aligner type.
9360        So, even if this aligner type has an associated XVS type, we should
9361        simply ignore it.
9362
9363        According to the compiler gurus, an XVS type parallel to an aligner
9364        type may exist because of a stabs limitation.  In stabs, aligner
9365        types are empty because the field has a variable-sized type, and
9366        thus cannot actually be used as an aligner type.  As a result,
9367        we need the associated parallel XVS type to decode the type.
9368        Since the policy in the compiler is to not change the internal
9369        representation based on the debugging info format, we sometimes
9370        end up having a redundant XVS type parallel to the aligner type.  */
9371     return raw_type;
9372
9373   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9374   if (real_type_namer == NULL
9375       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9376       || TYPE_NFIELDS (real_type_namer) != 1)
9377     return raw_type;
9378
9379   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9380     {
9381       /* This is an older encoding form where the base type needs to be
9382          looked up by name.  We prefer the newer enconding because it is
9383          more efficient.  */
9384       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9385       if (raw_real_type == NULL)
9386         return raw_type;
9387       else
9388         return raw_real_type;
9389     }
9390
9391   /* The field in our XVS type is a reference to the base type.  */
9392   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9393 }
9394
9395 /* The type of value designated by TYPE, with all aligners removed.  */
9396
9397 struct type *
9398 ada_aligned_type (struct type *type)
9399 {
9400   if (ada_is_aligner_type (type))
9401     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9402   else
9403     return ada_get_base_type (type);
9404 }
9405
9406
9407 /* The address of the aligned value in an object at address VALADDR
9408    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9409
9410 const gdb_byte *
9411 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9412 {
9413   if (ada_is_aligner_type (type))
9414     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9415                                    valaddr +
9416                                    TYPE_FIELD_BITPOS (type,
9417                                                       0) / TARGET_CHAR_BIT);
9418   else
9419     return valaddr;
9420 }
9421
9422
9423
9424 /* The printed representation of an enumeration literal with encoded
9425    name NAME.  The value is good to the next call of ada_enum_name.  */
9426 const char *
9427 ada_enum_name (const char *name)
9428 {
9429   static char *result;
9430   static size_t result_len = 0;
9431   char *tmp;
9432
9433   /* First, unqualify the enumeration name:
9434      1. Search for the last '.' character.  If we find one, then skip
9435      all the preceding characters, the unqualified name starts
9436      right after that dot.
9437      2. Otherwise, we may be debugging on a target where the compiler
9438      translates dots into "__".  Search forward for double underscores,
9439      but stop searching when we hit an overloading suffix, which is
9440      of the form "__" followed by digits.  */
9441
9442   tmp = strrchr (name, '.');
9443   if (tmp != NULL)
9444     name = tmp + 1;
9445   else
9446     {
9447       while ((tmp = strstr (name, "__")) != NULL)
9448         {
9449           if (isdigit (tmp[2]))
9450             break;
9451           else
9452             name = tmp + 2;
9453         }
9454     }
9455
9456   if (name[0] == 'Q')
9457     {
9458       int v;
9459
9460       if (name[1] == 'U' || name[1] == 'W')
9461         {
9462           if (sscanf (name + 2, "%x", &v) != 1)
9463             return name;
9464         }
9465       else
9466         return name;
9467
9468       GROW_VECT (result, result_len, 16);
9469       if (isascii (v) && isprint (v))
9470         xsnprintf (result, result_len, "'%c'", v);
9471       else if (name[1] == 'U')
9472         xsnprintf (result, result_len, "[\"%02x\"]", v);
9473       else
9474         xsnprintf (result, result_len, "[\"%04x\"]", v);
9475
9476       return result;
9477     }
9478   else
9479     {
9480       tmp = strstr (name, "__");
9481       if (tmp == NULL)
9482         tmp = strstr (name, "$");
9483       if (tmp != NULL)
9484         {
9485           GROW_VECT (result, result_len, tmp - name + 1);
9486           strncpy (result, name, tmp - name);
9487           result[tmp - name] = '\0';
9488           return result;
9489         }
9490
9491       return name;
9492     }
9493 }
9494
9495 /* Evaluate the subexpression of EXP starting at *POS as for
9496    evaluate_type, updating *POS to point just past the evaluated
9497    expression.  */
9498
9499 static struct value *
9500 evaluate_subexp_type (struct expression *exp, int *pos)
9501 {
9502   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9503 }
9504
9505 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9506    value it wraps.  */
9507
9508 static struct value *
9509 unwrap_value (struct value *val)
9510 {
9511   struct type *type = ada_check_typedef (value_type (val));
9512
9513   if (ada_is_aligner_type (type))
9514     {
9515       struct value *v = ada_value_struct_elt (val, "F", 0);
9516       struct type *val_type = ada_check_typedef (value_type (v));
9517
9518       if (ada_type_name (val_type) == NULL)
9519         TYPE_NAME (val_type) = ada_type_name (type);
9520
9521       return unwrap_value (v);
9522     }
9523   else
9524     {
9525       struct type *raw_real_type =
9526         ada_check_typedef (ada_get_base_type (type));
9527
9528       /* If there is no parallel XVS or XVE type, then the value is
9529          already unwrapped.  Return it without further modification.  */
9530       if ((type == raw_real_type)
9531           && ada_find_parallel_type (type, "___XVE") == NULL)
9532         return val;
9533
9534       return
9535         coerce_unspec_val_to_type
9536         (val, ada_to_fixed_type (raw_real_type, 0,
9537                                  value_address (val),
9538                                  NULL, 1));
9539     }
9540 }
9541
9542 static struct value *
9543 cast_to_fixed (struct type *type, struct value *arg)
9544 {
9545   LONGEST val;
9546
9547   if (type == value_type (arg))
9548     return arg;
9549   else if (ada_is_fixed_point_type (value_type (arg)))
9550     val = ada_float_to_fixed (type,
9551                               ada_fixed_to_float (value_type (arg),
9552                                                   value_as_long (arg)));
9553   else
9554     {
9555       DOUBLEST argd = value_as_double (arg);
9556
9557       val = ada_float_to_fixed (type, argd);
9558     }
9559
9560   return value_from_longest (type, val);
9561 }
9562
9563 static struct value *
9564 cast_from_fixed (struct type *type, struct value *arg)
9565 {
9566   DOUBLEST val = ada_fixed_to_float (value_type (arg),
9567                                      value_as_long (arg));
9568
9569   return value_from_double (type, val);
9570 }
9571
9572 /* Given two array types T1 and T2, return nonzero iff both arrays
9573    contain the same number of elements.  */
9574
9575 static int
9576 ada_same_array_size_p (struct type *t1, struct type *t2)
9577 {
9578   LONGEST lo1, hi1, lo2, hi2;
9579
9580   /* Get the array bounds in order to verify that the size of
9581      the two arrays match.  */
9582   if (!get_array_bounds (t1, &lo1, &hi1)
9583       || !get_array_bounds (t2, &lo2, &hi2))
9584     error (_("unable to determine array bounds"));
9585
9586   /* To make things easier for size comparison, normalize a bit
9587      the case of empty arrays by making sure that the difference
9588      between upper bound and lower bound is always -1.  */
9589   if (lo1 > hi1)
9590     hi1 = lo1 - 1;
9591   if (lo2 > hi2)
9592     hi2 = lo2 - 1;
9593
9594   return (hi1 - lo1 == hi2 - lo2);
9595 }
9596
9597 /* Assuming that VAL is an array of integrals, and TYPE represents
9598    an array with the same number of elements, but with wider integral
9599    elements, return an array "casted" to TYPE.  In practice, this
9600    means that the returned array is built by casting each element
9601    of the original array into TYPE's (wider) element type.  */
9602
9603 static struct value *
9604 ada_promote_array_of_integrals (struct type *type, struct value *val)
9605 {
9606   struct type *elt_type = TYPE_TARGET_TYPE (type);
9607   LONGEST lo, hi;
9608   struct value *res;
9609   LONGEST i;
9610
9611   /* Verify that both val and type are arrays of scalars, and
9612      that the size of val's elements is smaller than the size
9613      of type's element.  */
9614   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9615   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9616   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9617   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9618   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9619               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9620
9621   if (!get_array_bounds (type, &lo, &hi))
9622     error (_("unable to determine array bounds"));
9623
9624   res = allocate_value (type);
9625
9626   /* Promote each array element.  */
9627   for (i = 0; i < hi - lo + 1; i++)
9628     {
9629       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9630
9631       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9632               value_contents_all (elt), TYPE_LENGTH (elt_type));
9633     }
9634
9635   return res;
9636 }
9637
9638 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9639    return the converted value.  */
9640
9641 static struct value *
9642 coerce_for_assign (struct type *type, struct value *val)
9643 {
9644   struct type *type2 = value_type (val);
9645
9646   if (type == type2)
9647     return val;
9648
9649   type2 = ada_check_typedef (type2);
9650   type = ada_check_typedef (type);
9651
9652   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9653       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9654     {
9655       val = ada_value_ind (val);
9656       type2 = value_type (val);
9657     }
9658
9659   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9660       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9661     {
9662       if (!ada_same_array_size_p (type, type2))
9663         error (_("cannot assign arrays of different length"));
9664
9665       if (is_integral_type (TYPE_TARGET_TYPE (type))
9666           && is_integral_type (TYPE_TARGET_TYPE (type2))
9667           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9668                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9669         {
9670           /* Allow implicit promotion of the array elements to
9671              a wider type.  */
9672           return ada_promote_array_of_integrals (type, val);
9673         }
9674
9675       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9676           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9677         error (_("Incompatible types in assignment"));
9678       deprecated_set_value_type (val, type);
9679     }
9680   return val;
9681 }
9682
9683 static struct value *
9684 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9685 {
9686   struct value *val;
9687   struct type *type1, *type2;
9688   LONGEST v, v1, v2;
9689
9690   arg1 = coerce_ref (arg1);
9691   arg2 = coerce_ref (arg2);
9692   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9693   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9694
9695   if (TYPE_CODE (type1) != TYPE_CODE_INT
9696       || TYPE_CODE (type2) != TYPE_CODE_INT)
9697     return value_binop (arg1, arg2, op);
9698
9699   switch (op)
9700     {
9701     case BINOP_MOD:
9702     case BINOP_DIV:
9703     case BINOP_REM:
9704       break;
9705     default:
9706       return value_binop (arg1, arg2, op);
9707     }
9708
9709   v2 = value_as_long (arg2);
9710   if (v2 == 0)
9711     error (_("second operand of %s must not be zero."), op_string (op));
9712
9713   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9714     return value_binop (arg1, arg2, op);
9715
9716   v1 = value_as_long (arg1);
9717   switch (op)
9718     {
9719     case BINOP_DIV:
9720       v = v1 / v2;
9721       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9722         v += v > 0 ? -1 : 1;
9723       break;
9724     case BINOP_REM:
9725       v = v1 % v2;
9726       if (v * v1 < 0)
9727         v -= v2;
9728       break;
9729     default:
9730       /* Should not reach this point.  */
9731       v = 0;
9732     }
9733
9734   val = allocate_value (type1);
9735   store_unsigned_integer (value_contents_raw (val),
9736                           TYPE_LENGTH (value_type (val)),
9737                           gdbarch_byte_order (get_type_arch (type1)), v);
9738   return val;
9739 }
9740
9741 static int
9742 ada_value_equal (struct value *arg1, struct value *arg2)
9743 {
9744   if (ada_is_direct_array_type (value_type (arg1))
9745       || ada_is_direct_array_type (value_type (arg2)))
9746     {
9747       /* Automatically dereference any array reference before
9748          we attempt to perform the comparison.  */
9749       arg1 = ada_coerce_ref (arg1);
9750       arg2 = ada_coerce_ref (arg2);
9751       
9752       arg1 = ada_coerce_to_simple_array (arg1);
9753       arg2 = ada_coerce_to_simple_array (arg2);
9754       if (TYPE_CODE (value_type (arg1)) != TYPE_CODE_ARRAY
9755           || TYPE_CODE (value_type (arg2)) != TYPE_CODE_ARRAY)
9756         error (_("Attempt to compare array with non-array"));
9757       /* FIXME: The following works only for types whose
9758          representations use all bits (no padding or undefined bits)
9759          and do not have user-defined equality.  */
9760       return
9761         TYPE_LENGTH (value_type (arg1)) == TYPE_LENGTH (value_type (arg2))
9762         && memcmp (value_contents (arg1), value_contents (arg2),
9763                    TYPE_LENGTH (value_type (arg1))) == 0;
9764     }
9765   return value_equal (arg1, arg2);
9766 }
9767
9768 /* Total number of component associations in the aggregate starting at
9769    index PC in EXP.  Assumes that index PC is the start of an
9770    OP_AGGREGATE.  */
9771
9772 static int
9773 num_component_specs (struct expression *exp, int pc)
9774 {
9775   int n, m, i;
9776
9777   m = exp->elts[pc + 1].longconst;
9778   pc += 3;
9779   n = 0;
9780   for (i = 0; i < m; i += 1)
9781     {
9782       switch (exp->elts[pc].opcode) 
9783         {
9784         default:
9785           n += 1;
9786           break;
9787         case OP_CHOICES:
9788           n += exp->elts[pc + 1].longconst;
9789           break;
9790         }
9791       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9792     }
9793   return n;
9794 }
9795
9796 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9797    component of LHS (a simple array or a record), updating *POS past
9798    the expression, assuming that LHS is contained in CONTAINER.  Does
9799    not modify the inferior's memory, nor does it modify LHS (unless
9800    LHS == CONTAINER).  */
9801
9802 static void
9803 assign_component (struct value *container, struct value *lhs, LONGEST index,
9804                   struct expression *exp, int *pos)
9805 {
9806   struct value *mark = value_mark ();
9807   struct value *elt;
9808
9809   if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY)
9810     {
9811       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9812       struct value *index_val = value_from_longest (index_type, index);
9813
9814       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9815     }
9816   else
9817     {
9818       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9819       elt = ada_to_fixed_value (elt);
9820     }
9821
9822   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9823     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9824   else
9825     value_assign_to_component (container, elt, 
9826                                ada_evaluate_subexp (NULL, exp, pos, 
9827                                                     EVAL_NORMAL));
9828
9829   value_free_to_mark (mark);
9830 }
9831
9832 /* Assuming that LHS represents an lvalue having a record or array
9833    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9834    of that aggregate's value to LHS, advancing *POS past the
9835    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9836    lvalue containing LHS (possibly LHS itself).  Does not modify
9837    the inferior's memory, nor does it modify the contents of 
9838    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9839
9840 static struct value *
9841 assign_aggregate (struct value *container, 
9842                   struct value *lhs, struct expression *exp, 
9843                   int *pos, enum noside noside)
9844 {
9845   struct type *lhs_type;
9846   int n = exp->elts[*pos+1].longconst;
9847   LONGEST low_index, high_index;
9848   int num_specs;
9849   LONGEST *indices;
9850   int max_indices, num_indices;
9851   int i;
9852
9853   *pos += 3;
9854   if (noside != EVAL_NORMAL)
9855     {
9856       for (i = 0; i < n; i += 1)
9857         ada_evaluate_subexp (NULL, exp, pos, noside);
9858       return container;
9859     }
9860
9861   container = ada_coerce_ref (container);
9862   if (ada_is_direct_array_type (value_type (container)))
9863     container = ada_coerce_to_simple_array (container);
9864   lhs = ada_coerce_ref (lhs);
9865   if (!deprecated_value_modifiable (lhs))
9866     error (_("Left operand of assignment is not a modifiable lvalue."));
9867
9868   lhs_type = value_type (lhs);
9869   if (ada_is_direct_array_type (lhs_type))
9870     {
9871       lhs = ada_coerce_to_simple_array (lhs);
9872       lhs_type = value_type (lhs);
9873       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9874       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9875     }
9876   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9877     {
9878       low_index = 0;
9879       high_index = num_visible_fields (lhs_type) - 1;
9880     }
9881   else
9882     error (_("Left-hand side must be array or record."));
9883
9884   num_specs = num_component_specs (exp, *pos - 3);
9885   max_indices = 4 * num_specs + 4;
9886   indices = XALLOCAVEC (LONGEST, max_indices);
9887   indices[0] = indices[1] = low_index - 1;
9888   indices[2] = indices[3] = high_index + 1;
9889   num_indices = 4;
9890
9891   for (i = 0; i < n; i += 1)
9892     {
9893       switch (exp->elts[*pos].opcode)
9894         {
9895           case OP_CHOICES:
9896             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9897                                            &num_indices, max_indices,
9898                                            low_index, high_index);
9899             break;
9900           case OP_POSITIONAL:
9901             aggregate_assign_positional (container, lhs, exp, pos, indices,
9902                                          &num_indices, max_indices,
9903                                          low_index, high_index);
9904             break;
9905           case OP_OTHERS:
9906             if (i != n-1)
9907               error (_("Misplaced 'others' clause"));
9908             aggregate_assign_others (container, lhs, exp, pos, indices, 
9909                                      num_indices, low_index, high_index);
9910             break;
9911           default:
9912             error (_("Internal error: bad aggregate clause"));
9913         }
9914     }
9915
9916   return container;
9917 }
9918               
9919 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9920    construct at *POS, updating *POS past the construct, given that
9921    the positions are relative to lower bound LOW, where HIGH is the 
9922    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9923    updating *NUM_INDICES as needed.  CONTAINER is as for
9924    assign_aggregate.  */
9925 static void
9926 aggregate_assign_positional (struct value *container,
9927                              struct value *lhs, struct expression *exp,
9928                              int *pos, LONGEST *indices, int *num_indices,
9929                              int max_indices, LONGEST low, LONGEST high) 
9930 {
9931   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9932   
9933   if (ind - 1 == high)
9934     warning (_("Extra components in aggregate ignored."));
9935   if (ind <= high)
9936     {
9937       add_component_interval (ind, ind, indices, num_indices, max_indices);
9938       *pos += 3;
9939       assign_component (container, lhs, ind, exp, pos);
9940     }
9941   else
9942     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9943 }
9944
9945 /* Assign into the components of LHS indexed by the OP_CHOICES
9946    construct at *POS, updating *POS past the construct, given that
9947    the allowable indices are LOW..HIGH.  Record the indices assigned
9948    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9949    needed.  CONTAINER is as for assign_aggregate.  */
9950 static void
9951 aggregate_assign_from_choices (struct value *container,
9952                                struct value *lhs, struct expression *exp,
9953                                int *pos, LONGEST *indices, int *num_indices,
9954                                int max_indices, LONGEST low, LONGEST high) 
9955 {
9956   int j;
9957   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9958   int choice_pos, expr_pc;
9959   int is_array = ada_is_direct_array_type (value_type (lhs));
9960
9961   choice_pos = *pos += 3;
9962
9963   for (j = 0; j < n_choices; j += 1)
9964     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9965   expr_pc = *pos;
9966   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9967   
9968   for (j = 0; j < n_choices; j += 1)
9969     {
9970       LONGEST lower, upper;
9971       enum exp_opcode op = exp->elts[choice_pos].opcode;
9972
9973       if (op == OP_DISCRETE_RANGE)
9974         {
9975           choice_pos += 1;
9976           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9977                                                       EVAL_NORMAL));
9978           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9979                                                       EVAL_NORMAL));
9980         }
9981       else if (is_array)
9982         {
9983           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9984                                                       EVAL_NORMAL));
9985           upper = lower;
9986         }
9987       else
9988         {
9989           int ind;
9990           const char *name;
9991
9992           switch (op)
9993             {
9994             case OP_NAME:
9995               name = &exp->elts[choice_pos + 2].string;
9996               break;
9997             case OP_VAR_VALUE:
9998               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
9999               break;
10000             default:
10001               error (_("Invalid record component association."));
10002             }
10003           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10004           ind = 0;
10005           if (! find_struct_field (name, value_type (lhs), 0, 
10006                                    NULL, NULL, NULL, NULL, &ind))
10007             error (_("Unknown component name: %s."), name);
10008           lower = upper = ind;
10009         }
10010
10011       if (lower <= upper && (lower < low || upper > high))
10012         error (_("Index in component association out of bounds."));
10013
10014       add_component_interval (lower, upper, indices, num_indices,
10015                               max_indices);
10016       while (lower <= upper)
10017         {
10018           int pos1;
10019
10020           pos1 = expr_pc;
10021           assign_component (container, lhs, lower, exp, &pos1);
10022           lower += 1;
10023         }
10024     }
10025 }
10026
10027 /* Assign the value of the expression in the OP_OTHERS construct in
10028    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10029    have not been previously assigned.  The index intervals already assigned
10030    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10031    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10032 static void
10033 aggregate_assign_others (struct value *container,
10034                          struct value *lhs, struct expression *exp,
10035                          int *pos, LONGEST *indices, int num_indices,
10036                          LONGEST low, LONGEST high) 
10037 {
10038   int i;
10039   int expr_pc = *pos + 1;
10040   
10041   for (i = 0; i < num_indices - 2; i += 2)
10042     {
10043       LONGEST ind;
10044
10045       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10046         {
10047           int localpos;
10048
10049           localpos = expr_pc;
10050           assign_component (container, lhs, ind, exp, &localpos);
10051         }
10052     }
10053   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10054 }
10055
10056 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10057    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10058    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10059    MAX_SIZE.  The resulting intervals do not overlap.  */
10060 static void
10061 add_component_interval (LONGEST low, LONGEST high, 
10062                         LONGEST* indices, int *size, int max_size)
10063 {
10064   int i, j;
10065
10066   for (i = 0; i < *size; i += 2) {
10067     if (high >= indices[i] && low <= indices[i + 1])
10068       {
10069         int kh;
10070
10071         for (kh = i + 2; kh < *size; kh += 2)
10072           if (high < indices[kh])
10073             break;
10074         if (low < indices[i])
10075           indices[i] = low;
10076         indices[i + 1] = indices[kh - 1];
10077         if (high > indices[i + 1])
10078           indices[i + 1] = high;
10079         memcpy (indices + i + 2, indices + kh, *size - kh);
10080         *size -= kh - i - 2;
10081         return;
10082       }
10083     else if (high < indices[i])
10084       break;
10085   }
10086         
10087   if (*size == max_size)
10088     error (_("Internal error: miscounted aggregate components."));
10089   *size += 2;
10090   for (j = *size-1; j >= i+2; j -= 1)
10091     indices[j] = indices[j - 2];
10092   indices[i] = low;
10093   indices[i + 1] = high;
10094 }
10095
10096 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10097    is different.  */
10098
10099 static struct value *
10100 ada_value_cast (struct type *type, struct value *arg2, enum noside noside)
10101 {
10102   if (type == ada_check_typedef (value_type (arg2)))
10103     return arg2;
10104
10105   if (ada_is_fixed_point_type (type))
10106     return (cast_to_fixed (type, arg2));
10107
10108   if (ada_is_fixed_point_type (value_type (arg2)))
10109     return cast_from_fixed (type, arg2);
10110
10111   return value_cast (type, arg2);
10112 }
10113
10114 /*  Evaluating Ada expressions, and printing their result.
10115     ------------------------------------------------------
10116
10117     1. Introduction:
10118     ----------------
10119
10120     We usually evaluate an Ada expression in order to print its value.
10121     We also evaluate an expression in order to print its type, which
10122     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10123     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10124     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10125     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10126     similar.
10127
10128     Evaluating expressions is a little more complicated for Ada entities
10129     than it is for entities in languages such as C.  The main reason for
10130     this is that Ada provides types whose definition might be dynamic.
10131     One example of such types is variant records.  Or another example
10132     would be an array whose bounds can only be known at run time.
10133
10134     The following description is a general guide as to what should be
10135     done (and what should NOT be done) in order to evaluate an expression
10136     involving such types, and when.  This does not cover how the semantic
10137     information is encoded by GNAT as this is covered separatly.  For the
10138     document used as the reference for the GNAT encoding, see exp_dbug.ads
10139     in the GNAT sources.
10140
10141     Ideally, we should embed each part of this description next to its
10142     associated code.  Unfortunately, the amount of code is so vast right
10143     now that it's hard to see whether the code handling a particular
10144     situation might be duplicated or not.  One day, when the code is
10145     cleaned up, this guide might become redundant with the comments
10146     inserted in the code, and we might want to remove it.
10147
10148     2. ``Fixing'' an Entity, the Simple Case:
10149     -----------------------------------------
10150
10151     When evaluating Ada expressions, the tricky issue is that they may
10152     reference entities whose type contents and size are not statically
10153     known.  Consider for instance a variant record:
10154
10155        type Rec (Empty : Boolean := True) is record
10156           case Empty is
10157              when True => null;
10158              when False => Value : Integer;
10159           end case;
10160        end record;
10161        Yes : Rec := (Empty => False, Value => 1);
10162        No  : Rec := (empty => True);
10163
10164     The size and contents of that record depends on the value of the
10165     descriminant (Rec.Empty).  At this point, neither the debugging
10166     information nor the associated type structure in GDB are able to
10167     express such dynamic types.  So what the debugger does is to create
10168     "fixed" versions of the type that applies to the specific object.
10169     We also informally refer to this opperation as "fixing" an object,
10170     which means creating its associated fixed type.
10171
10172     Example: when printing the value of variable "Yes" above, its fixed
10173     type would look like this:
10174
10175        type Rec is record
10176           Empty : Boolean;
10177           Value : Integer;
10178        end record;
10179
10180     On the other hand, if we printed the value of "No", its fixed type
10181     would become:
10182
10183        type Rec is record
10184           Empty : Boolean;
10185        end record;
10186
10187     Things become a little more complicated when trying to fix an entity
10188     with a dynamic type that directly contains another dynamic type,
10189     such as an array of variant records, for instance.  There are
10190     two possible cases: Arrays, and records.
10191
10192     3. ``Fixing'' Arrays:
10193     ---------------------
10194
10195     The type structure in GDB describes an array in terms of its bounds,
10196     and the type of its elements.  By design, all elements in the array
10197     have the same type and we cannot represent an array of variant elements
10198     using the current type structure in GDB.  When fixing an array,
10199     we cannot fix the array element, as we would potentially need one
10200     fixed type per element of the array.  As a result, the best we can do
10201     when fixing an array is to produce an array whose bounds and size
10202     are correct (allowing us to read it from memory), but without having
10203     touched its element type.  Fixing each element will be done later,
10204     when (if) necessary.
10205
10206     Arrays are a little simpler to handle than records, because the same
10207     amount of memory is allocated for each element of the array, even if
10208     the amount of space actually used by each element differs from element
10209     to element.  Consider for instance the following array of type Rec:
10210
10211        type Rec_Array is array (1 .. 2) of Rec;
10212
10213     The actual amount of memory occupied by each element might be different
10214     from element to element, depending on the value of their discriminant.
10215     But the amount of space reserved for each element in the array remains
10216     fixed regardless.  So we simply need to compute that size using
10217     the debugging information available, from which we can then determine
10218     the array size (we multiply the number of elements of the array by
10219     the size of each element).
10220
10221     The simplest case is when we have an array of a constrained element
10222     type. For instance, consider the following type declarations:
10223
10224         type Bounded_String (Max_Size : Integer) is
10225            Length : Integer;
10226            Buffer : String (1 .. Max_Size);
10227         end record;
10228         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10229
10230     In this case, the compiler describes the array as an array of
10231     variable-size elements (identified by its XVS suffix) for which
10232     the size can be read in the parallel XVZ variable.
10233
10234     In the case of an array of an unconstrained element type, the compiler
10235     wraps the array element inside a private PAD type.  This type should not
10236     be shown to the user, and must be "unwrap"'ed before printing.  Note
10237     that we also use the adjective "aligner" in our code to designate
10238     these wrapper types.
10239
10240     In some cases, the size allocated for each element is statically
10241     known.  In that case, the PAD type already has the correct size,
10242     and the array element should remain unfixed.
10243
10244     But there are cases when this size is not statically known.
10245     For instance, assuming that "Five" is an integer variable:
10246
10247         type Dynamic is array (1 .. Five) of Integer;
10248         type Wrapper (Has_Length : Boolean := False) is record
10249            Data : Dynamic;
10250            case Has_Length is
10251               when True => Length : Integer;
10252               when False => null;
10253            end case;
10254         end record;
10255         type Wrapper_Array is array (1 .. 2) of Wrapper;
10256
10257         Hello : Wrapper_Array := (others => (Has_Length => True,
10258                                              Data => (others => 17),
10259                                              Length => 1));
10260
10261
10262     The debugging info would describe variable Hello as being an
10263     array of a PAD type.  The size of that PAD type is not statically
10264     known, but can be determined using a parallel XVZ variable.
10265     In that case, a copy of the PAD type with the correct size should
10266     be used for the fixed array.
10267
10268     3. ``Fixing'' record type objects:
10269     ----------------------------------
10270
10271     Things are slightly different from arrays in the case of dynamic
10272     record types.  In this case, in order to compute the associated
10273     fixed type, we need to determine the size and offset of each of
10274     its components.  This, in turn, requires us to compute the fixed
10275     type of each of these components.
10276
10277     Consider for instance the example:
10278
10279         type Bounded_String (Max_Size : Natural) is record
10280            Str : String (1 .. Max_Size);
10281            Length : Natural;
10282         end record;
10283         My_String : Bounded_String (Max_Size => 10);
10284
10285     In that case, the position of field "Length" depends on the size
10286     of field Str, which itself depends on the value of the Max_Size
10287     discriminant.  In order to fix the type of variable My_String,
10288     we need to fix the type of field Str.  Therefore, fixing a variant
10289     record requires us to fix each of its components.
10290
10291     However, if a component does not have a dynamic size, the component
10292     should not be fixed.  In particular, fields that use a PAD type
10293     should not fixed.  Here is an example where this might happen
10294     (assuming type Rec above):
10295
10296        type Container (Big : Boolean) is record
10297           First : Rec;
10298           After : Integer;
10299           case Big is
10300              when True => Another : Integer;
10301              when False => null;
10302           end case;
10303        end record;
10304        My_Container : Container := (Big => False,
10305                                     First => (Empty => True),
10306                                     After => 42);
10307
10308     In that example, the compiler creates a PAD type for component First,
10309     whose size is constant, and then positions the component After just
10310     right after it.  The offset of component After is therefore constant
10311     in this case.
10312
10313     The debugger computes the position of each field based on an algorithm
10314     that uses, among other things, the actual position and size of the field
10315     preceding it.  Let's now imagine that the user is trying to print
10316     the value of My_Container.  If the type fixing was recursive, we would
10317     end up computing the offset of field After based on the size of the
10318     fixed version of field First.  And since in our example First has
10319     only one actual field, the size of the fixed type is actually smaller
10320     than the amount of space allocated to that field, and thus we would
10321     compute the wrong offset of field After.
10322
10323     To make things more complicated, we need to watch out for dynamic
10324     components of variant records (identified by the ___XVL suffix in
10325     the component name).  Even if the target type is a PAD type, the size
10326     of that type might not be statically known.  So the PAD type needs
10327     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10328     we might end up with the wrong size for our component.  This can be
10329     observed with the following type declarations:
10330
10331         type Octal is new Integer range 0 .. 7;
10332         type Octal_Array is array (Positive range <>) of Octal;
10333         pragma Pack (Octal_Array);
10334
10335         type Octal_Buffer (Size : Positive) is record
10336            Buffer : Octal_Array (1 .. Size);
10337            Length : Integer;
10338         end record;
10339
10340     In that case, Buffer is a PAD type whose size is unset and needs
10341     to be computed by fixing the unwrapped type.
10342
10343     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10344     ----------------------------------------------------------
10345
10346     Lastly, when should the sub-elements of an entity that remained unfixed
10347     thus far, be actually fixed?
10348
10349     The answer is: Only when referencing that element.  For instance
10350     when selecting one component of a record, this specific component
10351     should be fixed at that point in time.  Or when printing the value
10352     of a record, each component should be fixed before its value gets
10353     printed.  Similarly for arrays, the element of the array should be
10354     fixed when printing each element of the array, or when extracting
10355     one element out of that array.  On the other hand, fixing should
10356     not be performed on the elements when taking a slice of an array!
10357
10358     Note that one of the side-effects of miscomputing the offset and
10359     size of each field is that we end up also miscomputing the size
10360     of the containing type.  This can have adverse results when computing
10361     the value of an entity.  GDB fetches the value of an entity based
10362     on the size of its type, and thus a wrong size causes GDB to fetch
10363     the wrong amount of memory.  In the case where the computed size is
10364     too small, GDB fetches too little data to print the value of our
10365     entiry.  Results in this case as unpredicatble, as we usually read
10366     past the buffer containing the data =:-o.  */
10367
10368 /* Implement the evaluate_exp routine in the exp_descriptor structure
10369    for the Ada language.  */
10370
10371 static struct value *
10372 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10373                      int *pos, enum noside noside)
10374 {
10375   enum exp_opcode op;
10376   int tem;
10377   int pc;
10378   int preeval_pos;
10379   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10380   struct type *type;
10381   int nargs, oplen;
10382   struct value **argvec;
10383
10384   pc = *pos;
10385   *pos += 1;
10386   op = exp->elts[pc].opcode;
10387
10388   switch (op)
10389     {
10390     default:
10391       *pos -= 1;
10392       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10393
10394       if (noside == EVAL_NORMAL)
10395         arg1 = unwrap_value (arg1);
10396
10397       /* If evaluating an OP_DOUBLE and an EXPECT_TYPE was provided,
10398          then we need to perform the conversion manually, because
10399          evaluate_subexp_standard doesn't do it.  This conversion is
10400          necessary in Ada because the different kinds of float/fixed
10401          types in Ada have different representations.
10402
10403          Similarly, we need to perform the conversion from OP_LONG
10404          ourselves.  */
10405       if ((op == OP_DOUBLE || op == OP_LONG) && expect_type != NULL)
10406         arg1 = ada_value_cast (expect_type, arg1, noside);
10407
10408       return arg1;
10409
10410     case OP_STRING:
10411       {
10412         struct value *result;
10413
10414         *pos -= 1;
10415         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10416         /* The result type will have code OP_STRING, bashed there from 
10417            OP_ARRAY.  Bash it back.  */
10418         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10419           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10420         return result;
10421       }
10422
10423     case UNOP_CAST:
10424       (*pos) += 2;
10425       type = exp->elts[pc + 1].type;
10426       arg1 = evaluate_subexp (type, exp, pos, noside);
10427       if (noside == EVAL_SKIP)
10428         goto nosideret;
10429       arg1 = ada_value_cast (type, arg1, noside);
10430       return arg1;
10431
10432     case UNOP_QUAL:
10433       (*pos) += 2;
10434       type = exp->elts[pc + 1].type;
10435       return ada_evaluate_subexp (type, exp, pos, noside);
10436
10437     case BINOP_ASSIGN:
10438       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10439       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10440         {
10441           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10442           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10443             return arg1;
10444           return ada_value_assign (arg1, arg1);
10445         }
10446       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10447          except if the lhs of our assignment is a convenience variable.
10448          In the case of assigning to a convenience variable, the lhs
10449          should be exactly the result of the evaluation of the rhs.  */
10450       type = value_type (arg1);
10451       if (VALUE_LVAL (arg1) == lval_internalvar)
10452          type = NULL;
10453       arg2 = evaluate_subexp (type, exp, pos, noside);
10454       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10455         return arg1;
10456       if (ada_is_fixed_point_type (value_type (arg1)))
10457         arg2 = cast_to_fixed (value_type (arg1), arg2);
10458       else if (ada_is_fixed_point_type (value_type (arg2)))
10459         error
10460           (_("Fixed-point values must be assigned to fixed-point variables"));
10461       else
10462         arg2 = coerce_for_assign (value_type (arg1), arg2);
10463       return ada_value_assign (arg1, arg2);
10464
10465     case BINOP_ADD:
10466       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10467       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10468       if (noside == EVAL_SKIP)
10469         goto nosideret;
10470       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10471         return (value_from_longest
10472                  (value_type (arg1),
10473                   value_as_long (arg1) + value_as_long (arg2)));
10474       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10475         return (value_from_longest
10476                  (value_type (arg2),
10477                   value_as_long (arg1) + value_as_long (arg2)));
10478       if ((ada_is_fixed_point_type (value_type (arg1))
10479            || ada_is_fixed_point_type (value_type (arg2)))
10480           && value_type (arg1) != value_type (arg2))
10481         error (_("Operands of fixed-point addition must have the same type"));
10482       /* Do the addition, and cast the result to the type of the first
10483          argument.  We cannot cast the result to a reference type, so if
10484          ARG1 is a reference type, find its underlying type.  */
10485       type = value_type (arg1);
10486       while (TYPE_CODE (type) == TYPE_CODE_REF)
10487         type = TYPE_TARGET_TYPE (type);
10488       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10489       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10490
10491     case BINOP_SUB:
10492       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10493       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10494       if (noside == EVAL_SKIP)
10495         goto nosideret;
10496       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10497         return (value_from_longest
10498                  (value_type (arg1),
10499                   value_as_long (arg1) - value_as_long (arg2)));
10500       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10501         return (value_from_longest
10502                  (value_type (arg2),
10503                   value_as_long (arg1) - value_as_long (arg2)));
10504       if ((ada_is_fixed_point_type (value_type (arg1))
10505            || ada_is_fixed_point_type (value_type (arg2)))
10506           && value_type (arg1) != value_type (arg2))
10507         error (_("Operands of fixed-point subtraction "
10508                  "must have the same type"));
10509       /* Do the substraction, and cast the result to the type of the first
10510          argument.  We cannot cast the result to a reference type, so if
10511          ARG1 is a reference type, find its underlying type.  */
10512       type = value_type (arg1);
10513       while (TYPE_CODE (type) == TYPE_CODE_REF)
10514         type = TYPE_TARGET_TYPE (type);
10515       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10516       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10517
10518     case BINOP_MUL:
10519     case BINOP_DIV:
10520     case BINOP_REM:
10521     case BINOP_MOD:
10522       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10523       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10524       if (noside == EVAL_SKIP)
10525         goto nosideret;
10526       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10527         {
10528           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10529           return value_zero (value_type (arg1), not_lval);
10530         }
10531       else
10532         {
10533           type = builtin_type (exp->gdbarch)->builtin_double;
10534           if (ada_is_fixed_point_type (value_type (arg1)))
10535             arg1 = cast_from_fixed (type, arg1);
10536           if (ada_is_fixed_point_type (value_type (arg2)))
10537             arg2 = cast_from_fixed (type, arg2);
10538           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10539           return ada_value_binop (arg1, arg2, op);
10540         }
10541
10542     case BINOP_EQUAL:
10543     case BINOP_NOTEQUAL:
10544       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10545       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10546       if (noside == EVAL_SKIP)
10547         goto nosideret;
10548       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10549         tem = 0;
10550       else
10551         {
10552           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10553           tem = ada_value_equal (arg1, arg2);
10554         }
10555       if (op == BINOP_NOTEQUAL)
10556         tem = !tem;
10557       type = language_bool_type (exp->language_defn, exp->gdbarch);
10558       return value_from_longest (type, (LONGEST) tem);
10559
10560     case UNOP_NEG:
10561       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10562       if (noside == EVAL_SKIP)
10563         goto nosideret;
10564       else if (ada_is_fixed_point_type (value_type (arg1)))
10565         return value_cast (value_type (arg1), value_neg (arg1));
10566       else
10567         {
10568           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10569           return value_neg (arg1);
10570         }
10571
10572     case BINOP_LOGICAL_AND:
10573     case BINOP_LOGICAL_OR:
10574     case UNOP_LOGICAL_NOT:
10575       {
10576         struct value *val;
10577
10578         *pos -= 1;
10579         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10580         type = language_bool_type (exp->language_defn, exp->gdbarch);
10581         return value_cast (type, val);
10582       }
10583
10584     case BINOP_BITWISE_AND:
10585     case BINOP_BITWISE_IOR:
10586     case BINOP_BITWISE_XOR:
10587       {
10588         struct value *val;
10589
10590         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10591         *pos = pc;
10592         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10593
10594         return value_cast (value_type (arg1), val);
10595       }
10596
10597     case OP_VAR_VALUE:
10598       *pos -= 1;
10599
10600       if (noside == EVAL_SKIP)
10601         {
10602           *pos += 4;
10603           goto nosideret;
10604         }
10605
10606       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10607         /* Only encountered when an unresolved symbol occurs in a
10608            context other than a function call, in which case, it is
10609            invalid.  */
10610         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10611                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10612
10613       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10614         {
10615           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10616           /* Check to see if this is a tagged type.  We also need to handle
10617              the case where the type is a reference to a tagged type, but
10618              we have to be careful to exclude pointers to tagged types.
10619              The latter should be shown as usual (as a pointer), whereas
10620              a reference should mostly be transparent to the user.  */
10621           if (ada_is_tagged_type (type, 0)
10622               || (TYPE_CODE (type) == TYPE_CODE_REF
10623                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10624             {
10625               /* Tagged types are a little special in the fact that the real
10626                  type is dynamic and can only be determined by inspecting the
10627                  object's tag.  This means that we need to get the object's
10628                  value first (EVAL_NORMAL) and then extract the actual object
10629                  type from its tag.
10630
10631                  Note that we cannot skip the final step where we extract
10632                  the object type from its tag, because the EVAL_NORMAL phase
10633                  results in dynamic components being resolved into fixed ones.
10634                  This can cause problems when trying to print the type
10635                  description of tagged types whose parent has a dynamic size:
10636                  We use the type name of the "_parent" component in order
10637                  to print the name of the ancestor type in the type description.
10638                  If that component had a dynamic size, the resolution into
10639                  a fixed type would result in the loss of that type name,
10640                  thus preventing us from printing the name of the ancestor
10641                  type in the type description.  */
10642               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10643
10644               if (TYPE_CODE (type) != TYPE_CODE_REF)
10645                 {
10646                   struct type *actual_type;
10647
10648                   actual_type = type_from_tag (ada_value_tag (arg1));
10649                   if (actual_type == NULL)
10650                     /* If, for some reason, we were unable to determine
10651                        the actual type from the tag, then use the static
10652                        approximation that we just computed as a fallback.
10653                        This can happen if the debugging information is
10654                        incomplete, for instance.  */
10655                     actual_type = type;
10656                   return value_zero (actual_type, not_lval);
10657                 }
10658               else
10659                 {
10660                   /* In the case of a ref, ada_coerce_ref takes care
10661                      of determining the actual type.  But the evaluation
10662                      should return a ref as it should be valid to ask
10663                      for its address; so rebuild a ref after coerce.  */
10664                   arg1 = ada_coerce_ref (arg1);
10665                   return value_ref (arg1);
10666                 }
10667             }
10668
10669           /* Records and unions for which GNAT encodings have been
10670              generated need to be statically fixed as well.
10671              Otherwise, non-static fixing produces a type where
10672              all dynamic properties are removed, which prevents "ptype"
10673              from being able to completely describe the type.
10674              For instance, a case statement in a variant record would be
10675              replaced by the relevant components based on the actual
10676              value of the discriminants.  */
10677           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10678                && dynamic_template_type (type) != NULL)
10679               || (TYPE_CODE (type) == TYPE_CODE_UNION
10680                   && ada_find_parallel_type (type, "___XVU") != NULL))
10681             {
10682               *pos += 4;
10683               return value_zero (to_static_fixed_type (type), not_lval);
10684             }
10685         }
10686
10687       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10688       return ada_to_fixed_value (arg1);
10689
10690     case OP_FUNCALL:
10691       (*pos) += 2;
10692
10693       /* Allocate arg vector, including space for the function to be
10694          called in argvec[0] and a terminating NULL.  */
10695       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10696       argvec = XALLOCAVEC (struct value *, nargs + 2);
10697
10698       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10699           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10700         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10701                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10702       else
10703         {
10704           for (tem = 0; tem <= nargs; tem += 1)
10705             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10706           argvec[tem] = 0;
10707
10708           if (noside == EVAL_SKIP)
10709             goto nosideret;
10710         }
10711
10712       if (ada_is_constrained_packed_array_type
10713           (desc_base_type (value_type (argvec[0]))))
10714         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10715       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10716                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10717         /* This is a packed array that has already been fixed, and
10718            therefore already coerced to a simple array.  Nothing further
10719            to do.  */
10720         ;
10721       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10722         {
10723           /* Make sure we dereference references so that all the code below
10724              feels like it's really handling the referenced value.  Wrapping
10725              types (for alignment) may be there, so make sure we strip them as
10726              well.  */
10727           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10728         }
10729       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10730                && VALUE_LVAL (argvec[0]) == lval_memory)
10731         argvec[0] = value_addr (argvec[0]);
10732
10733       type = ada_check_typedef (value_type (argvec[0]));
10734
10735       /* Ada allows us to implicitly dereference arrays when subscripting
10736          them.  So, if this is an array typedef (encoding use for array
10737          access types encoded as fat pointers), strip it now.  */
10738       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10739         type = ada_typedef_target_type (type);
10740
10741       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10742         {
10743           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10744             {
10745             case TYPE_CODE_FUNC:
10746               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10747               break;
10748             case TYPE_CODE_ARRAY:
10749               break;
10750             case TYPE_CODE_STRUCT:
10751               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10752                 argvec[0] = ada_value_ind (argvec[0]);
10753               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10754               break;
10755             default:
10756               error (_("cannot subscript or call something of type `%s'"),
10757                      ada_type_name (value_type (argvec[0])));
10758               break;
10759             }
10760         }
10761
10762       switch (TYPE_CODE (type))
10763         {
10764         case TYPE_CODE_FUNC:
10765           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10766             {
10767               struct type *rtype = TYPE_TARGET_TYPE (type);
10768
10769               if (TYPE_GNU_IFUNC (type))
10770                 return allocate_value (TYPE_TARGET_TYPE (rtype));
10771               return allocate_value (rtype);
10772             }
10773           return call_function_by_hand (argvec[0], nargs, argvec + 1);
10774         case TYPE_CODE_INTERNAL_FUNCTION:
10775           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10776             /* We don't know anything about what the internal
10777                function might return, but we have to return
10778                something.  */
10779             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10780                                not_lval);
10781           else
10782             return call_internal_function (exp->gdbarch, exp->language_defn,
10783                                            argvec[0], nargs, argvec + 1);
10784
10785         case TYPE_CODE_STRUCT:
10786           {
10787             int arity;
10788
10789             arity = ada_array_arity (type);
10790             type = ada_array_element_type (type, nargs);
10791             if (type == NULL)
10792               error (_("cannot subscript or call a record"));
10793             if (arity != nargs)
10794               error (_("wrong number of subscripts; expecting %d"), arity);
10795             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10796               return value_zero (ada_aligned_type (type), lval_memory);
10797             return
10798               unwrap_value (ada_value_subscript
10799                             (argvec[0], nargs, argvec + 1));
10800           }
10801         case TYPE_CODE_ARRAY:
10802           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10803             {
10804               type = ada_array_element_type (type, nargs);
10805               if (type == NULL)
10806                 error (_("element type of array unknown"));
10807               else
10808                 return value_zero (ada_aligned_type (type), lval_memory);
10809             }
10810           return
10811             unwrap_value (ada_value_subscript
10812                           (ada_coerce_to_simple_array (argvec[0]),
10813                            nargs, argvec + 1));
10814         case TYPE_CODE_PTR:     /* Pointer to array */
10815           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10816             {
10817               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10818               type = ada_array_element_type (type, nargs);
10819               if (type == NULL)
10820                 error (_("element type of array unknown"));
10821               else
10822                 return value_zero (ada_aligned_type (type), lval_memory);
10823             }
10824           return
10825             unwrap_value (ada_value_ptr_subscript (argvec[0],
10826                                                    nargs, argvec + 1));
10827
10828         default:
10829           error (_("Attempt to index or call something other than an "
10830                    "array or function"));
10831         }
10832
10833     case TERNOP_SLICE:
10834       {
10835         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10836         struct value *low_bound_val =
10837           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10838         struct value *high_bound_val =
10839           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10840         LONGEST low_bound;
10841         LONGEST high_bound;
10842
10843         low_bound_val = coerce_ref (low_bound_val);
10844         high_bound_val = coerce_ref (high_bound_val);
10845         low_bound = value_as_long (low_bound_val);
10846         high_bound = value_as_long (high_bound_val);
10847
10848         if (noside == EVAL_SKIP)
10849           goto nosideret;
10850
10851         /* If this is a reference to an aligner type, then remove all
10852            the aligners.  */
10853         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10854             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10855           TYPE_TARGET_TYPE (value_type (array)) =
10856             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10857
10858         if (ada_is_constrained_packed_array_type (value_type (array)))
10859           error (_("cannot slice a packed array"));
10860
10861         /* If this is a reference to an array or an array lvalue,
10862            convert to a pointer.  */
10863         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10864             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
10865                 && VALUE_LVAL (array) == lval_memory))
10866           array = value_addr (array);
10867
10868         if (noside == EVAL_AVOID_SIDE_EFFECTS
10869             && ada_is_array_descriptor_type (ada_check_typedef
10870                                              (value_type (array))))
10871           return empty_array (ada_type_of_array (array, 0), low_bound);
10872
10873         array = ada_coerce_to_simple_array_ptr (array);
10874
10875         /* If we have more than one level of pointer indirection,
10876            dereference the value until we get only one level.  */
10877         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
10878                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
10879                      == TYPE_CODE_PTR))
10880           array = value_ind (array);
10881
10882         /* Make sure we really do have an array type before going further,
10883            to avoid a SEGV when trying to get the index type or the target
10884            type later down the road if the debug info generated by
10885            the compiler is incorrect or incomplete.  */
10886         if (!ada_is_simple_array_type (value_type (array)))
10887           error (_("cannot take slice of non-array"));
10888
10889         if (TYPE_CODE (ada_check_typedef (value_type (array)))
10890             == TYPE_CODE_PTR)
10891           {
10892             struct type *type0 = ada_check_typedef (value_type (array));
10893
10894             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10895               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
10896             else
10897               {
10898                 struct type *arr_type0 =
10899                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10900
10901                 return ada_value_slice_from_ptr (array, arr_type0,
10902                                                  longest_to_int (low_bound),
10903                                                  longest_to_int (high_bound));
10904               }
10905           }
10906         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10907           return array;
10908         else if (high_bound < low_bound)
10909           return empty_array (value_type (array), low_bound);
10910         else
10911           return ada_value_slice (array, longest_to_int (low_bound),
10912                                   longest_to_int (high_bound));
10913       }
10914
10915     case UNOP_IN_RANGE:
10916       (*pos) += 2;
10917       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10918       type = check_typedef (exp->elts[pc + 1].type);
10919
10920       if (noside == EVAL_SKIP)
10921         goto nosideret;
10922
10923       switch (TYPE_CODE (type))
10924         {
10925         default:
10926           lim_warning (_("Membership test incompletely implemented; "
10927                          "always returns true"));
10928           type = language_bool_type (exp->language_defn, exp->gdbarch);
10929           return value_from_longest (type, (LONGEST) 1);
10930
10931         case TYPE_CODE_RANGE:
10932           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10933           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10934           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10935           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10936           type = language_bool_type (exp->language_defn, exp->gdbarch);
10937           return
10938             value_from_longest (type,
10939                                 (value_less (arg1, arg3)
10940                                  || value_equal (arg1, arg3))
10941                                 && (value_less (arg2, arg1)
10942                                     || value_equal (arg2, arg1)));
10943         }
10944
10945     case BINOP_IN_BOUNDS:
10946       (*pos) += 2;
10947       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10948       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10949
10950       if (noside == EVAL_SKIP)
10951         goto nosideret;
10952
10953       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10954         {
10955           type = language_bool_type (exp->language_defn, exp->gdbarch);
10956           return value_zero (type, not_lval);
10957         }
10958
10959       tem = longest_to_int (exp->elts[pc + 1].longconst);
10960
10961       type = ada_index_type (value_type (arg2), tem, "range");
10962       if (!type)
10963         type = value_type (arg1);
10964
10965       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10966       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10967
10968       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10969       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10970       type = language_bool_type (exp->language_defn, exp->gdbarch);
10971       return
10972         value_from_longest (type,
10973                             (value_less (arg1, arg3)
10974                              || value_equal (arg1, arg3))
10975                             && (value_less (arg2, arg1)
10976                                 || value_equal (arg2, arg1)));
10977
10978     case TERNOP_IN_RANGE:
10979       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10980       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10981       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10982
10983       if (noside == EVAL_SKIP)
10984         goto nosideret;
10985
10986       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10987       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10988       type = language_bool_type (exp->language_defn, exp->gdbarch);
10989       return
10990         value_from_longest (type,
10991                             (value_less (arg1, arg3)
10992                              || value_equal (arg1, arg3))
10993                             && (value_less (arg2, arg1)
10994                                 || value_equal (arg2, arg1)));
10995
10996     case OP_ATR_FIRST:
10997     case OP_ATR_LAST:
10998     case OP_ATR_LENGTH:
10999       {
11000         struct type *type_arg;
11001
11002         if (exp->elts[*pos].opcode == OP_TYPE)
11003           {
11004             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11005             arg1 = NULL;
11006             type_arg = check_typedef (exp->elts[pc + 2].type);
11007           }
11008         else
11009           {
11010             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11011             type_arg = NULL;
11012           }
11013
11014         if (exp->elts[*pos].opcode != OP_LONG)
11015           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11016         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11017         *pos += 4;
11018
11019         if (noside == EVAL_SKIP)
11020           goto nosideret;
11021
11022         if (type_arg == NULL)
11023           {
11024             arg1 = ada_coerce_ref (arg1);
11025
11026             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11027               arg1 = ada_coerce_to_simple_array (arg1);
11028
11029             if (op == OP_ATR_LENGTH)
11030               type = builtin_type (exp->gdbarch)->builtin_int;
11031             else
11032               {
11033                 type = ada_index_type (value_type (arg1), tem,
11034                                        ada_attribute_name (op));
11035                 if (type == NULL)
11036                   type = builtin_type (exp->gdbarch)->builtin_int;
11037               }
11038
11039             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11040               return allocate_value (type);
11041
11042             switch (op)
11043               {
11044               default:          /* Should never happen.  */
11045                 error (_("unexpected attribute encountered"));
11046               case OP_ATR_FIRST:
11047                 return value_from_longest
11048                         (type, ada_array_bound (arg1, tem, 0));
11049               case OP_ATR_LAST:
11050                 return value_from_longest
11051                         (type, ada_array_bound (arg1, tem, 1));
11052               case OP_ATR_LENGTH:
11053                 return value_from_longest
11054                         (type, ada_array_length (arg1, tem));
11055               }
11056           }
11057         else if (discrete_type_p (type_arg))
11058           {
11059             struct type *range_type;
11060             const char *name = ada_type_name (type_arg);
11061
11062             range_type = NULL;
11063             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11064               range_type = to_fixed_range_type (type_arg, NULL);
11065             if (range_type == NULL)
11066               range_type = type_arg;
11067             switch (op)
11068               {
11069               default:
11070                 error (_("unexpected attribute encountered"));
11071               case OP_ATR_FIRST:
11072                 return value_from_longest 
11073                   (range_type, ada_discrete_type_low_bound (range_type));
11074               case OP_ATR_LAST:
11075                 return value_from_longest
11076                   (range_type, ada_discrete_type_high_bound (range_type));
11077               case OP_ATR_LENGTH:
11078                 error (_("the 'length attribute applies only to array types"));
11079               }
11080           }
11081         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11082           error (_("unimplemented type attribute"));
11083         else
11084           {
11085             LONGEST low, high;
11086
11087             if (ada_is_constrained_packed_array_type (type_arg))
11088               type_arg = decode_constrained_packed_array_type (type_arg);
11089
11090             if (op == OP_ATR_LENGTH)
11091               type = builtin_type (exp->gdbarch)->builtin_int;
11092             else
11093               {
11094                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11095                 if (type == NULL)
11096                   type = builtin_type (exp->gdbarch)->builtin_int;
11097               }
11098
11099             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11100               return allocate_value (type);
11101
11102             switch (op)
11103               {
11104               default:
11105                 error (_("unexpected attribute encountered"));
11106               case OP_ATR_FIRST:
11107                 low = ada_array_bound_from_type (type_arg, tem, 0);
11108                 return value_from_longest (type, low);
11109               case OP_ATR_LAST:
11110                 high = ada_array_bound_from_type (type_arg, tem, 1);
11111                 return value_from_longest (type, high);
11112               case OP_ATR_LENGTH:
11113                 low = ada_array_bound_from_type (type_arg, tem, 0);
11114                 high = ada_array_bound_from_type (type_arg, tem, 1);
11115                 return value_from_longest (type, high - low + 1);
11116               }
11117           }
11118       }
11119
11120     case OP_ATR_TAG:
11121       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11122       if (noside == EVAL_SKIP)
11123         goto nosideret;
11124
11125       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11126         return value_zero (ada_tag_type (arg1), not_lval);
11127
11128       return ada_value_tag (arg1);
11129
11130     case OP_ATR_MIN:
11131     case OP_ATR_MAX:
11132       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11133       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11134       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11135       if (noside == EVAL_SKIP)
11136         goto nosideret;
11137       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11138         return value_zero (value_type (arg1), not_lval);
11139       else
11140         {
11141           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11142           return value_binop (arg1, arg2,
11143                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11144         }
11145
11146     case OP_ATR_MODULUS:
11147       {
11148         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11149
11150         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11151         if (noside == EVAL_SKIP)
11152           goto nosideret;
11153
11154         if (!ada_is_modular_type (type_arg))
11155           error (_("'modulus must be applied to modular type"));
11156
11157         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11158                                    ada_modulus (type_arg));
11159       }
11160
11161
11162     case OP_ATR_POS:
11163       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11164       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11165       if (noside == EVAL_SKIP)
11166         goto nosideret;
11167       type = builtin_type (exp->gdbarch)->builtin_int;
11168       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11169         return value_zero (type, not_lval);
11170       else
11171         return value_pos_atr (type, arg1);
11172
11173     case OP_ATR_SIZE:
11174       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11175       type = value_type (arg1);
11176
11177       /* If the argument is a reference, then dereference its type, since
11178          the user is really asking for the size of the actual object,
11179          not the size of the pointer.  */
11180       if (TYPE_CODE (type) == TYPE_CODE_REF)
11181         type = TYPE_TARGET_TYPE (type);
11182
11183       if (noside == EVAL_SKIP)
11184         goto nosideret;
11185       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11186         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11187       else
11188         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11189                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11190
11191     case OP_ATR_VAL:
11192       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11193       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11194       type = exp->elts[pc + 2].type;
11195       if (noside == EVAL_SKIP)
11196         goto nosideret;
11197       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11198         return value_zero (type, not_lval);
11199       else
11200         return value_val_atr (type, arg1);
11201
11202     case BINOP_EXP:
11203       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11204       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11205       if (noside == EVAL_SKIP)
11206         goto nosideret;
11207       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11208         return value_zero (value_type (arg1), not_lval);
11209       else
11210         {
11211           /* For integer exponentiation operations,
11212              only promote the first argument.  */
11213           if (is_integral_type (value_type (arg2)))
11214             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11215           else
11216             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11217
11218           return value_binop (arg1, arg2, op);
11219         }
11220
11221     case UNOP_PLUS:
11222       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11223       if (noside == EVAL_SKIP)
11224         goto nosideret;
11225       else
11226         return arg1;
11227
11228     case UNOP_ABS:
11229       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11230       if (noside == EVAL_SKIP)
11231         goto nosideret;
11232       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11233       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11234         return value_neg (arg1);
11235       else
11236         return arg1;
11237
11238     case UNOP_IND:
11239       preeval_pos = *pos;
11240       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11241       if (noside == EVAL_SKIP)
11242         goto nosideret;
11243       type = ada_check_typedef (value_type (arg1));
11244       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11245         {
11246           if (ada_is_array_descriptor_type (type))
11247             /* GDB allows dereferencing GNAT array descriptors.  */
11248             {
11249               struct type *arrType = ada_type_of_array (arg1, 0);
11250
11251               if (arrType == NULL)
11252                 error (_("Attempt to dereference null array pointer."));
11253               return value_at_lazy (arrType, 0);
11254             }
11255           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11256                    || TYPE_CODE (type) == TYPE_CODE_REF
11257                    /* In C you can dereference an array to get the 1st elt.  */
11258                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11259             {
11260             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11261                only be determined by inspecting the object's tag.
11262                This means that we need to evaluate completely the
11263                expression in order to get its type.  */
11264
11265               if ((TYPE_CODE (type) == TYPE_CODE_REF
11266                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11267                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11268                 {
11269                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11270                                           EVAL_NORMAL);
11271                   type = value_type (ada_value_ind (arg1));
11272                 }
11273               else
11274                 {
11275                   type = to_static_fixed_type
11276                     (ada_aligned_type
11277                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11278                 }
11279               ada_ensure_varsize_limit (type);
11280               return value_zero (type, lval_memory);
11281             }
11282           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11283             {
11284               /* GDB allows dereferencing an int.  */
11285               if (expect_type == NULL)
11286                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11287                                    lval_memory);
11288               else
11289                 {
11290                   expect_type = 
11291                     to_static_fixed_type (ada_aligned_type (expect_type));
11292                   return value_zero (expect_type, lval_memory);
11293                 }
11294             }
11295           else
11296             error (_("Attempt to take contents of a non-pointer value."));
11297         }
11298       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11299       type = ada_check_typedef (value_type (arg1));
11300
11301       if (TYPE_CODE (type) == TYPE_CODE_INT)
11302           /* GDB allows dereferencing an int.  If we were given
11303              the expect_type, then use that as the target type.
11304              Otherwise, assume that the target type is an int.  */
11305         {
11306           if (expect_type != NULL)
11307             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11308                                               arg1));
11309           else
11310             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11311                                   (CORE_ADDR) value_as_address (arg1));
11312         }
11313
11314       if (ada_is_array_descriptor_type (type))
11315         /* GDB allows dereferencing GNAT array descriptors.  */
11316         return ada_coerce_to_simple_array (arg1);
11317       else
11318         return ada_value_ind (arg1);
11319
11320     case STRUCTOP_STRUCT:
11321       tem = longest_to_int (exp->elts[pc + 1].longconst);
11322       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11323       preeval_pos = *pos;
11324       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11325       if (noside == EVAL_SKIP)
11326         goto nosideret;
11327       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11328         {
11329           struct type *type1 = value_type (arg1);
11330
11331           if (ada_is_tagged_type (type1, 1))
11332             {
11333               type = ada_lookup_struct_elt_type (type1,
11334                                                  &exp->elts[pc + 2].string,
11335                                                  1, 1, NULL);
11336
11337               /* If the field is not found, check if it exists in the
11338                  extension of this object's type. This means that we
11339                  need to evaluate completely the expression.  */
11340
11341               if (type == NULL)
11342                 {
11343                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11344                                           EVAL_NORMAL);
11345                   arg1 = ada_value_struct_elt (arg1,
11346                                                &exp->elts[pc + 2].string,
11347                                                0);
11348                   arg1 = unwrap_value (arg1);
11349                   type = value_type (ada_to_fixed_value (arg1));
11350                 }
11351             }
11352           else
11353             type =
11354               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11355                                           0, NULL);
11356
11357           return value_zero (ada_aligned_type (type), lval_memory);
11358         }
11359       else
11360         arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11361         arg1 = unwrap_value (arg1);
11362         return ada_to_fixed_value (arg1);
11363
11364     case OP_TYPE:
11365       /* The value is not supposed to be used.  This is here to make it
11366          easier to accommodate expressions that contain types.  */
11367       (*pos) += 2;
11368       if (noside == EVAL_SKIP)
11369         goto nosideret;
11370       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11371         return allocate_value (exp->elts[pc + 1].type);
11372       else
11373         error (_("Attempt to use a type name as an expression"));
11374
11375     case OP_AGGREGATE:
11376     case OP_CHOICES:
11377     case OP_OTHERS:
11378     case OP_DISCRETE_RANGE:
11379     case OP_POSITIONAL:
11380     case OP_NAME:
11381       if (noside == EVAL_NORMAL)
11382         switch (op) 
11383           {
11384           case OP_NAME:
11385             error (_("Undefined name, ambiguous name, or renaming used in "
11386                      "component association: %s."), &exp->elts[pc+2].string);
11387           case OP_AGGREGATE:
11388             error (_("Aggregates only allowed on the right of an assignment"));
11389           default:
11390             internal_error (__FILE__, __LINE__,
11391                             _("aggregate apparently mangled"));
11392           }
11393
11394       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11395       *pos += oplen - 1;
11396       for (tem = 0; tem < nargs; tem += 1) 
11397         ada_evaluate_subexp (NULL, exp, pos, noside);
11398       goto nosideret;
11399     }
11400
11401 nosideret:
11402   return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
11403 }
11404 \f
11405
11406                                 /* Fixed point */
11407
11408 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11409    type name that encodes the 'small and 'delta information.
11410    Otherwise, return NULL.  */
11411
11412 static const char *
11413 fixed_type_info (struct type *type)
11414 {
11415   const char *name = ada_type_name (type);
11416   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11417
11418   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11419     {
11420       const char *tail = strstr (name, "___XF_");
11421
11422       if (tail == NULL)
11423         return NULL;
11424       else
11425         return tail + 5;
11426     }
11427   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11428     return fixed_type_info (TYPE_TARGET_TYPE (type));
11429   else
11430     return NULL;
11431 }
11432
11433 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11434
11435 int
11436 ada_is_fixed_point_type (struct type *type)
11437 {
11438   return fixed_type_info (type) != NULL;
11439 }
11440
11441 /* Return non-zero iff TYPE represents a System.Address type.  */
11442
11443 int
11444 ada_is_system_address_type (struct type *type)
11445 {
11446   return (TYPE_NAME (type)
11447           && strcmp (TYPE_NAME (type), "system__address") == 0);
11448 }
11449
11450 /* Assuming that TYPE is the representation of an Ada fixed-point
11451    type, return its delta, or -1 if the type is malformed and the
11452    delta cannot be determined.  */
11453
11454 DOUBLEST
11455 ada_delta (struct type *type)
11456 {
11457   const char *encoding = fixed_type_info (type);
11458   DOUBLEST num, den;
11459
11460   /* Strictly speaking, num and den are encoded as integer.  However,
11461      they may not fit into a long, and they will have to be converted
11462      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11463   if (sscanf (encoding, "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11464               &num, &den) < 2)
11465     return -1.0;
11466   else
11467     return num / den;
11468 }
11469
11470 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11471    factor ('SMALL value) associated with the type.  */
11472
11473 static DOUBLEST
11474 scaling_factor (struct type *type)
11475 {
11476   const char *encoding = fixed_type_info (type);
11477   DOUBLEST num0, den0, num1, den1;
11478   int n;
11479
11480   /* Strictly speaking, num's and den's are encoded as integer.  However,
11481      they may not fit into a long, and they will have to be converted
11482      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11483   n = sscanf (encoding,
11484               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT
11485               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11486               &num0, &den0, &num1, &den1);
11487
11488   if (n < 2)
11489     return 1.0;
11490   else if (n == 4)
11491     return num1 / den1;
11492   else
11493     return num0 / den0;
11494 }
11495
11496
11497 /* Assuming that X is the representation of a value of fixed-point
11498    type TYPE, return its floating-point equivalent.  */
11499
11500 DOUBLEST
11501 ada_fixed_to_float (struct type *type, LONGEST x)
11502 {
11503   return (DOUBLEST) x *scaling_factor (type);
11504 }
11505
11506 /* The representation of a fixed-point value of type TYPE
11507    corresponding to the value X.  */
11508
11509 LONGEST
11510 ada_float_to_fixed (struct type *type, DOUBLEST x)
11511 {
11512   return (LONGEST) (x / scaling_factor (type) + 0.5);
11513 }
11514
11515 \f
11516
11517                                 /* Range types */
11518
11519 /* Scan STR beginning at position K for a discriminant name, and
11520    return the value of that discriminant field of DVAL in *PX.  If
11521    PNEW_K is not null, put the position of the character beyond the
11522    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11523    not alter *PX and *PNEW_K if unsuccessful.  */
11524
11525 static int
11526 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11527                     int *pnew_k)
11528 {
11529   static char *bound_buffer = NULL;
11530   static size_t bound_buffer_len = 0;
11531   const char *pstart, *pend, *bound;
11532   struct value *bound_val;
11533
11534   if (dval == NULL || str == NULL || str[k] == '\0')
11535     return 0;
11536
11537   pstart = str + k;
11538   pend = strstr (pstart, "__");
11539   if (pend == NULL)
11540     {
11541       bound = pstart;
11542       k += strlen (bound);
11543     }
11544   else
11545     {
11546       int len = pend - pstart;
11547
11548       /* Strip __ and beyond.  */
11549       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11550       strncpy (bound_buffer, pstart, len);
11551       bound_buffer[len] = '\0';
11552
11553       bound = bound_buffer;
11554       k = pend - str;
11555     }
11556
11557   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11558   if (bound_val == NULL)
11559     return 0;
11560
11561   *px = value_as_long (bound_val);
11562   if (pnew_k != NULL)
11563     *pnew_k = k;
11564   return 1;
11565 }
11566
11567 /* Value of variable named NAME in the current environment.  If
11568    no such variable found, then if ERR_MSG is null, returns 0, and
11569    otherwise causes an error with message ERR_MSG.  */
11570
11571 static struct value *
11572 get_var_value (char *name, char *err_msg)
11573 {
11574   struct block_symbol *syms;
11575   int nsyms;
11576
11577   nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN,
11578                                   &syms);
11579
11580   if (nsyms != 1)
11581     {
11582       if (err_msg == NULL)
11583         return 0;
11584       else
11585         error (("%s"), err_msg);
11586     }
11587
11588   return value_of_variable (syms[0].symbol, syms[0].block);
11589 }
11590
11591 /* Value of integer variable named NAME in the current environment.  If
11592    no such variable found, returns 0, and sets *FLAG to 0.  If
11593    successful, sets *FLAG to 1.  */
11594
11595 LONGEST
11596 get_int_var_value (char *name, int *flag)
11597 {
11598   struct value *var_val = get_var_value (name, 0);
11599
11600   if (var_val == 0)
11601     {
11602       if (flag != NULL)
11603         *flag = 0;
11604       return 0;
11605     }
11606   else
11607     {
11608       if (flag != NULL)
11609         *flag = 1;
11610       return value_as_long (var_val);
11611     }
11612 }
11613
11614
11615 /* Return a range type whose base type is that of the range type named
11616    NAME in the current environment, and whose bounds are calculated
11617    from NAME according to the GNAT range encoding conventions.
11618    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11619    corresponding range type from debug information; fall back to using it
11620    if symbol lookup fails.  If a new type must be created, allocate it
11621    like ORIG_TYPE was.  The bounds information, in general, is encoded
11622    in NAME, the base type given in the named range type.  */
11623
11624 static struct type *
11625 to_fixed_range_type (struct type *raw_type, struct value *dval)
11626 {
11627   const char *name;
11628   struct type *base_type;
11629   const char *subtype_info;
11630
11631   gdb_assert (raw_type != NULL);
11632   gdb_assert (TYPE_NAME (raw_type) != NULL);
11633
11634   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11635     base_type = TYPE_TARGET_TYPE (raw_type);
11636   else
11637     base_type = raw_type;
11638
11639   name = TYPE_NAME (raw_type);
11640   subtype_info = strstr (name, "___XD");
11641   if (subtype_info == NULL)
11642     {
11643       LONGEST L = ada_discrete_type_low_bound (raw_type);
11644       LONGEST U = ada_discrete_type_high_bound (raw_type);
11645
11646       if (L < INT_MIN || U > INT_MAX)
11647         return raw_type;
11648       else
11649         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11650                                          L, U);
11651     }
11652   else
11653     {
11654       static char *name_buf = NULL;
11655       static size_t name_len = 0;
11656       int prefix_len = subtype_info - name;
11657       LONGEST L, U;
11658       struct type *type;
11659       const char *bounds_str;
11660       int n;
11661
11662       GROW_VECT (name_buf, name_len, prefix_len + 5);
11663       strncpy (name_buf, name, prefix_len);
11664       name_buf[prefix_len] = '\0';
11665
11666       subtype_info += 5;
11667       bounds_str = strchr (subtype_info, '_');
11668       n = 1;
11669
11670       if (*subtype_info == 'L')
11671         {
11672           if (!ada_scan_number (bounds_str, n, &L, &n)
11673               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11674             return raw_type;
11675           if (bounds_str[n] == '_')
11676             n += 2;
11677           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11678             n += 1;
11679           subtype_info += 1;
11680         }
11681       else
11682         {
11683           int ok;
11684
11685           strcpy (name_buf + prefix_len, "___L");
11686           L = get_int_var_value (name_buf, &ok);
11687           if (!ok)
11688             {
11689               lim_warning (_("Unknown lower bound, using 1."));
11690               L = 1;
11691             }
11692         }
11693
11694       if (*subtype_info == 'U')
11695         {
11696           if (!ada_scan_number (bounds_str, n, &U, &n)
11697               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11698             return raw_type;
11699         }
11700       else
11701         {
11702           int ok;
11703
11704           strcpy (name_buf + prefix_len, "___U");
11705           U = get_int_var_value (name_buf, &ok);
11706           if (!ok)
11707             {
11708               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11709               U = L;
11710             }
11711         }
11712
11713       type = create_static_range_type (alloc_type_copy (raw_type),
11714                                        base_type, L, U);
11715       TYPE_NAME (type) = name;
11716       return type;
11717     }
11718 }
11719
11720 /* True iff NAME is the name of a range type.  */
11721
11722 int
11723 ada_is_range_type_name (const char *name)
11724 {
11725   return (name != NULL && strstr (name, "___XD"));
11726 }
11727 \f
11728
11729                                 /* Modular types */
11730
11731 /* True iff TYPE is an Ada modular type.  */
11732
11733 int
11734 ada_is_modular_type (struct type *type)
11735 {
11736   struct type *subranged_type = get_base_type (type);
11737
11738   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11739           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11740           && TYPE_UNSIGNED (subranged_type));
11741 }
11742
11743 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11744
11745 ULONGEST
11746 ada_modulus (struct type *type)
11747 {
11748   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11749 }
11750 \f
11751
11752 /* Ada exception catchpoint support:
11753    ---------------------------------
11754
11755    We support 3 kinds of exception catchpoints:
11756      . catchpoints on Ada exceptions
11757      . catchpoints on unhandled Ada exceptions
11758      . catchpoints on failed assertions
11759
11760    Exceptions raised during failed assertions, or unhandled exceptions
11761    could perfectly be caught with the general catchpoint on Ada exceptions.
11762    However, we can easily differentiate these two special cases, and having
11763    the option to distinguish these two cases from the rest can be useful
11764    to zero-in on certain situations.
11765
11766    Exception catchpoints are a specialized form of breakpoint,
11767    since they rely on inserting breakpoints inside known routines
11768    of the GNAT runtime.  The implementation therefore uses a standard
11769    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11770    of breakpoint_ops.
11771
11772    Support in the runtime for exception catchpoints have been changed
11773    a few times already, and these changes affect the implementation
11774    of these catchpoints.  In order to be able to support several
11775    variants of the runtime, we use a sniffer that will determine
11776    the runtime variant used by the program being debugged.  */
11777
11778 /* Ada's standard exceptions.
11779
11780    The Ada 83 standard also defined Numeric_Error.  But there so many
11781    situations where it was unclear from the Ada 83 Reference Manual
11782    (RM) whether Constraint_Error or Numeric_Error should be raised,
11783    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11784    Interpretation saying that anytime the RM says that Numeric_Error
11785    should be raised, the implementation may raise Constraint_Error.
11786    Ada 95 went one step further and pretty much removed Numeric_Error
11787    from the list of standard exceptions (it made it a renaming of
11788    Constraint_Error, to help preserve compatibility when compiling
11789    an Ada83 compiler). As such, we do not include Numeric_Error from
11790    this list of standard exceptions.  */
11791
11792 static char *standard_exc[] = {
11793   "constraint_error",
11794   "program_error",
11795   "storage_error",
11796   "tasking_error"
11797 };
11798
11799 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11800
11801 /* A structure that describes how to support exception catchpoints
11802    for a given executable.  */
11803
11804 struct exception_support_info
11805 {
11806    /* The name of the symbol to break on in order to insert
11807       a catchpoint on exceptions.  */
11808    const char *catch_exception_sym;
11809
11810    /* The name of the symbol to break on in order to insert
11811       a catchpoint on unhandled exceptions.  */
11812    const char *catch_exception_unhandled_sym;
11813
11814    /* The name of the symbol to break on in order to insert
11815       a catchpoint on failed assertions.  */
11816    const char *catch_assert_sym;
11817
11818    /* Assuming that the inferior just triggered an unhandled exception
11819       catchpoint, this function is responsible for returning the address
11820       in inferior memory where the name of that exception is stored.
11821       Return zero if the address could not be computed.  */
11822    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11823 };
11824
11825 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11826 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11827
11828 /* The following exception support info structure describes how to
11829    implement exception catchpoints with the latest version of the
11830    Ada runtime (as of 2007-03-06).  */
11831
11832 static const struct exception_support_info default_exception_support_info =
11833 {
11834   "__gnat_debug_raise_exception", /* catch_exception_sym */
11835   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11836   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11837   ada_unhandled_exception_name_addr
11838 };
11839
11840 /* The following exception support info structure describes how to
11841    implement exception catchpoints with a slightly older version
11842    of the Ada runtime.  */
11843
11844 static const struct exception_support_info exception_support_info_fallback =
11845 {
11846   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11847   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11848   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11849   ada_unhandled_exception_name_addr_from_raise
11850 };
11851
11852 /* Return nonzero if we can detect the exception support routines
11853    described in EINFO.
11854
11855    This function errors out if an abnormal situation is detected
11856    (for instance, if we find the exception support routines, but
11857    that support is found to be incomplete).  */
11858
11859 static int
11860 ada_has_this_exception_support (const struct exception_support_info *einfo)
11861 {
11862   struct symbol *sym;
11863
11864   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11865      that should be compiled with debugging information.  As a result, we
11866      expect to find that symbol in the symtabs.  */
11867
11868   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11869   if (sym == NULL)
11870     {
11871       /* Perhaps we did not find our symbol because the Ada runtime was
11872          compiled without debugging info, or simply stripped of it.
11873          It happens on some GNU/Linux distributions for instance, where
11874          users have to install a separate debug package in order to get
11875          the runtime's debugging info.  In that situation, let the user
11876          know why we cannot insert an Ada exception catchpoint.
11877
11878          Note: Just for the purpose of inserting our Ada exception
11879          catchpoint, we could rely purely on the associated minimal symbol.
11880          But we would be operating in degraded mode anyway, since we are
11881          still lacking the debugging info needed later on to extract
11882          the name of the exception being raised (this name is printed in
11883          the catchpoint message, and is also used when trying to catch
11884          a specific exception).  We do not handle this case for now.  */
11885       struct bound_minimal_symbol msym
11886         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11887
11888       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11889         error (_("Your Ada runtime appears to be missing some debugging "
11890                  "information.\nCannot insert Ada exception catchpoint "
11891                  "in this configuration."));
11892
11893       return 0;
11894     }
11895
11896   /* Make sure that the symbol we found corresponds to a function.  */
11897
11898   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11899     error (_("Symbol \"%s\" is not a function (class = %d)"),
11900            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
11901
11902   return 1;
11903 }
11904
11905 /* Inspect the Ada runtime and determine which exception info structure
11906    should be used to provide support for exception catchpoints.
11907
11908    This function will always set the per-inferior exception_info,
11909    or raise an error.  */
11910
11911 static void
11912 ada_exception_support_info_sniffer (void)
11913 {
11914   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11915
11916   /* If the exception info is already known, then no need to recompute it.  */
11917   if (data->exception_info != NULL)
11918     return;
11919
11920   /* Check the latest (default) exception support info.  */
11921   if (ada_has_this_exception_support (&default_exception_support_info))
11922     {
11923       data->exception_info = &default_exception_support_info;
11924       return;
11925     }
11926
11927   /* Try our fallback exception suport info.  */
11928   if (ada_has_this_exception_support (&exception_support_info_fallback))
11929     {
11930       data->exception_info = &exception_support_info_fallback;
11931       return;
11932     }
11933
11934   /* Sometimes, it is normal for us to not be able to find the routine
11935      we are looking for.  This happens when the program is linked with
11936      the shared version of the GNAT runtime, and the program has not been
11937      started yet.  Inform the user of these two possible causes if
11938      applicable.  */
11939
11940   if (ada_update_initial_language (language_unknown) != language_ada)
11941     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11942
11943   /* If the symbol does not exist, then check that the program is
11944      already started, to make sure that shared libraries have been
11945      loaded.  If it is not started, this may mean that the symbol is
11946      in a shared library.  */
11947
11948   if (ptid_get_pid (inferior_ptid) == 0)
11949     error (_("Unable to insert catchpoint. Try to start the program first."));
11950
11951   /* At this point, we know that we are debugging an Ada program and
11952      that the inferior has been started, but we still are not able to
11953      find the run-time symbols.  That can mean that we are in
11954      configurable run time mode, or that a-except as been optimized
11955      out by the linker...  In any case, at this point it is not worth
11956      supporting this feature.  */
11957
11958   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11959 }
11960
11961 /* True iff FRAME is very likely to be that of a function that is
11962    part of the runtime system.  This is all very heuristic, but is
11963    intended to be used as advice as to what frames are uninteresting
11964    to most users.  */
11965
11966 static int
11967 is_known_support_routine (struct frame_info *frame)
11968 {
11969   struct symtab_and_line sal;
11970   char *func_name;
11971   enum language func_lang;
11972   int i;
11973   const char *fullname;
11974
11975   /* If this code does not have any debugging information (no symtab),
11976      This cannot be any user code.  */
11977
11978   find_frame_sal (frame, &sal);
11979   if (sal.symtab == NULL)
11980     return 1;
11981
11982   /* If there is a symtab, but the associated source file cannot be
11983      located, then assume this is not user code:  Selecting a frame
11984      for which we cannot display the code would not be very helpful
11985      for the user.  This should also take care of case such as VxWorks
11986      where the kernel has some debugging info provided for a few units.  */
11987
11988   fullname = symtab_to_fullname (sal.symtab);
11989   if (access (fullname, R_OK) != 0)
11990     return 1;
11991
11992   /* Check the unit filename againt the Ada runtime file naming.
11993      We also check the name of the objfile against the name of some
11994      known system libraries that sometimes come with debugging info
11995      too.  */
11996
11997   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11998     {
11999       re_comp (known_runtime_file_name_patterns[i]);
12000       if (re_exec (lbasename (sal.symtab->filename)))
12001         return 1;
12002       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12003           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12004         return 1;
12005     }
12006
12007   /* Check whether the function is a GNAT-generated entity.  */
12008
12009   find_frame_funname (frame, &func_name, &func_lang, NULL);
12010   if (func_name == NULL)
12011     return 1;
12012
12013   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12014     {
12015       re_comp (known_auxiliary_function_name_patterns[i]);
12016       if (re_exec (func_name))
12017         {
12018           xfree (func_name);
12019           return 1;
12020         }
12021     }
12022
12023   xfree (func_name);
12024   return 0;
12025 }
12026
12027 /* Find the first frame that contains debugging information and that is not
12028    part of the Ada run-time, starting from FI and moving upward.  */
12029
12030 void
12031 ada_find_printable_frame (struct frame_info *fi)
12032 {
12033   for (; fi != NULL; fi = get_prev_frame (fi))
12034     {
12035       if (!is_known_support_routine (fi))
12036         {
12037           select_frame (fi);
12038           break;
12039         }
12040     }
12041
12042 }
12043
12044 /* Assuming that the inferior just triggered an unhandled exception
12045    catchpoint, return the address in inferior memory where the name
12046    of the exception is stored.
12047    
12048    Return zero if the address could not be computed.  */
12049
12050 static CORE_ADDR
12051 ada_unhandled_exception_name_addr (void)
12052 {
12053   return parse_and_eval_address ("e.full_name");
12054 }
12055
12056 /* Same as ada_unhandled_exception_name_addr, except that this function
12057    should be used when the inferior uses an older version of the runtime,
12058    where the exception name needs to be extracted from a specific frame
12059    several frames up in the callstack.  */
12060
12061 static CORE_ADDR
12062 ada_unhandled_exception_name_addr_from_raise (void)
12063 {
12064   int frame_level;
12065   struct frame_info *fi;
12066   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12067   struct cleanup *old_chain;
12068
12069   /* To determine the name of this exception, we need to select
12070      the frame corresponding to RAISE_SYM_NAME.  This frame is
12071      at least 3 levels up, so we simply skip the first 3 frames
12072      without checking the name of their associated function.  */
12073   fi = get_current_frame ();
12074   for (frame_level = 0; frame_level < 3; frame_level += 1)
12075     if (fi != NULL)
12076       fi = get_prev_frame (fi); 
12077
12078   old_chain = make_cleanup (null_cleanup, NULL);
12079   while (fi != NULL)
12080     {
12081       char *func_name;
12082       enum language func_lang;
12083
12084       find_frame_funname (fi, &func_name, &func_lang, NULL);
12085       if (func_name != NULL)
12086         {
12087           make_cleanup (xfree, func_name);
12088
12089           if (strcmp (func_name,
12090                       data->exception_info->catch_exception_sym) == 0)
12091             break; /* We found the frame we were looking for...  */
12092           fi = get_prev_frame (fi);
12093         }
12094     }
12095   do_cleanups (old_chain);
12096
12097   if (fi == NULL)
12098     return 0;
12099
12100   select_frame (fi);
12101   return parse_and_eval_address ("id.full_name");
12102 }
12103
12104 /* Assuming the inferior just triggered an Ada exception catchpoint
12105    (of any type), return the address in inferior memory where the name
12106    of the exception is stored, if applicable.
12107
12108    Return zero if the address could not be computed, or if not relevant.  */
12109
12110 static CORE_ADDR
12111 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12112                            struct breakpoint *b)
12113 {
12114   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12115
12116   switch (ex)
12117     {
12118       case ada_catch_exception:
12119         return (parse_and_eval_address ("e.full_name"));
12120         break;
12121
12122       case ada_catch_exception_unhandled:
12123         return data->exception_info->unhandled_exception_name_addr ();
12124         break;
12125       
12126       case ada_catch_assert:
12127         return 0;  /* Exception name is not relevant in this case.  */
12128         break;
12129
12130       default:
12131         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12132         break;
12133     }
12134
12135   return 0; /* Should never be reached.  */
12136 }
12137
12138 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12139    any error that ada_exception_name_addr_1 might cause to be thrown.
12140    When an error is intercepted, a warning with the error message is printed,
12141    and zero is returned.  */
12142
12143 static CORE_ADDR
12144 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12145                          struct breakpoint *b)
12146 {
12147   CORE_ADDR result = 0;
12148
12149   TRY
12150     {
12151       result = ada_exception_name_addr_1 (ex, b);
12152     }
12153
12154   CATCH (e, RETURN_MASK_ERROR)
12155     {
12156       warning (_("failed to get exception name: %s"), e.message);
12157       return 0;
12158     }
12159   END_CATCH
12160
12161   return result;
12162 }
12163
12164 static char *ada_exception_catchpoint_cond_string (const char *excep_string);
12165
12166 /* Ada catchpoints.
12167
12168    In the case of catchpoints on Ada exceptions, the catchpoint will
12169    stop the target on every exception the program throws.  When a user
12170    specifies the name of a specific exception, we translate this
12171    request into a condition expression (in text form), and then parse
12172    it into an expression stored in each of the catchpoint's locations.
12173    We then use this condition to check whether the exception that was
12174    raised is the one the user is interested in.  If not, then the
12175    target is resumed again.  We store the name of the requested
12176    exception, in order to be able to re-set the condition expression
12177    when symbols change.  */
12178
12179 /* An instance of this type is used to represent an Ada catchpoint
12180    breakpoint location.  It includes a "struct bp_location" as a kind
12181    of base class; users downcast to "struct bp_location *" when
12182    needed.  */
12183
12184 struct ada_catchpoint_location
12185 {
12186   /* The base class.  */
12187   struct bp_location base;
12188
12189   /* The condition that checks whether the exception that was raised
12190      is the specific exception the user specified on catchpoint
12191      creation.  */
12192   struct expression *excep_cond_expr;
12193 };
12194
12195 /* Implement the DTOR method in the bp_location_ops structure for all
12196    Ada exception catchpoint kinds.  */
12197
12198 static void
12199 ada_catchpoint_location_dtor (struct bp_location *bl)
12200 {
12201   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
12202
12203   xfree (al->excep_cond_expr);
12204 }
12205
12206 /* The vtable to be used in Ada catchpoint locations.  */
12207
12208 static const struct bp_location_ops ada_catchpoint_location_ops =
12209 {
12210   ada_catchpoint_location_dtor
12211 };
12212
12213 /* An instance of this type is used to represent an Ada catchpoint.
12214    It includes a "struct breakpoint" as a kind of base class; users
12215    downcast to "struct breakpoint *" when needed.  */
12216
12217 struct ada_catchpoint
12218 {
12219   /* The base class.  */
12220   struct breakpoint base;
12221
12222   /* The name of the specific exception the user specified.  */
12223   char *excep_string;
12224 };
12225
12226 /* Parse the exception condition string in the context of each of the
12227    catchpoint's locations, and store them for later evaluation.  */
12228
12229 static void
12230 create_excep_cond_exprs (struct ada_catchpoint *c)
12231 {
12232   struct cleanup *old_chain;
12233   struct bp_location *bl;
12234   char *cond_string;
12235
12236   /* Nothing to do if there's no specific exception to catch.  */
12237   if (c->excep_string == NULL)
12238     return;
12239
12240   /* Same if there are no locations... */
12241   if (c->base.loc == NULL)
12242     return;
12243
12244   /* Compute the condition expression in text form, from the specific
12245      expection we want to catch.  */
12246   cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
12247   old_chain = make_cleanup (xfree, cond_string);
12248
12249   /* Iterate over all the catchpoint's locations, and parse an
12250      expression for each.  */
12251   for (bl = c->base.loc; bl != NULL; bl = bl->next)
12252     {
12253       struct ada_catchpoint_location *ada_loc
12254         = (struct ada_catchpoint_location *) bl;
12255       struct expression *exp = NULL;
12256
12257       if (!bl->shlib_disabled)
12258         {
12259           const char *s;
12260
12261           s = cond_string;
12262           TRY
12263             {
12264               exp = parse_exp_1 (&s, bl->address,
12265                                  block_for_pc (bl->address), 0);
12266             }
12267           CATCH (e, RETURN_MASK_ERROR)
12268             {
12269               warning (_("failed to reevaluate internal exception condition "
12270                          "for catchpoint %d: %s"),
12271                        c->base.number, e.message);
12272               /* There is a bug in GCC on sparc-solaris when building with
12273                  optimization which causes EXP to change unexpectedly
12274                  (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56982).
12275                  The problem should be fixed starting with GCC 4.9.
12276                  In the meantime, work around it by forcing EXP back
12277                  to NULL.  */
12278               exp = NULL;
12279             }
12280           END_CATCH
12281         }
12282
12283       ada_loc->excep_cond_expr = exp;
12284     }
12285
12286   do_cleanups (old_chain);
12287 }
12288
12289 /* Implement the DTOR method in the breakpoint_ops structure for all
12290    exception catchpoint kinds.  */
12291
12292 static void
12293 dtor_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12294 {
12295   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12296
12297   xfree (c->excep_string);
12298
12299   bkpt_breakpoint_ops.dtor (b);
12300 }
12301
12302 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12303    structure for all exception catchpoint kinds.  */
12304
12305 static struct bp_location *
12306 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12307                              struct breakpoint *self)
12308 {
12309   struct ada_catchpoint_location *loc;
12310
12311   loc = XNEW (struct ada_catchpoint_location);
12312   init_bp_location (&loc->base, &ada_catchpoint_location_ops, self);
12313   loc->excep_cond_expr = NULL;
12314   return &loc->base;
12315 }
12316
12317 /* Implement the RE_SET method in the breakpoint_ops structure for all
12318    exception catchpoint kinds.  */
12319
12320 static void
12321 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12322 {
12323   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12324
12325   /* Call the base class's method.  This updates the catchpoint's
12326      locations.  */
12327   bkpt_breakpoint_ops.re_set (b);
12328
12329   /* Reparse the exception conditional expressions.  One for each
12330      location.  */
12331   create_excep_cond_exprs (c);
12332 }
12333
12334 /* Returns true if we should stop for this breakpoint hit.  If the
12335    user specified a specific exception, we only want to cause a stop
12336    if the program thrown that exception.  */
12337
12338 static int
12339 should_stop_exception (const struct bp_location *bl)
12340 {
12341   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12342   const struct ada_catchpoint_location *ada_loc
12343     = (const struct ada_catchpoint_location *) bl;
12344   int stop;
12345
12346   /* With no specific exception, should always stop.  */
12347   if (c->excep_string == NULL)
12348     return 1;
12349
12350   if (ada_loc->excep_cond_expr == NULL)
12351     {
12352       /* We will have a NULL expression if back when we were creating
12353          the expressions, this location's had failed to parse.  */
12354       return 1;
12355     }
12356
12357   stop = 1;
12358   TRY
12359     {
12360       struct value *mark;
12361
12362       mark = value_mark ();
12363       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr));
12364       value_free_to_mark (mark);
12365     }
12366   CATCH (ex, RETURN_MASK_ALL)
12367     {
12368       exception_fprintf (gdb_stderr, ex,
12369                          _("Error in testing exception condition:\n"));
12370     }
12371   END_CATCH
12372
12373   return stop;
12374 }
12375
12376 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12377    for all exception catchpoint kinds.  */
12378
12379 static void
12380 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12381 {
12382   bs->stop = should_stop_exception (bs->bp_location_at);
12383 }
12384
12385 /* Implement the PRINT_IT method in the breakpoint_ops structure
12386    for all exception catchpoint kinds.  */
12387
12388 static enum print_stop_action
12389 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12390 {
12391   struct ui_out *uiout = current_uiout;
12392   struct breakpoint *b = bs->breakpoint_at;
12393
12394   annotate_catchpoint (b->number);
12395
12396   if (ui_out_is_mi_like_p (uiout))
12397     {
12398       ui_out_field_string (uiout, "reason",
12399                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12400       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12401     }
12402
12403   ui_out_text (uiout,
12404                b->disposition == disp_del ? "\nTemporary catchpoint "
12405                                           : "\nCatchpoint ");
12406   ui_out_field_int (uiout, "bkptno", b->number);
12407   ui_out_text (uiout, ", ");
12408
12409   switch (ex)
12410     {
12411       case ada_catch_exception:
12412       case ada_catch_exception_unhandled:
12413         {
12414           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12415           char exception_name[256];
12416
12417           if (addr != 0)
12418             {
12419               read_memory (addr, (gdb_byte *) exception_name,
12420                            sizeof (exception_name) - 1);
12421               exception_name [sizeof (exception_name) - 1] = '\0';
12422             }
12423           else
12424             {
12425               /* For some reason, we were unable to read the exception
12426                  name.  This could happen if the Runtime was compiled
12427                  without debugging info, for instance.  In that case,
12428                  just replace the exception name by the generic string
12429                  "exception" - it will read as "an exception" in the
12430                  notification we are about to print.  */
12431               memcpy (exception_name, "exception", sizeof ("exception"));
12432             }
12433           /* In the case of unhandled exception breakpoints, we print
12434              the exception name as "unhandled EXCEPTION_NAME", to make
12435              it clearer to the user which kind of catchpoint just got
12436              hit.  We used ui_out_text to make sure that this extra
12437              info does not pollute the exception name in the MI case.  */
12438           if (ex == ada_catch_exception_unhandled)
12439             ui_out_text (uiout, "unhandled ");
12440           ui_out_field_string (uiout, "exception-name", exception_name);
12441         }
12442         break;
12443       case ada_catch_assert:
12444         /* In this case, the name of the exception is not really
12445            important.  Just print "failed assertion" to make it clearer
12446            that his program just hit an assertion-failure catchpoint.
12447            We used ui_out_text because this info does not belong in
12448            the MI output.  */
12449         ui_out_text (uiout, "failed assertion");
12450         break;
12451     }
12452   ui_out_text (uiout, " at ");
12453   ada_find_printable_frame (get_current_frame ());
12454
12455   return PRINT_SRC_AND_LOC;
12456 }
12457
12458 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12459    for all exception catchpoint kinds.  */
12460
12461 static void
12462 print_one_exception (enum ada_exception_catchpoint_kind ex,
12463                      struct breakpoint *b, struct bp_location **last_loc)
12464
12465   struct ui_out *uiout = current_uiout;
12466   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12467   struct value_print_options opts;
12468
12469   get_user_print_options (&opts);
12470   if (opts.addressprint)
12471     {
12472       annotate_field (4);
12473       ui_out_field_core_addr (uiout, "addr", b->loc->gdbarch, b->loc->address);
12474     }
12475
12476   annotate_field (5);
12477   *last_loc = b->loc;
12478   switch (ex)
12479     {
12480       case ada_catch_exception:
12481         if (c->excep_string != NULL)
12482           {
12483             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12484
12485             ui_out_field_string (uiout, "what", msg);
12486             xfree (msg);
12487           }
12488         else
12489           ui_out_field_string (uiout, "what", "all Ada exceptions");
12490         
12491         break;
12492
12493       case ada_catch_exception_unhandled:
12494         ui_out_field_string (uiout, "what", "unhandled Ada exceptions");
12495         break;
12496       
12497       case ada_catch_assert:
12498         ui_out_field_string (uiout, "what", "failed Ada assertions");
12499         break;
12500
12501       default:
12502         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12503         break;
12504     }
12505 }
12506
12507 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12508    for all exception catchpoint kinds.  */
12509
12510 static void
12511 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12512                          struct breakpoint *b)
12513 {
12514   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12515   struct ui_out *uiout = current_uiout;
12516
12517   ui_out_text (uiout, b->disposition == disp_del ? _("Temporary catchpoint ")
12518                                                  : _("Catchpoint "));
12519   ui_out_field_int (uiout, "bkptno", b->number);
12520   ui_out_text (uiout, ": ");
12521
12522   switch (ex)
12523     {
12524       case ada_catch_exception:
12525         if (c->excep_string != NULL)
12526           {
12527             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12528             struct cleanup *old_chain = make_cleanup (xfree, info);
12529
12530             ui_out_text (uiout, info);
12531             do_cleanups (old_chain);
12532           }
12533         else
12534           ui_out_text (uiout, _("all Ada exceptions"));
12535         break;
12536
12537       case ada_catch_exception_unhandled:
12538         ui_out_text (uiout, _("unhandled Ada exceptions"));
12539         break;
12540       
12541       case ada_catch_assert:
12542         ui_out_text (uiout, _("failed Ada assertions"));
12543         break;
12544
12545       default:
12546         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12547         break;
12548     }
12549 }
12550
12551 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12552    for all exception catchpoint kinds.  */
12553
12554 static void
12555 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12556                           struct breakpoint *b, struct ui_file *fp)
12557 {
12558   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12559
12560   switch (ex)
12561     {
12562       case ada_catch_exception:
12563         fprintf_filtered (fp, "catch exception");
12564         if (c->excep_string != NULL)
12565           fprintf_filtered (fp, " %s", c->excep_string);
12566         break;
12567
12568       case ada_catch_exception_unhandled:
12569         fprintf_filtered (fp, "catch exception unhandled");
12570         break;
12571
12572       case ada_catch_assert:
12573         fprintf_filtered (fp, "catch assert");
12574         break;
12575
12576       default:
12577         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12578     }
12579   print_recreate_thread (b, fp);
12580 }
12581
12582 /* Virtual table for "catch exception" breakpoints.  */
12583
12584 static void
12585 dtor_catch_exception (struct breakpoint *b)
12586 {
12587   dtor_exception (ada_catch_exception, b);
12588 }
12589
12590 static struct bp_location *
12591 allocate_location_catch_exception (struct breakpoint *self)
12592 {
12593   return allocate_location_exception (ada_catch_exception, self);
12594 }
12595
12596 static void
12597 re_set_catch_exception (struct breakpoint *b)
12598 {
12599   re_set_exception (ada_catch_exception, b);
12600 }
12601
12602 static void
12603 check_status_catch_exception (bpstat bs)
12604 {
12605   check_status_exception (ada_catch_exception, bs);
12606 }
12607
12608 static enum print_stop_action
12609 print_it_catch_exception (bpstat bs)
12610 {
12611   return print_it_exception (ada_catch_exception, bs);
12612 }
12613
12614 static void
12615 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12616 {
12617   print_one_exception (ada_catch_exception, b, last_loc);
12618 }
12619
12620 static void
12621 print_mention_catch_exception (struct breakpoint *b)
12622 {
12623   print_mention_exception (ada_catch_exception, b);
12624 }
12625
12626 static void
12627 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12628 {
12629   print_recreate_exception (ada_catch_exception, b, fp);
12630 }
12631
12632 static struct breakpoint_ops catch_exception_breakpoint_ops;
12633
12634 /* Virtual table for "catch exception unhandled" breakpoints.  */
12635
12636 static void
12637 dtor_catch_exception_unhandled (struct breakpoint *b)
12638 {
12639   dtor_exception (ada_catch_exception_unhandled, b);
12640 }
12641
12642 static struct bp_location *
12643 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12644 {
12645   return allocate_location_exception (ada_catch_exception_unhandled, self);
12646 }
12647
12648 static void
12649 re_set_catch_exception_unhandled (struct breakpoint *b)
12650 {
12651   re_set_exception (ada_catch_exception_unhandled, b);
12652 }
12653
12654 static void
12655 check_status_catch_exception_unhandled (bpstat bs)
12656 {
12657   check_status_exception (ada_catch_exception_unhandled, bs);
12658 }
12659
12660 static enum print_stop_action
12661 print_it_catch_exception_unhandled (bpstat bs)
12662 {
12663   return print_it_exception (ada_catch_exception_unhandled, bs);
12664 }
12665
12666 static void
12667 print_one_catch_exception_unhandled (struct breakpoint *b,
12668                                      struct bp_location **last_loc)
12669 {
12670   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12671 }
12672
12673 static void
12674 print_mention_catch_exception_unhandled (struct breakpoint *b)
12675 {
12676   print_mention_exception (ada_catch_exception_unhandled, b);
12677 }
12678
12679 static void
12680 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12681                                           struct ui_file *fp)
12682 {
12683   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12684 }
12685
12686 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12687
12688 /* Virtual table for "catch assert" breakpoints.  */
12689
12690 static void
12691 dtor_catch_assert (struct breakpoint *b)
12692 {
12693   dtor_exception (ada_catch_assert, b);
12694 }
12695
12696 static struct bp_location *
12697 allocate_location_catch_assert (struct breakpoint *self)
12698 {
12699   return allocate_location_exception (ada_catch_assert, self);
12700 }
12701
12702 static void
12703 re_set_catch_assert (struct breakpoint *b)
12704 {
12705   re_set_exception (ada_catch_assert, b);
12706 }
12707
12708 static void
12709 check_status_catch_assert (bpstat bs)
12710 {
12711   check_status_exception (ada_catch_assert, bs);
12712 }
12713
12714 static enum print_stop_action
12715 print_it_catch_assert (bpstat bs)
12716 {
12717   return print_it_exception (ada_catch_assert, bs);
12718 }
12719
12720 static void
12721 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12722 {
12723   print_one_exception (ada_catch_assert, b, last_loc);
12724 }
12725
12726 static void
12727 print_mention_catch_assert (struct breakpoint *b)
12728 {
12729   print_mention_exception (ada_catch_assert, b);
12730 }
12731
12732 static void
12733 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12734 {
12735   print_recreate_exception (ada_catch_assert, b, fp);
12736 }
12737
12738 static struct breakpoint_ops catch_assert_breakpoint_ops;
12739
12740 /* Return a newly allocated copy of the first space-separated token
12741    in ARGSP, and then adjust ARGSP to point immediately after that
12742    token.
12743
12744    Return NULL if ARGPS does not contain any more tokens.  */
12745
12746 static char *
12747 ada_get_next_arg (char **argsp)
12748 {
12749   char *args = *argsp;
12750   char *end;
12751   char *result;
12752
12753   args = skip_spaces (args);
12754   if (args[0] == '\0')
12755     return NULL; /* No more arguments.  */
12756   
12757   /* Find the end of the current argument.  */
12758
12759   end = skip_to_space (args);
12760
12761   /* Adjust ARGSP to point to the start of the next argument.  */
12762
12763   *argsp = end;
12764
12765   /* Make a copy of the current argument and return it.  */
12766
12767   result = (char *) xmalloc (end - args + 1);
12768   strncpy (result, args, end - args);
12769   result[end - args] = '\0';
12770   
12771   return result;
12772 }
12773
12774 /* Split the arguments specified in a "catch exception" command.  
12775    Set EX to the appropriate catchpoint type.
12776    Set EXCEP_STRING to the name of the specific exception if
12777    specified by the user.
12778    If a condition is found at the end of the arguments, the condition
12779    expression is stored in COND_STRING (memory must be deallocated
12780    after use).  Otherwise COND_STRING is set to NULL.  */
12781
12782 static void
12783 catch_ada_exception_command_split (char *args,
12784                                    enum ada_exception_catchpoint_kind *ex,
12785                                    char **excep_string,
12786                                    char **cond_string)
12787 {
12788   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
12789   char *exception_name;
12790   char *cond = NULL;
12791
12792   exception_name = ada_get_next_arg (&args);
12793   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
12794     {
12795       /* This is not an exception name; this is the start of a condition
12796          expression for a catchpoint on all exceptions.  So, "un-get"
12797          this token, and set exception_name to NULL.  */
12798       xfree (exception_name);
12799       exception_name = NULL;
12800       args -= 2;
12801     }
12802   make_cleanup (xfree, exception_name);
12803
12804   /* Check to see if we have a condition.  */
12805
12806   args = skip_spaces (args);
12807   if (startswith (args, "if")
12808       && (isspace (args[2]) || args[2] == '\0'))
12809     {
12810       args += 2;
12811       args = skip_spaces (args);
12812
12813       if (args[0] == '\0')
12814         error (_("Condition missing after `if' keyword"));
12815       cond = xstrdup (args);
12816       make_cleanup (xfree, cond);
12817
12818       args += strlen (args);
12819     }
12820
12821   /* Check that we do not have any more arguments.  Anything else
12822      is unexpected.  */
12823
12824   if (args[0] != '\0')
12825     error (_("Junk at end of expression"));
12826
12827   discard_cleanups (old_chain);
12828
12829   if (exception_name == NULL)
12830     {
12831       /* Catch all exceptions.  */
12832       *ex = ada_catch_exception;
12833       *excep_string = NULL;
12834     }
12835   else if (strcmp (exception_name, "unhandled") == 0)
12836     {
12837       /* Catch unhandled exceptions.  */
12838       *ex = ada_catch_exception_unhandled;
12839       *excep_string = NULL;
12840     }
12841   else
12842     {
12843       /* Catch a specific exception.  */
12844       *ex = ada_catch_exception;
12845       *excep_string = exception_name;
12846     }
12847   *cond_string = cond;
12848 }
12849
12850 /* Return the name of the symbol on which we should break in order to
12851    implement a catchpoint of the EX kind.  */
12852
12853 static const char *
12854 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12855 {
12856   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12857
12858   gdb_assert (data->exception_info != NULL);
12859
12860   switch (ex)
12861     {
12862       case ada_catch_exception:
12863         return (data->exception_info->catch_exception_sym);
12864         break;
12865       case ada_catch_exception_unhandled:
12866         return (data->exception_info->catch_exception_unhandled_sym);
12867         break;
12868       case ada_catch_assert:
12869         return (data->exception_info->catch_assert_sym);
12870         break;
12871       default:
12872         internal_error (__FILE__, __LINE__,
12873                         _("unexpected catchpoint kind (%d)"), ex);
12874     }
12875 }
12876
12877 /* Return the breakpoint ops "virtual table" used for catchpoints
12878    of the EX kind.  */
12879
12880 static const struct breakpoint_ops *
12881 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12882 {
12883   switch (ex)
12884     {
12885       case ada_catch_exception:
12886         return (&catch_exception_breakpoint_ops);
12887         break;
12888       case ada_catch_exception_unhandled:
12889         return (&catch_exception_unhandled_breakpoint_ops);
12890         break;
12891       case ada_catch_assert:
12892         return (&catch_assert_breakpoint_ops);
12893         break;
12894       default:
12895         internal_error (__FILE__, __LINE__,
12896                         _("unexpected catchpoint kind (%d)"), ex);
12897     }
12898 }
12899
12900 /* Return the condition that will be used to match the current exception
12901    being raised with the exception that the user wants to catch.  This
12902    assumes that this condition is used when the inferior just triggered
12903    an exception catchpoint.
12904    
12905    The string returned is a newly allocated string that needs to be
12906    deallocated later.  */
12907
12908 static char *
12909 ada_exception_catchpoint_cond_string (const char *excep_string)
12910 {
12911   int i;
12912
12913   /* The standard exceptions are a special case.  They are defined in
12914      runtime units that have been compiled without debugging info; if
12915      EXCEP_STRING is the not-fully-qualified name of a standard
12916      exception (e.g. "constraint_error") then, during the evaluation
12917      of the condition expression, the symbol lookup on this name would
12918      *not* return this standard exception.  The catchpoint condition
12919      may then be set only on user-defined exceptions which have the
12920      same not-fully-qualified name (e.g. my_package.constraint_error).
12921
12922      To avoid this unexcepted behavior, these standard exceptions are
12923      systematically prefixed by "standard".  This means that "catch
12924      exception constraint_error" is rewritten into "catch exception
12925      standard.constraint_error".
12926
12927      If an exception named contraint_error is defined in another package of
12928      the inferior program, then the only way to specify this exception as a
12929      breakpoint condition is to use its fully-qualified named:
12930      e.g. my_package.constraint_error.  */
12931
12932   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12933     {
12934       if (strcmp (standard_exc [i], excep_string) == 0)
12935         {
12936           return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
12937                              excep_string);
12938         }
12939     }
12940   return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
12941 }
12942
12943 /* Return the symtab_and_line that should be used to insert an exception
12944    catchpoint of the TYPE kind.
12945
12946    EXCEP_STRING should contain the name of a specific exception that
12947    the catchpoint should catch, or NULL otherwise.
12948
12949    ADDR_STRING returns the name of the function where the real
12950    breakpoint that implements the catchpoints is set, depending on the
12951    type of catchpoint we need to create.  */
12952
12953 static struct symtab_and_line
12954 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
12955                    char **addr_string, const struct breakpoint_ops **ops)
12956 {
12957   const char *sym_name;
12958   struct symbol *sym;
12959
12960   /* First, find out which exception support info to use.  */
12961   ada_exception_support_info_sniffer ();
12962
12963   /* Then lookup the function on which we will break in order to catch
12964      the Ada exceptions requested by the user.  */
12965   sym_name = ada_exception_sym_name (ex);
12966   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12967
12968   /* We can assume that SYM is not NULL at this stage.  If the symbol
12969      did not exist, ada_exception_support_info_sniffer would have
12970      raised an exception.
12971
12972      Also, ada_exception_support_info_sniffer should have already
12973      verified that SYM is a function symbol.  */
12974   gdb_assert (sym != NULL);
12975   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
12976
12977   /* Set ADDR_STRING.  */
12978   *addr_string = xstrdup (sym_name);
12979
12980   /* Set OPS.  */
12981   *ops = ada_exception_breakpoint_ops (ex);
12982
12983   return find_function_start_sal (sym, 1);
12984 }
12985
12986 /* Create an Ada exception catchpoint.
12987
12988    EX_KIND is the kind of exception catchpoint to be created.
12989
12990    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
12991    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12992    of the exception to which this catchpoint applies.  When not NULL,
12993    the string must be allocated on the heap, and its deallocation
12994    is no longer the responsibility of the caller.
12995
12996    COND_STRING, if not NULL, is the catchpoint condition.  This string
12997    must be allocated on the heap, and its deallocation is no longer
12998    the responsibility of the caller.
12999
13000    TEMPFLAG, if nonzero, means that the underlying breakpoint
13001    should be temporary.
13002
13003    FROM_TTY is the usual argument passed to all commands implementations.  */
13004
13005 void
13006 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13007                                  enum ada_exception_catchpoint_kind ex_kind,
13008                                  char *excep_string,
13009                                  char *cond_string,
13010                                  int tempflag,
13011                                  int disabled,
13012                                  int from_tty)
13013 {
13014   struct ada_catchpoint *c;
13015   char *addr_string = NULL;
13016   const struct breakpoint_ops *ops = NULL;
13017   struct symtab_and_line sal
13018     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
13019
13020   c = XNEW (struct ada_catchpoint);
13021   init_ada_exception_breakpoint (&c->base, gdbarch, sal, addr_string,
13022                                  ops, tempflag, disabled, from_tty);
13023   c->excep_string = excep_string;
13024   create_excep_cond_exprs (c);
13025   if (cond_string != NULL)
13026     set_breakpoint_condition (&c->base, cond_string, from_tty);
13027   install_breakpoint (0, &c->base, 1);
13028 }
13029
13030 /* Implement the "catch exception" command.  */
13031
13032 static void
13033 catch_ada_exception_command (char *arg, int from_tty,
13034                              struct cmd_list_element *command)
13035 {
13036   struct gdbarch *gdbarch = get_current_arch ();
13037   int tempflag;
13038   enum ada_exception_catchpoint_kind ex_kind;
13039   char *excep_string = NULL;
13040   char *cond_string = NULL;
13041
13042   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13043
13044   if (!arg)
13045     arg = "";
13046   catch_ada_exception_command_split (arg, &ex_kind, &excep_string,
13047                                      &cond_string);
13048   create_ada_exception_catchpoint (gdbarch, ex_kind,
13049                                    excep_string, cond_string,
13050                                    tempflag, 1 /* enabled */,
13051                                    from_tty);
13052 }
13053
13054 /* Split the arguments specified in a "catch assert" command.
13055
13056    ARGS contains the command's arguments (or the empty string if
13057    no arguments were passed).
13058
13059    If ARGS contains a condition, set COND_STRING to that condition
13060    (the memory needs to be deallocated after use).  */
13061
13062 static void
13063 catch_ada_assert_command_split (char *args, char **cond_string)
13064 {
13065   args = skip_spaces (args);
13066
13067   /* Check whether a condition was provided.  */
13068   if (startswith (args, "if")
13069       && (isspace (args[2]) || args[2] == '\0'))
13070     {
13071       args += 2;
13072       args = skip_spaces (args);
13073       if (args[0] == '\0')
13074         error (_("condition missing after `if' keyword"));
13075       *cond_string = xstrdup (args);
13076     }
13077
13078   /* Otherwise, there should be no other argument at the end of
13079      the command.  */
13080   else if (args[0] != '\0')
13081     error (_("Junk at end of arguments."));
13082 }
13083
13084 /* Implement the "catch assert" command.  */
13085
13086 static void
13087 catch_assert_command (char *arg, int from_tty,
13088                       struct cmd_list_element *command)
13089 {
13090   struct gdbarch *gdbarch = get_current_arch ();
13091   int tempflag;
13092   char *cond_string = NULL;
13093
13094   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13095
13096   if (!arg)
13097     arg = "";
13098   catch_ada_assert_command_split (arg, &cond_string);
13099   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13100                                    NULL, cond_string,
13101                                    tempflag, 1 /* enabled */,
13102                                    from_tty);
13103 }
13104
13105 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13106
13107 static int
13108 ada_is_exception_sym (struct symbol *sym)
13109 {
13110   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
13111
13112   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13113           && SYMBOL_CLASS (sym) != LOC_BLOCK
13114           && SYMBOL_CLASS (sym) != LOC_CONST
13115           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13116           && type_name != NULL && strcmp (type_name, "exception") == 0);
13117 }
13118
13119 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13120    Ada exception object.  This matches all exceptions except the ones
13121    defined by the Ada language.  */
13122
13123 static int
13124 ada_is_non_standard_exception_sym (struct symbol *sym)
13125 {
13126   int i;
13127
13128   if (!ada_is_exception_sym (sym))
13129     return 0;
13130
13131   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13132     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13133       return 0;  /* A standard exception.  */
13134
13135   /* Numeric_Error is also a standard exception, so exclude it.
13136      See the STANDARD_EXC description for more details as to why
13137      this exception is not listed in that array.  */
13138   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13139     return 0;
13140
13141   return 1;
13142 }
13143
13144 /* A helper function for qsort, comparing two struct ada_exc_info
13145    objects.
13146
13147    The comparison is determined first by exception name, and then
13148    by exception address.  */
13149
13150 static int
13151 compare_ada_exception_info (const void *a, const void *b)
13152 {
13153   const struct ada_exc_info *exc_a = (struct ada_exc_info *) a;
13154   const struct ada_exc_info *exc_b = (struct ada_exc_info *) b;
13155   int result;
13156
13157   result = strcmp (exc_a->name, exc_b->name);
13158   if (result != 0)
13159     return result;
13160
13161   if (exc_a->addr < exc_b->addr)
13162     return -1;
13163   if (exc_a->addr > exc_b->addr)
13164     return 1;
13165
13166   return 0;
13167 }
13168
13169 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13170    routine, but keeping the first SKIP elements untouched.
13171
13172    All duplicates are also removed.  */
13173
13174 static void
13175 sort_remove_dups_ada_exceptions_list (VEC(ada_exc_info) **exceptions,
13176                                       int skip)
13177 {
13178   struct ada_exc_info *to_sort
13179     = VEC_address (ada_exc_info, *exceptions) + skip;
13180   int to_sort_len
13181     = VEC_length (ada_exc_info, *exceptions) - skip;
13182   int i, j;
13183
13184   qsort (to_sort, to_sort_len, sizeof (struct ada_exc_info),
13185          compare_ada_exception_info);
13186
13187   for (i = 1, j = 1; i < to_sort_len; i++)
13188     if (compare_ada_exception_info (&to_sort[i], &to_sort[j - 1]) != 0)
13189       to_sort[j++] = to_sort[i];
13190   to_sort_len = j;
13191   VEC_truncate(ada_exc_info, *exceptions, skip + to_sort_len);
13192 }
13193
13194 /* A function intended as the "name_matcher" callback in the struct
13195    quick_symbol_functions' expand_symtabs_matching method.
13196
13197    SEARCH_NAME is the symbol's search name.
13198
13199    If USER_DATA is not NULL, it is a pointer to a regext_t object
13200    used to match the symbol (by natural name).  Otherwise, when USER_DATA
13201    is null, no filtering is performed, and all symbols are a positive
13202    match.  */
13203
13204 static int
13205 ada_exc_search_name_matches (const char *search_name, void *user_data)
13206 {
13207   regex_t *preg = (regex_t *) user_data;
13208
13209   if (preg == NULL)
13210     return 1;
13211
13212   /* In Ada, the symbol "search name" is a linkage name, whereas
13213      the regular expression used to do the matching refers to
13214      the natural name.  So match against the decoded name.  */
13215   return (regexec (preg, ada_decode (search_name), 0, NULL, 0) == 0);
13216 }
13217
13218 /* Add all exceptions defined by the Ada standard whose name match
13219    a regular expression.
13220
13221    If PREG is not NULL, then this regexp_t object is used to
13222    perform the symbol name matching.  Otherwise, no name-based
13223    filtering is performed.
13224
13225    EXCEPTIONS is a vector of exceptions to which matching exceptions
13226    gets pushed.  */
13227
13228 static void
13229 ada_add_standard_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
13230 {
13231   int i;
13232
13233   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13234     {
13235       if (preg == NULL
13236           || regexec (preg, standard_exc[i], 0, NULL, 0) == 0)
13237         {
13238           struct bound_minimal_symbol msymbol
13239             = ada_lookup_simple_minsym (standard_exc[i]);
13240
13241           if (msymbol.minsym != NULL)
13242             {
13243               struct ada_exc_info info
13244                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13245
13246               VEC_safe_push (ada_exc_info, *exceptions, &info);
13247             }
13248         }
13249     }
13250 }
13251
13252 /* Add all Ada exceptions defined locally and accessible from the given
13253    FRAME.
13254
13255    If PREG is not NULL, then this regexp_t object is used to
13256    perform the symbol name matching.  Otherwise, no name-based
13257    filtering is performed.
13258
13259    EXCEPTIONS is a vector of exceptions to which matching exceptions
13260    gets pushed.  */
13261
13262 static void
13263 ada_add_exceptions_from_frame (regex_t *preg, struct frame_info *frame,
13264                                VEC(ada_exc_info) **exceptions)
13265 {
13266   const struct block *block = get_frame_block (frame, 0);
13267
13268   while (block != 0)
13269     {
13270       struct block_iterator iter;
13271       struct symbol *sym;
13272
13273       ALL_BLOCK_SYMBOLS (block, iter, sym)
13274         {
13275           switch (SYMBOL_CLASS (sym))
13276             {
13277             case LOC_TYPEDEF:
13278             case LOC_BLOCK:
13279             case LOC_CONST:
13280               break;
13281             default:
13282               if (ada_is_exception_sym (sym))
13283                 {
13284                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13285                                               SYMBOL_VALUE_ADDRESS (sym)};
13286
13287                   VEC_safe_push (ada_exc_info, *exceptions, &info);
13288                 }
13289             }
13290         }
13291       if (BLOCK_FUNCTION (block) != NULL)
13292         break;
13293       block = BLOCK_SUPERBLOCK (block);
13294     }
13295 }
13296
13297 /* Add all exceptions defined globally whose name name match
13298    a regular expression, excluding standard exceptions.
13299
13300    The reason we exclude standard exceptions is that they need
13301    to be handled separately: Standard exceptions are defined inside
13302    a runtime unit which is normally not compiled with debugging info,
13303    and thus usually do not show up in our symbol search.  However,
13304    if the unit was in fact built with debugging info, we need to
13305    exclude them because they would duplicate the entry we found
13306    during the special loop that specifically searches for those
13307    standard exceptions.
13308
13309    If PREG is not NULL, then this regexp_t object is used to
13310    perform the symbol name matching.  Otherwise, no name-based
13311    filtering is performed.
13312
13313    EXCEPTIONS is a vector of exceptions to which matching exceptions
13314    gets pushed.  */
13315
13316 static void
13317 ada_add_global_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
13318 {
13319   struct objfile *objfile;
13320   struct compunit_symtab *s;
13321
13322   expand_symtabs_matching (NULL, ada_exc_search_name_matches, NULL,
13323                            VARIABLES_DOMAIN, preg);
13324
13325   ALL_COMPUNITS (objfile, s)
13326     {
13327       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13328       int i;
13329
13330       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13331         {
13332           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13333           struct block_iterator iter;
13334           struct symbol *sym;
13335
13336           ALL_BLOCK_SYMBOLS (b, iter, sym)
13337             if (ada_is_non_standard_exception_sym (sym)
13338                 && (preg == NULL
13339                     || regexec (preg, SYMBOL_NATURAL_NAME (sym),
13340                                 0, NULL, 0) == 0))
13341               {
13342                 struct ada_exc_info info
13343                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13344
13345                 VEC_safe_push (ada_exc_info, *exceptions, &info);
13346               }
13347         }
13348     }
13349 }
13350
13351 /* Implements ada_exceptions_list with the regular expression passed
13352    as a regex_t, rather than a string.
13353
13354    If not NULL, PREG is used to filter out exceptions whose names
13355    do not match.  Otherwise, all exceptions are listed.  */
13356
13357 static VEC(ada_exc_info) *
13358 ada_exceptions_list_1 (regex_t *preg)
13359 {
13360   VEC(ada_exc_info) *result = NULL;
13361   struct cleanup *old_chain
13362     = make_cleanup (VEC_cleanup (ada_exc_info), &result);
13363   int prev_len;
13364
13365   /* First, list the known standard exceptions.  These exceptions
13366      need to be handled separately, as they are usually defined in
13367      runtime units that have been compiled without debugging info.  */
13368
13369   ada_add_standard_exceptions (preg, &result);
13370
13371   /* Next, find all exceptions whose scope is local and accessible
13372      from the currently selected frame.  */
13373
13374   if (has_stack_frames ())
13375     {
13376       prev_len = VEC_length (ada_exc_info, result);
13377       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13378                                      &result);
13379       if (VEC_length (ada_exc_info, result) > prev_len)
13380         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13381     }
13382
13383   /* Add all exceptions whose scope is global.  */
13384
13385   prev_len = VEC_length (ada_exc_info, result);
13386   ada_add_global_exceptions (preg, &result);
13387   if (VEC_length (ada_exc_info, result) > prev_len)
13388     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13389
13390   discard_cleanups (old_chain);
13391   return result;
13392 }
13393
13394 /* Return a vector of ada_exc_info.
13395
13396    If REGEXP is NULL, all exceptions are included in the result.
13397    Otherwise, it should contain a valid regular expression,
13398    and only the exceptions whose names match that regular expression
13399    are included in the result.
13400
13401    The exceptions are sorted in the following order:
13402      - Standard exceptions (defined by the Ada language), in
13403        alphabetical order;
13404      - Exceptions only visible from the current frame, in
13405        alphabetical order;
13406      - Exceptions whose scope is global, in alphabetical order.  */
13407
13408 VEC(ada_exc_info) *
13409 ada_exceptions_list (const char *regexp)
13410 {
13411   VEC(ada_exc_info) *result = NULL;
13412   struct cleanup *old_chain = NULL;
13413   regex_t reg;
13414
13415   if (regexp != NULL)
13416     old_chain = compile_rx_or_error (&reg, regexp,
13417                                      _("invalid regular expression"));
13418
13419   result = ada_exceptions_list_1 (regexp != NULL ? &reg : NULL);
13420
13421   if (old_chain != NULL)
13422     do_cleanups (old_chain);
13423   return result;
13424 }
13425
13426 /* Implement the "info exceptions" command.  */
13427
13428 static void
13429 info_exceptions_command (char *regexp, int from_tty)
13430 {
13431   VEC(ada_exc_info) *exceptions;
13432   struct cleanup *cleanup;
13433   struct gdbarch *gdbarch = get_current_arch ();
13434   int ix;
13435   struct ada_exc_info *info;
13436
13437   exceptions = ada_exceptions_list (regexp);
13438   cleanup = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions);
13439
13440   if (regexp != NULL)
13441     printf_filtered
13442       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13443   else
13444     printf_filtered (_("All defined Ada exceptions:\n"));
13445
13446   for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++)
13447     printf_filtered ("%s: %s\n", info->name, paddress (gdbarch, info->addr));
13448
13449   do_cleanups (cleanup);
13450 }
13451
13452                                 /* Operators */
13453 /* Information about operators given special treatment in functions
13454    below.  */
13455 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13456
13457 #define ADA_OPERATORS \
13458     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13459     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13460     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13461     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13462     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13463     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13464     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13465     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13466     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13467     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13468     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13469     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13470     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13471     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13472     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13473     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13474     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13475     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13476     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13477
13478 static void
13479 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13480                      int *argsp)
13481 {
13482   switch (exp->elts[pc - 1].opcode)
13483     {
13484     default:
13485       operator_length_standard (exp, pc, oplenp, argsp);
13486       break;
13487
13488 #define OP_DEFN(op, len, args, binop) \
13489     case op: *oplenp = len; *argsp = args; break;
13490       ADA_OPERATORS;
13491 #undef OP_DEFN
13492
13493     case OP_AGGREGATE:
13494       *oplenp = 3;
13495       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13496       break;
13497
13498     case OP_CHOICES:
13499       *oplenp = 3;
13500       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13501       break;
13502     }
13503 }
13504
13505 /* Implementation of the exp_descriptor method operator_check.  */
13506
13507 static int
13508 ada_operator_check (struct expression *exp, int pos,
13509                     int (*objfile_func) (struct objfile *objfile, void *data),
13510                     void *data)
13511 {
13512   const union exp_element *const elts = exp->elts;
13513   struct type *type = NULL;
13514
13515   switch (elts[pos].opcode)
13516     {
13517       case UNOP_IN_RANGE:
13518       case UNOP_QUAL:
13519         type = elts[pos + 1].type;
13520         break;
13521
13522       default:
13523         return operator_check_standard (exp, pos, objfile_func, data);
13524     }
13525
13526   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13527
13528   if (type && TYPE_OBJFILE (type)
13529       && (*objfile_func) (TYPE_OBJFILE (type), data))
13530     return 1;
13531
13532   return 0;
13533 }
13534
13535 static char *
13536 ada_op_name (enum exp_opcode opcode)
13537 {
13538   switch (opcode)
13539     {
13540     default:
13541       return op_name_standard (opcode);
13542
13543 #define OP_DEFN(op, len, args, binop) case op: return #op;
13544       ADA_OPERATORS;
13545 #undef OP_DEFN
13546
13547     case OP_AGGREGATE:
13548       return "OP_AGGREGATE";
13549     case OP_CHOICES:
13550       return "OP_CHOICES";
13551     case OP_NAME:
13552       return "OP_NAME";
13553     }
13554 }
13555
13556 /* As for operator_length, but assumes PC is pointing at the first
13557    element of the operator, and gives meaningful results only for the 
13558    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13559
13560 static void
13561 ada_forward_operator_length (struct expression *exp, int pc,
13562                              int *oplenp, int *argsp)
13563 {
13564   switch (exp->elts[pc].opcode)
13565     {
13566     default:
13567       *oplenp = *argsp = 0;
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 + 1].longconst);
13578       break;
13579
13580     case OP_CHOICES:
13581       *oplenp = 3;
13582       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13583       break;
13584
13585     case OP_STRING:
13586     case OP_NAME:
13587       {
13588         int len = longest_to_int (exp->elts[pc + 1].longconst);
13589
13590         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13591         *argsp = 0;
13592         break;
13593       }
13594     }
13595 }
13596
13597 static int
13598 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13599 {
13600   enum exp_opcode op = exp->elts[elt].opcode;
13601   int oplen, nargs;
13602   int pc = elt;
13603   int i;
13604
13605   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13606
13607   switch (op)
13608     {
13609       /* Ada attributes ('Foo).  */
13610     case OP_ATR_FIRST:
13611     case OP_ATR_LAST:
13612     case OP_ATR_LENGTH:
13613     case OP_ATR_IMAGE:
13614     case OP_ATR_MAX:
13615     case OP_ATR_MIN:
13616     case OP_ATR_MODULUS:
13617     case OP_ATR_POS:
13618     case OP_ATR_SIZE:
13619     case OP_ATR_TAG:
13620     case OP_ATR_VAL:
13621       break;
13622
13623     case UNOP_IN_RANGE:
13624     case UNOP_QUAL:
13625       /* XXX: gdb_sprint_host_address, type_sprint */
13626       fprintf_filtered (stream, _("Type @"));
13627       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13628       fprintf_filtered (stream, " (");
13629       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13630       fprintf_filtered (stream, ")");
13631       break;
13632     case BINOP_IN_BOUNDS:
13633       fprintf_filtered (stream, " (%d)",
13634                         longest_to_int (exp->elts[pc + 2].longconst));
13635       break;
13636     case TERNOP_IN_RANGE:
13637       break;
13638
13639     case OP_AGGREGATE:
13640     case OP_OTHERS:
13641     case OP_DISCRETE_RANGE:
13642     case OP_POSITIONAL:
13643     case OP_CHOICES:
13644       break;
13645
13646     case OP_NAME:
13647     case OP_STRING:
13648       {
13649         char *name = &exp->elts[elt + 2].string;
13650         int len = longest_to_int (exp->elts[elt + 1].longconst);
13651
13652         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13653         break;
13654       }
13655
13656     default:
13657       return dump_subexp_body_standard (exp, stream, elt);
13658     }
13659
13660   elt += oplen;
13661   for (i = 0; i < nargs; i += 1)
13662     elt = dump_subexp (exp, stream, elt);
13663
13664   return elt;
13665 }
13666
13667 /* The Ada extension of print_subexp (q.v.).  */
13668
13669 static void
13670 ada_print_subexp (struct expression *exp, int *pos,
13671                   struct ui_file *stream, enum precedence prec)
13672 {
13673   int oplen, nargs, i;
13674   int pc = *pos;
13675   enum exp_opcode op = exp->elts[pc].opcode;
13676
13677   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13678
13679   *pos += oplen;
13680   switch (op)
13681     {
13682     default:
13683       *pos -= oplen;
13684       print_subexp_standard (exp, pos, stream, prec);
13685       return;
13686
13687     case OP_VAR_VALUE:
13688       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13689       return;
13690
13691     case BINOP_IN_BOUNDS:
13692       /* XXX: sprint_subexp */
13693       print_subexp (exp, pos, stream, PREC_SUFFIX);
13694       fputs_filtered (" in ", stream);
13695       print_subexp (exp, pos, stream, PREC_SUFFIX);
13696       fputs_filtered ("'range", stream);
13697       if (exp->elts[pc + 1].longconst > 1)
13698         fprintf_filtered (stream, "(%ld)",
13699                           (long) exp->elts[pc + 1].longconst);
13700       return;
13701
13702     case TERNOP_IN_RANGE:
13703       if (prec >= PREC_EQUAL)
13704         fputs_filtered ("(", stream);
13705       /* XXX: sprint_subexp */
13706       print_subexp (exp, pos, stream, PREC_SUFFIX);
13707       fputs_filtered (" in ", stream);
13708       print_subexp (exp, pos, stream, PREC_EQUAL);
13709       fputs_filtered (" .. ", stream);
13710       print_subexp (exp, pos, stream, PREC_EQUAL);
13711       if (prec >= PREC_EQUAL)
13712         fputs_filtered (")", stream);
13713       return;
13714
13715     case OP_ATR_FIRST:
13716     case OP_ATR_LAST:
13717     case OP_ATR_LENGTH:
13718     case OP_ATR_IMAGE:
13719     case OP_ATR_MAX:
13720     case OP_ATR_MIN:
13721     case OP_ATR_MODULUS:
13722     case OP_ATR_POS:
13723     case OP_ATR_SIZE:
13724     case OP_ATR_TAG:
13725     case OP_ATR_VAL:
13726       if (exp->elts[*pos].opcode == OP_TYPE)
13727         {
13728           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13729             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13730                            &type_print_raw_options);
13731           *pos += 3;
13732         }
13733       else
13734         print_subexp (exp, pos, stream, PREC_SUFFIX);
13735       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13736       if (nargs > 1)
13737         {
13738           int tem;
13739
13740           for (tem = 1; tem < nargs; tem += 1)
13741             {
13742               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13743               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13744             }
13745           fputs_filtered (")", stream);
13746         }
13747       return;
13748
13749     case UNOP_QUAL:
13750       type_print (exp->elts[pc + 1].type, "", stream, 0);
13751       fputs_filtered ("'(", stream);
13752       print_subexp (exp, pos, stream, PREC_PREFIX);
13753       fputs_filtered (")", stream);
13754       return;
13755
13756     case UNOP_IN_RANGE:
13757       /* XXX: sprint_subexp */
13758       print_subexp (exp, pos, stream, PREC_SUFFIX);
13759       fputs_filtered (" in ", stream);
13760       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13761                      &type_print_raw_options);
13762       return;
13763
13764     case OP_DISCRETE_RANGE:
13765       print_subexp (exp, pos, stream, PREC_SUFFIX);
13766       fputs_filtered ("..", stream);
13767       print_subexp (exp, pos, stream, PREC_SUFFIX);
13768       return;
13769
13770     case OP_OTHERS:
13771       fputs_filtered ("others => ", stream);
13772       print_subexp (exp, pos, stream, PREC_SUFFIX);
13773       return;
13774
13775     case OP_CHOICES:
13776       for (i = 0; i < nargs-1; i += 1)
13777         {
13778           if (i > 0)
13779             fputs_filtered ("|", stream);
13780           print_subexp (exp, pos, stream, PREC_SUFFIX);
13781         }
13782       fputs_filtered (" => ", stream);
13783       print_subexp (exp, pos, stream, PREC_SUFFIX);
13784       return;
13785       
13786     case OP_POSITIONAL:
13787       print_subexp (exp, pos, stream, PREC_SUFFIX);
13788       return;
13789
13790     case OP_AGGREGATE:
13791       fputs_filtered ("(", stream);
13792       for (i = 0; i < nargs; i += 1)
13793         {
13794           if (i > 0)
13795             fputs_filtered (", ", stream);
13796           print_subexp (exp, pos, stream, PREC_SUFFIX);
13797         }
13798       fputs_filtered (")", stream);
13799       return;
13800     }
13801 }
13802
13803 /* Table mapping opcodes into strings for printing operators
13804    and precedences of the operators.  */
13805
13806 static const struct op_print ada_op_print_tab[] = {
13807   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13808   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13809   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13810   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13811   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13812   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13813   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13814   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13815   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13816   {">=", BINOP_GEQ, PREC_ORDER, 0},
13817   {">", BINOP_GTR, PREC_ORDER, 0},
13818   {"<", BINOP_LESS, PREC_ORDER, 0},
13819   {">>", BINOP_RSH, PREC_SHIFT, 0},
13820   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13821   {"+", BINOP_ADD, PREC_ADD, 0},
13822   {"-", BINOP_SUB, PREC_ADD, 0},
13823   {"&", BINOP_CONCAT, PREC_ADD, 0},
13824   {"*", BINOP_MUL, PREC_MUL, 0},
13825   {"/", BINOP_DIV, PREC_MUL, 0},
13826   {"rem", BINOP_REM, PREC_MUL, 0},
13827   {"mod", BINOP_MOD, PREC_MUL, 0},
13828   {"**", BINOP_EXP, PREC_REPEAT, 0},
13829   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13830   {"-", UNOP_NEG, PREC_PREFIX, 0},
13831   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13832   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13833   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13834   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13835   {".all", UNOP_IND, PREC_SUFFIX, 1},
13836   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13837   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13838   {NULL, OP_NULL, PREC_SUFFIX, 0}
13839 };
13840 \f
13841 enum ada_primitive_types {
13842   ada_primitive_type_int,
13843   ada_primitive_type_long,
13844   ada_primitive_type_short,
13845   ada_primitive_type_char,
13846   ada_primitive_type_float,
13847   ada_primitive_type_double,
13848   ada_primitive_type_void,
13849   ada_primitive_type_long_long,
13850   ada_primitive_type_long_double,
13851   ada_primitive_type_natural,
13852   ada_primitive_type_positive,
13853   ada_primitive_type_system_address,
13854   nr_ada_primitive_types
13855 };
13856
13857 static void
13858 ada_language_arch_info (struct gdbarch *gdbarch,
13859                         struct language_arch_info *lai)
13860 {
13861   const struct builtin_type *builtin = builtin_type (gdbarch);
13862
13863   lai->primitive_type_vector
13864     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13865                               struct type *);
13866
13867   lai->primitive_type_vector [ada_primitive_type_int]
13868     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13869                          0, "integer");
13870   lai->primitive_type_vector [ada_primitive_type_long]
13871     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13872                          0, "long_integer");
13873   lai->primitive_type_vector [ada_primitive_type_short]
13874     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13875                          0, "short_integer");
13876   lai->string_char_type
13877     = lai->primitive_type_vector [ada_primitive_type_char]
13878     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13879   lai->primitive_type_vector [ada_primitive_type_float]
13880     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13881                        "float", NULL);
13882   lai->primitive_type_vector [ada_primitive_type_double]
13883     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13884                        "long_float", NULL);
13885   lai->primitive_type_vector [ada_primitive_type_long_long]
13886     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13887                          0, "long_long_integer");
13888   lai->primitive_type_vector [ada_primitive_type_long_double]
13889     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13890                        "long_long_float", NULL);
13891   lai->primitive_type_vector [ada_primitive_type_natural]
13892     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13893                          0, "natural");
13894   lai->primitive_type_vector [ada_primitive_type_positive]
13895     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13896                          0, "positive");
13897   lai->primitive_type_vector [ada_primitive_type_void]
13898     = builtin->builtin_void;
13899
13900   lai->primitive_type_vector [ada_primitive_type_system_address]
13901     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, 1, "void"));
13902   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
13903     = "system__address";
13904
13905   lai->bool_type_symbol = NULL;
13906   lai->bool_type_default = builtin->builtin_bool;
13907 }
13908 \f
13909                                 /* Language vector */
13910
13911 /* Not really used, but needed in the ada_language_defn.  */
13912
13913 static void
13914 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13915 {
13916   ada_emit_char (c, type, stream, quoter, 1);
13917 }
13918
13919 static int
13920 parse (struct parser_state *ps)
13921 {
13922   warnings_issued = 0;
13923   return ada_parse (ps);
13924 }
13925
13926 static const struct exp_descriptor ada_exp_descriptor = {
13927   ada_print_subexp,
13928   ada_operator_length,
13929   ada_operator_check,
13930   ada_op_name,
13931   ada_dump_subexp_body,
13932   ada_evaluate_subexp
13933 };
13934
13935 /* Implement the "la_get_symbol_name_cmp" language_defn method
13936    for Ada.  */
13937
13938 static symbol_name_cmp_ftype
13939 ada_get_symbol_name_cmp (const char *lookup_name)
13940 {
13941   if (should_use_wild_match (lookup_name))
13942     return wild_match;
13943   else
13944     return compare_names;
13945 }
13946
13947 /* Implement the "la_read_var_value" language_defn method for Ada.  */
13948
13949 static struct value *
13950 ada_read_var_value (struct symbol *var, const struct block *var_block,
13951                     struct frame_info *frame)
13952 {
13953   const struct block *frame_block = NULL;
13954   struct symbol *renaming_sym = NULL;
13955
13956   /* The only case where default_read_var_value is not sufficient
13957      is when VAR is a renaming...  */
13958   if (frame)
13959     frame_block = get_frame_block (frame, NULL);
13960   if (frame_block)
13961     renaming_sym = ada_find_renaming_symbol (var, frame_block);
13962   if (renaming_sym != NULL)
13963     return ada_read_renaming_var_value (renaming_sym, frame_block);
13964
13965   /* This is a typical case where we expect the default_read_var_value
13966      function to work.  */
13967   return default_read_var_value (var, var_block, frame);
13968 }
13969
13970 const struct language_defn ada_language_defn = {
13971   "ada",                        /* Language name */
13972   "Ada",
13973   language_ada,
13974   range_check_off,
13975   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13976                                    that's not quite what this means.  */
13977   array_row_major,
13978   macro_expansion_no,
13979   &ada_exp_descriptor,
13980   parse,
13981   ada_error,
13982   resolve,
13983   ada_printchar,                /* Print a character constant */
13984   ada_printstr,                 /* Function to print string constant */
13985   emit_char,                    /* Function to print single char (not used) */
13986   ada_print_type,               /* Print a type using appropriate syntax */
13987   ada_print_typedef,            /* Print a typedef using appropriate syntax */
13988   ada_val_print,                /* Print a value using appropriate syntax */
13989   ada_value_print,              /* Print a top-level value */
13990   ada_read_var_value,           /* la_read_var_value */
13991   NULL,                         /* Language specific skip_trampoline */
13992   NULL,                         /* name_of_this */
13993   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
13994   basic_lookup_transparent_type,        /* lookup_transparent_type */
13995   ada_la_decode,                /* Language specific symbol demangler */
13996   NULL,                         /* Language specific
13997                                    class_name_from_physname */
13998   ada_op_print_tab,             /* expression operators for printing */
13999   0,                            /* c-style arrays */
14000   1,                            /* String lower bound */
14001   ada_get_gdb_completer_word_break_characters,
14002   ada_make_symbol_completion_list,
14003   ada_language_arch_info,
14004   ada_print_array_index,
14005   default_pass_by_reference,
14006   c_get_string,
14007   ada_get_symbol_name_cmp,      /* la_get_symbol_name_cmp */
14008   ada_iterate_over_symbols,
14009   &ada_varobj_ops,
14010   NULL,
14011   NULL,
14012   LANG_MAGIC
14013 };
14014
14015 /* Provide a prototype to silence -Wmissing-prototypes.  */
14016 extern initialize_file_ftype _initialize_ada_language;
14017
14018 /* Command-list for the "set/show ada" prefix command.  */
14019 static struct cmd_list_element *set_ada_list;
14020 static struct cmd_list_element *show_ada_list;
14021
14022 /* Implement the "set ada" prefix command.  */
14023
14024 static void
14025 set_ada_command (char *arg, int from_tty)
14026 {
14027   printf_unfiltered (_(\
14028 "\"set ada\" must be followed by the name of a setting.\n"));
14029   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14030 }
14031
14032 /* Implement the "show ada" prefix command.  */
14033
14034 static void
14035 show_ada_command (char *args, int from_tty)
14036 {
14037   cmd_show_list (show_ada_list, from_tty, "");
14038 }
14039
14040 static void
14041 initialize_ada_catchpoint_ops (void)
14042 {
14043   struct breakpoint_ops *ops;
14044
14045   initialize_breakpoint_ops ();
14046
14047   ops = &catch_exception_breakpoint_ops;
14048   *ops = bkpt_breakpoint_ops;
14049   ops->dtor = dtor_catch_exception;
14050   ops->allocate_location = allocate_location_catch_exception;
14051   ops->re_set = re_set_catch_exception;
14052   ops->check_status = check_status_catch_exception;
14053   ops->print_it = print_it_catch_exception;
14054   ops->print_one = print_one_catch_exception;
14055   ops->print_mention = print_mention_catch_exception;
14056   ops->print_recreate = print_recreate_catch_exception;
14057
14058   ops = &catch_exception_unhandled_breakpoint_ops;
14059   *ops = bkpt_breakpoint_ops;
14060   ops->dtor = dtor_catch_exception_unhandled;
14061   ops->allocate_location = allocate_location_catch_exception_unhandled;
14062   ops->re_set = re_set_catch_exception_unhandled;
14063   ops->check_status = check_status_catch_exception_unhandled;
14064   ops->print_it = print_it_catch_exception_unhandled;
14065   ops->print_one = print_one_catch_exception_unhandled;
14066   ops->print_mention = print_mention_catch_exception_unhandled;
14067   ops->print_recreate = print_recreate_catch_exception_unhandled;
14068
14069   ops = &catch_assert_breakpoint_ops;
14070   *ops = bkpt_breakpoint_ops;
14071   ops->dtor = dtor_catch_assert;
14072   ops->allocate_location = allocate_location_catch_assert;
14073   ops->re_set = re_set_catch_assert;
14074   ops->check_status = check_status_catch_assert;
14075   ops->print_it = print_it_catch_assert;
14076   ops->print_one = print_one_catch_assert;
14077   ops->print_mention = print_mention_catch_assert;
14078   ops->print_recreate = print_recreate_catch_assert;
14079 }
14080
14081 /* This module's 'new_objfile' observer.  */
14082
14083 static void
14084 ada_new_objfile_observer (struct objfile *objfile)
14085 {
14086   ada_clear_symbol_cache ();
14087 }
14088
14089 /* This module's 'free_objfile' observer.  */
14090
14091 static void
14092 ada_free_objfile_observer (struct objfile *objfile)
14093 {
14094   ada_clear_symbol_cache ();
14095 }
14096
14097 void
14098 _initialize_ada_language (void)
14099 {
14100   add_language (&ada_language_defn);
14101
14102   initialize_ada_catchpoint_ops ();
14103
14104   add_prefix_cmd ("ada", no_class, set_ada_command,
14105                   _("Prefix command for changing Ada-specfic settings"),
14106                   &set_ada_list, "set ada ", 0, &setlist);
14107
14108   add_prefix_cmd ("ada", no_class, show_ada_command,
14109                   _("Generic command for showing Ada-specific settings."),
14110                   &show_ada_list, "show ada ", 0, &showlist);
14111
14112   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14113                            &trust_pad_over_xvs, _("\
14114 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14115 Show whether an optimization trusting PAD types over XVS types is activated"),
14116                            _("\
14117 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14118 should normally trust the contents of PAD types, but certain older versions\n\
14119 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14120 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14121 work around this bug.  It is always safe to turn this option \"off\", but\n\
14122 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14123 this option to \"off\" unless necessary."),
14124                             NULL, NULL, &set_ada_list, &show_ada_list);
14125
14126   add_catch_command ("exception", _("\
14127 Catch Ada exceptions, when raised.\n\
14128 With an argument, catch only exceptions with the given name."),
14129                      catch_ada_exception_command,
14130                      NULL,
14131                      CATCH_PERMANENT,
14132                      CATCH_TEMPORARY);
14133   add_catch_command ("assert", _("\
14134 Catch failed Ada assertions, when raised.\n\
14135 With an argument, catch only exceptions with the given name."),
14136                      catch_assert_command,
14137                      NULL,
14138                      CATCH_PERMANENT,
14139                      CATCH_TEMPORARY);
14140
14141   varsize_limit = 65536;
14142
14143   add_info ("exceptions", info_exceptions_command,
14144             _("\
14145 List all Ada exception names.\n\
14146 If a regular expression is passed as an argument, only those matching\n\
14147 the regular expression are listed."));
14148
14149   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14150                   _("Set Ada maintenance-related variables."),
14151                   &maint_set_ada_cmdlist, "maintenance set ada ",
14152                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14153
14154   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14155                   _("Show Ada maintenance-related variables"),
14156                   &maint_show_ada_cmdlist, "maintenance show ada ",
14157                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14158
14159   add_setshow_boolean_cmd
14160     ("ignore-descriptive-types", class_maintenance,
14161      &ada_ignore_descriptive_types_p,
14162      _("Set whether descriptive types generated by GNAT should be ignored."),
14163      _("Show whether descriptive types generated by GNAT should be ignored."),
14164      _("\
14165 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14166 DWARF attribute."),
14167      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14168
14169   obstack_init (&symbol_list_obstack);
14170
14171   decoded_names_store = htab_create_alloc
14172     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
14173      NULL, xcalloc, xfree);
14174
14175   /* The ada-lang observers.  */
14176   observer_attach_new_objfile (ada_new_objfile_observer);
14177   observer_attach_free_objfile (ada_free_objfile_observer);
14178   observer_attach_inferior_exit (ada_inferior_exit);
14179
14180   /* Setup various context-specific data.  */
14181   ada_inferior_data
14182     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14183   ada_pspace_data_handle
14184     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14185 }