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