Add langdef arg to la_lookup_symbol_nonlocal.
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2014 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observer.h"
52 #include "vec.h"
53 #include "stack.h"
54 #include "gdb_vecs.h"
55 #include "typeprint.h"
56
57 #include "psymtab.h"
58 #include "value.h"
59 #include "mi/mi-common.h"
60 #include "arch-utils.h"
61 #include "cli/cli-utils.h"
62
63 /* Define whether or not the C operator '/' truncates towards zero for
64    differently signed operands (truncation direction is undefined in C).
65    Copied from valarith.c.  */
66
67 #ifndef TRUNCATION_TOWARDS_ZERO
68 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
69 #endif
70
71 static struct type *desc_base_type (struct type *);
72
73 static struct type *desc_bounds_type (struct type *);
74
75 static struct value *desc_bounds (struct value *);
76
77 static int fat_pntr_bounds_bitpos (struct type *);
78
79 static int fat_pntr_bounds_bitsize (struct type *);
80
81 static struct type *desc_data_target_type (struct type *);
82
83 static struct value *desc_data (struct value *);
84
85 static int fat_pntr_data_bitpos (struct type *);
86
87 static int fat_pntr_data_bitsize (struct type *);
88
89 static struct value *desc_one_bound (struct value *, int, int);
90
91 static int desc_bound_bitpos (struct type *, int, int);
92
93 static int desc_bound_bitsize (struct type *, int, int);
94
95 static struct type *desc_index_type (struct type *, int);
96
97 static int desc_arity (struct type *);
98
99 static int ada_type_match (struct type *, struct type *, int);
100
101 static int ada_args_match (struct symbol *, struct value **, int);
102
103 static int full_match (const char *, const char *);
104
105 static struct value *make_array_descriptor (struct type *, struct value *);
106
107 static void ada_add_block_symbols (struct obstack *,
108                                    const struct block *, const char *,
109                                    domain_enum, struct objfile *, int);
110
111 static int is_nonfunction (struct ada_symbol_info *, int);
112
113 static void add_defn_to_vec (struct obstack *, struct symbol *,
114                              const struct block *);
115
116 static int num_defns_collected (struct obstack *);
117
118 static struct ada_symbol_info *defns_collected (struct obstack *, int);
119
120 static struct value *resolve_subexp (struct expression **, int *, int,
121                                      struct type *);
122
123 static void replace_operator_with_call (struct expression **, int, int, int,
124                                         struct symbol *, const struct block *);
125
126 static int possible_user_operator_p (enum exp_opcode, struct value **);
127
128 static char *ada_op_name (enum exp_opcode);
129
130 static const char *ada_decoded_op_name (enum exp_opcode);
131
132 static int numeric_type_p (struct type *);
133
134 static int integer_type_p (struct type *);
135
136 static int scalar_type_p (struct type *);
137
138 static int discrete_type_p (struct type *);
139
140 static enum ada_renaming_category parse_old_style_renaming (struct type *,
141                                                             const char **,
142                                                             int *,
143                                                             const char **);
144
145 static struct symbol *find_old_style_renaming_symbol (const char *,
146                                                       const struct block *);
147
148 static struct type *ada_lookup_struct_elt_type (struct type *, char *,
149                                                 int, int, int *);
150
151 static struct value *evaluate_subexp_type (struct expression *, int *);
152
153 static struct type *ada_find_parallel_type_with_name (struct type *,
154                                                       const char *);
155
156 static int is_dynamic_field (struct type *, int);
157
158 static struct type *to_fixed_variant_branch_type (struct type *,
159                                                   const gdb_byte *,
160                                                   CORE_ADDR, struct value *);
161
162 static struct type *to_fixed_array_type (struct type *, struct value *, int);
163
164 static struct type *to_fixed_range_type (struct type *, struct value *);
165
166 static struct type *to_static_fixed_type (struct type *);
167 static struct type *static_unwrap_type (struct type *type);
168
169 static struct value *unwrap_value (struct value *);
170
171 static struct type *constrained_packed_array_type (struct type *, long *);
172
173 static struct type *decode_constrained_packed_array_type (struct type *);
174
175 static long decode_packed_array_bitsize (struct type *);
176
177 static struct value *decode_constrained_packed_array (struct value *);
178
179 static int ada_is_packed_array_type  (struct type *);
180
181 static int ada_is_unconstrained_packed_array_type (struct type *);
182
183 static struct value *value_subscript_packed (struct value *, int,
184                                              struct value **);
185
186 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
187
188 static struct value *coerce_unspec_val_to_type (struct value *,
189                                                 struct type *);
190
191 static struct value *get_var_value (char *, char *);
192
193 static int lesseq_defined_than (struct symbol *, struct symbol *);
194
195 static int equiv_types (struct type *, struct type *);
196
197 static int is_name_suffix (const char *);
198
199 static int advance_wild_match (const char **, const char *, int);
200
201 static int wild_match (const char *, const char *);
202
203 static struct value *ada_coerce_ref (struct value *);
204
205 static LONGEST pos_atr (struct value *);
206
207 static struct value *value_pos_atr (struct type *, struct value *);
208
209 static struct value *value_val_atr (struct type *, struct value *);
210
211 static struct symbol *standard_lookup (const char *, const struct block *,
212                                        domain_enum);
213
214 static struct value *ada_search_struct_field (char *, struct value *, int,
215                                               struct type *);
216
217 static struct value *ada_value_primitive_field (struct value *, int, int,
218                                                 struct type *);
219
220 static int find_struct_field (const char *, struct type *, int,
221                               struct type **, int *, int *, int *, int *);
222
223 static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
224                                                 struct value *);
225
226 static int ada_resolve_function (struct ada_symbol_info *, int,
227                                  struct value **, int, const char *,
228                                  struct type *);
229
230 static int ada_is_direct_array_type (struct type *);
231
232 static void ada_language_arch_info (struct gdbarch *,
233                                     struct language_arch_info *);
234
235 static struct value *ada_index_struct_field (int, struct value *, int,
236                                              struct type *);
237
238 static struct value *assign_aggregate (struct value *, struct value *, 
239                                        struct expression *,
240                                        int *, enum noside);
241
242 static void aggregate_assign_from_choices (struct value *, struct value *, 
243                                            struct expression *,
244                                            int *, LONGEST *, int *,
245                                            int, LONGEST, LONGEST);
246
247 static void aggregate_assign_positional (struct value *, struct value *,
248                                          struct expression *,
249                                          int *, LONGEST *, int *, int,
250                                          LONGEST, LONGEST);
251
252
253 static void aggregate_assign_others (struct value *, struct value *,
254                                      struct expression *,
255                                      int *, LONGEST *, int, LONGEST, LONGEST);
256
257
258 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
259
260
261 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
262                                           int *, enum noside);
263
264 static void ada_forward_operator_length (struct expression *, int, int *,
265                                          int *);
266
267 static struct type *ada_find_any_type (const char *name);
268 \f
269
270 /* The result of a symbol lookup to be stored in our symbol cache.  */
271
272 struct cache_entry
273 {
274   /* The name used to perform the lookup.  */
275   const char *name;
276   /* The namespace used during the lookup.  */
277   domain_enum namespace;
278   /* The symbol returned by the lookup, or NULL if no matching symbol
279      was found.  */
280   struct symbol *sym;
281   /* The block where the symbol was found, or NULL if no matching
282      symbol was found.  */
283   const struct block *block;
284   /* A pointer to the next entry with the same hash.  */
285   struct cache_entry *next;
286 };
287
288 /* The Ada symbol cache, used to store the result of Ada-mode symbol
289    lookups in the course of executing the user's commands.
290
291    The cache is implemented using a simple, fixed-sized hash.
292    The size is fixed on the grounds that there are not likely to be
293    all that many symbols looked up during any given session, regardless
294    of the size of the symbol table.  If we decide to go to a resizable
295    table, let's just use the stuff from libiberty instead.  */
296
297 #define HASH_SIZE 1009
298
299 struct ada_symbol_cache
300 {
301   /* An obstack used to store the entries in our cache.  */
302   struct obstack cache_space;
303
304   /* The root of the hash table used to implement our symbol cache.  */
305   struct cache_entry *root[HASH_SIZE];
306 };
307
308 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
309
310 /* Maximum-sized dynamic type.  */
311 static unsigned int varsize_limit;
312
313 /* FIXME: brobecker/2003-09-17: No longer a const because it is
314    returned by a function that does not return a const char *.  */
315 static char *ada_completer_word_break_characters =
316 #ifdef VMS
317   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
318 #else
319   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
320 #endif
321
322 /* The name of the symbol to use to get the name of the main subprogram.  */
323 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
324   = "__gnat_ada_main_program_name";
325
326 /* Limit on the number of warnings to raise per expression evaluation.  */
327 static int warning_limit = 2;
328
329 /* Number of warning messages issued; reset to 0 by cleanups after
330    expression evaluation.  */
331 static int warnings_issued = 0;
332
333 static const char *known_runtime_file_name_patterns[] = {
334   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
335 };
336
337 static const char *known_auxiliary_function_name_patterns[] = {
338   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
339 };
340
341 /* Space for allocating results of ada_lookup_symbol_list.  */
342 static struct obstack symbol_list_obstack;
343
344 /* Maintenance-related settings for this module.  */
345
346 static struct cmd_list_element *maint_set_ada_cmdlist;
347 static struct cmd_list_element *maint_show_ada_cmdlist;
348
349 /* Implement the "maintenance set ada" (prefix) command.  */
350
351 static void
352 maint_set_ada_cmd (char *args, int from_tty)
353 {
354   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
355              gdb_stdout);
356 }
357
358 /* Implement the "maintenance show ada" (prefix) command.  */
359
360 static void
361 maint_show_ada_cmd (char *args, int from_tty)
362 {
363   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
364 }
365
366 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
367
368 static int ada_ignore_descriptive_types_p = 0;
369
370                         /* Inferior-specific data.  */
371
372 /* Per-inferior data for this module.  */
373
374 struct ada_inferior_data
375 {
376   /* The ada__tags__type_specific_data type, which is used when decoding
377      tagged types.  With older versions of GNAT, this type was directly
378      accessible through a component ("tsd") in the object tag.  But this
379      is no longer the case, so we cache it for each inferior.  */
380   struct type *tsd_type;
381
382   /* The exception_support_info data.  This data is used to determine
383      how to implement support for Ada exception catchpoints in a given
384      inferior.  */
385   const struct exception_support_info *exception_info;
386 };
387
388 /* Our key to this module's inferior data.  */
389 static const struct inferior_data *ada_inferior_data;
390
391 /* A cleanup routine for our inferior data.  */
392 static void
393 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
394 {
395   struct ada_inferior_data *data;
396
397   data = inferior_data (inf, ada_inferior_data);
398   if (data != NULL)
399     xfree (data);
400 }
401
402 /* Return our inferior data for the given inferior (INF).
403
404    This function always returns a valid pointer to an allocated
405    ada_inferior_data structure.  If INF's inferior data has not
406    been previously set, this functions creates a new one with all
407    fields set to zero, sets INF's inferior to it, and then returns
408    a pointer to that newly allocated ada_inferior_data.  */
409
410 static struct ada_inferior_data *
411 get_ada_inferior_data (struct inferior *inf)
412 {
413   struct ada_inferior_data *data;
414
415   data = inferior_data (inf, ada_inferior_data);
416   if (data == NULL)
417     {
418       data = XCNEW (struct ada_inferior_data);
419       set_inferior_data (inf, ada_inferior_data, data);
420     }
421
422   return data;
423 }
424
425 /* Perform all necessary cleanups regarding our module's inferior data
426    that is required after the inferior INF just exited.  */
427
428 static void
429 ada_inferior_exit (struct inferior *inf)
430 {
431   ada_inferior_data_cleanup (inf, NULL);
432   set_inferior_data (inf, ada_inferior_data, NULL);
433 }
434
435
436                         /* program-space-specific data.  */
437
438 /* This module's per-program-space data.  */
439 struct ada_pspace_data
440 {
441   /* The Ada symbol cache.  */
442   struct ada_symbol_cache *sym_cache;
443 };
444
445 /* Key to our per-program-space data.  */
446 static const struct program_space_data *ada_pspace_data_handle;
447
448 /* Return this module's data for the given program space (PSPACE).
449    If not is found, add a zero'ed one now.
450
451    This function always returns a valid object.  */
452
453 static struct ada_pspace_data *
454 get_ada_pspace_data (struct program_space *pspace)
455 {
456   struct ada_pspace_data *data;
457
458   data = program_space_data (pspace, ada_pspace_data_handle);
459   if (data == NULL)
460     {
461       data = XCNEW (struct ada_pspace_data);
462       set_program_space_data (pspace, ada_pspace_data_handle, data);
463     }
464
465   return data;
466 }
467
468 /* The cleanup callback for this module's per-program-space data.  */
469
470 static void
471 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
472 {
473   struct ada_pspace_data *pspace_data = data;
474
475   if (pspace_data->sym_cache != NULL)
476     ada_free_symbol_cache (pspace_data->sym_cache);
477   xfree (pspace_data);
478 }
479
480                         /* Utilities */
481
482 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
483    all typedef layers have been peeled.  Otherwise, return TYPE.
484
485    Normally, we really expect a typedef type to only have 1 typedef layer.
486    In other words, we really expect the target type of a typedef type to be
487    a non-typedef type.  This is particularly true for Ada units, because
488    the language does not have a typedef vs not-typedef distinction.
489    In that respect, the Ada compiler has been trying to eliminate as many
490    typedef definitions in the debugging information, since they generally
491    do not bring any extra information (we still use typedef under certain
492    circumstances related mostly to the GNAT encoding).
493
494    Unfortunately, we have seen situations where the debugging information
495    generated by the compiler leads to such multiple typedef layers.  For
496    instance, consider the following example with stabs:
497
498      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
499      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
500
501    This is an error in the debugging information which causes type
502    pck__float_array___XUP to be defined twice, and the second time,
503    it is defined as a typedef of a typedef.
504
505    This is on the fringe of legality as far as debugging information is
506    concerned, and certainly unexpected.  But it is easy to handle these
507    situations correctly, so we can afford to be lenient in this case.  */
508
509 static struct type *
510 ada_typedef_target_type (struct type *type)
511 {
512   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
513     type = TYPE_TARGET_TYPE (type);
514   return type;
515 }
516
517 /* Given DECODED_NAME a string holding a symbol name in its
518    decoded form (ie using the Ada dotted notation), returns
519    its unqualified name.  */
520
521 static const char *
522 ada_unqualified_name (const char *decoded_name)
523 {
524   const char *result;
525   
526   /* If the decoded name starts with '<', it means that the encoded
527      name does not follow standard naming conventions, and thus that
528      it is not your typical Ada symbol name.  Trying to unqualify it
529      is therefore pointless and possibly erroneous.  */
530   if (decoded_name[0] == '<')
531     return decoded_name;
532
533   result = strrchr (decoded_name, '.');
534   if (result != NULL)
535     result++;                   /* Skip the dot...  */
536   else
537     result = decoded_name;
538
539   return result;
540 }
541
542 /* Return a string starting with '<', followed by STR, and '>'.
543    The result is good until the next call.  */
544
545 static char *
546 add_angle_brackets (const char *str)
547 {
548   static char *result = NULL;
549
550   xfree (result);
551   result = xstrprintf ("<%s>", str);
552   return result;
553 }
554
555 static char *
556 ada_get_gdb_completer_word_break_characters (void)
557 {
558   return ada_completer_word_break_characters;
559 }
560
561 /* Print an array element index using the Ada syntax.  */
562
563 static void
564 ada_print_array_index (struct value *index_value, struct ui_file *stream,
565                        const struct value_print_options *options)
566 {
567   LA_VALUE_PRINT (index_value, stream, options);
568   fprintf_filtered (stream, " => ");
569 }
570
571 /* Assuming VECT points to an array of *SIZE objects of size
572    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
573    updating *SIZE as necessary and returning the (new) array.  */
574
575 void *
576 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
577 {
578   if (*size < min_size)
579     {
580       *size *= 2;
581       if (*size < min_size)
582         *size = min_size;
583       vect = xrealloc (vect, *size * element_size);
584     }
585   return vect;
586 }
587
588 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
589    suffix of FIELD_NAME beginning "___".  */
590
591 static int
592 field_name_match (const char *field_name, const char *target)
593 {
594   int len = strlen (target);
595
596   return
597     (strncmp (field_name, target, len) == 0
598      && (field_name[len] == '\0'
599          || (strncmp (field_name + len, "___", 3) == 0
600              && strcmp (field_name + strlen (field_name) - 6,
601                         "___XVN") != 0)));
602 }
603
604
605 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
606    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
607    and return its index.  This function also handles fields whose name
608    have ___ suffixes because the compiler sometimes alters their name
609    by adding such a suffix to represent fields with certain constraints.
610    If the field could not be found, return a negative number if
611    MAYBE_MISSING is set.  Otherwise raise an error.  */
612
613 int
614 ada_get_field_index (const struct type *type, const char *field_name,
615                      int maybe_missing)
616 {
617   int fieldno;
618   struct type *struct_type = check_typedef ((struct type *) type);
619
620   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
621     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
622       return fieldno;
623
624   if (!maybe_missing)
625     error (_("Unable to find field %s in struct %s.  Aborting"),
626            field_name, TYPE_NAME (struct_type));
627
628   return -1;
629 }
630
631 /* The length of the prefix of NAME prior to any "___" suffix.  */
632
633 int
634 ada_name_prefix_len (const char *name)
635 {
636   if (name == NULL)
637     return 0;
638   else
639     {
640       const char *p = strstr (name, "___");
641
642       if (p == NULL)
643         return strlen (name);
644       else
645         return p - name;
646     }
647 }
648
649 /* Return non-zero if SUFFIX is a suffix of STR.
650    Return zero if STR is null.  */
651
652 static int
653 is_suffix (const char *str, const char *suffix)
654 {
655   int len1, len2;
656
657   if (str == NULL)
658     return 0;
659   len1 = strlen (str);
660   len2 = strlen (suffix);
661   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
662 }
663
664 /* The contents of value VAL, treated as a value of type TYPE.  The
665    result is an lval in memory if VAL is.  */
666
667 static struct value *
668 coerce_unspec_val_to_type (struct value *val, struct type *type)
669 {
670   type = ada_check_typedef (type);
671   if (value_type (val) == type)
672     return val;
673   else
674     {
675       struct value *result;
676
677       /* Make sure that the object size is not unreasonable before
678          trying to allocate some memory for it.  */
679       ada_ensure_varsize_limit (type);
680
681       if (value_lazy (val)
682           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
683         result = allocate_value_lazy (type);
684       else
685         {
686           result = allocate_value (type);
687           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
688         }
689       set_value_component_location (result, val);
690       set_value_bitsize (result, value_bitsize (val));
691       set_value_bitpos (result, value_bitpos (val));
692       set_value_address (result, value_address (val));
693       return result;
694     }
695 }
696
697 static const gdb_byte *
698 cond_offset_host (const gdb_byte *valaddr, long offset)
699 {
700   if (valaddr == NULL)
701     return NULL;
702   else
703     return valaddr + offset;
704 }
705
706 static CORE_ADDR
707 cond_offset_target (CORE_ADDR address, long offset)
708 {
709   if (address == 0)
710     return 0;
711   else
712     return address + offset;
713 }
714
715 /* Issue a warning (as for the definition of warning in utils.c, but
716    with exactly one argument rather than ...), unless the limit on the
717    number of warnings has passed during the evaluation of the current
718    expression.  */
719
720 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
721    provided by "complaint".  */
722 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
723
724 static void
725 lim_warning (const char *format, ...)
726 {
727   va_list args;
728
729   va_start (args, format);
730   warnings_issued += 1;
731   if (warnings_issued <= warning_limit)
732     vwarning (format, args);
733
734   va_end (args);
735 }
736
737 /* Issue an error if the size of an object of type T is unreasonable,
738    i.e. if it would be a bad idea to allocate a value of this type in
739    GDB.  */
740
741 void
742 ada_ensure_varsize_limit (const struct type *type)
743 {
744   if (TYPE_LENGTH (type) > varsize_limit)
745     error (_("object size is larger than varsize-limit"));
746 }
747
748 /* Maximum value of a SIZE-byte signed integer type.  */
749 static LONGEST
750 max_of_size (int size)
751 {
752   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
753
754   return top_bit | (top_bit - 1);
755 }
756
757 /* Minimum value of a SIZE-byte signed integer type.  */
758 static LONGEST
759 min_of_size (int size)
760 {
761   return -max_of_size (size) - 1;
762 }
763
764 /* Maximum value of a SIZE-byte unsigned integer type.  */
765 static ULONGEST
766 umax_of_size (int size)
767 {
768   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
769
770   return top_bit | (top_bit - 1);
771 }
772
773 /* Maximum value of integral type T, as a signed quantity.  */
774 static LONGEST
775 max_of_type (struct type *t)
776 {
777   if (TYPE_UNSIGNED (t))
778     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
779   else
780     return max_of_size (TYPE_LENGTH (t));
781 }
782
783 /* Minimum value of integral type T, as a signed quantity.  */
784 static LONGEST
785 min_of_type (struct type *t)
786 {
787   if (TYPE_UNSIGNED (t)) 
788     return 0;
789   else
790     return min_of_size (TYPE_LENGTH (t));
791 }
792
793 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
794 LONGEST
795 ada_discrete_type_high_bound (struct type *type)
796 {
797   type = resolve_dynamic_type (type, 0);
798   switch (TYPE_CODE (type))
799     {
800     case TYPE_CODE_RANGE:
801       return TYPE_HIGH_BOUND (type);
802     case TYPE_CODE_ENUM:
803       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
804     case TYPE_CODE_BOOL:
805       return 1;
806     case TYPE_CODE_CHAR:
807     case TYPE_CODE_INT:
808       return max_of_type (type);
809     default:
810       error (_("Unexpected type in ada_discrete_type_high_bound."));
811     }
812 }
813
814 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
815 LONGEST
816 ada_discrete_type_low_bound (struct type *type)
817 {
818   type = resolve_dynamic_type (type, 0);
819   switch (TYPE_CODE (type))
820     {
821     case TYPE_CODE_RANGE:
822       return TYPE_LOW_BOUND (type);
823     case TYPE_CODE_ENUM:
824       return TYPE_FIELD_ENUMVAL (type, 0);
825     case TYPE_CODE_BOOL:
826       return 0;
827     case TYPE_CODE_CHAR:
828     case TYPE_CODE_INT:
829       return min_of_type (type);
830     default:
831       error (_("Unexpected type in ada_discrete_type_low_bound."));
832     }
833 }
834
835 /* The identity on non-range types.  For range types, the underlying
836    non-range scalar type.  */
837
838 static struct type *
839 get_base_type (struct type *type)
840 {
841   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
842     {
843       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
844         return type;
845       type = TYPE_TARGET_TYPE (type);
846     }
847   return type;
848 }
849
850 /* Return a decoded version of the given VALUE.  This means returning
851    a value whose type is obtained by applying all the GNAT-specific
852    encondings, making the resulting type a static but standard description
853    of the initial type.  */
854
855 struct value *
856 ada_get_decoded_value (struct value *value)
857 {
858   struct type *type = ada_check_typedef (value_type (value));
859
860   if (ada_is_array_descriptor_type (type)
861       || (ada_is_constrained_packed_array_type (type)
862           && TYPE_CODE (type) != TYPE_CODE_PTR))
863     {
864       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
865         value = ada_coerce_to_simple_array_ptr (value);
866       else
867         value = ada_coerce_to_simple_array (value);
868     }
869   else
870     value = ada_to_fixed_value (value);
871
872   return value;
873 }
874
875 /* Same as ada_get_decoded_value, but with the given TYPE.
876    Because there is no associated actual value for this type,
877    the resulting type might be a best-effort approximation in
878    the case of dynamic types.  */
879
880 struct type *
881 ada_get_decoded_type (struct type *type)
882 {
883   type = to_static_fixed_type (type);
884   if (ada_is_constrained_packed_array_type (type))
885     type = ada_coerce_to_simple_array_type (type);
886   return type;
887 }
888
889 \f
890
891                                 /* Language Selection */
892
893 /* If the main program is in Ada, return language_ada, otherwise return LANG
894    (the main program is in Ada iif the adainit symbol is found).  */
895
896 enum language
897 ada_update_initial_language (enum language lang)
898 {
899   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
900                              (struct objfile *) NULL).minsym != NULL)
901     return language_ada;
902
903   return lang;
904 }
905
906 /* If the main procedure is written in Ada, then return its name.
907    The result is good until the next call.  Return NULL if the main
908    procedure doesn't appear to be in Ada.  */
909
910 char *
911 ada_main_name (void)
912 {
913   struct bound_minimal_symbol msym;
914   static char *main_program_name = NULL;
915
916   /* For Ada, the name of the main procedure is stored in a specific
917      string constant, generated by the binder.  Look for that symbol,
918      extract its address, and then read that string.  If we didn't find
919      that string, then most probably the main procedure is not written
920      in Ada.  */
921   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
922
923   if (msym.minsym != NULL)
924     {
925       CORE_ADDR main_program_name_addr;
926       int err_code;
927
928       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
929       if (main_program_name_addr == 0)
930         error (_("Invalid address for Ada main program name."));
931
932       xfree (main_program_name);
933       target_read_string (main_program_name_addr, &main_program_name,
934                           1024, &err_code);
935
936       if (err_code != 0)
937         return NULL;
938       return main_program_name;
939     }
940
941   /* The main procedure doesn't seem to be in Ada.  */
942   return NULL;
943 }
944 \f
945                                 /* Symbols */
946
947 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
948    of NULLs.  */
949
950 const struct ada_opname_map ada_opname_table[] = {
951   {"Oadd", "\"+\"", BINOP_ADD},
952   {"Osubtract", "\"-\"", BINOP_SUB},
953   {"Omultiply", "\"*\"", BINOP_MUL},
954   {"Odivide", "\"/\"", BINOP_DIV},
955   {"Omod", "\"mod\"", BINOP_MOD},
956   {"Orem", "\"rem\"", BINOP_REM},
957   {"Oexpon", "\"**\"", BINOP_EXP},
958   {"Olt", "\"<\"", BINOP_LESS},
959   {"Ole", "\"<=\"", BINOP_LEQ},
960   {"Ogt", "\">\"", BINOP_GTR},
961   {"Oge", "\">=\"", BINOP_GEQ},
962   {"Oeq", "\"=\"", BINOP_EQUAL},
963   {"One", "\"/=\"", BINOP_NOTEQUAL},
964   {"Oand", "\"and\"", BINOP_BITWISE_AND},
965   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
966   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
967   {"Oconcat", "\"&\"", BINOP_CONCAT},
968   {"Oabs", "\"abs\"", UNOP_ABS},
969   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
970   {"Oadd", "\"+\"", UNOP_PLUS},
971   {"Osubtract", "\"-\"", UNOP_NEG},
972   {NULL, NULL}
973 };
974
975 /* The "encoded" form of DECODED, according to GNAT conventions.
976    The result is valid until the next call to ada_encode.  */
977
978 char *
979 ada_encode (const char *decoded)
980 {
981   static char *encoding_buffer = NULL;
982   static size_t encoding_buffer_size = 0;
983   const char *p;
984   int k;
985
986   if (decoded == NULL)
987     return NULL;
988
989   GROW_VECT (encoding_buffer, encoding_buffer_size,
990              2 * strlen (decoded) + 10);
991
992   k = 0;
993   for (p = decoded; *p != '\0'; p += 1)
994     {
995       if (*p == '.')
996         {
997           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
998           k += 2;
999         }
1000       else if (*p == '"')
1001         {
1002           const struct ada_opname_map *mapping;
1003
1004           for (mapping = ada_opname_table;
1005                mapping->encoded != NULL
1006                && strncmp (mapping->decoded, p,
1007                            strlen (mapping->decoded)) != 0; mapping += 1)
1008             ;
1009           if (mapping->encoded == NULL)
1010             error (_("invalid Ada operator name: %s"), p);
1011           strcpy (encoding_buffer + k, mapping->encoded);
1012           k += strlen (mapping->encoded);
1013           break;
1014         }
1015       else
1016         {
1017           encoding_buffer[k] = *p;
1018           k += 1;
1019         }
1020     }
1021
1022   encoding_buffer[k] = '\0';
1023   return encoding_buffer;
1024 }
1025
1026 /* Return NAME folded to lower case, or, if surrounded by single
1027    quotes, unfolded, but with the quotes stripped away.  Result good
1028    to next call.  */
1029
1030 char *
1031 ada_fold_name (const char *name)
1032 {
1033   static char *fold_buffer = NULL;
1034   static size_t fold_buffer_size = 0;
1035
1036   int len = strlen (name);
1037   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1038
1039   if (name[0] == '\'')
1040     {
1041       strncpy (fold_buffer, name + 1, len - 2);
1042       fold_buffer[len - 2] = '\000';
1043     }
1044   else
1045     {
1046       int i;
1047
1048       for (i = 0; i <= len; i += 1)
1049         fold_buffer[i] = tolower (name[i]);
1050     }
1051
1052   return fold_buffer;
1053 }
1054
1055 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1056
1057 static int
1058 is_lower_alphanum (const char c)
1059 {
1060   return (isdigit (c) || (isalpha (c) && islower (c)));
1061 }
1062
1063 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1064    This function saves in LEN the length of that same symbol name but
1065    without either of these suffixes:
1066      . .{DIGIT}+
1067      . ${DIGIT}+
1068      . ___{DIGIT}+
1069      . __{DIGIT}+.
1070
1071    These are suffixes introduced by the compiler for entities such as
1072    nested subprogram for instance, in order to avoid name clashes.
1073    They do not serve any purpose for the debugger.  */
1074
1075 static void
1076 ada_remove_trailing_digits (const char *encoded, int *len)
1077 {
1078   if (*len > 1 && isdigit (encoded[*len - 1]))
1079     {
1080       int i = *len - 2;
1081
1082       while (i > 0 && isdigit (encoded[i]))
1083         i--;
1084       if (i >= 0 && encoded[i] == '.')
1085         *len = i;
1086       else if (i >= 0 && encoded[i] == '$')
1087         *len = i;
1088       else if (i >= 2 && strncmp (encoded + i - 2, "___", 3) == 0)
1089         *len = i - 2;
1090       else if (i >= 1 && strncmp (encoded + i - 1, "__", 2) == 0)
1091         *len = i - 1;
1092     }
1093 }
1094
1095 /* Remove the suffix introduced by the compiler for protected object
1096    subprograms.  */
1097
1098 static void
1099 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1100 {
1101   /* Remove trailing N.  */
1102
1103   /* Protected entry subprograms are broken into two
1104      separate subprograms: The first one is unprotected, and has
1105      a 'N' suffix; the second is the protected version, and has
1106      the 'P' suffix.  The second calls the first one after handling
1107      the protection.  Since the P subprograms are internally generated,
1108      we leave these names undecoded, giving the user a clue that this
1109      entity is internal.  */
1110
1111   if (*len > 1
1112       && encoded[*len - 1] == 'N'
1113       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1114     *len = *len - 1;
1115 }
1116
1117 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1118
1119 static void
1120 ada_remove_Xbn_suffix (const char *encoded, int *len)
1121 {
1122   int i = *len - 1;
1123
1124   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1125     i--;
1126
1127   if (encoded[i] != 'X')
1128     return;
1129
1130   if (i == 0)
1131     return;
1132
1133   if (isalnum (encoded[i-1]))
1134     *len = i;
1135 }
1136
1137 /* If ENCODED follows the GNAT entity encoding conventions, then return
1138    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1139    replaced by ENCODED.
1140
1141    The resulting string is valid until the next call of ada_decode.
1142    If the string is unchanged by decoding, the original string pointer
1143    is returned.  */
1144
1145 const char *
1146 ada_decode (const char *encoded)
1147 {
1148   int i, j;
1149   int len0;
1150   const char *p;
1151   char *decoded;
1152   int at_start_name;
1153   static char *decoding_buffer = NULL;
1154   static size_t decoding_buffer_size = 0;
1155
1156   /* The name of the Ada main procedure starts with "_ada_".
1157      This prefix is not part of the decoded name, so skip this part
1158      if we see this prefix.  */
1159   if (strncmp (encoded, "_ada_", 5) == 0)
1160     encoded += 5;
1161
1162   /* If the name starts with '_', then it is not a properly encoded
1163      name, so do not attempt to decode it.  Similarly, if the name
1164      starts with '<', the name should not be decoded.  */
1165   if (encoded[0] == '_' || encoded[0] == '<')
1166     goto Suppress;
1167
1168   len0 = strlen (encoded);
1169
1170   ada_remove_trailing_digits (encoded, &len0);
1171   ada_remove_po_subprogram_suffix (encoded, &len0);
1172
1173   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1174      the suffix is located before the current "end" of ENCODED.  We want
1175      to avoid re-matching parts of ENCODED that have previously been
1176      marked as discarded (by decrementing LEN0).  */
1177   p = strstr (encoded, "___");
1178   if (p != NULL && p - encoded < len0 - 3)
1179     {
1180       if (p[3] == 'X')
1181         len0 = p - encoded;
1182       else
1183         goto Suppress;
1184     }
1185
1186   /* Remove any trailing TKB suffix.  It tells us that this symbol
1187      is for the body of a task, but that information does not actually
1188      appear in the decoded name.  */
1189
1190   if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0)
1191     len0 -= 3;
1192
1193   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1194      from the TKB suffix because it is used for non-anonymous task
1195      bodies.  */
1196
1197   if (len0 > 2 && strncmp (encoded + len0 - 2, "TB", 2) == 0)
1198     len0 -= 2;
1199
1200   /* Remove trailing "B" suffixes.  */
1201   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1202
1203   if (len0 > 1 && strncmp (encoded + len0 - 1, "B", 1) == 0)
1204     len0 -= 1;
1205
1206   /* Make decoded big enough for possible expansion by operator name.  */
1207
1208   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1209   decoded = decoding_buffer;
1210
1211   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1212
1213   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1214     {
1215       i = len0 - 2;
1216       while ((i >= 0 && isdigit (encoded[i]))
1217              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1218         i -= 1;
1219       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1220         len0 = i - 1;
1221       else if (encoded[i] == '$')
1222         len0 = i;
1223     }
1224
1225   /* The first few characters that are not alphabetic are not part
1226      of any encoding we use, so we can copy them over verbatim.  */
1227
1228   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1229     decoded[j] = encoded[i];
1230
1231   at_start_name = 1;
1232   while (i < len0)
1233     {
1234       /* Is this a symbol function?  */
1235       if (at_start_name && encoded[i] == 'O')
1236         {
1237           int k;
1238
1239           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1240             {
1241               int op_len = strlen (ada_opname_table[k].encoded);
1242               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1243                             op_len - 1) == 0)
1244                   && !isalnum (encoded[i + op_len]))
1245                 {
1246                   strcpy (decoded + j, ada_opname_table[k].decoded);
1247                   at_start_name = 0;
1248                   i += op_len;
1249                   j += strlen (ada_opname_table[k].decoded);
1250                   break;
1251                 }
1252             }
1253           if (ada_opname_table[k].encoded != NULL)
1254             continue;
1255         }
1256       at_start_name = 0;
1257
1258       /* Replace "TK__" with "__", which will eventually be translated
1259          into "." (just below).  */
1260
1261       if (i < len0 - 4 && strncmp (encoded + i, "TK__", 4) == 0)
1262         i += 2;
1263
1264       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1265          be translated into "." (just below).  These are internal names
1266          generated for anonymous blocks inside which our symbol is nested.  */
1267
1268       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1269           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1270           && isdigit (encoded [i+4]))
1271         {
1272           int k = i + 5;
1273           
1274           while (k < len0 && isdigit (encoded[k]))
1275             k++;  /* Skip any extra digit.  */
1276
1277           /* Double-check that the "__B_{DIGITS}+" sequence we found
1278              is indeed followed by "__".  */
1279           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1280             i = k;
1281         }
1282
1283       /* Remove _E{DIGITS}+[sb] */
1284
1285       /* Just as for protected object subprograms, there are 2 categories
1286          of subprograms created by the compiler for each entry.  The first
1287          one implements the actual entry code, and has a suffix following
1288          the convention above; the second one implements the barrier and
1289          uses the same convention as above, except that the 'E' is replaced
1290          by a 'B'.
1291
1292          Just as above, we do not decode the name of barrier functions
1293          to give the user a clue that the code he is debugging has been
1294          internally generated.  */
1295
1296       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1297           && isdigit (encoded[i+2]))
1298         {
1299           int k = i + 3;
1300
1301           while (k < len0 && isdigit (encoded[k]))
1302             k++;
1303
1304           if (k < len0
1305               && (encoded[k] == 'b' || encoded[k] == 's'))
1306             {
1307               k++;
1308               /* Just as an extra precaution, make sure that if this
1309                  suffix is followed by anything else, it is a '_'.
1310                  Otherwise, we matched this sequence by accident.  */
1311               if (k == len0
1312                   || (k < len0 && encoded[k] == '_'))
1313                 i = k;
1314             }
1315         }
1316
1317       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1318          the GNAT front-end in protected object subprograms.  */
1319
1320       if (i < len0 + 3
1321           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1322         {
1323           /* Backtrack a bit up until we reach either the begining of
1324              the encoded name, or "__".  Make sure that we only find
1325              digits or lowercase characters.  */
1326           const char *ptr = encoded + i - 1;
1327
1328           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1329             ptr--;
1330           if (ptr < encoded
1331               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1332             i++;
1333         }
1334
1335       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1336         {
1337           /* This is a X[bn]* sequence not separated from the previous
1338              part of the name with a non-alpha-numeric character (in other
1339              words, immediately following an alpha-numeric character), then
1340              verify that it is placed at the end of the encoded name.  If
1341              not, then the encoding is not valid and we should abort the
1342              decoding.  Otherwise, just skip it, it is used in body-nested
1343              package names.  */
1344           do
1345             i += 1;
1346           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1347           if (i < len0)
1348             goto Suppress;
1349         }
1350       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1351         {
1352          /* Replace '__' by '.'.  */
1353           decoded[j] = '.';
1354           at_start_name = 1;
1355           i += 2;
1356           j += 1;
1357         }
1358       else
1359         {
1360           /* It's a character part of the decoded name, so just copy it
1361              over.  */
1362           decoded[j] = encoded[i];
1363           i += 1;
1364           j += 1;
1365         }
1366     }
1367   decoded[j] = '\000';
1368
1369   /* Decoded names should never contain any uppercase character.
1370      Double-check this, and abort the decoding if we find one.  */
1371
1372   for (i = 0; decoded[i] != '\0'; i += 1)
1373     if (isupper (decoded[i]) || decoded[i] == ' ')
1374       goto Suppress;
1375
1376   if (strcmp (decoded, encoded) == 0)
1377     return encoded;
1378   else
1379     return decoded;
1380
1381 Suppress:
1382   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1383   decoded = decoding_buffer;
1384   if (encoded[0] == '<')
1385     strcpy (decoded, encoded);
1386   else
1387     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1388   return decoded;
1389
1390 }
1391
1392 /* Table for keeping permanent unique copies of decoded names.  Once
1393    allocated, names in this table are never released.  While this is a
1394    storage leak, it should not be significant unless there are massive
1395    changes in the set of decoded names in successive versions of a 
1396    symbol table loaded during a single session.  */
1397 static struct htab *decoded_names_store;
1398
1399 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1400    in the language-specific part of GSYMBOL, if it has not been
1401    previously computed.  Tries to save the decoded name in the same
1402    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1403    in any case, the decoded symbol has a lifetime at least that of
1404    GSYMBOL).
1405    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1406    const, but nevertheless modified to a semantically equivalent form
1407    when a decoded name is cached in it.  */
1408
1409 const char *
1410 ada_decode_symbol (const struct general_symbol_info *arg)
1411 {
1412   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1413   const char **resultp =
1414     &gsymbol->language_specific.mangled_lang.demangled_name;
1415
1416   if (!gsymbol->ada_mangled)
1417     {
1418       const char *decoded = ada_decode (gsymbol->name);
1419       struct obstack *obstack = gsymbol->language_specific.obstack;
1420
1421       gsymbol->ada_mangled = 1;
1422
1423       if (obstack != NULL)
1424         *resultp = obstack_copy0 (obstack, decoded, strlen (decoded));
1425       else
1426         {
1427           /* Sometimes, we can't find a corresponding objfile, in
1428              which case, we put the result on the heap.  Since we only
1429              decode when needed, we hope this usually does not cause a
1430              significant memory leak (FIXME).  */
1431
1432           char **slot = (char **) htab_find_slot (decoded_names_store,
1433                                                   decoded, INSERT);
1434
1435           if (*slot == NULL)
1436             *slot = xstrdup (decoded);
1437           *resultp = *slot;
1438         }
1439     }
1440
1441   return *resultp;
1442 }
1443
1444 static char *
1445 ada_la_decode (const char *encoded, int options)
1446 {
1447   return xstrdup (ada_decode (encoded));
1448 }
1449
1450 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing
1451    suffixes that encode debugging information or leading _ada_ on
1452    SYM_NAME (see is_name_suffix commentary for the debugging
1453    information that is ignored).  If WILD, then NAME need only match a
1454    suffix of SYM_NAME minus the same suffixes.  Also returns 0 if
1455    either argument is NULL.  */
1456
1457 static int
1458 match_name (const char *sym_name, const char *name, int wild)
1459 {
1460   if (sym_name == NULL || name == NULL)
1461     return 0;
1462   else if (wild)
1463     return wild_match (sym_name, name) == 0;
1464   else
1465     {
1466       int len_name = strlen (name);
1467
1468       return (strncmp (sym_name, name, len_name) == 0
1469               && is_name_suffix (sym_name + len_name))
1470         || (strncmp (sym_name, "_ada_", 5) == 0
1471             && strncmp (sym_name + 5, name, len_name) == 0
1472             && is_name_suffix (sym_name + len_name + 5));
1473     }
1474 }
1475 \f
1476
1477                                 /* Arrays */
1478
1479 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1480    generated by the GNAT compiler to describe the index type used
1481    for each dimension of an array, check whether it follows the latest
1482    known encoding.  If not, fix it up to conform to the latest encoding.
1483    Otherwise, do nothing.  This function also does nothing if
1484    INDEX_DESC_TYPE is NULL.
1485
1486    The GNAT encoding used to describle the array index type evolved a bit.
1487    Initially, the information would be provided through the name of each
1488    field of the structure type only, while the type of these fields was
1489    described as unspecified and irrelevant.  The debugger was then expected
1490    to perform a global type lookup using the name of that field in order
1491    to get access to the full index type description.  Because these global
1492    lookups can be very expensive, the encoding was later enhanced to make
1493    the global lookup unnecessary by defining the field type as being
1494    the full index type description.
1495
1496    The purpose of this routine is to allow us to support older versions
1497    of the compiler by detecting the use of the older encoding, and by
1498    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1499    we essentially replace each field's meaningless type by the associated
1500    index subtype).  */
1501
1502 void
1503 ada_fixup_array_indexes_type (struct type *index_desc_type)
1504 {
1505   int i;
1506
1507   if (index_desc_type == NULL)
1508     return;
1509   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1510
1511   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1512      to check one field only, no need to check them all).  If not, return
1513      now.
1514
1515      If our INDEX_DESC_TYPE was generated using the older encoding,
1516      the field type should be a meaningless integer type whose name
1517      is not equal to the field name.  */
1518   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1519       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1520                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1521     return;
1522
1523   /* Fixup each field of INDEX_DESC_TYPE.  */
1524   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1525    {
1526      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1527      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1528
1529      if (raw_type)
1530        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1531    }
1532 }
1533
1534 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1535
1536 static char *bound_name[] = {
1537   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1538   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1539 };
1540
1541 /* Maximum number of array dimensions we are prepared to handle.  */
1542
1543 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1544
1545
1546 /* The desc_* routines return primitive portions of array descriptors
1547    (fat pointers).  */
1548
1549 /* The descriptor or array type, if any, indicated by TYPE; removes
1550    level of indirection, if needed.  */
1551
1552 static struct type *
1553 desc_base_type (struct type *type)
1554 {
1555   if (type == NULL)
1556     return NULL;
1557   type = ada_check_typedef (type);
1558   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1559     type = ada_typedef_target_type (type);
1560
1561   if (type != NULL
1562       && (TYPE_CODE (type) == TYPE_CODE_PTR
1563           || TYPE_CODE (type) == TYPE_CODE_REF))
1564     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1565   else
1566     return type;
1567 }
1568
1569 /* True iff TYPE indicates a "thin" array pointer type.  */
1570
1571 static int
1572 is_thin_pntr (struct type *type)
1573 {
1574   return
1575     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1576     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1577 }
1578
1579 /* The descriptor type for thin pointer type TYPE.  */
1580
1581 static struct type *
1582 thin_descriptor_type (struct type *type)
1583 {
1584   struct type *base_type = desc_base_type (type);
1585
1586   if (base_type == NULL)
1587     return NULL;
1588   if (is_suffix (ada_type_name (base_type), "___XVE"))
1589     return base_type;
1590   else
1591     {
1592       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1593
1594       if (alt_type == NULL)
1595         return base_type;
1596       else
1597         return alt_type;
1598     }
1599 }
1600
1601 /* A pointer to the array data for thin-pointer value VAL.  */
1602
1603 static struct value *
1604 thin_data_pntr (struct value *val)
1605 {
1606   struct type *type = ada_check_typedef (value_type (val));
1607   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1608
1609   data_type = lookup_pointer_type (data_type);
1610
1611   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1612     return value_cast (data_type, value_copy (val));
1613   else
1614     return value_from_longest (data_type, value_address (val));
1615 }
1616
1617 /* True iff TYPE indicates a "thick" array pointer type.  */
1618
1619 static int
1620 is_thick_pntr (struct type *type)
1621 {
1622   type = desc_base_type (type);
1623   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1624           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1625 }
1626
1627 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1628    pointer to one, the type of its bounds data; otherwise, NULL.  */
1629
1630 static struct type *
1631 desc_bounds_type (struct type *type)
1632 {
1633   struct type *r;
1634
1635   type = desc_base_type (type);
1636
1637   if (type == NULL)
1638     return NULL;
1639   else if (is_thin_pntr (type))
1640     {
1641       type = thin_descriptor_type (type);
1642       if (type == NULL)
1643         return NULL;
1644       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1645       if (r != NULL)
1646         return ada_check_typedef (r);
1647     }
1648   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1649     {
1650       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1651       if (r != NULL)
1652         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1653     }
1654   return NULL;
1655 }
1656
1657 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1658    one, a pointer to its bounds data.   Otherwise NULL.  */
1659
1660 static struct value *
1661 desc_bounds (struct value *arr)
1662 {
1663   struct type *type = ada_check_typedef (value_type (arr));
1664
1665   if (is_thin_pntr (type))
1666     {
1667       struct type *bounds_type =
1668         desc_bounds_type (thin_descriptor_type (type));
1669       LONGEST addr;
1670
1671       if (bounds_type == NULL)
1672         error (_("Bad GNAT array descriptor"));
1673
1674       /* NOTE: The following calculation is not really kosher, but
1675          since desc_type is an XVE-encoded type (and shouldn't be),
1676          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1677       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1678         addr = value_as_long (arr);
1679       else
1680         addr = value_address (arr);
1681
1682       return
1683         value_from_longest (lookup_pointer_type (bounds_type),
1684                             addr - TYPE_LENGTH (bounds_type));
1685     }
1686
1687   else if (is_thick_pntr (type))
1688     {
1689       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1690                                                _("Bad GNAT array descriptor"));
1691       struct type *p_bounds_type = value_type (p_bounds);
1692
1693       if (p_bounds_type
1694           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1695         {
1696           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1697
1698           if (TYPE_STUB (target_type))
1699             p_bounds = value_cast (lookup_pointer_type
1700                                    (ada_check_typedef (target_type)),
1701                                    p_bounds);
1702         }
1703       else
1704         error (_("Bad GNAT array descriptor"));
1705
1706       return p_bounds;
1707     }
1708   else
1709     return NULL;
1710 }
1711
1712 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1713    position of the field containing the address of the bounds data.  */
1714
1715 static int
1716 fat_pntr_bounds_bitpos (struct type *type)
1717 {
1718   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1719 }
1720
1721 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1722    size of the field containing the address of the bounds data.  */
1723
1724 static int
1725 fat_pntr_bounds_bitsize (struct type *type)
1726 {
1727   type = desc_base_type (type);
1728
1729   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1730     return TYPE_FIELD_BITSIZE (type, 1);
1731   else
1732     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1733 }
1734
1735 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1736    pointer to one, the type of its array data (a array-with-no-bounds type);
1737    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1738    data.  */
1739
1740 static struct type *
1741 desc_data_target_type (struct type *type)
1742 {
1743   type = desc_base_type (type);
1744
1745   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1746   if (is_thin_pntr (type))
1747     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1748   else if (is_thick_pntr (type))
1749     {
1750       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1751
1752       if (data_type
1753           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1754         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1755     }
1756
1757   return NULL;
1758 }
1759
1760 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1761    its array data.  */
1762
1763 static struct value *
1764 desc_data (struct value *arr)
1765 {
1766   struct type *type = value_type (arr);
1767
1768   if (is_thin_pntr (type))
1769     return thin_data_pntr (arr);
1770   else if (is_thick_pntr (type))
1771     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1772                              _("Bad GNAT array descriptor"));
1773   else
1774     return NULL;
1775 }
1776
1777
1778 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1779    position of the field containing the address of the data.  */
1780
1781 static int
1782 fat_pntr_data_bitpos (struct type *type)
1783 {
1784   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1785 }
1786
1787 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1788    size of the field containing the address of the data.  */
1789
1790 static int
1791 fat_pntr_data_bitsize (struct type *type)
1792 {
1793   type = desc_base_type (type);
1794
1795   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1796     return TYPE_FIELD_BITSIZE (type, 0);
1797   else
1798     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1799 }
1800
1801 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1802    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1803    bound, if WHICH is 1.  The first bound is I=1.  */
1804
1805 static struct value *
1806 desc_one_bound (struct value *bounds, int i, int which)
1807 {
1808   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1809                            _("Bad GNAT array descriptor bounds"));
1810 }
1811
1812 /* If BOUNDS is an array-bounds structure type, return the bit position
1813    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1814    bound, if WHICH is 1.  The first bound is I=1.  */
1815
1816 static int
1817 desc_bound_bitpos (struct type *type, int i, int which)
1818 {
1819   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1820 }
1821
1822 /* If BOUNDS is an array-bounds structure type, return the bit field size
1823    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1824    bound, if WHICH is 1.  The first bound is I=1.  */
1825
1826 static int
1827 desc_bound_bitsize (struct type *type, int i, int which)
1828 {
1829   type = desc_base_type (type);
1830
1831   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1832     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1833   else
1834     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1835 }
1836
1837 /* If TYPE is the type of an array-bounds structure, the type of its
1838    Ith bound (numbering from 1).  Otherwise, NULL.  */
1839
1840 static struct type *
1841 desc_index_type (struct type *type, int i)
1842 {
1843   type = desc_base_type (type);
1844
1845   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1846     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1847   else
1848     return NULL;
1849 }
1850
1851 /* The number of index positions in the array-bounds type TYPE.
1852    Return 0 if TYPE is NULL.  */
1853
1854 static int
1855 desc_arity (struct type *type)
1856 {
1857   type = desc_base_type (type);
1858
1859   if (type != NULL)
1860     return TYPE_NFIELDS (type) / 2;
1861   return 0;
1862 }
1863
1864 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1865    an array descriptor type (representing an unconstrained array
1866    type).  */
1867
1868 static int
1869 ada_is_direct_array_type (struct type *type)
1870 {
1871   if (type == NULL)
1872     return 0;
1873   type = ada_check_typedef (type);
1874   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1875           || ada_is_array_descriptor_type (type));
1876 }
1877
1878 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1879  * to one.  */
1880
1881 static int
1882 ada_is_array_type (struct type *type)
1883 {
1884   while (type != NULL 
1885          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1886              || TYPE_CODE (type) == TYPE_CODE_REF))
1887     type = TYPE_TARGET_TYPE (type);
1888   return ada_is_direct_array_type (type);
1889 }
1890
1891 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1892
1893 int
1894 ada_is_simple_array_type (struct type *type)
1895 {
1896   if (type == NULL)
1897     return 0;
1898   type = ada_check_typedef (type);
1899   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1900           || (TYPE_CODE (type) == TYPE_CODE_PTR
1901               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1902                  == TYPE_CODE_ARRAY));
1903 }
1904
1905 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1906
1907 int
1908 ada_is_array_descriptor_type (struct type *type)
1909 {
1910   struct type *data_type = desc_data_target_type (type);
1911
1912   if (type == NULL)
1913     return 0;
1914   type = ada_check_typedef (type);
1915   return (data_type != NULL
1916           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1917           && desc_arity (desc_bounds_type (type)) > 0);
1918 }
1919
1920 /* Non-zero iff type is a partially mal-formed GNAT array
1921    descriptor.  FIXME: This is to compensate for some problems with
1922    debugging output from GNAT.  Re-examine periodically to see if it
1923    is still needed.  */
1924
1925 int
1926 ada_is_bogus_array_descriptor (struct type *type)
1927 {
1928   return
1929     type != NULL
1930     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1931     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1932         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1933     && !ada_is_array_descriptor_type (type);
1934 }
1935
1936
1937 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1938    (fat pointer) returns the type of the array data described---specifically,
1939    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1940    in from the descriptor; otherwise, they are left unspecified.  If
1941    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1942    returns NULL.  The result is simply the type of ARR if ARR is not
1943    a descriptor.  */
1944 struct type *
1945 ada_type_of_array (struct value *arr, int bounds)
1946 {
1947   if (ada_is_constrained_packed_array_type (value_type (arr)))
1948     return decode_constrained_packed_array_type (value_type (arr));
1949
1950   if (!ada_is_array_descriptor_type (value_type (arr)))
1951     return value_type (arr);
1952
1953   if (!bounds)
1954     {
1955       struct type *array_type =
1956         ada_check_typedef (desc_data_target_type (value_type (arr)));
1957
1958       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1959         TYPE_FIELD_BITSIZE (array_type, 0) =
1960           decode_packed_array_bitsize (value_type (arr));
1961       
1962       return array_type;
1963     }
1964   else
1965     {
1966       struct type *elt_type;
1967       int arity;
1968       struct value *descriptor;
1969
1970       elt_type = ada_array_element_type (value_type (arr), -1);
1971       arity = ada_array_arity (value_type (arr));
1972
1973       if (elt_type == NULL || arity == 0)
1974         return ada_check_typedef (value_type (arr));
1975
1976       descriptor = desc_bounds (arr);
1977       if (value_as_long (descriptor) == 0)
1978         return NULL;
1979       while (arity > 0)
1980         {
1981           struct type *range_type = alloc_type_copy (value_type (arr));
1982           struct type *array_type = alloc_type_copy (value_type (arr));
1983           struct value *low = desc_one_bound (descriptor, arity, 0);
1984           struct value *high = desc_one_bound (descriptor, arity, 1);
1985
1986           arity -= 1;
1987           create_static_range_type (range_type, value_type (low),
1988                                     longest_to_int (value_as_long (low)),
1989                                     longest_to_int (value_as_long (high)));
1990           elt_type = create_array_type (array_type, elt_type, range_type);
1991
1992           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1993             {
1994               /* We need to store the element packed bitsize, as well as
1995                  recompute the array size, because it was previously
1996                  computed based on the unpacked element size.  */
1997               LONGEST lo = value_as_long (low);
1998               LONGEST hi = value_as_long (high);
1999
2000               TYPE_FIELD_BITSIZE (elt_type, 0) =
2001                 decode_packed_array_bitsize (value_type (arr));
2002               /* If the array has no element, then the size is already
2003                  zero, and does not need to be recomputed.  */
2004               if (lo < hi)
2005                 {
2006                   int array_bitsize =
2007                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2008
2009                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2010                 }
2011             }
2012         }
2013
2014       return lookup_pointer_type (elt_type);
2015     }
2016 }
2017
2018 /* If ARR does not represent an array, returns ARR unchanged.
2019    Otherwise, returns either a standard GDB array with bounds set
2020    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2021    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2022
2023 struct value *
2024 ada_coerce_to_simple_array_ptr (struct value *arr)
2025 {
2026   if (ada_is_array_descriptor_type (value_type (arr)))
2027     {
2028       struct type *arrType = ada_type_of_array (arr, 1);
2029
2030       if (arrType == NULL)
2031         return NULL;
2032       return value_cast (arrType, value_copy (desc_data (arr)));
2033     }
2034   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2035     return decode_constrained_packed_array (arr);
2036   else
2037     return arr;
2038 }
2039
2040 /* If ARR does not represent an array, returns ARR unchanged.
2041    Otherwise, returns a standard GDB array describing ARR (which may
2042    be ARR itself if it already is in the proper form).  */
2043
2044 struct value *
2045 ada_coerce_to_simple_array (struct value *arr)
2046 {
2047   if (ada_is_array_descriptor_type (value_type (arr)))
2048     {
2049       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2050
2051       if (arrVal == NULL)
2052         error (_("Bounds unavailable for null array pointer."));
2053       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2054       return value_ind (arrVal);
2055     }
2056   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2057     return decode_constrained_packed_array (arr);
2058   else
2059     return arr;
2060 }
2061
2062 /* If TYPE represents a GNAT array type, return it translated to an
2063    ordinary GDB array type (possibly with BITSIZE fields indicating
2064    packing).  For other types, is the identity.  */
2065
2066 struct type *
2067 ada_coerce_to_simple_array_type (struct type *type)
2068 {
2069   if (ada_is_constrained_packed_array_type (type))
2070     return decode_constrained_packed_array_type (type);
2071
2072   if (ada_is_array_descriptor_type (type))
2073     return ada_check_typedef (desc_data_target_type (type));
2074
2075   return type;
2076 }
2077
2078 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2079
2080 static int
2081 ada_is_packed_array_type  (struct type *type)
2082 {
2083   if (type == NULL)
2084     return 0;
2085   type = desc_base_type (type);
2086   type = ada_check_typedef (type);
2087   return
2088     ada_type_name (type) != NULL
2089     && strstr (ada_type_name (type), "___XP") != NULL;
2090 }
2091
2092 /* Non-zero iff TYPE represents a standard GNAT constrained
2093    packed-array type.  */
2094
2095 int
2096 ada_is_constrained_packed_array_type (struct type *type)
2097 {
2098   return ada_is_packed_array_type (type)
2099     && !ada_is_array_descriptor_type (type);
2100 }
2101
2102 /* Non-zero iff TYPE represents an array descriptor for a
2103    unconstrained packed-array type.  */
2104
2105 static int
2106 ada_is_unconstrained_packed_array_type (struct type *type)
2107 {
2108   return ada_is_packed_array_type (type)
2109     && ada_is_array_descriptor_type (type);
2110 }
2111
2112 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2113    return the size of its elements in bits.  */
2114
2115 static long
2116 decode_packed_array_bitsize (struct type *type)
2117 {
2118   const char *raw_name;
2119   const char *tail;
2120   long bits;
2121
2122   /* Access to arrays implemented as fat pointers are encoded as a typedef
2123      of the fat pointer type.  We need the name of the fat pointer type
2124      to do the decoding, so strip the typedef layer.  */
2125   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2126     type = ada_typedef_target_type (type);
2127
2128   raw_name = ada_type_name (ada_check_typedef (type));
2129   if (!raw_name)
2130     raw_name = ada_type_name (desc_base_type (type));
2131
2132   if (!raw_name)
2133     return 0;
2134
2135   tail = strstr (raw_name, "___XP");
2136   gdb_assert (tail != NULL);
2137
2138   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2139     {
2140       lim_warning
2141         (_("could not understand bit size information on packed array"));
2142       return 0;
2143     }
2144
2145   return bits;
2146 }
2147
2148 /* Given that TYPE is a standard GDB array type with all bounds filled
2149    in, and that the element size of its ultimate scalar constituents
2150    (that is, either its elements, or, if it is an array of arrays, its
2151    elements' elements, etc.) is *ELT_BITS, return an identical type,
2152    but with the bit sizes of its elements (and those of any
2153    constituent arrays) recorded in the BITSIZE components of its
2154    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2155    in bits.
2156
2157    Note that, for arrays whose index type has an XA encoding where
2158    a bound references a record discriminant, getting that discriminant,
2159    and therefore the actual value of that bound, is not possible
2160    because none of the given parameters gives us access to the record.
2161    This function assumes that it is OK in the context where it is being
2162    used to return an array whose bounds are still dynamic and where
2163    the length is arbitrary.  */
2164
2165 static struct type *
2166 constrained_packed_array_type (struct type *type, long *elt_bits)
2167 {
2168   struct type *new_elt_type;
2169   struct type *new_type;
2170   struct type *index_type_desc;
2171   struct type *index_type;
2172   LONGEST low_bound, high_bound;
2173
2174   type = ada_check_typedef (type);
2175   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2176     return type;
2177
2178   index_type_desc = ada_find_parallel_type (type, "___XA");
2179   if (index_type_desc)
2180     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2181                                       NULL);
2182   else
2183     index_type = TYPE_INDEX_TYPE (type);
2184
2185   new_type = alloc_type_copy (type);
2186   new_elt_type =
2187     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2188                                    elt_bits);
2189   create_array_type (new_type, new_elt_type, index_type);
2190   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2191   TYPE_NAME (new_type) = ada_type_name (type);
2192
2193   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2194        && is_dynamic_type (check_typedef (index_type)))
2195       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2196     low_bound = high_bound = 0;
2197   if (high_bound < low_bound)
2198     *elt_bits = TYPE_LENGTH (new_type) = 0;
2199   else
2200     {
2201       *elt_bits *= (high_bound - low_bound + 1);
2202       TYPE_LENGTH (new_type) =
2203         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2204     }
2205
2206   TYPE_FIXED_INSTANCE (new_type) = 1;
2207   return new_type;
2208 }
2209
2210 /* The array type encoded by TYPE, where
2211    ada_is_constrained_packed_array_type (TYPE).  */
2212
2213 static struct type *
2214 decode_constrained_packed_array_type (struct type *type)
2215 {
2216   const char *raw_name = ada_type_name (ada_check_typedef (type));
2217   char *name;
2218   const char *tail;
2219   struct type *shadow_type;
2220   long bits;
2221
2222   if (!raw_name)
2223     raw_name = ada_type_name (desc_base_type (type));
2224
2225   if (!raw_name)
2226     return NULL;
2227
2228   name = (char *) alloca (strlen (raw_name) + 1);
2229   tail = strstr (raw_name, "___XP");
2230   type = desc_base_type (type);
2231
2232   memcpy (name, raw_name, tail - raw_name);
2233   name[tail - raw_name] = '\000';
2234
2235   shadow_type = ada_find_parallel_type_with_name (type, name);
2236
2237   if (shadow_type == NULL)
2238     {
2239       lim_warning (_("could not find bounds information on packed array"));
2240       return NULL;
2241     }
2242   CHECK_TYPEDEF (shadow_type);
2243
2244   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2245     {
2246       lim_warning (_("could not understand bounds "
2247                      "information on packed array"));
2248       return NULL;
2249     }
2250
2251   bits = decode_packed_array_bitsize (type);
2252   return constrained_packed_array_type (shadow_type, &bits);
2253 }
2254
2255 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2256    array, returns a simple array that denotes that array.  Its type is a
2257    standard GDB array type except that the BITSIZEs of the array
2258    target types are set to the number of bits in each element, and the
2259    type length is set appropriately.  */
2260
2261 static struct value *
2262 decode_constrained_packed_array (struct value *arr)
2263 {
2264   struct type *type;
2265
2266   /* If our value is a pointer, then dereference it. Likewise if
2267      the value is a reference.  Make sure that this operation does not
2268      cause the target type to be fixed, as this would indirectly cause
2269      this array to be decoded.  The rest of the routine assumes that
2270      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2271      and "value_ind" routines to perform the dereferencing, as opposed
2272      to using "ada_coerce_ref" or "ada_value_ind".  */
2273   arr = coerce_ref (arr);
2274   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2275     arr = value_ind (arr);
2276
2277   type = decode_constrained_packed_array_type (value_type (arr));
2278   if (type == NULL)
2279     {
2280       error (_("can't unpack array"));
2281       return NULL;
2282     }
2283
2284   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2285       && ada_is_modular_type (value_type (arr)))
2286     {
2287        /* This is a (right-justified) modular type representing a packed
2288          array with no wrapper.  In order to interpret the value through
2289          the (left-justified) packed array type we just built, we must
2290          first left-justify it.  */
2291       int bit_size, bit_pos;
2292       ULONGEST mod;
2293
2294       mod = ada_modulus (value_type (arr)) - 1;
2295       bit_size = 0;
2296       while (mod > 0)
2297         {
2298           bit_size += 1;
2299           mod >>= 1;
2300         }
2301       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2302       arr = ada_value_primitive_packed_val (arr, NULL,
2303                                             bit_pos / HOST_CHAR_BIT,
2304                                             bit_pos % HOST_CHAR_BIT,
2305                                             bit_size,
2306                                             type);
2307     }
2308
2309   return coerce_unspec_val_to_type (arr, type);
2310 }
2311
2312
2313 /* The value of the element of packed array ARR at the ARITY indices
2314    given in IND.   ARR must be a simple array.  */
2315
2316 static struct value *
2317 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2318 {
2319   int i;
2320   int bits, elt_off, bit_off;
2321   long elt_total_bit_offset;
2322   struct type *elt_type;
2323   struct value *v;
2324
2325   bits = 0;
2326   elt_total_bit_offset = 0;
2327   elt_type = ada_check_typedef (value_type (arr));
2328   for (i = 0; i < arity; i += 1)
2329     {
2330       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2331           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2332         error
2333           (_("attempt to do packed indexing of "
2334              "something other than a packed array"));
2335       else
2336         {
2337           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2338           LONGEST lowerbound, upperbound;
2339           LONGEST idx;
2340
2341           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2342             {
2343               lim_warning (_("don't know bounds of array"));
2344               lowerbound = upperbound = 0;
2345             }
2346
2347           idx = pos_atr (ind[i]);
2348           if (idx < lowerbound || idx > upperbound)
2349             lim_warning (_("packed array index %ld out of bounds"),
2350                          (long) idx);
2351           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2352           elt_total_bit_offset += (idx - lowerbound) * bits;
2353           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2354         }
2355     }
2356   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2357   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2358
2359   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2360                                       bits, elt_type);
2361   return v;
2362 }
2363
2364 /* Non-zero iff TYPE includes negative integer values.  */
2365
2366 static int
2367 has_negatives (struct type *type)
2368 {
2369   switch (TYPE_CODE (type))
2370     {
2371     default:
2372       return 0;
2373     case TYPE_CODE_INT:
2374       return !TYPE_UNSIGNED (type);
2375     case TYPE_CODE_RANGE:
2376       return TYPE_LOW_BOUND (type) < 0;
2377     }
2378 }
2379
2380
2381 /* Create a new value of type TYPE from the contents of OBJ starting
2382    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2383    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2384    assigning through the result will set the field fetched from.
2385    VALADDR is ignored unless OBJ is NULL, in which case,
2386    VALADDR+OFFSET must address the start of storage containing the 
2387    packed value.  The value returned  in this case is never an lval.
2388    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2389
2390 struct value *
2391 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2392                                 long offset, int bit_offset, int bit_size,
2393                                 struct type *type)
2394 {
2395   struct value *v;
2396   int src,                      /* Index into the source area */
2397     targ,                       /* Index into the target area */
2398     srcBitsLeft,                /* Number of source bits left to move */
2399     nsrc, ntarg,                /* Number of source and target bytes */
2400     unusedLS,                   /* Number of bits in next significant
2401                                    byte of source that are unused */
2402     accumSize;                  /* Number of meaningful bits in accum */
2403   unsigned char *bytes;         /* First byte containing data to unpack */
2404   unsigned char *unpacked;
2405   unsigned long accum;          /* Staging area for bits being transferred */
2406   unsigned char sign;
2407   int len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2408   /* Transmit bytes from least to most significant; delta is the direction
2409      the indices move.  */
2410   int delta = gdbarch_bits_big_endian (get_type_arch (type)) ? -1 : 1;
2411
2412   type = ada_check_typedef (type);
2413
2414   if (obj == NULL)
2415     {
2416       v = allocate_value (type);
2417       bytes = (unsigned char *) (valaddr + offset);
2418     }
2419   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2420     {
2421       v = value_at (type, value_address (obj));
2422       type = value_type (v);
2423       bytes = (unsigned char *) alloca (len);
2424       read_memory (value_address (v) + offset, bytes, len);
2425     }
2426   else
2427     {
2428       v = allocate_value (type);
2429       bytes = (unsigned char *) value_contents (obj) + offset;
2430     }
2431
2432   if (obj != NULL)
2433     {
2434       long new_offset = offset;
2435
2436       set_value_component_location (v, obj);
2437       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2438       set_value_bitsize (v, bit_size);
2439       if (value_bitpos (v) >= HOST_CHAR_BIT)
2440         {
2441           ++new_offset;
2442           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2443         }
2444       set_value_offset (v, new_offset);
2445
2446       /* Also set the parent value.  This is needed when trying to
2447          assign a new value (in inferior memory).  */
2448       set_value_parent (v, obj);
2449     }
2450   else
2451     set_value_bitsize (v, bit_size);
2452   unpacked = (unsigned char *) value_contents (v);
2453
2454   srcBitsLeft = bit_size;
2455   nsrc = len;
2456   ntarg = TYPE_LENGTH (type);
2457   sign = 0;
2458   if (bit_size == 0)
2459     {
2460       memset (unpacked, 0, TYPE_LENGTH (type));
2461       return v;
2462     }
2463   else if (gdbarch_bits_big_endian (get_type_arch (type)))
2464     {
2465       src = len - 1;
2466       if (has_negatives (type)
2467           && ((bytes[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2468         sign = ~0;
2469
2470       unusedLS =
2471         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2472         % HOST_CHAR_BIT;
2473
2474       switch (TYPE_CODE (type))
2475         {
2476         case TYPE_CODE_ARRAY:
2477         case TYPE_CODE_UNION:
2478         case TYPE_CODE_STRUCT:
2479           /* Non-scalar values must be aligned at a byte boundary...  */
2480           accumSize =
2481             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2482           /* ... And are placed at the beginning (most-significant) bytes
2483              of the target.  */
2484           targ = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2485           ntarg = targ + 1;
2486           break;
2487         default:
2488           accumSize = 0;
2489           targ = TYPE_LENGTH (type) - 1;
2490           break;
2491         }
2492     }
2493   else
2494     {
2495       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2496
2497       src = targ = 0;
2498       unusedLS = bit_offset;
2499       accumSize = 0;
2500
2501       if (has_negatives (type) && (bytes[len - 1] & (1 << sign_bit_offset)))
2502         sign = ~0;
2503     }
2504
2505   accum = 0;
2506   while (nsrc > 0)
2507     {
2508       /* Mask for removing bits of the next source byte that are not
2509          part of the value.  */
2510       unsigned int unusedMSMask =
2511         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2512         1;
2513       /* Sign-extend bits for this byte.  */
2514       unsigned int signMask = sign & ~unusedMSMask;
2515
2516       accum |=
2517         (((bytes[src] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2518       accumSize += HOST_CHAR_BIT - unusedLS;
2519       if (accumSize >= HOST_CHAR_BIT)
2520         {
2521           unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
2522           accumSize -= HOST_CHAR_BIT;
2523           accum >>= HOST_CHAR_BIT;
2524           ntarg -= 1;
2525           targ += delta;
2526         }
2527       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2528       unusedLS = 0;
2529       nsrc -= 1;
2530       src += delta;
2531     }
2532   while (ntarg > 0)
2533     {
2534       accum |= sign << accumSize;
2535       unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
2536       accumSize -= HOST_CHAR_BIT;
2537       accum >>= HOST_CHAR_BIT;
2538       ntarg -= 1;
2539       targ += delta;
2540     }
2541
2542   return v;
2543 }
2544
2545 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2546    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2547    not overlap.  */
2548 static void
2549 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2550            int src_offset, int n, int bits_big_endian_p)
2551 {
2552   unsigned int accum, mask;
2553   int accum_bits, chunk_size;
2554
2555   target += targ_offset / HOST_CHAR_BIT;
2556   targ_offset %= HOST_CHAR_BIT;
2557   source += src_offset / HOST_CHAR_BIT;
2558   src_offset %= HOST_CHAR_BIT;
2559   if (bits_big_endian_p)
2560     {
2561       accum = (unsigned char) *source;
2562       source += 1;
2563       accum_bits = HOST_CHAR_BIT - src_offset;
2564
2565       while (n > 0)
2566         {
2567           int unused_right;
2568
2569           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2570           accum_bits += HOST_CHAR_BIT;
2571           source += 1;
2572           chunk_size = HOST_CHAR_BIT - targ_offset;
2573           if (chunk_size > n)
2574             chunk_size = n;
2575           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2576           mask = ((1 << chunk_size) - 1) << unused_right;
2577           *target =
2578             (*target & ~mask)
2579             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2580           n -= chunk_size;
2581           accum_bits -= chunk_size;
2582           target += 1;
2583           targ_offset = 0;
2584         }
2585     }
2586   else
2587     {
2588       accum = (unsigned char) *source >> src_offset;
2589       source += 1;
2590       accum_bits = HOST_CHAR_BIT - src_offset;
2591
2592       while (n > 0)
2593         {
2594           accum = accum + ((unsigned char) *source << accum_bits);
2595           accum_bits += HOST_CHAR_BIT;
2596           source += 1;
2597           chunk_size = HOST_CHAR_BIT - targ_offset;
2598           if (chunk_size > n)
2599             chunk_size = n;
2600           mask = ((1 << chunk_size) - 1) << targ_offset;
2601           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2602           n -= chunk_size;
2603           accum_bits -= chunk_size;
2604           accum >>= chunk_size;
2605           target += 1;
2606           targ_offset = 0;
2607         }
2608     }
2609 }
2610
2611 /* Store the contents of FROMVAL into the location of TOVAL.
2612    Return a new value with the location of TOVAL and contents of
2613    FROMVAL.   Handles assignment into packed fields that have
2614    floating-point or non-scalar types.  */
2615
2616 static struct value *
2617 ada_value_assign (struct value *toval, struct value *fromval)
2618 {
2619   struct type *type = value_type (toval);
2620   int bits = value_bitsize (toval);
2621
2622   toval = ada_coerce_ref (toval);
2623   fromval = ada_coerce_ref (fromval);
2624
2625   if (ada_is_direct_array_type (value_type (toval)))
2626     toval = ada_coerce_to_simple_array (toval);
2627   if (ada_is_direct_array_type (value_type (fromval)))
2628     fromval = ada_coerce_to_simple_array (fromval);
2629
2630   if (!deprecated_value_modifiable (toval))
2631     error (_("Left operand of assignment is not a modifiable lvalue."));
2632
2633   if (VALUE_LVAL (toval) == lval_memory
2634       && bits > 0
2635       && (TYPE_CODE (type) == TYPE_CODE_FLT
2636           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2637     {
2638       int len = (value_bitpos (toval)
2639                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2640       int from_size;
2641       gdb_byte *buffer = alloca (len);
2642       struct value *val;
2643       CORE_ADDR to_addr = value_address (toval);
2644
2645       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2646         fromval = value_cast (type, fromval);
2647
2648       read_memory (to_addr, buffer, len);
2649       from_size = value_bitsize (fromval);
2650       if (from_size == 0)
2651         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2652       if (gdbarch_bits_big_endian (get_type_arch (type)))
2653         move_bits (buffer, value_bitpos (toval),
2654                    value_contents (fromval), from_size - bits, bits, 1);
2655       else
2656         move_bits (buffer, value_bitpos (toval),
2657                    value_contents (fromval), 0, bits, 0);
2658       write_memory_with_notification (to_addr, buffer, len);
2659
2660       val = value_copy (toval);
2661       memcpy (value_contents_raw (val), value_contents (fromval),
2662               TYPE_LENGTH (type));
2663       deprecated_set_value_type (val, type);
2664
2665       return val;
2666     }
2667
2668   return value_assign (toval, fromval);
2669 }
2670
2671
2672 /* Given that COMPONENT is a memory lvalue that is part of the lvalue 
2673  * CONTAINER, assign the contents of VAL to COMPONENTS's place in 
2674  * CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not 
2675  * COMPONENT, and not the inferior's memory.  The current contents 
2676  * of COMPONENT are ignored.  */
2677 static void
2678 value_assign_to_component (struct value *container, struct value *component,
2679                            struct value *val)
2680 {
2681   LONGEST offset_in_container =
2682     (LONGEST)  (value_address (component) - value_address (container));
2683   int bit_offset_in_container = 
2684     value_bitpos (component) - value_bitpos (container);
2685   int bits;
2686   
2687   val = value_cast (value_type (component), val);
2688
2689   if (value_bitsize (component) == 0)
2690     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2691   else
2692     bits = value_bitsize (component);
2693
2694   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2695     move_bits (value_contents_writeable (container) + offset_in_container, 
2696                value_bitpos (container) + bit_offset_in_container,
2697                value_contents (val),
2698                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2699                bits, 1);
2700   else
2701     move_bits (value_contents_writeable (container) + offset_in_container, 
2702                value_bitpos (container) + bit_offset_in_container,
2703                value_contents (val), 0, bits, 0);
2704 }              
2705                         
2706 /* The value of the element of array ARR at the ARITY indices given in IND.
2707    ARR may be either a simple array, GNAT array descriptor, or pointer
2708    thereto.  */
2709
2710 struct value *
2711 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2712 {
2713   int k;
2714   struct value *elt;
2715   struct type *elt_type;
2716
2717   elt = ada_coerce_to_simple_array (arr);
2718
2719   elt_type = ada_check_typedef (value_type (elt));
2720   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2721       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2722     return value_subscript_packed (elt, arity, ind);
2723
2724   for (k = 0; k < arity; k += 1)
2725     {
2726       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2727         error (_("too many subscripts (%d expected)"), k);
2728       elt = value_subscript (elt, pos_atr (ind[k]));
2729     }
2730   return elt;
2731 }
2732
2733 /* Assuming ARR is a pointer to a GDB array, the value of the element
2734    of *ARR at the ARITY indices given in IND.
2735    Does not read the entire array into memory.  */
2736
2737 static struct value *
2738 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2739 {
2740   int k;
2741   struct type *type
2742     = check_typedef (value_enclosing_type (ada_value_ind (arr)));
2743
2744   for (k = 0; k < arity; k += 1)
2745     {
2746       LONGEST lwb, upb;
2747
2748       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2749         error (_("too many subscripts (%d expected)"), k);
2750       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2751                         value_copy (arr));
2752       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2753       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2754       type = TYPE_TARGET_TYPE (type);
2755     }
2756
2757   return value_ind (arr);
2758 }
2759
2760 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2761    actual type of ARRAY_PTR is ignored), returns the Ada slice of HIGH-LOW+1
2762    elements starting at index LOW.  The lower bound of this array is LOW, as
2763    per Ada rules.  */
2764 static struct value *
2765 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2766                           int low, int high)
2767 {
2768   struct type *type0 = ada_check_typedef (type);
2769   CORE_ADDR base = value_as_address (array_ptr)
2770     + ((low - ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0)))
2771        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2772   struct type *index_type
2773     = create_static_range_type (NULL,
2774                                 TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0)),
2775                                 low, high);
2776   struct type *slice_type =
2777     create_array_type (NULL, TYPE_TARGET_TYPE (type0), index_type);
2778
2779   return value_at_lazy (slice_type, base);
2780 }
2781
2782
2783 static struct value *
2784 ada_value_slice (struct value *array, int low, int high)
2785 {
2786   struct type *type = ada_check_typedef (value_type (array));
2787   struct type *index_type
2788     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2789   struct type *slice_type =
2790     create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2791
2792   return value_cast (slice_type, value_slice (array, low, high - low + 1));
2793 }
2794
2795 /* If type is a record type in the form of a standard GNAT array
2796    descriptor, returns the number of dimensions for type.  If arr is a
2797    simple array, returns the number of "array of"s that prefix its
2798    type designation.  Otherwise, returns 0.  */
2799
2800 int
2801 ada_array_arity (struct type *type)
2802 {
2803   int arity;
2804
2805   if (type == NULL)
2806     return 0;
2807
2808   type = desc_base_type (type);
2809
2810   arity = 0;
2811   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2812     return desc_arity (desc_bounds_type (type));
2813   else
2814     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2815       {
2816         arity += 1;
2817         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2818       }
2819
2820   return arity;
2821 }
2822
2823 /* If TYPE is a record type in the form of a standard GNAT array
2824    descriptor or a simple array type, returns the element type for
2825    TYPE after indexing by NINDICES indices, or by all indices if
2826    NINDICES is -1.  Otherwise, returns NULL.  */
2827
2828 struct type *
2829 ada_array_element_type (struct type *type, int nindices)
2830 {
2831   type = desc_base_type (type);
2832
2833   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2834     {
2835       int k;
2836       struct type *p_array_type;
2837
2838       p_array_type = desc_data_target_type (type);
2839
2840       k = ada_array_arity (type);
2841       if (k == 0)
2842         return NULL;
2843
2844       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2845       if (nindices >= 0 && k > nindices)
2846         k = nindices;
2847       while (k > 0 && p_array_type != NULL)
2848         {
2849           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2850           k -= 1;
2851         }
2852       return p_array_type;
2853     }
2854   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2855     {
2856       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2857         {
2858           type = TYPE_TARGET_TYPE (type);
2859           nindices -= 1;
2860         }
2861       return type;
2862     }
2863
2864   return NULL;
2865 }
2866
2867 /* The type of nth index in arrays of given type (n numbering from 1).
2868    Does not examine memory.  Throws an error if N is invalid or TYPE
2869    is not an array type.  NAME is the name of the Ada attribute being
2870    evaluated ('range, 'first, 'last, or 'length); it is used in building
2871    the error message.  */
2872
2873 static struct type *
2874 ada_index_type (struct type *type, int n, const char *name)
2875 {
2876   struct type *result_type;
2877
2878   type = desc_base_type (type);
2879
2880   if (n < 0 || n > ada_array_arity (type))
2881     error (_("invalid dimension number to '%s"), name);
2882
2883   if (ada_is_simple_array_type (type))
2884     {
2885       int i;
2886
2887       for (i = 1; i < n; i += 1)
2888         type = TYPE_TARGET_TYPE (type);
2889       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2890       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2891          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2892          perhaps stabsread.c would make more sense.  */
2893       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
2894         result_type = NULL;
2895     }
2896   else
2897     {
2898       result_type = desc_index_type (desc_bounds_type (type), n);
2899       if (result_type == NULL)
2900         error (_("attempt to take bound of something that is not an array"));
2901     }
2902
2903   return result_type;
2904 }
2905
2906 /* Given that arr is an array type, returns the lower bound of the
2907    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2908    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2909    array-descriptor type.  It works for other arrays with bounds supplied
2910    by run-time quantities other than discriminants.  */
2911
2912 static LONGEST
2913 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2914 {
2915   struct type *type, *index_type_desc, *index_type;
2916   int i;
2917
2918   gdb_assert (which == 0 || which == 1);
2919
2920   if (ada_is_constrained_packed_array_type (arr_type))
2921     arr_type = decode_constrained_packed_array_type (arr_type);
2922
2923   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2924     return (LONGEST) - which;
2925
2926   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
2927     type = TYPE_TARGET_TYPE (arr_type);
2928   else
2929     type = arr_type;
2930
2931   index_type_desc = ada_find_parallel_type (type, "___XA");
2932   ada_fixup_array_indexes_type (index_type_desc);
2933   if (index_type_desc != NULL)
2934     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
2935                                       NULL);
2936   else
2937     {
2938       struct type *elt_type = check_typedef (type);
2939
2940       for (i = 1; i < n; i++)
2941         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2942
2943       index_type = TYPE_INDEX_TYPE (elt_type);
2944     }
2945
2946   return
2947     (LONGEST) (which == 0
2948                ? ada_discrete_type_low_bound (index_type)
2949                : ada_discrete_type_high_bound (index_type));
2950 }
2951
2952 /* Given that arr is an array value, returns the lower bound of the
2953    nth index (numbering from 1) if WHICH is 0, and the upper bound if
2954    WHICH is 1.  This routine will also work for arrays with bounds
2955    supplied by run-time quantities other than discriminants.  */
2956
2957 static LONGEST
2958 ada_array_bound (struct value *arr, int n, int which)
2959 {
2960   struct type *arr_type;
2961
2962   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2963     arr = value_ind (arr);
2964   arr_type = value_enclosing_type (arr);
2965
2966   if (ada_is_constrained_packed_array_type (arr_type))
2967     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
2968   else if (ada_is_simple_array_type (arr_type))
2969     return ada_array_bound_from_type (arr_type, n, which);
2970   else
2971     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
2972 }
2973
2974 /* Given that arr is an array value, returns the length of the
2975    nth index.  This routine will also work for arrays with bounds
2976    supplied by run-time quantities other than discriminants.
2977    Does not work for arrays indexed by enumeration types with representation
2978    clauses at the moment.  */
2979
2980 static LONGEST
2981 ada_array_length (struct value *arr, int n)
2982 {
2983   struct type *arr_type;
2984
2985   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2986     arr = value_ind (arr);
2987   arr_type = value_enclosing_type (arr);
2988
2989   if (ada_is_constrained_packed_array_type (arr_type))
2990     return ada_array_length (decode_constrained_packed_array (arr), n);
2991
2992   if (ada_is_simple_array_type (arr_type))
2993     return (ada_array_bound_from_type (arr_type, n, 1)
2994             - ada_array_bound_from_type (arr_type, n, 0) + 1);
2995   else
2996     return (value_as_long (desc_one_bound (desc_bounds (arr), n, 1))
2997             - value_as_long (desc_one_bound (desc_bounds (arr), n, 0)) + 1);
2998 }
2999
3000 /* An empty array whose type is that of ARR_TYPE (an array type),
3001    with bounds LOW to LOW-1.  */
3002
3003 static struct value *
3004 empty_array (struct type *arr_type, int low)
3005 {
3006   struct type *arr_type0 = ada_check_typedef (arr_type);
3007   struct type *index_type
3008     = create_static_range_type
3009         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3010   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3011
3012   return allocate_value (create_array_type (NULL, elt_type, index_type));
3013 }
3014 \f
3015
3016                                 /* Name resolution */
3017
3018 /* The "decoded" name for the user-definable Ada operator corresponding
3019    to OP.  */
3020
3021 static const char *
3022 ada_decoded_op_name (enum exp_opcode op)
3023 {
3024   int i;
3025
3026   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3027     {
3028       if (ada_opname_table[i].op == op)
3029         return ada_opname_table[i].decoded;
3030     }
3031   error (_("Could not find operator name for opcode"));
3032 }
3033
3034
3035 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3036    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3037    undefined namespace) and converts operators that are
3038    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3039    non-null, it provides a preferred result type [at the moment, only
3040    type void has any effect---causing procedures to be preferred over
3041    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3042    return type is preferred.  May change (expand) *EXP.  */
3043
3044 static void
3045 resolve (struct expression **expp, int void_context_p)
3046 {
3047   struct type *context_type = NULL;
3048   int pc = 0;
3049
3050   if (void_context_p)
3051     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3052
3053   resolve_subexp (expp, &pc, 1, context_type);
3054 }
3055
3056 /* Resolve the operator of the subexpression beginning at
3057    position *POS of *EXPP.  "Resolving" consists of replacing
3058    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3059    with their resolutions, replacing built-in operators with
3060    function calls to user-defined operators, where appropriate, and,
3061    when DEPROCEDURE_P is non-zero, converting function-valued variables
3062    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3063    are as in ada_resolve, above.  */
3064
3065 static struct value *
3066 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
3067                 struct type *context_type)
3068 {
3069   int pc = *pos;
3070   int i;
3071   struct expression *exp;       /* Convenience: == *expp.  */
3072   enum exp_opcode op = (*expp)->elts[pc].opcode;
3073   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3074   int nargs;                    /* Number of operands.  */
3075   int oplen;
3076
3077   argvec = NULL;
3078   nargs = 0;
3079   exp = *expp;
3080
3081   /* Pass one: resolve operands, saving their types and updating *pos,
3082      if needed.  */
3083   switch (op)
3084     {
3085     case OP_FUNCALL:
3086       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3087           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3088         *pos += 7;
3089       else
3090         {
3091           *pos += 3;
3092           resolve_subexp (expp, pos, 0, NULL);
3093         }
3094       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3095       break;
3096
3097     case UNOP_ADDR:
3098       *pos += 1;
3099       resolve_subexp (expp, pos, 0, NULL);
3100       break;
3101
3102     case UNOP_QUAL:
3103       *pos += 3;
3104       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3105       break;
3106
3107     case OP_ATR_MODULUS:
3108     case OP_ATR_SIZE:
3109     case OP_ATR_TAG:
3110     case OP_ATR_FIRST:
3111     case OP_ATR_LAST:
3112     case OP_ATR_LENGTH:
3113     case OP_ATR_POS:
3114     case OP_ATR_VAL:
3115     case OP_ATR_MIN:
3116     case OP_ATR_MAX:
3117     case TERNOP_IN_RANGE:
3118     case BINOP_IN_BOUNDS:
3119     case UNOP_IN_RANGE:
3120     case OP_AGGREGATE:
3121     case OP_OTHERS:
3122     case OP_CHOICES:
3123     case OP_POSITIONAL:
3124     case OP_DISCRETE_RANGE:
3125     case OP_NAME:
3126       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3127       *pos += oplen;
3128       break;
3129
3130     case BINOP_ASSIGN:
3131       {
3132         struct value *arg1;
3133
3134         *pos += 1;
3135         arg1 = resolve_subexp (expp, pos, 0, NULL);
3136         if (arg1 == NULL)
3137           resolve_subexp (expp, pos, 1, NULL);
3138         else
3139           resolve_subexp (expp, pos, 1, value_type (arg1));
3140         break;
3141       }
3142
3143     case UNOP_CAST:
3144       *pos += 3;
3145       nargs = 1;
3146       break;
3147
3148     case BINOP_ADD:
3149     case BINOP_SUB:
3150     case BINOP_MUL:
3151     case BINOP_DIV:
3152     case BINOP_REM:
3153     case BINOP_MOD:
3154     case BINOP_EXP:
3155     case BINOP_CONCAT:
3156     case BINOP_LOGICAL_AND:
3157     case BINOP_LOGICAL_OR:
3158     case BINOP_BITWISE_AND:
3159     case BINOP_BITWISE_IOR:
3160     case BINOP_BITWISE_XOR:
3161
3162     case BINOP_EQUAL:
3163     case BINOP_NOTEQUAL:
3164     case BINOP_LESS:
3165     case BINOP_GTR:
3166     case BINOP_LEQ:
3167     case BINOP_GEQ:
3168
3169     case BINOP_REPEAT:
3170     case BINOP_SUBSCRIPT:
3171     case BINOP_COMMA:
3172       *pos += 1;
3173       nargs = 2;
3174       break;
3175
3176     case UNOP_NEG:
3177     case UNOP_PLUS:
3178     case UNOP_LOGICAL_NOT:
3179     case UNOP_ABS:
3180     case UNOP_IND:
3181       *pos += 1;
3182       nargs = 1;
3183       break;
3184
3185     case OP_LONG:
3186     case OP_DOUBLE:
3187     case OP_VAR_VALUE:
3188       *pos += 4;
3189       break;
3190
3191     case OP_TYPE:
3192     case OP_BOOL:
3193     case OP_LAST:
3194     case OP_INTERNALVAR:
3195       *pos += 3;
3196       break;
3197
3198     case UNOP_MEMVAL:
3199       *pos += 3;
3200       nargs = 1;
3201       break;
3202
3203     case OP_REGISTER:
3204       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3205       break;
3206
3207     case STRUCTOP_STRUCT:
3208       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3209       nargs = 1;
3210       break;
3211
3212     case TERNOP_SLICE:
3213       *pos += 1;
3214       nargs = 3;
3215       break;
3216
3217     case OP_STRING:
3218       break;
3219
3220     default:
3221       error (_("Unexpected operator during name resolution"));
3222     }
3223
3224   argvec = (struct value * *) alloca (sizeof (struct value *) * (nargs + 1));
3225   for (i = 0; i < nargs; i += 1)
3226     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3227   argvec[i] = NULL;
3228   exp = *expp;
3229
3230   /* Pass two: perform any resolution on principal operator.  */
3231   switch (op)
3232     {
3233     default:
3234       break;
3235
3236     case OP_VAR_VALUE:
3237       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3238         {
3239           struct ada_symbol_info *candidates;
3240           int n_candidates;
3241
3242           n_candidates =
3243             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3244                                     (exp->elts[pc + 2].symbol),
3245                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3246                                     &candidates);
3247
3248           if (n_candidates > 1)
3249             {
3250               /* Types tend to get re-introduced locally, so if there
3251                  are any local symbols that are not types, first filter
3252                  out all types.  */
3253               int j;
3254               for (j = 0; j < n_candidates; j += 1)
3255                 switch (SYMBOL_CLASS (candidates[j].sym))
3256                   {
3257                   case LOC_REGISTER:
3258                   case LOC_ARG:
3259                   case LOC_REF_ARG:
3260                   case LOC_REGPARM_ADDR:
3261                   case LOC_LOCAL:
3262                   case LOC_COMPUTED:
3263                     goto FoundNonType;
3264                   default:
3265                     break;
3266                   }
3267             FoundNonType:
3268               if (j < n_candidates)
3269                 {
3270                   j = 0;
3271                   while (j < n_candidates)
3272                     {
3273                       if (SYMBOL_CLASS (candidates[j].sym) == LOC_TYPEDEF)
3274                         {
3275                           candidates[j] = candidates[n_candidates - 1];
3276                           n_candidates -= 1;
3277                         }
3278                       else
3279                         j += 1;
3280                     }
3281                 }
3282             }
3283
3284           if (n_candidates == 0)
3285             error (_("No definition found for %s"),
3286                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3287           else if (n_candidates == 1)
3288             i = 0;
3289           else if (deprocedure_p
3290                    && !is_nonfunction (candidates, n_candidates))
3291             {
3292               i = ada_resolve_function
3293                 (candidates, n_candidates, NULL, 0,
3294                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3295                  context_type);
3296               if (i < 0)
3297                 error (_("Could not find a match for %s"),
3298                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3299             }
3300           else
3301             {
3302               printf_filtered (_("Multiple matches for %s\n"),
3303                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3304               user_select_syms (candidates, n_candidates, 1);
3305               i = 0;
3306             }
3307
3308           exp->elts[pc + 1].block = candidates[i].block;
3309           exp->elts[pc + 2].symbol = candidates[i].sym;
3310           if (innermost_block == NULL
3311               || contained_in (candidates[i].block, innermost_block))
3312             innermost_block = candidates[i].block;
3313         }
3314
3315       if (deprocedure_p
3316           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3317               == TYPE_CODE_FUNC))
3318         {
3319           replace_operator_with_call (expp, pc, 0, 0,
3320                                       exp->elts[pc + 2].symbol,
3321                                       exp->elts[pc + 1].block);
3322           exp = *expp;
3323         }
3324       break;
3325
3326     case OP_FUNCALL:
3327       {
3328         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3329             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3330           {
3331             struct ada_symbol_info *candidates;
3332             int n_candidates;
3333
3334             n_candidates =
3335               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3336                                       (exp->elts[pc + 5].symbol),
3337                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3338                                       &candidates);
3339             if (n_candidates == 1)
3340               i = 0;
3341             else
3342               {
3343                 i = ada_resolve_function
3344                   (candidates, n_candidates,
3345                    argvec, nargs,
3346                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3347                    context_type);
3348                 if (i < 0)
3349                   error (_("Could not find a match for %s"),
3350                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3351               }
3352
3353             exp->elts[pc + 4].block = candidates[i].block;
3354             exp->elts[pc + 5].symbol = candidates[i].sym;
3355             if (innermost_block == NULL
3356                 || contained_in (candidates[i].block, innermost_block))
3357               innermost_block = candidates[i].block;
3358           }
3359       }
3360       break;
3361     case BINOP_ADD:
3362     case BINOP_SUB:
3363     case BINOP_MUL:
3364     case BINOP_DIV:
3365     case BINOP_REM:
3366     case BINOP_MOD:
3367     case BINOP_CONCAT:
3368     case BINOP_BITWISE_AND:
3369     case BINOP_BITWISE_IOR:
3370     case BINOP_BITWISE_XOR:
3371     case BINOP_EQUAL:
3372     case BINOP_NOTEQUAL:
3373     case BINOP_LESS:
3374     case BINOP_GTR:
3375     case BINOP_LEQ:
3376     case BINOP_GEQ:
3377     case BINOP_EXP:
3378     case UNOP_NEG:
3379     case UNOP_PLUS:
3380     case UNOP_LOGICAL_NOT:
3381     case UNOP_ABS:
3382       if (possible_user_operator_p (op, argvec))
3383         {
3384           struct ada_symbol_info *candidates;
3385           int n_candidates;
3386
3387           n_candidates =
3388             ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)),
3389                                     (struct block *) NULL, VAR_DOMAIN,
3390                                     &candidates);
3391           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3392                                     ada_decoded_op_name (op), NULL);
3393           if (i < 0)
3394             break;
3395
3396           replace_operator_with_call (expp, pc, nargs, 1,
3397                                       candidates[i].sym, candidates[i].block);
3398           exp = *expp;
3399         }
3400       break;
3401
3402     case OP_TYPE:
3403     case OP_REGISTER:
3404       return NULL;
3405     }
3406
3407   *pos = pc;
3408   return evaluate_subexp_type (exp, pos);
3409 }
3410
3411 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3412    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3413    a non-pointer.  */
3414 /* The term "match" here is rather loose.  The match is heuristic and
3415    liberal.  */
3416
3417 static int
3418 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3419 {
3420   ftype = ada_check_typedef (ftype);
3421   atype = ada_check_typedef (atype);
3422
3423   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3424     ftype = TYPE_TARGET_TYPE (ftype);
3425   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3426     atype = TYPE_TARGET_TYPE (atype);
3427
3428   switch (TYPE_CODE (ftype))
3429     {
3430     default:
3431       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3432     case TYPE_CODE_PTR:
3433       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3434         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3435                                TYPE_TARGET_TYPE (atype), 0);
3436       else
3437         return (may_deref
3438                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3439     case TYPE_CODE_INT:
3440     case TYPE_CODE_ENUM:
3441     case TYPE_CODE_RANGE:
3442       switch (TYPE_CODE (atype))
3443         {
3444         case TYPE_CODE_INT:
3445         case TYPE_CODE_ENUM:
3446         case TYPE_CODE_RANGE:
3447           return 1;
3448         default:
3449           return 0;
3450         }
3451
3452     case TYPE_CODE_ARRAY:
3453       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3454               || ada_is_array_descriptor_type (atype));
3455
3456     case TYPE_CODE_STRUCT:
3457       if (ada_is_array_descriptor_type (ftype))
3458         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3459                 || ada_is_array_descriptor_type (atype));
3460       else
3461         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3462                 && !ada_is_array_descriptor_type (atype));
3463
3464     case TYPE_CODE_UNION:
3465     case TYPE_CODE_FLT:
3466       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3467     }
3468 }
3469
3470 /* Return non-zero if the formals of FUNC "sufficiently match" the
3471    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3472    may also be an enumeral, in which case it is treated as a 0-
3473    argument function.  */
3474
3475 static int
3476 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3477 {
3478   int i;
3479   struct type *func_type = SYMBOL_TYPE (func);
3480
3481   if (SYMBOL_CLASS (func) == LOC_CONST
3482       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3483     return (n_actuals == 0);
3484   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3485     return 0;
3486
3487   if (TYPE_NFIELDS (func_type) != n_actuals)
3488     return 0;
3489
3490   for (i = 0; i < n_actuals; i += 1)
3491     {
3492       if (actuals[i] == NULL)
3493         return 0;
3494       else
3495         {
3496           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3497                                                                    i));
3498           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3499
3500           if (!ada_type_match (ftype, atype, 1))
3501             return 0;
3502         }
3503     }
3504   return 1;
3505 }
3506
3507 /* False iff function type FUNC_TYPE definitely does not produce a value
3508    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3509    FUNC_TYPE is not a valid function type with a non-null return type
3510    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3511
3512 static int
3513 return_match (struct type *func_type, struct type *context_type)
3514 {
3515   struct type *return_type;
3516
3517   if (func_type == NULL)
3518     return 1;
3519
3520   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3521     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3522   else
3523     return_type = get_base_type (func_type);
3524   if (return_type == NULL)
3525     return 1;
3526
3527   context_type = get_base_type (context_type);
3528
3529   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3530     return context_type == NULL || return_type == context_type;
3531   else if (context_type == NULL)
3532     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3533   else
3534     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3535 }
3536
3537
3538 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3539    function (if any) that matches the types of the NARGS arguments in
3540    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3541    that returns that type, then eliminate matches that don't.  If
3542    CONTEXT_TYPE is void and there is at least one match that does not
3543    return void, eliminate all matches that do.
3544
3545    Asks the user if there is more than one match remaining.  Returns -1
3546    if there is no such symbol or none is selected.  NAME is used
3547    solely for messages.  May re-arrange and modify SYMS in
3548    the process; the index returned is for the modified vector.  */
3549
3550 static int
3551 ada_resolve_function (struct ada_symbol_info syms[],
3552                       int nsyms, struct value **args, int nargs,
3553                       const char *name, struct type *context_type)
3554 {
3555   int fallback;
3556   int k;
3557   int m;                        /* Number of hits */
3558
3559   m = 0;
3560   /* In the first pass of the loop, we only accept functions matching
3561      context_type.  If none are found, we add a second pass of the loop
3562      where every function is accepted.  */
3563   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3564     {
3565       for (k = 0; k < nsyms; k += 1)
3566         {
3567           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].sym));
3568
3569           if (ada_args_match (syms[k].sym, args, nargs)
3570               && (fallback || return_match (type, context_type)))
3571             {
3572               syms[m] = syms[k];
3573               m += 1;
3574             }
3575         }
3576     }
3577
3578   if (m == 0)
3579     return -1;
3580   else if (m > 1)
3581     {
3582       printf_filtered (_("Multiple matches for %s\n"), name);
3583       user_select_syms (syms, m, 1);
3584       return 0;
3585     }
3586   return 0;
3587 }
3588
3589 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3590    in a listing of choices during disambiguation (see sort_choices, below).
3591    The idea is that overloadings of a subprogram name from the
3592    same package should sort in their source order.  We settle for ordering
3593    such symbols by their trailing number (__N  or $N).  */
3594
3595 static int
3596 encoded_ordered_before (const char *N0, const char *N1)
3597 {
3598   if (N1 == NULL)
3599     return 0;
3600   else if (N0 == NULL)
3601     return 1;
3602   else
3603     {
3604       int k0, k1;
3605
3606       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3607         ;
3608       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3609         ;
3610       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3611           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3612         {
3613           int n0, n1;
3614
3615           n0 = k0;
3616           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3617             n0 -= 1;
3618           n1 = k1;
3619           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3620             n1 -= 1;
3621           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3622             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3623         }
3624       return (strcmp (N0, N1) < 0);
3625     }
3626 }
3627
3628 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3629    encoded names.  */
3630
3631 static void
3632 sort_choices (struct ada_symbol_info syms[], int nsyms)
3633 {
3634   int i;
3635
3636   for (i = 1; i < nsyms; i += 1)
3637     {
3638       struct ada_symbol_info sym = syms[i];
3639       int j;
3640
3641       for (j = i - 1; j >= 0; j -= 1)
3642         {
3643           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].sym),
3644                                       SYMBOL_LINKAGE_NAME (sym.sym)))
3645             break;
3646           syms[j + 1] = syms[j];
3647         }
3648       syms[j + 1] = sym;
3649     }
3650 }
3651
3652 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3653    by asking the user (if necessary), returning the number selected, 
3654    and setting the first elements of SYMS items.  Error if no symbols
3655    selected.  */
3656
3657 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3658    to be re-integrated one of these days.  */
3659
3660 int
3661 user_select_syms (struct ada_symbol_info *syms, int nsyms, int max_results)
3662 {
3663   int i;
3664   int *chosen = (int *) alloca (sizeof (int) * nsyms);
3665   int n_chosen;
3666   int first_choice = (max_results == 1) ? 1 : 2;
3667   const char *select_mode = multiple_symbols_select_mode ();
3668
3669   if (max_results < 1)
3670     error (_("Request to select 0 symbols!"));
3671   if (nsyms <= 1)
3672     return nsyms;
3673
3674   if (select_mode == multiple_symbols_cancel)
3675     error (_("\
3676 canceled because the command is ambiguous\n\
3677 See set/show multiple-symbol."));
3678   
3679   /* If select_mode is "all", then return all possible symbols.
3680      Only do that if more than one symbol can be selected, of course.
3681      Otherwise, display the menu as usual.  */
3682   if (select_mode == multiple_symbols_all && max_results > 1)
3683     return nsyms;
3684
3685   printf_unfiltered (_("[0] cancel\n"));
3686   if (max_results > 1)
3687     printf_unfiltered (_("[1] all\n"));
3688
3689   sort_choices (syms, nsyms);
3690
3691   for (i = 0; i < nsyms; i += 1)
3692     {
3693       if (syms[i].sym == NULL)
3694         continue;
3695
3696       if (SYMBOL_CLASS (syms[i].sym) == LOC_BLOCK)
3697         {
3698           struct symtab_and_line sal =
3699             find_function_start_sal (syms[i].sym, 1);
3700
3701           if (sal.symtab == NULL)
3702             printf_unfiltered (_("[%d] %s at <no source file available>:%d\n"),
3703                                i + first_choice,
3704                                SYMBOL_PRINT_NAME (syms[i].sym),
3705                                sal.line);
3706           else
3707             printf_unfiltered (_("[%d] %s at %s:%d\n"), i + first_choice,
3708                                SYMBOL_PRINT_NAME (syms[i].sym),
3709                                symtab_to_filename_for_display (sal.symtab),
3710                                sal.line);
3711           continue;
3712         }
3713       else
3714         {
3715           int is_enumeral =
3716             (SYMBOL_CLASS (syms[i].sym) == LOC_CONST
3717              && SYMBOL_TYPE (syms[i].sym) != NULL
3718              && TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) == TYPE_CODE_ENUM);
3719           struct symtab *symtab = symbol_symtab (syms[i].sym);
3720
3721           if (SYMBOL_LINE (syms[i].sym) != 0 && symtab != NULL)
3722             printf_unfiltered (_("[%d] %s at %s:%d\n"),
3723                                i + first_choice,
3724                                SYMBOL_PRINT_NAME (syms[i].sym),
3725                                symtab_to_filename_for_display (symtab),
3726                                SYMBOL_LINE (syms[i].sym));
3727           else if (is_enumeral
3728                    && TYPE_NAME (SYMBOL_TYPE (syms[i].sym)) != NULL)
3729             {
3730               printf_unfiltered (("[%d] "), i + first_choice);
3731               ada_print_type (SYMBOL_TYPE (syms[i].sym), NULL,
3732                               gdb_stdout, -1, 0, &type_print_raw_options);
3733               printf_unfiltered (_("'(%s) (enumeral)\n"),
3734                                  SYMBOL_PRINT_NAME (syms[i].sym));
3735             }
3736           else if (symtab != NULL)
3737             printf_unfiltered (is_enumeral
3738                                ? _("[%d] %s in %s (enumeral)\n")
3739                                : _("[%d] %s at %s:?\n"),
3740                                i + first_choice,
3741                                SYMBOL_PRINT_NAME (syms[i].sym),
3742                                symtab_to_filename_for_display (symtab));
3743           else
3744             printf_unfiltered (is_enumeral
3745                                ? _("[%d] %s (enumeral)\n")
3746                                : _("[%d] %s at ?\n"),
3747                                i + first_choice,
3748                                SYMBOL_PRINT_NAME (syms[i].sym));
3749         }
3750     }
3751
3752   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3753                              "overload-choice");
3754
3755   for (i = 0; i < n_chosen; i += 1)
3756     syms[i] = syms[chosen[i]];
3757
3758   return n_chosen;
3759 }
3760
3761 /* Read and validate a set of numeric choices from the user in the
3762    range 0 .. N_CHOICES-1.  Place the results in increasing
3763    order in CHOICES[0 .. N-1], and return N.
3764
3765    The user types choices as a sequence of numbers on one line
3766    separated by blanks, encoding them as follows:
3767
3768      + A choice of 0 means to cancel the selection, throwing an error.
3769      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3770      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3771
3772    The user is not allowed to choose more than MAX_RESULTS values.
3773
3774    ANNOTATION_SUFFIX, if present, is used to annotate the input
3775    prompts (for use with the -f switch).  */
3776
3777 int
3778 get_selections (int *choices, int n_choices, int max_results,
3779                 int is_all_choice, char *annotation_suffix)
3780 {
3781   char *args;
3782   char *prompt;
3783   int n_chosen;
3784   int first_choice = is_all_choice ? 2 : 1;
3785
3786   prompt = getenv ("PS2");
3787   if (prompt == NULL)
3788     prompt = "> ";
3789
3790   args = command_line_input (prompt, 0, annotation_suffix);
3791
3792   if (args == NULL)
3793     error_no_arg (_("one or more choice numbers"));
3794
3795   n_chosen = 0;
3796
3797   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3798      order, as given in args.  Choices are validated.  */
3799   while (1)
3800     {
3801       char *args2;
3802       int choice, j;
3803
3804       args = skip_spaces (args);
3805       if (*args == '\0' && n_chosen == 0)
3806         error_no_arg (_("one or more choice numbers"));
3807       else if (*args == '\0')
3808         break;
3809
3810       choice = strtol (args, &args2, 10);
3811       if (args == args2 || choice < 0
3812           || choice > n_choices + first_choice - 1)
3813         error (_("Argument must be choice number"));
3814       args = args2;
3815
3816       if (choice == 0)
3817         error (_("cancelled"));
3818
3819       if (choice < first_choice)
3820         {
3821           n_chosen = n_choices;
3822           for (j = 0; j < n_choices; j += 1)
3823             choices[j] = j;
3824           break;
3825         }
3826       choice -= first_choice;
3827
3828       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3829         {
3830         }
3831
3832       if (j < 0 || choice != choices[j])
3833         {
3834           int k;
3835
3836           for (k = n_chosen - 1; k > j; k -= 1)
3837             choices[k + 1] = choices[k];
3838           choices[j + 1] = choice;
3839           n_chosen += 1;
3840         }
3841     }
3842
3843   if (n_chosen > max_results)
3844     error (_("Select no more than %d of the above"), max_results);
3845
3846   return n_chosen;
3847 }
3848
3849 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3850    on the function identified by SYM and BLOCK, and taking NARGS
3851    arguments.  Update *EXPP as needed to hold more space.  */
3852
3853 static void
3854 replace_operator_with_call (struct expression **expp, int pc, int nargs,
3855                             int oplen, struct symbol *sym,
3856                             const struct block *block)
3857 {
3858   /* A new expression, with 6 more elements (3 for funcall, 4 for function
3859      symbol, -oplen for operator being replaced).  */
3860   struct expression *newexp = (struct expression *)
3861     xzalloc (sizeof (struct expression)
3862              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3863   struct expression *exp = *expp;
3864
3865   newexp->nelts = exp->nelts + 7 - oplen;
3866   newexp->language_defn = exp->language_defn;
3867   newexp->gdbarch = exp->gdbarch;
3868   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3869   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3870           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3871
3872   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3873   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3874
3875   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3876   newexp->elts[pc + 4].block = block;
3877   newexp->elts[pc + 5].symbol = sym;
3878
3879   *expp = newexp;
3880   xfree (exp);
3881 }
3882
3883 /* Type-class predicates */
3884
3885 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3886    or FLOAT).  */
3887
3888 static int
3889 numeric_type_p (struct type *type)
3890 {
3891   if (type == NULL)
3892     return 0;
3893   else
3894     {
3895       switch (TYPE_CODE (type))
3896         {
3897         case TYPE_CODE_INT:
3898         case TYPE_CODE_FLT:
3899           return 1;
3900         case TYPE_CODE_RANGE:
3901           return (type == TYPE_TARGET_TYPE (type)
3902                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
3903         default:
3904           return 0;
3905         }
3906     }
3907 }
3908
3909 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
3910
3911 static int
3912 integer_type_p (struct type *type)
3913 {
3914   if (type == NULL)
3915     return 0;
3916   else
3917     {
3918       switch (TYPE_CODE (type))
3919         {
3920         case TYPE_CODE_INT:
3921           return 1;
3922         case TYPE_CODE_RANGE:
3923           return (type == TYPE_TARGET_TYPE (type)
3924                   || integer_type_p (TYPE_TARGET_TYPE (type)));
3925         default:
3926           return 0;
3927         }
3928     }
3929 }
3930
3931 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
3932
3933 static int
3934 scalar_type_p (struct type *type)
3935 {
3936   if (type == NULL)
3937     return 0;
3938   else
3939     {
3940       switch (TYPE_CODE (type))
3941         {
3942         case TYPE_CODE_INT:
3943         case TYPE_CODE_RANGE:
3944         case TYPE_CODE_ENUM:
3945         case TYPE_CODE_FLT:
3946           return 1;
3947         default:
3948           return 0;
3949         }
3950     }
3951 }
3952
3953 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
3954
3955 static int
3956 discrete_type_p (struct type *type)
3957 {
3958   if (type == NULL)
3959     return 0;
3960   else
3961     {
3962       switch (TYPE_CODE (type))
3963         {
3964         case TYPE_CODE_INT:
3965         case TYPE_CODE_RANGE:
3966         case TYPE_CODE_ENUM:
3967         case TYPE_CODE_BOOL:
3968           return 1;
3969         default:
3970           return 0;
3971         }
3972     }
3973 }
3974
3975 /* Returns non-zero if OP with operands in the vector ARGS could be
3976    a user-defined function.  Errs on the side of pre-defined operators
3977    (i.e., result 0).  */
3978
3979 static int
3980 possible_user_operator_p (enum exp_opcode op, struct value *args[])
3981 {
3982   struct type *type0 =
3983     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
3984   struct type *type1 =
3985     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
3986
3987   if (type0 == NULL)
3988     return 0;
3989
3990   switch (op)
3991     {
3992     default:
3993       return 0;
3994
3995     case BINOP_ADD:
3996     case BINOP_SUB:
3997     case BINOP_MUL:
3998     case BINOP_DIV:
3999       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4000
4001     case BINOP_REM:
4002     case BINOP_MOD:
4003     case BINOP_BITWISE_AND:
4004     case BINOP_BITWISE_IOR:
4005     case BINOP_BITWISE_XOR:
4006       return (!(integer_type_p (type0) && integer_type_p (type1)));
4007
4008     case BINOP_EQUAL:
4009     case BINOP_NOTEQUAL:
4010     case BINOP_LESS:
4011     case BINOP_GTR:
4012     case BINOP_LEQ:
4013     case BINOP_GEQ:
4014       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4015
4016     case BINOP_CONCAT:
4017       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4018
4019     case BINOP_EXP:
4020       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4021
4022     case UNOP_NEG:
4023     case UNOP_PLUS:
4024     case UNOP_LOGICAL_NOT:
4025     case UNOP_ABS:
4026       return (!numeric_type_p (type0));
4027
4028     }
4029 }
4030 \f
4031                                 /* Renaming */
4032
4033 /* NOTES: 
4034
4035    1. In the following, we assume that a renaming type's name may
4036       have an ___XD suffix.  It would be nice if this went away at some
4037       point.
4038    2. We handle both the (old) purely type-based representation of 
4039       renamings and the (new) variable-based encoding.  At some point,
4040       it is devoutly to be hoped that the former goes away 
4041       (FIXME: hilfinger-2007-07-09).
4042    3. Subprogram renamings are not implemented, although the XRS
4043       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4044
4045 /* If SYM encodes a renaming, 
4046
4047        <renaming> renames <renamed entity>,
4048
4049    sets *LEN to the length of the renamed entity's name,
4050    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4051    the string describing the subcomponent selected from the renamed
4052    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4053    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4054    are undefined).  Otherwise, returns a value indicating the category
4055    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4056    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4057    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4058    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4059    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4060    may be NULL, in which case they are not assigned.
4061
4062    [Currently, however, GCC does not generate subprogram renamings.]  */
4063
4064 enum ada_renaming_category
4065 ada_parse_renaming (struct symbol *sym,
4066                     const char **renamed_entity, int *len, 
4067                     const char **renaming_expr)
4068 {
4069   enum ada_renaming_category kind;
4070   const char *info;
4071   const char *suffix;
4072
4073   if (sym == NULL)
4074     return ADA_NOT_RENAMING;
4075   switch (SYMBOL_CLASS (sym)) 
4076     {
4077     default:
4078       return ADA_NOT_RENAMING;
4079     case LOC_TYPEDEF:
4080       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4081                                        renamed_entity, len, renaming_expr);
4082     case LOC_LOCAL:
4083     case LOC_STATIC:
4084     case LOC_COMPUTED:
4085     case LOC_OPTIMIZED_OUT:
4086       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4087       if (info == NULL)
4088         return ADA_NOT_RENAMING;
4089       switch (info[5])
4090         {
4091         case '_':
4092           kind = ADA_OBJECT_RENAMING;
4093           info += 6;
4094           break;
4095         case 'E':
4096           kind = ADA_EXCEPTION_RENAMING;
4097           info += 7;
4098           break;
4099         case 'P':
4100           kind = ADA_PACKAGE_RENAMING;
4101           info += 7;
4102           break;
4103         case 'S':
4104           kind = ADA_SUBPROGRAM_RENAMING;
4105           info += 7;
4106           break;
4107         default:
4108           return ADA_NOT_RENAMING;
4109         }
4110     }
4111
4112   if (renamed_entity != NULL)
4113     *renamed_entity = info;
4114   suffix = strstr (info, "___XE");
4115   if (suffix == NULL || suffix == info)
4116     return ADA_NOT_RENAMING;
4117   if (len != NULL)
4118     *len = strlen (info) - strlen (suffix);
4119   suffix += 5;
4120   if (renaming_expr != NULL)
4121     *renaming_expr = suffix;
4122   return kind;
4123 }
4124
4125 /* Assuming TYPE encodes a renaming according to the old encoding in
4126    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4127    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4128    ADA_NOT_RENAMING otherwise.  */
4129 static enum ada_renaming_category
4130 parse_old_style_renaming (struct type *type,
4131                           const char **renamed_entity, int *len, 
4132                           const char **renaming_expr)
4133 {
4134   enum ada_renaming_category kind;
4135   const char *name;
4136   const char *info;
4137   const char *suffix;
4138
4139   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4140       || TYPE_NFIELDS (type) != 1)
4141     return ADA_NOT_RENAMING;
4142
4143   name = type_name_no_tag (type);
4144   if (name == NULL)
4145     return ADA_NOT_RENAMING;
4146   
4147   name = strstr (name, "___XR");
4148   if (name == NULL)
4149     return ADA_NOT_RENAMING;
4150   switch (name[5])
4151     {
4152     case '\0':
4153     case '_':
4154       kind = ADA_OBJECT_RENAMING;
4155       break;
4156     case 'E':
4157       kind = ADA_EXCEPTION_RENAMING;
4158       break;
4159     case 'P':
4160       kind = ADA_PACKAGE_RENAMING;
4161       break;
4162     case 'S':
4163       kind = ADA_SUBPROGRAM_RENAMING;
4164       break;
4165     default:
4166       return ADA_NOT_RENAMING;
4167     }
4168
4169   info = TYPE_FIELD_NAME (type, 0);
4170   if (info == NULL)
4171     return ADA_NOT_RENAMING;
4172   if (renamed_entity != NULL)
4173     *renamed_entity = info;
4174   suffix = strstr (info, "___XE");
4175   if (renaming_expr != NULL)
4176     *renaming_expr = suffix + 5;
4177   if (suffix == NULL || suffix == info)
4178     return ADA_NOT_RENAMING;
4179   if (len != NULL)
4180     *len = suffix - info;
4181   return kind;
4182 }
4183
4184 /* Compute the value of the given RENAMING_SYM, which is expected to
4185    be a symbol encoding a renaming expression.  BLOCK is the block
4186    used to evaluate the renaming.  */
4187
4188 static struct value *
4189 ada_read_renaming_var_value (struct symbol *renaming_sym,
4190                              const struct block *block)
4191 {
4192   const char *sym_name;
4193   struct expression *expr;
4194   struct value *value;
4195   struct cleanup *old_chain = NULL;
4196
4197   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4198   expr = parse_exp_1 (&sym_name, 0, block, 0);
4199   old_chain = make_cleanup (free_current_contents, &expr);
4200   value = evaluate_expression (expr);
4201
4202   do_cleanups (old_chain);
4203   return value;
4204 }
4205 \f
4206
4207                                 /* Evaluation: Function Calls */
4208
4209 /* Return an lvalue containing the value VAL.  This is the identity on
4210    lvalues, and otherwise has the side-effect of allocating memory
4211    in the inferior where a copy of the value contents is copied.  */
4212
4213 static struct value *
4214 ensure_lval (struct value *val)
4215 {
4216   if (VALUE_LVAL (val) == not_lval
4217       || VALUE_LVAL (val) == lval_internalvar)
4218     {
4219       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4220       const CORE_ADDR addr =
4221         value_as_long (value_allocate_space_in_inferior (len));
4222
4223       set_value_address (val, addr);
4224       VALUE_LVAL (val) = lval_memory;
4225       write_memory (addr, value_contents (val), len);
4226     }
4227
4228   return val;
4229 }
4230
4231 /* Return the value ACTUAL, converted to be an appropriate value for a
4232    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4233    allocating any necessary descriptors (fat pointers), or copies of
4234    values not residing in memory, updating it as needed.  */
4235
4236 struct value *
4237 ada_convert_actual (struct value *actual, struct type *formal_type0)
4238 {
4239   struct type *actual_type = ada_check_typedef (value_type (actual));
4240   struct type *formal_type = ada_check_typedef (formal_type0);
4241   struct type *formal_target =
4242     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4243     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4244   struct type *actual_target =
4245     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4246     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4247
4248   if (ada_is_array_descriptor_type (formal_target)
4249       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4250     return make_array_descriptor (formal_type, actual);
4251   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4252            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4253     {
4254       struct value *result;
4255
4256       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4257           && ada_is_array_descriptor_type (actual_target))
4258         result = desc_data (actual);
4259       else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR)
4260         {
4261           if (VALUE_LVAL (actual) != lval_memory)
4262             {
4263               struct value *val;
4264
4265               actual_type = ada_check_typedef (value_type (actual));
4266               val = allocate_value (actual_type);
4267               memcpy ((char *) value_contents_raw (val),
4268                       (char *) value_contents (actual),
4269                       TYPE_LENGTH (actual_type));
4270               actual = ensure_lval (val);
4271             }
4272           result = value_addr (actual);
4273         }
4274       else
4275         return actual;
4276       return value_cast_pointers (formal_type, result, 0);
4277     }
4278   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4279     return ada_value_ind (actual);
4280
4281   return actual;
4282 }
4283
4284 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4285    type TYPE.  This is usually an inefficient no-op except on some targets
4286    (such as AVR) where the representation of a pointer and an address
4287    differs.  */
4288
4289 static CORE_ADDR
4290 value_pointer (struct value *value, struct type *type)
4291 {
4292   struct gdbarch *gdbarch = get_type_arch (type);
4293   unsigned len = TYPE_LENGTH (type);
4294   gdb_byte *buf = alloca (len);
4295   CORE_ADDR addr;
4296
4297   addr = value_address (value);
4298   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4299   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4300   return addr;
4301 }
4302
4303
4304 /* Push a descriptor of type TYPE for array value ARR on the stack at
4305    *SP, updating *SP to reflect the new descriptor.  Return either
4306    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4307    to-descriptor type rather than a descriptor type), a struct value *
4308    representing a pointer to this descriptor.  */
4309
4310 static struct value *
4311 make_array_descriptor (struct type *type, struct value *arr)
4312 {
4313   struct type *bounds_type = desc_bounds_type (type);
4314   struct type *desc_type = desc_base_type (type);
4315   struct value *descriptor = allocate_value (desc_type);
4316   struct value *bounds = allocate_value (bounds_type);
4317   int i;
4318
4319   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4320        i > 0; i -= 1)
4321     {
4322       modify_field (value_type (bounds), value_contents_writeable (bounds),
4323                     ada_array_bound (arr, i, 0),
4324                     desc_bound_bitpos (bounds_type, i, 0),
4325                     desc_bound_bitsize (bounds_type, i, 0));
4326       modify_field (value_type (bounds), value_contents_writeable (bounds),
4327                     ada_array_bound (arr, i, 1),
4328                     desc_bound_bitpos (bounds_type, i, 1),
4329                     desc_bound_bitsize (bounds_type, i, 1));
4330     }
4331
4332   bounds = ensure_lval (bounds);
4333
4334   modify_field (value_type (descriptor),
4335                 value_contents_writeable (descriptor),
4336                 value_pointer (ensure_lval (arr),
4337                                TYPE_FIELD_TYPE (desc_type, 0)),
4338                 fat_pntr_data_bitpos (desc_type),
4339                 fat_pntr_data_bitsize (desc_type));
4340
4341   modify_field (value_type (descriptor),
4342                 value_contents_writeable (descriptor),
4343                 value_pointer (bounds,
4344                                TYPE_FIELD_TYPE (desc_type, 1)),
4345                 fat_pntr_bounds_bitpos (desc_type),
4346                 fat_pntr_bounds_bitsize (desc_type));
4347
4348   descriptor = ensure_lval (descriptor);
4349
4350   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4351     return value_addr (descriptor);
4352   else
4353     return descriptor;
4354 }
4355 \f
4356                                 /* Symbol Cache Module */
4357
4358 /* Performance measurements made as of 2010-01-15 indicate that
4359    this cache does bring some noticeable improvements.  Depending
4360    on the type of entity being printed, the cache can make it as much
4361    as an order of magnitude faster than without it.
4362
4363    The descriptive type DWARF extension has significantly reduced
4364    the need for this cache, at least when DWARF is being used.  However,
4365    even in this case, some expensive name-based symbol searches are still
4366    sometimes necessary - to find an XVZ variable, mostly.  */
4367
4368 /* Initialize the contents of SYM_CACHE.  */
4369
4370 static void
4371 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4372 {
4373   obstack_init (&sym_cache->cache_space);
4374   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4375 }
4376
4377 /* Free the memory used by SYM_CACHE.  */
4378
4379 static void
4380 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4381 {
4382   obstack_free (&sym_cache->cache_space, NULL);
4383   xfree (sym_cache);
4384 }
4385
4386 /* Return the symbol cache associated to the given program space PSPACE.
4387    If not allocated for this PSPACE yet, allocate and initialize one.  */
4388
4389 static struct ada_symbol_cache *
4390 ada_get_symbol_cache (struct program_space *pspace)
4391 {
4392   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4393   struct ada_symbol_cache *sym_cache = pspace_data->sym_cache;
4394
4395   if (sym_cache == NULL)
4396     {
4397       sym_cache = XCNEW (struct ada_symbol_cache);
4398       ada_init_symbol_cache (sym_cache);
4399     }
4400
4401   return sym_cache;
4402 }
4403
4404 /* Clear all entries from the symbol cache.  */
4405
4406 static void
4407 ada_clear_symbol_cache (void)
4408 {
4409   struct ada_symbol_cache *sym_cache
4410     = ada_get_symbol_cache (current_program_space);
4411
4412   obstack_free (&sym_cache->cache_space, NULL);
4413   ada_init_symbol_cache (sym_cache);
4414 }
4415
4416 /* Search our cache for an entry matching NAME and NAMESPACE.
4417    Return it if found, or NULL otherwise.  */
4418
4419 static struct cache_entry **
4420 find_entry (const char *name, domain_enum namespace)
4421 {
4422   struct ada_symbol_cache *sym_cache
4423     = ada_get_symbol_cache (current_program_space);
4424   int h = msymbol_hash (name) % HASH_SIZE;
4425   struct cache_entry **e;
4426
4427   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4428     {
4429       if (namespace == (*e)->namespace && strcmp (name, (*e)->name) == 0)
4430         return e;
4431     }
4432   return NULL;
4433 }
4434
4435 /* Search the symbol cache for an entry matching NAME and NAMESPACE.
4436    Return 1 if found, 0 otherwise.
4437
4438    If an entry was found and SYM is not NULL, set *SYM to the entry's
4439    SYM.  Same principle for BLOCK if not NULL.  */
4440
4441 static int
4442 lookup_cached_symbol (const char *name, domain_enum namespace,
4443                       struct symbol **sym, const struct block **block)
4444 {
4445   struct cache_entry **e = find_entry (name, namespace);
4446
4447   if (e == NULL)
4448     return 0;
4449   if (sym != NULL)
4450     *sym = (*e)->sym;
4451   if (block != NULL)
4452     *block = (*e)->block;
4453   return 1;
4454 }
4455
4456 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4457    in domain NAMESPACE, save this result in our symbol cache.  */
4458
4459 static void
4460 cache_symbol (const char *name, domain_enum namespace, struct symbol *sym,
4461               const struct block *block)
4462 {
4463   struct ada_symbol_cache *sym_cache
4464     = ada_get_symbol_cache (current_program_space);
4465   int h;
4466   char *copy;
4467   struct cache_entry *e;
4468
4469   /* If the symbol is a local symbol, then do not cache it, as a search
4470      for that symbol depends on the context.  To determine whether
4471      the symbol is local or not, we check the block where we found it
4472      against the global and static blocks of its associated symtab.  */
4473   if (sym
4474       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4475                             GLOBAL_BLOCK) != block
4476       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4477                             STATIC_BLOCK) != block)
4478     return;
4479
4480   h = msymbol_hash (name) % HASH_SIZE;
4481   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4482                                             sizeof (*e));
4483   e->next = sym_cache->root[h];
4484   sym_cache->root[h] = e;
4485   e->name = copy = obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4486   strcpy (copy, name);
4487   e->sym = sym;
4488   e->namespace = namespace;
4489   e->block = block;
4490 }
4491 \f
4492                                 /* Symbol Lookup */
4493
4494 /* Return nonzero if wild matching should be used when searching for
4495    all symbols matching LOOKUP_NAME.
4496
4497    LOOKUP_NAME is expected to be a symbol name after transformation
4498    for Ada lookups (see ada_name_for_lookup).  */
4499
4500 static int
4501 should_use_wild_match (const char *lookup_name)
4502 {
4503   return (strstr (lookup_name, "__") == NULL);
4504 }
4505
4506 /* Return the result of a standard (literal, C-like) lookup of NAME in
4507    given DOMAIN, visible from lexical block BLOCK.  */
4508
4509 static struct symbol *
4510 standard_lookup (const char *name, const struct block *block,
4511                  domain_enum domain)
4512 {
4513   /* Initialize it just to avoid a GCC false warning.  */
4514   struct symbol *sym = NULL;
4515
4516   if (lookup_cached_symbol (name, domain, &sym, NULL))
4517     return sym;
4518   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4519   cache_symbol (name, domain, sym, block_found);
4520   return sym;
4521 }
4522
4523
4524 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4525    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4526    since they contend in overloading in the same way.  */
4527 static int
4528 is_nonfunction (struct ada_symbol_info syms[], int n)
4529 {
4530   int i;
4531
4532   for (i = 0; i < n; i += 1)
4533     if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_FUNC
4534         && (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM
4535             || SYMBOL_CLASS (syms[i].sym) != LOC_CONST))
4536       return 1;
4537
4538   return 0;
4539 }
4540
4541 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4542    struct types.  Otherwise, they may not.  */
4543
4544 static int
4545 equiv_types (struct type *type0, struct type *type1)
4546 {
4547   if (type0 == type1)
4548     return 1;
4549   if (type0 == NULL || type1 == NULL
4550       || TYPE_CODE (type0) != TYPE_CODE (type1))
4551     return 0;
4552   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4553        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4554       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4555       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4556     return 1;
4557
4558   return 0;
4559 }
4560
4561 /* True iff SYM0 represents the same entity as SYM1, or one that is
4562    no more defined than that of SYM1.  */
4563
4564 static int
4565 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4566 {
4567   if (sym0 == sym1)
4568     return 1;
4569   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4570       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4571     return 0;
4572
4573   switch (SYMBOL_CLASS (sym0))
4574     {
4575     case LOC_UNDEF:
4576       return 1;
4577     case LOC_TYPEDEF:
4578       {
4579         struct type *type0 = SYMBOL_TYPE (sym0);
4580         struct type *type1 = SYMBOL_TYPE (sym1);
4581         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4582         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4583         int len0 = strlen (name0);
4584
4585         return
4586           TYPE_CODE (type0) == TYPE_CODE (type1)
4587           && (equiv_types (type0, type1)
4588               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4589                   && strncmp (name1 + len0, "___XV", 5) == 0));
4590       }
4591     case LOC_CONST:
4592       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4593         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4594     default:
4595       return 0;
4596     }
4597 }
4598
4599 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct ada_symbol_info
4600    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4601
4602 static void
4603 add_defn_to_vec (struct obstack *obstackp,
4604                  struct symbol *sym,
4605                  const struct block *block)
4606 {
4607   int i;
4608   struct ada_symbol_info *prevDefns = defns_collected (obstackp, 0);
4609
4610   /* Do not try to complete stub types, as the debugger is probably
4611      already scanning all symbols matching a certain name at the
4612      time when this function is called.  Trying to replace the stub
4613      type by its associated full type will cause us to restart a scan
4614      which may lead to an infinite recursion.  Instead, the client
4615      collecting the matching symbols will end up collecting several
4616      matches, with at least one of them complete.  It can then filter
4617      out the stub ones if needed.  */
4618
4619   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4620     {
4621       if (lesseq_defined_than (sym, prevDefns[i].sym))
4622         return;
4623       else if (lesseq_defined_than (prevDefns[i].sym, sym))
4624         {
4625           prevDefns[i].sym = sym;
4626           prevDefns[i].block = block;
4627           return;
4628         }
4629     }
4630
4631   {
4632     struct ada_symbol_info info;
4633
4634     info.sym = sym;
4635     info.block = block;
4636     obstack_grow (obstackp, &info, sizeof (struct ada_symbol_info));
4637   }
4638 }
4639
4640 /* Number of ada_symbol_info structures currently collected in 
4641    current vector in *OBSTACKP.  */
4642
4643 static int
4644 num_defns_collected (struct obstack *obstackp)
4645 {
4646   return obstack_object_size (obstackp) / sizeof (struct ada_symbol_info);
4647 }
4648
4649 /* Vector of ada_symbol_info structures currently collected in current 
4650    vector in *OBSTACKP.  If FINISH, close off the vector and return
4651    its final address.  */
4652
4653 static struct ada_symbol_info *
4654 defns_collected (struct obstack *obstackp, int finish)
4655 {
4656   if (finish)
4657     return obstack_finish (obstackp);
4658   else
4659     return (struct ada_symbol_info *) obstack_base (obstackp);
4660 }
4661
4662 /* Return a bound minimal symbol matching NAME according to Ada
4663    decoding rules.  Returns an invalid symbol if there is no such
4664    minimal symbol.  Names prefixed with "standard__" are handled
4665    specially: "standard__" is first stripped off, and only static and
4666    global symbols are searched.  */
4667
4668 struct bound_minimal_symbol
4669 ada_lookup_simple_minsym (const char *name)
4670 {
4671   struct bound_minimal_symbol result;
4672   struct objfile *objfile;
4673   struct minimal_symbol *msymbol;
4674   const int wild_match_p = should_use_wild_match (name);
4675
4676   memset (&result, 0, sizeof (result));
4677
4678   /* Special case: If the user specifies a symbol name inside package
4679      Standard, do a non-wild matching of the symbol name without
4680      the "standard__" prefix.  This was primarily introduced in order
4681      to allow the user to specifically access the standard exceptions
4682      using, for instance, Standard.Constraint_Error when Constraint_Error
4683      is ambiguous (due to the user defining its own Constraint_Error
4684      entity inside its program).  */
4685   if (strncmp (name, "standard__", sizeof ("standard__") - 1) == 0)
4686     name += sizeof ("standard__") - 1;
4687
4688   ALL_MSYMBOLS (objfile, msymbol)
4689   {
4690     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), name, wild_match_p)
4691         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4692       {
4693         result.minsym = msymbol;
4694         result.objfile = objfile;
4695         break;
4696       }
4697   }
4698
4699   return result;
4700 }
4701
4702 /* For all subprograms that statically enclose the subprogram of the
4703    selected frame, add symbols matching identifier NAME in DOMAIN
4704    and their blocks to the list of data in OBSTACKP, as for
4705    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4706    with a wildcard prefix.  */
4707
4708 static void
4709 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4710                                   const char *name, domain_enum namespace,
4711                                   int wild_match_p)
4712 {
4713 }
4714
4715 /* True if TYPE is definitely an artificial type supplied to a symbol
4716    for which no debugging information was given in the symbol file.  */
4717
4718 static int
4719 is_nondebugging_type (struct type *type)
4720 {
4721   const char *name = ada_type_name (type);
4722
4723   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4724 }
4725
4726 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4727    that are deemed "identical" for practical purposes.
4728
4729    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4730    types and that their number of enumerals is identical (in other
4731    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4732
4733 static int
4734 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4735 {
4736   int i;
4737
4738   /* The heuristic we use here is fairly conservative.  We consider
4739      that 2 enumerate types are identical if they have the same
4740      number of enumerals and that all enumerals have the same
4741      underlying value and name.  */
4742
4743   /* All enums in the type should have an identical underlying value.  */
4744   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4745     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4746       return 0;
4747
4748   /* All enumerals should also have the same name (modulo any numerical
4749      suffix).  */
4750   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4751     {
4752       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4753       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4754       int len_1 = strlen (name_1);
4755       int len_2 = strlen (name_2);
4756
4757       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4758       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4759       if (len_1 != len_2
4760           || strncmp (TYPE_FIELD_NAME (type1, i),
4761                       TYPE_FIELD_NAME (type2, i),
4762                       len_1) != 0)
4763         return 0;
4764     }
4765
4766   return 1;
4767 }
4768
4769 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4770    that are deemed "identical" for practical purposes.  Sometimes,
4771    enumerals are not strictly identical, but their types are so similar
4772    that they can be considered identical.
4773
4774    For instance, consider the following code:
4775
4776       type Color is (Black, Red, Green, Blue, White);
4777       type RGB_Color is new Color range Red .. Blue;
4778
4779    Type RGB_Color is a subrange of an implicit type which is a copy
4780    of type Color. If we call that implicit type RGB_ColorB ("B" is
4781    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4782    As a result, when an expression references any of the enumeral
4783    by name (Eg. "print green"), the expression is technically
4784    ambiguous and the user should be asked to disambiguate. But
4785    doing so would only hinder the user, since it wouldn't matter
4786    what choice he makes, the outcome would always be the same.
4787    So, for practical purposes, we consider them as the same.  */
4788
4789 static int
4790 symbols_are_identical_enums (struct ada_symbol_info *syms, int nsyms)
4791 {
4792   int i;
4793
4794   /* Before performing a thorough comparison check of each type,
4795      we perform a series of inexpensive checks.  We expect that these
4796      checks will quickly fail in the vast majority of cases, and thus
4797      help prevent the unnecessary use of a more expensive comparison.
4798      Said comparison also expects us to make some of these checks
4799      (see ada_identical_enum_types_p).  */
4800
4801   /* Quick check: All symbols should have an enum type.  */
4802   for (i = 0; i < nsyms; i++)
4803     if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM)
4804       return 0;
4805
4806   /* Quick check: They should all have the same value.  */
4807   for (i = 1; i < nsyms; i++)
4808     if (SYMBOL_VALUE (syms[i].sym) != SYMBOL_VALUE (syms[0].sym))
4809       return 0;
4810
4811   /* Quick check: They should all have the same number of enumerals.  */
4812   for (i = 1; i < nsyms; i++)
4813     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].sym))
4814         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].sym)))
4815       return 0;
4816
4817   /* All the sanity checks passed, so we might have a set of
4818      identical enumeration types.  Perform a more complete
4819      comparison of the type of each symbol.  */
4820   for (i = 1; i < nsyms; i++)
4821     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].sym),
4822                                      SYMBOL_TYPE (syms[0].sym)))
4823       return 0;
4824
4825   return 1;
4826 }
4827
4828 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
4829    duplicate other symbols in the list (The only case I know of where
4830    this happens is when object files containing stabs-in-ecoff are
4831    linked with files containing ordinary ecoff debugging symbols (or no
4832    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
4833    Returns the number of items in the modified list.  */
4834
4835 static int
4836 remove_extra_symbols (struct ada_symbol_info *syms, int nsyms)
4837 {
4838   int i, j;
4839
4840   /* We should never be called with less than 2 symbols, as there
4841      cannot be any extra symbol in that case.  But it's easy to
4842      handle, since we have nothing to do in that case.  */
4843   if (nsyms < 2)
4844     return nsyms;
4845
4846   i = 0;
4847   while (i < nsyms)
4848     {
4849       int remove_p = 0;
4850
4851       /* If two symbols have the same name and one of them is a stub type,
4852          the get rid of the stub.  */
4853
4854       if (TYPE_STUB (SYMBOL_TYPE (syms[i].sym))
4855           && SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL)
4856         {
4857           for (j = 0; j < nsyms; j++)
4858             {
4859               if (j != i
4860                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].sym))
4861                   && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL
4862                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym),
4863                              SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0)
4864                 remove_p = 1;
4865             }
4866         }
4867
4868       /* Two symbols with the same name, same class and same address
4869          should be identical.  */
4870
4871       else if (SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL
4872           && SYMBOL_CLASS (syms[i].sym) == LOC_STATIC
4873           && is_nondebugging_type (SYMBOL_TYPE (syms[i].sym)))
4874         {
4875           for (j = 0; j < nsyms; j += 1)
4876             {
4877               if (i != j
4878                   && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL
4879                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym),
4880                              SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0
4881                   && SYMBOL_CLASS (syms[i].sym) == SYMBOL_CLASS (syms[j].sym)
4882                   && SYMBOL_VALUE_ADDRESS (syms[i].sym)
4883                   == SYMBOL_VALUE_ADDRESS (syms[j].sym))
4884                 remove_p = 1;
4885             }
4886         }
4887       
4888       if (remove_p)
4889         {
4890           for (j = i + 1; j < nsyms; j += 1)
4891             syms[j - 1] = syms[j];
4892           nsyms -= 1;
4893         }
4894
4895       i += 1;
4896     }
4897
4898   /* If all the remaining symbols are identical enumerals, then
4899      just keep the first one and discard the rest.
4900
4901      Unlike what we did previously, we do not discard any entry
4902      unless they are ALL identical.  This is because the symbol
4903      comparison is not a strict comparison, but rather a practical
4904      comparison.  If all symbols are considered identical, then
4905      we can just go ahead and use the first one and discard the rest.
4906      But if we cannot reduce the list to a single element, we have
4907      to ask the user to disambiguate anyways.  And if we have to
4908      present a multiple-choice menu, it's less confusing if the list
4909      isn't missing some choices that were identical and yet distinct.  */
4910   if (symbols_are_identical_enums (syms, nsyms))
4911     nsyms = 1;
4912
4913   return nsyms;
4914 }
4915
4916 /* Given a type that corresponds to a renaming entity, use the type name
4917    to extract the scope (package name or function name, fully qualified,
4918    and following the GNAT encoding convention) where this renaming has been
4919    defined.  The string returned needs to be deallocated after use.  */
4920
4921 static char *
4922 xget_renaming_scope (struct type *renaming_type)
4923 {
4924   /* The renaming types adhere to the following convention:
4925      <scope>__<rename>___<XR extension>.
4926      So, to extract the scope, we search for the "___XR" extension,
4927      and then backtrack until we find the first "__".  */
4928
4929   const char *name = type_name_no_tag (renaming_type);
4930   char *suffix = strstr (name, "___XR");
4931   char *last;
4932   int scope_len;
4933   char *scope;
4934
4935   /* Now, backtrack a bit until we find the first "__".  Start looking
4936      at suffix - 3, as the <rename> part is at least one character long.  */
4937
4938   for (last = suffix - 3; last > name; last--)
4939     if (last[0] == '_' && last[1] == '_')
4940       break;
4941
4942   /* Make a copy of scope and return it.  */
4943
4944   scope_len = last - name;
4945   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
4946
4947   strncpy (scope, name, scope_len);
4948   scope[scope_len] = '\0';
4949
4950   return scope;
4951 }
4952
4953 /* Return nonzero if NAME corresponds to a package name.  */
4954
4955 static int
4956 is_package_name (const char *name)
4957 {
4958   /* Here, We take advantage of the fact that no symbols are generated
4959      for packages, while symbols are generated for each function.
4960      So the condition for NAME represent a package becomes equivalent
4961      to NAME not existing in our list of symbols.  There is only one
4962      small complication with library-level functions (see below).  */
4963
4964   char *fun_name;
4965
4966   /* If it is a function that has not been defined at library level,
4967      then we should be able to look it up in the symbols.  */
4968   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
4969     return 0;
4970
4971   /* Library-level function names start with "_ada_".  See if function
4972      "_ada_" followed by NAME can be found.  */
4973
4974   /* Do a quick check that NAME does not contain "__", since library-level
4975      functions names cannot contain "__" in them.  */
4976   if (strstr (name, "__") != NULL)
4977     return 0;
4978
4979   fun_name = xstrprintf ("_ada_%s", name);
4980
4981   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
4982 }
4983
4984 /* Return nonzero if SYM corresponds to a renaming entity that is
4985    not visible from FUNCTION_NAME.  */
4986
4987 static int
4988 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
4989 {
4990   char *scope;
4991   struct cleanup *old_chain;
4992
4993   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
4994     return 0;
4995
4996   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
4997   old_chain = make_cleanup (xfree, scope);
4998
4999   /* If the rename has been defined in a package, then it is visible.  */
5000   if (is_package_name (scope))
5001     {
5002       do_cleanups (old_chain);
5003       return 0;
5004     }
5005
5006   /* Check that the rename is in the current function scope by checking
5007      that its name starts with SCOPE.  */
5008
5009   /* If the function name starts with "_ada_", it means that it is
5010      a library-level function.  Strip this prefix before doing the
5011      comparison, as the encoding for the renaming does not contain
5012      this prefix.  */
5013   if (strncmp (function_name, "_ada_", 5) == 0)
5014     function_name += 5;
5015
5016   {
5017     int is_invisible = strncmp (function_name, scope, strlen (scope)) != 0;
5018
5019     do_cleanups (old_chain);
5020     return is_invisible;
5021   }
5022 }
5023
5024 /* Remove entries from SYMS that corresponds to a renaming entity that
5025    is not visible from the function associated with CURRENT_BLOCK or
5026    that is superfluous due to the presence of more specific renaming
5027    information.  Places surviving symbols in the initial entries of
5028    SYMS and returns the number of surviving symbols.
5029    
5030    Rationale:
5031    First, in cases where an object renaming is implemented as a
5032    reference variable, GNAT may produce both the actual reference
5033    variable and the renaming encoding.  In this case, we discard the
5034    latter.
5035
5036    Second, GNAT emits a type following a specified encoding for each renaming
5037    entity.  Unfortunately, STABS currently does not support the definition
5038    of types that are local to a given lexical block, so all renamings types
5039    are emitted at library level.  As a consequence, if an application
5040    contains two renaming entities using the same name, and a user tries to
5041    print the value of one of these entities, the result of the ada symbol
5042    lookup will also contain the wrong renaming type.
5043
5044    This function partially covers for this limitation by attempting to
5045    remove from the SYMS list renaming symbols that should be visible
5046    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5047    method with the current information available.  The implementation
5048    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5049    
5050       - When the user tries to print a rename in a function while there
5051         is another rename entity defined in a package:  Normally, the
5052         rename in the function has precedence over the rename in the
5053         package, so the latter should be removed from the list.  This is
5054         currently not the case.
5055         
5056       - This function will incorrectly remove valid renames if
5057         the CURRENT_BLOCK corresponds to a function which symbol name
5058         has been changed by an "Export" pragma.  As a consequence,
5059         the user will be unable to print such rename entities.  */
5060
5061 static int
5062 remove_irrelevant_renamings (struct ada_symbol_info *syms,
5063                              int nsyms, const struct block *current_block)
5064 {
5065   struct symbol *current_function;
5066   const char *current_function_name;
5067   int i;
5068   int is_new_style_renaming;
5069
5070   /* If there is both a renaming foo___XR... encoded as a variable and
5071      a simple variable foo in the same block, discard the latter.
5072      First, zero out such symbols, then compress.  */
5073   is_new_style_renaming = 0;
5074   for (i = 0; i < nsyms; i += 1)
5075     {
5076       struct symbol *sym = syms[i].sym;
5077       const struct block *block = syms[i].block;
5078       const char *name;
5079       const char *suffix;
5080
5081       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5082         continue;
5083       name = SYMBOL_LINKAGE_NAME (sym);
5084       suffix = strstr (name, "___XR");
5085
5086       if (suffix != NULL)
5087         {
5088           int name_len = suffix - name;
5089           int j;
5090
5091           is_new_style_renaming = 1;
5092           for (j = 0; j < nsyms; j += 1)
5093             if (i != j && syms[j].sym != NULL
5094                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].sym),
5095                             name_len) == 0
5096                 && block == syms[j].block)
5097               syms[j].sym = NULL;
5098         }
5099     }
5100   if (is_new_style_renaming)
5101     {
5102       int j, k;
5103
5104       for (j = k = 0; j < nsyms; j += 1)
5105         if (syms[j].sym != NULL)
5106             {
5107               syms[k] = syms[j];
5108               k += 1;
5109             }
5110       return k;
5111     }
5112
5113   /* Extract the function name associated to CURRENT_BLOCK.
5114      Abort if unable to do so.  */
5115
5116   if (current_block == NULL)
5117     return nsyms;
5118
5119   current_function = block_linkage_function (current_block);
5120   if (current_function == NULL)
5121     return nsyms;
5122
5123   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5124   if (current_function_name == NULL)
5125     return nsyms;
5126
5127   /* Check each of the symbols, and remove it from the list if it is
5128      a type corresponding to a renaming that is out of the scope of
5129      the current block.  */
5130
5131   i = 0;
5132   while (i < nsyms)
5133     {
5134       if (ada_parse_renaming (syms[i].sym, NULL, NULL, NULL)
5135           == ADA_OBJECT_RENAMING
5136           && old_renaming_is_invisible (syms[i].sym, current_function_name))
5137         {
5138           int j;
5139
5140           for (j = i + 1; j < nsyms; j += 1)
5141             syms[j - 1] = syms[j];
5142           nsyms -= 1;
5143         }
5144       else
5145         i += 1;
5146     }
5147
5148   return nsyms;
5149 }
5150
5151 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5152    whose name and domain match NAME and DOMAIN respectively.
5153    If no match was found, then extend the search to "enclosing"
5154    routines (in other words, if we're inside a nested function,
5155    search the symbols defined inside the enclosing functions).
5156    If WILD_MATCH_P is nonzero, perform the naming matching in
5157    "wild" mode (see function "wild_match" for more info).
5158
5159    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5160
5161 static void
5162 ada_add_local_symbols (struct obstack *obstackp, const char *name,
5163                        const struct block *block, domain_enum domain,
5164                        int wild_match_p)
5165 {
5166   int block_depth = 0;
5167
5168   while (block != NULL)
5169     {
5170       block_depth += 1;
5171       ada_add_block_symbols (obstackp, block, name, domain, NULL,
5172                              wild_match_p);
5173
5174       /* If we found a non-function match, assume that's the one.  */
5175       if (is_nonfunction (defns_collected (obstackp, 0),
5176                           num_defns_collected (obstackp)))
5177         return;
5178
5179       block = BLOCK_SUPERBLOCK (block);
5180     }
5181
5182   /* If no luck so far, try to find NAME as a local symbol in some lexically
5183      enclosing subprogram.  */
5184   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5185     add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match_p);
5186 }
5187
5188 /* An object of this type is used as the user_data argument when
5189    calling the map_matching_symbols method.  */
5190
5191 struct match_data
5192 {
5193   struct objfile *objfile;
5194   struct obstack *obstackp;
5195   struct symbol *arg_sym;
5196   int found_sym;
5197 };
5198
5199 /* A callback for add_matching_symbols that adds SYM, found in BLOCK,
5200    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5201    containing the obstack that collects the symbol list, the file that SYM
5202    must come from, a flag indicating whether a non-argument symbol has
5203    been found in the current block, and the last argument symbol
5204    passed in SYM within the current block (if any).  When SYM is null,
5205    marking the end of a block, the argument symbol is added if no
5206    other has been found.  */
5207
5208 static int
5209 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5210 {
5211   struct match_data *data = (struct match_data *) data0;
5212   
5213   if (sym == NULL)
5214     {
5215       if (!data->found_sym && data->arg_sym != NULL) 
5216         add_defn_to_vec (data->obstackp,
5217                          fixup_symbol_section (data->arg_sym, data->objfile),
5218                          block);
5219       data->found_sym = 0;
5220       data->arg_sym = NULL;
5221     }
5222   else 
5223     {
5224       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5225         return 0;
5226       else if (SYMBOL_IS_ARGUMENT (sym))
5227         data->arg_sym = sym;
5228       else
5229         {
5230           data->found_sym = 1;
5231           add_defn_to_vec (data->obstackp,
5232                            fixup_symbol_section (sym, data->objfile),
5233                            block);
5234         }
5235     }
5236   return 0;
5237 }
5238
5239 /* Implements compare_names, but only applying the comparision using
5240    the given CASING.  */
5241
5242 static int
5243 compare_names_with_case (const char *string1, const char *string2,
5244                          enum case_sensitivity casing)
5245 {
5246   while (*string1 != '\0' && *string2 != '\0')
5247     {
5248       char c1, c2;
5249
5250       if (isspace (*string1) || isspace (*string2))
5251         return strcmp_iw_ordered (string1, string2);
5252
5253       if (casing == case_sensitive_off)
5254         {
5255           c1 = tolower (*string1);
5256           c2 = tolower (*string2);
5257         }
5258       else
5259         {
5260           c1 = *string1;
5261           c2 = *string2;
5262         }
5263       if (c1 != c2)
5264         break;
5265
5266       string1 += 1;
5267       string2 += 1;
5268     }
5269
5270   switch (*string1)
5271     {
5272     case '(':
5273       return strcmp_iw_ordered (string1, string2);
5274     case '_':
5275       if (*string2 == '\0')
5276         {
5277           if (is_name_suffix (string1))
5278             return 0;
5279           else
5280             return 1;
5281         }
5282       /* FALLTHROUGH */
5283     default:
5284       if (*string2 == '(')
5285         return strcmp_iw_ordered (string1, string2);
5286       else
5287         {
5288           if (casing == case_sensitive_off)
5289             return tolower (*string1) - tolower (*string2);
5290           else
5291             return *string1 - *string2;
5292         }
5293     }
5294 }
5295
5296 /* Compare STRING1 to STRING2, with results as for strcmp.
5297    Compatible with strcmp_iw_ordered in that...
5298
5299        strcmp_iw_ordered (STRING1, STRING2) <= 0
5300
5301    ... implies...
5302
5303        compare_names (STRING1, STRING2) <= 0
5304
5305    (they may differ as to what symbols compare equal).  */
5306
5307 static int
5308 compare_names (const char *string1, const char *string2)
5309 {
5310   int result;
5311
5312   /* Similar to what strcmp_iw_ordered does, we need to perform
5313      a case-insensitive comparison first, and only resort to
5314      a second, case-sensitive, comparison if the first one was
5315      not sufficient to differentiate the two strings.  */
5316
5317   result = compare_names_with_case (string1, string2, case_sensitive_off);
5318   if (result == 0)
5319     result = compare_names_with_case (string1, string2, case_sensitive_on);
5320
5321   return result;
5322 }
5323
5324 /* Add to OBSTACKP all non-local symbols whose name and domain match
5325    NAME and DOMAIN respectively.  The search is performed on GLOBAL_BLOCK
5326    symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise.  */
5327
5328 static void
5329 add_nonlocal_symbols (struct obstack *obstackp, const char *name,
5330                       domain_enum domain, int global,
5331                       int is_wild_match)
5332 {
5333   struct objfile *objfile;
5334   struct match_data data;
5335
5336   memset (&data, 0, sizeof data);
5337   data.obstackp = obstackp;
5338
5339   ALL_OBJFILES (objfile)
5340     {
5341       data.objfile = objfile;
5342
5343       if (is_wild_match)
5344         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5345                                                aux_add_nonlocal_symbols, &data,
5346                                                wild_match, NULL);
5347       else
5348         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5349                                                aux_add_nonlocal_symbols, &data,
5350                                                full_match, compare_names);
5351     }
5352
5353   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5354     {
5355       ALL_OBJFILES (objfile)
5356         {
5357           char *name1 = alloca (strlen (name) + sizeof ("_ada_"));
5358           strcpy (name1, "_ada_");
5359           strcpy (name1 + sizeof ("_ada_") - 1, name);
5360           data.objfile = objfile;
5361           objfile->sf->qf->map_matching_symbols (objfile, name1, domain,
5362                                                  global,
5363                                                  aux_add_nonlocal_symbols,
5364                                                  &data,
5365                                                  full_match, compare_names);
5366         }
5367     }           
5368 }
5369
5370 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and, if full_search is
5371    non-zero, enclosing scope and in global scopes, returning the number of
5372    matches.
5373    Sets *RESULTS to point to a vector of (SYM,BLOCK) tuples,
5374    indicating the symbols found and the blocks and symbol tables (if
5375    any) in which they were found.  This vector is transient---good only to
5376    the next call of ada_lookup_symbol_list.
5377
5378    When full_search is non-zero, any non-function/non-enumeral
5379    symbol match within the nest of blocks whose innermost member is BLOCK0,
5380    is the one match returned (no other matches in that or
5381    enclosing blocks is returned).  If there are any matches in or
5382    surrounding BLOCK0, then these alone are returned.
5383
5384    Names prefixed with "standard__" are handled specially: "standard__"
5385    is first stripped off, and only static and global symbols are searched.  */
5386
5387 static int
5388 ada_lookup_symbol_list_worker (const char *name0, const struct block *block0,
5389                                domain_enum namespace,
5390                                struct ada_symbol_info **results,
5391                                int full_search)
5392 {
5393   struct symbol *sym;
5394   const struct block *block;
5395   const char *name;
5396   const int wild_match_p = should_use_wild_match (name0);
5397   int cacheIfUnique;
5398   int ndefns;
5399
5400   obstack_free (&symbol_list_obstack, NULL);
5401   obstack_init (&symbol_list_obstack);
5402
5403   cacheIfUnique = 0;
5404
5405   /* Search specified block and its superiors.  */
5406
5407   name = name0;
5408   block = block0;
5409
5410   /* Special case: If the user specifies a symbol name inside package
5411      Standard, do a non-wild matching of the symbol name without
5412      the "standard__" prefix.  This was primarily introduced in order
5413      to allow the user to specifically access the standard exceptions
5414      using, for instance, Standard.Constraint_Error when Constraint_Error
5415      is ambiguous (due to the user defining its own Constraint_Error
5416      entity inside its program).  */
5417   if (strncmp (name0, "standard__", sizeof ("standard__") - 1) == 0)
5418     {
5419       block = NULL;
5420       name = name0 + sizeof ("standard__") - 1;
5421     }
5422
5423   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5424
5425   if (block != NULL)
5426     {
5427       if (full_search)
5428         {
5429           ada_add_local_symbols (&symbol_list_obstack, name, block,
5430                                  namespace, wild_match_p);
5431         }
5432       else
5433         {
5434           /* In the !full_search case we're are being called by
5435              ada_iterate_over_symbols, and we don't want to search
5436              superblocks.  */
5437           ada_add_block_symbols (&symbol_list_obstack, block, name,
5438                                  namespace, NULL, wild_match_p);
5439         }
5440       if (num_defns_collected (&symbol_list_obstack) > 0 || !full_search)
5441         goto done;
5442     }
5443
5444   /* No non-global symbols found.  Check our cache to see if we have
5445      already performed this search before.  If we have, then return
5446      the same result.  */
5447
5448   cacheIfUnique = 1;
5449   if (lookup_cached_symbol (name0, namespace, &sym, &block))
5450     {
5451       if (sym != NULL)
5452         add_defn_to_vec (&symbol_list_obstack, sym, block);
5453       goto done;
5454     }
5455
5456   /* Search symbols from all global blocks.  */
5457  
5458   add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 1,
5459                         wild_match_p);
5460
5461   /* Now add symbols from all per-file blocks if we've gotten no hits
5462      (not strictly correct, but perhaps better than an error).  */
5463
5464   if (num_defns_collected (&symbol_list_obstack) == 0)
5465     add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 0,
5466                           wild_match_p);
5467
5468 done:
5469   ndefns = num_defns_collected (&symbol_list_obstack);
5470   *results = defns_collected (&symbol_list_obstack, 1);
5471
5472   ndefns = remove_extra_symbols (*results, ndefns);
5473
5474   if (ndefns == 0 && full_search)
5475     cache_symbol (name0, namespace, NULL, NULL);
5476
5477   if (ndefns == 1 && full_search && cacheIfUnique)
5478     cache_symbol (name0, namespace, (*results)[0].sym, (*results)[0].block);
5479
5480   ndefns = remove_irrelevant_renamings (*results, ndefns, block0);
5481
5482   return ndefns;
5483 }
5484
5485 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing scope and
5486    in global scopes, returning the number of matches, and setting *RESULTS
5487    to a vector of (SYM,BLOCK) tuples.
5488    See ada_lookup_symbol_list_worker for further details.  */
5489
5490 int
5491 ada_lookup_symbol_list (const char *name0, const struct block *block0,
5492                         domain_enum domain, struct ada_symbol_info **results)
5493 {
5494   return ada_lookup_symbol_list_worker (name0, block0, domain, results, 1);
5495 }
5496
5497 /* Implementation of the la_iterate_over_symbols method.  */
5498
5499 static void
5500 ada_iterate_over_symbols (const struct block *block,
5501                           const char *name, domain_enum domain,
5502                           symbol_found_callback_ftype *callback,
5503                           void *data)
5504 {
5505   int ndefs, i;
5506   struct ada_symbol_info *results;
5507
5508   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5509   for (i = 0; i < ndefs; ++i)
5510     {
5511       if (! (*callback) (results[i].sym, data))
5512         break;
5513     }
5514 }
5515
5516 /* If NAME is the name of an entity, return a string that should
5517    be used to look that entity up in Ada units.  This string should
5518    be deallocated after use using xfree.
5519
5520    NAME can have any form that the "break" or "print" commands might
5521    recognize.  In other words, it does not have to be the "natural"
5522    name, or the "encoded" name.  */
5523
5524 char *
5525 ada_name_for_lookup (const char *name)
5526 {
5527   char *canon;
5528   int nlen = strlen (name);
5529
5530   if (name[0] == '<' && name[nlen - 1] == '>')
5531     {
5532       canon = xmalloc (nlen - 1);
5533       memcpy (canon, name + 1, nlen - 2);
5534       canon[nlen - 2] = '\0';
5535     }
5536   else
5537     canon = xstrdup (ada_encode (ada_fold_name (name)));
5538   return canon;
5539 }
5540
5541 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5542    to 1, but choosing the first symbol found if there are multiple
5543    choices.
5544
5545    The result is stored in *INFO, which must be non-NULL.
5546    If no match is found, INFO->SYM is set to NULL.  */
5547
5548 void
5549 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5550                            domain_enum namespace,
5551                            struct ada_symbol_info *info)
5552 {
5553   struct ada_symbol_info *candidates;
5554   int n_candidates;
5555
5556   gdb_assert (info != NULL);
5557   memset (info, 0, sizeof (struct ada_symbol_info));
5558
5559   n_candidates = ada_lookup_symbol_list (name, block, namespace, &candidates);
5560   if (n_candidates == 0)
5561     return;
5562
5563   *info = candidates[0];
5564   info->sym = fixup_symbol_section (info->sym, NULL);
5565 }
5566
5567 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5568    scope and in global scopes, or NULL if none.  NAME is folded and
5569    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5570    choosing the first symbol if there are multiple choices.
5571    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5572
5573 struct symbol *
5574 ada_lookup_symbol (const char *name, const struct block *block0,
5575                    domain_enum namespace, int *is_a_field_of_this)
5576 {
5577   struct ada_symbol_info info;
5578
5579   if (is_a_field_of_this != NULL)
5580     *is_a_field_of_this = 0;
5581
5582   ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)),
5583                              block0, namespace, &info);
5584   return info.sym;
5585 }
5586
5587 static struct symbol *
5588 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5589                             const char *name,
5590                             const struct block *block,
5591                             const domain_enum domain)
5592 {
5593   return ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5594 }
5595
5596
5597 /* True iff STR is a possible encoded suffix of a normal Ada name
5598    that is to be ignored for matching purposes.  Suffixes of parallel
5599    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5600    are given by any of the regular expressions:
5601
5602    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5603    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5604    TKB              [subprogram suffix for task bodies]
5605    _E[0-9]+[bs]$    [protected object entry suffixes]
5606    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5607
5608    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5609    match is performed.  This sequence is used to differentiate homonyms,
5610    is an optional part of a valid name suffix.  */
5611
5612 static int
5613 is_name_suffix (const char *str)
5614 {
5615   int k;
5616   const char *matching;
5617   const int len = strlen (str);
5618
5619   /* Skip optional leading __[0-9]+.  */
5620
5621   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5622     {
5623       str += 3;
5624       while (isdigit (str[0]))
5625         str += 1;
5626     }
5627   
5628   /* [.$][0-9]+ */
5629
5630   if (str[0] == '.' || str[0] == '$')
5631     {
5632       matching = str + 1;
5633       while (isdigit (matching[0]))
5634         matching += 1;
5635       if (matching[0] == '\0')
5636         return 1;
5637     }
5638
5639   /* ___[0-9]+ */
5640
5641   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5642     {
5643       matching = str + 3;
5644       while (isdigit (matching[0]))
5645         matching += 1;
5646       if (matching[0] == '\0')
5647         return 1;
5648     }
5649
5650   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5651
5652   if (strcmp (str, "TKB") == 0)
5653     return 1;
5654
5655 #if 0
5656   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5657      with a N at the end.  Unfortunately, the compiler uses the same
5658      convention for other internal types it creates.  So treating
5659      all entity names that end with an "N" as a name suffix causes
5660      some regressions.  For instance, consider the case of an enumerated
5661      type.  To support the 'Image attribute, it creates an array whose
5662      name ends with N.
5663      Having a single character like this as a suffix carrying some
5664      information is a bit risky.  Perhaps we should change the encoding
5665      to be something like "_N" instead.  In the meantime, do not do
5666      the following check.  */
5667   /* Protected Object Subprograms */
5668   if (len == 1 && str [0] == 'N')
5669     return 1;
5670 #endif
5671
5672   /* _E[0-9]+[bs]$ */
5673   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5674     {
5675       matching = str + 3;
5676       while (isdigit (matching[0]))
5677         matching += 1;
5678       if ((matching[0] == 'b' || matching[0] == 's')
5679           && matching [1] == '\0')
5680         return 1;
5681     }
5682
5683   /* ??? We should not modify STR directly, as we are doing below.  This
5684      is fine in this case, but may become problematic later if we find
5685      that this alternative did not work, and want to try matching
5686      another one from the begining of STR.  Since we modified it, we
5687      won't be able to find the begining of the string anymore!  */
5688   if (str[0] == 'X')
5689     {
5690       str += 1;
5691       while (str[0] != '_' && str[0] != '\0')
5692         {
5693           if (str[0] != 'n' && str[0] != 'b')
5694             return 0;
5695           str += 1;
5696         }
5697     }
5698
5699   if (str[0] == '\000')
5700     return 1;
5701
5702   if (str[0] == '_')
5703     {
5704       if (str[1] != '_' || str[2] == '\000')
5705         return 0;
5706       if (str[2] == '_')
5707         {
5708           if (strcmp (str + 3, "JM") == 0)
5709             return 1;
5710           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5711              the LJM suffix in favor of the JM one.  But we will
5712              still accept LJM as a valid suffix for a reasonable
5713              amount of time, just to allow ourselves to debug programs
5714              compiled using an older version of GNAT.  */
5715           if (strcmp (str + 3, "LJM") == 0)
5716             return 1;
5717           if (str[3] != 'X')
5718             return 0;
5719           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5720               || str[4] == 'U' || str[4] == 'P')
5721             return 1;
5722           if (str[4] == 'R' && str[5] != 'T')
5723             return 1;
5724           return 0;
5725         }
5726       if (!isdigit (str[2]))
5727         return 0;
5728       for (k = 3; str[k] != '\0'; k += 1)
5729         if (!isdigit (str[k]) && str[k] != '_')
5730           return 0;
5731       return 1;
5732     }
5733   if (str[0] == '$' && isdigit (str[1]))
5734     {
5735       for (k = 2; str[k] != '\0'; k += 1)
5736         if (!isdigit (str[k]) && str[k] != '_')
5737           return 0;
5738       return 1;
5739     }
5740   return 0;
5741 }
5742
5743 /* Return non-zero if the string starting at NAME and ending before
5744    NAME_END contains no capital letters.  */
5745
5746 static int
5747 is_valid_name_for_wild_match (const char *name0)
5748 {
5749   const char *decoded_name = ada_decode (name0);
5750   int i;
5751
5752   /* If the decoded name starts with an angle bracket, it means that
5753      NAME0 does not follow the GNAT encoding format.  It should then
5754      not be allowed as a possible wild match.  */
5755   if (decoded_name[0] == '<')
5756     return 0;
5757
5758   for (i=0; decoded_name[i] != '\0'; i++)
5759     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5760       return 0;
5761
5762   return 1;
5763 }
5764
5765 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
5766    that could start a simple name.  Assumes that *NAMEP points into
5767    the string beginning at NAME0.  */
5768
5769 static int
5770 advance_wild_match (const char **namep, const char *name0, int target0)
5771 {
5772   const char *name = *namep;
5773
5774   while (1)
5775     {
5776       int t0, t1;
5777
5778       t0 = *name;
5779       if (t0 == '_')
5780         {
5781           t1 = name[1];
5782           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
5783             {
5784               name += 1;
5785               if (name == name0 + 5 && strncmp (name0, "_ada", 4) == 0)
5786                 break;
5787               else
5788                 name += 1;
5789             }
5790           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
5791                                  || name[2] == target0))
5792             {
5793               name += 2;
5794               break;
5795             }
5796           else
5797             return 0;
5798         }
5799       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
5800         name += 1;
5801       else
5802         return 0;
5803     }
5804
5805   *namep = name;
5806   return 1;
5807 }
5808
5809 /* Return 0 iff NAME encodes a name of the form prefix.PATN.  Ignores any
5810    informational suffixes of NAME (i.e., for which is_name_suffix is
5811    true).  Assumes that PATN is a lower-cased Ada simple name.  */
5812
5813 static int
5814 wild_match (const char *name, const char *patn)
5815 {
5816   const char *p;
5817   const char *name0 = name;
5818
5819   while (1)
5820     {
5821       const char *match = name;
5822
5823       if (*name == *patn)
5824         {
5825           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
5826             if (*p != *name)
5827               break;
5828           if (*p == '\0' && is_name_suffix (name))
5829             return match != name0 && !is_valid_name_for_wild_match (name0);
5830
5831           if (name[-1] == '_')
5832             name -= 1;
5833         }
5834       if (!advance_wild_match (&name, name0, *patn))
5835         return 1;
5836     }
5837 }
5838
5839 /* Returns 0 iff symbol name SYM_NAME matches SEARCH_NAME, apart from
5840    informational suffix.  */
5841
5842 static int
5843 full_match (const char *sym_name, const char *search_name)
5844 {
5845   return !match_name (sym_name, search_name, 0);
5846 }
5847
5848
5849 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to
5850    vector *defn_symbols, updating the list of symbols in OBSTACKP 
5851    (if necessary).  If WILD, treat as NAME with a wildcard prefix.
5852    OBJFILE is the section containing BLOCK.  */
5853
5854 static void
5855 ada_add_block_symbols (struct obstack *obstackp,
5856                        const struct block *block, const char *name,
5857                        domain_enum domain, struct objfile *objfile,
5858                        int wild)
5859 {
5860   struct block_iterator iter;
5861   int name_len = strlen (name);
5862   /* A matching argument symbol, if any.  */
5863   struct symbol *arg_sym;
5864   /* Set true when we find a matching non-argument symbol.  */
5865   int found_sym;
5866   struct symbol *sym;
5867
5868   arg_sym = NULL;
5869   found_sym = 0;
5870   if (wild)
5871     {
5872       for (sym = block_iter_match_first (block, name, wild_match, &iter);
5873            sym != NULL; sym = block_iter_match_next (name, wild_match, &iter))
5874       {
5875         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5876                                    SYMBOL_DOMAIN (sym), domain)
5877             && wild_match (SYMBOL_LINKAGE_NAME (sym), name) == 0)
5878           {
5879             if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5880               continue;
5881             else if (SYMBOL_IS_ARGUMENT (sym))
5882               arg_sym = sym;
5883             else
5884               {
5885                 found_sym = 1;
5886                 add_defn_to_vec (obstackp,
5887                                  fixup_symbol_section (sym, objfile),
5888                                  block);
5889               }
5890           }
5891       }
5892     }
5893   else
5894     {
5895      for (sym = block_iter_match_first (block, name, full_match, &iter);
5896           sym != NULL; sym = block_iter_match_next (name, full_match, &iter))
5897       {
5898         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5899                                    SYMBOL_DOMAIN (sym), domain))
5900           {
5901             if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5902               {
5903                 if (SYMBOL_IS_ARGUMENT (sym))
5904                   arg_sym = sym;
5905                 else
5906                   {
5907                     found_sym = 1;
5908                     add_defn_to_vec (obstackp,
5909                                      fixup_symbol_section (sym, objfile),
5910                                      block);
5911                   }
5912               }
5913           }
5914       }
5915     }
5916
5917   if (!found_sym && arg_sym != NULL)
5918     {
5919       add_defn_to_vec (obstackp,
5920                        fixup_symbol_section (arg_sym, objfile),
5921                        block);
5922     }
5923
5924   if (!wild)
5925     {
5926       arg_sym = NULL;
5927       found_sym = 0;
5928
5929       ALL_BLOCK_SYMBOLS (block, iter, sym)
5930       {
5931         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5932                                    SYMBOL_DOMAIN (sym), domain))
5933           {
5934             int cmp;
5935
5936             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
5937             if (cmp == 0)
5938               {
5939                 cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (sym), 5);
5940                 if (cmp == 0)
5941                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
5942                                  name_len);
5943               }
5944
5945             if (cmp == 0
5946                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
5947               {
5948                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5949                   {
5950                     if (SYMBOL_IS_ARGUMENT (sym))
5951                       arg_sym = sym;
5952                     else
5953                       {
5954                         found_sym = 1;
5955                         add_defn_to_vec (obstackp,
5956                                          fixup_symbol_section (sym, objfile),
5957                                          block);
5958                       }
5959                   }
5960               }
5961           }
5962       }
5963
5964       /* NOTE: This really shouldn't be needed for _ada_ symbols.
5965          They aren't parameters, right?  */
5966       if (!found_sym && arg_sym != NULL)
5967         {
5968           add_defn_to_vec (obstackp,
5969                            fixup_symbol_section (arg_sym, objfile),
5970                            block);
5971         }
5972     }
5973 }
5974 \f
5975
5976                                 /* Symbol Completion */
5977
5978 /* If SYM_NAME is a completion candidate for TEXT, return this symbol
5979    name in a form that's appropriate for the completion.  The result
5980    does not need to be deallocated, but is only good until the next call.
5981
5982    TEXT_LEN is equal to the length of TEXT.
5983    Perform a wild match if WILD_MATCH_P is set.
5984    ENCODED_P should be set if TEXT represents the start of a symbol name
5985    in its encoded form.  */
5986
5987 static const char *
5988 symbol_completion_match (const char *sym_name,
5989                          const char *text, int text_len,
5990                          int wild_match_p, int encoded_p)
5991 {
5992   const int verbatim_match = (text[0] == '<');
5993   int match = 0;
5994
5995   if (verbatim_match)
5996     {
5997       /* Strip the leading angle bracket.  */
5998       text = text + 1;
5999       text_len--;
6000     }
6001
6002   /* First, test against the fully qualified name of the symbol.  */
6003
6004   if (strncmp (sym_name, text, text_len) == 0)
6005     match = 1;
6006
6007   if (match && !encoded_p)
6008     {
6009       /* One needed check before declaring a positive match is to verify
6010          that iff we are doing a verbatim match, the decoded version
6011          of the symbol name starts with '<'.  Otherwise, this symbol name
6012          is not a suitable completion.  */
6013       const char *sym_name_copy = sym_name;
6014       int has_angle_bracket;
6015
6016       sym_name = ada_decode (sym_name);
6017       has_angle_bracket = (sym_name[0] == '<');
6018       match = (has_angle_bracket == verbatim_match);
6019       sym_name = sym_name_copy;
6020     }
6021
6022   if (match && !verbatim_match)
6023     {
6024       /* When doing non-verbatim match, another check that needs to
6025          be done is to verify that the potentially matching symbol name
6026          does not include capital letters, because the ada-mode would
6027          not be able to understand these symbol names without the
6028          angle bracket notation.  */
6029       const char *tmp;
6030
6031       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6032       if (*tmp != '\0')
6033         match = 0;
6034     }
6035
6036   /* Second: Try wild matching...  */
6037
6038   if (!match && wild_match_p)
6039     {
6040       /* Since we are doing wild matching, this means that TEXT
6041          may represent an unqualified symbol name.  We therefore must
6042          also compare TEXT against the unqualified name of the symbol.  */
6043       sym_name = ada_unqualified_name (ada_decode (sym_name));
6044
6045       if (strncmp (sym_name, text, text_len) == 0)
6046         match = 1;
6047     }
6048
6049   /* Finally: If we found a mach, prepare the result to return.  */
6050
6051   if (!match)
6052     return NULL;
6053
6054   if (verbatim_match)
6055     sym_name = add_angle_brackets (sym_name);
6056
6057   if (!encoded_p)
6058     sym_name = ada_decode (sym_name);
6059
6060   return sym_name;
6061 }
6062
6063 /* A companion function to ada_make_symbol_completion_list().
6064    Check if SYM_NAME represents a symbol which name would be suitable
6065    to complete TEXT (TEXT_LEN is the length of TEXT), in which case
6066    it is appended at the end of the given string vector SV.
6067
6068    ORIG_TEXT is the string original string from the user command
6069    that needs to be completed.  WORD is the entire command on which
6070    completion should be performed.  These two parameters are used to
6071    determine which part of the symbol name should be added to the
6072    completion vector.
6073    if WILD_MATCH_P is set, then wild matching is performed.
6074    ENCODED_P should be set if TEXT represents a symbol name in its
6075    encoded formed (in which case the completion should also be
6076    encoded).  */
6077
6078 static void
6079 symbol_completion_add (VEC(char_ptr) **sv,
6080                        const char *sym_name,
6081                        const char *text, int text_len,
6082                        const char *orig_text, const char *word,
6083                        int wild_match_p, int encoded_p)
6084 {
6085   const char *match = symbol_completion_match (sym_name, text, text_len,
6086                                                wild_match_p, encoded_p);
6087   char *completion;
6088
6089   if (match == NULL)
6090     return;
6091
6092   /* We found a match, so add the appropriate completion to the given
6093      string vector.  */
6094
6095   if (word == orig_text)
6096     {
6097       completion = xmalloc (strlen (match) + 5);
6098       strcpy (completion, match);
6099     }
6100   else if (word > orig_text)
6101     {
6102       /* Return some portion of sym_name.  */
6103       completion = xmalloc (strlen (match) + 5);
6104       strcpy (completion, match + (word - orig_text));
6105     }
6106   else
6107     {
6108       /* Return some of ORIG_TEXT plus sym_name.  */
6109       completion = xmalloc (strlen (match) + (orig_text - word) + 5);
6110       strncpy (completion, word, orig_text - word);
6111       completion[orig_text - word] = '\0';
6112       strcat (completion, match);
6113     }
6114
6115   VEC_safe_push (char_ptr, *sv, completion);
6116 }
6117
6118 /* An object of this type is passed as the user_data argument to the
6119    expand_symtabs_matching method.  */
6120 struct add_partial_datum
6121 {
6122   VEC(char_ptr) **completions;
6123   const char *text;
6124   int text_len;
6125   const char *text0;
6126   const char *word;
6127   int wild_match;
6128   int encoded;
6129 };
6130
6131 /* A callback for expand_symtabs_matching.  */
6132
6133 static int
6134 ada_complete_symbol_matcher (const char *name, void *user_data)
6135 {
6136   struct add_partial_datum *data = user_data;
6137   
6138   return symbol_completion_match (name, data->text, data->text_len,
6139                                   data->wild_match, data->encoded) != NULL;
6140 }
6141
6142 /* Return a list of possible symbol names completing TEXT0.  WORD is
6143    the entire command on which completion is made.  */
6144
6145 static VEC (char_ptr) *
6146 ada_make_symbol_completion_list (const char *text0, const char *word,
6147                                  enum type_code code)
6148 {
6149   char *text;
6150   int text_len;
6151   int wild_match_p;
6152   int encoded_p;
6153   VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128);
6154   struct symbol *sym;
6155   struct compunit_symtab *s;
6156   struct minimal_symbol *msymbol;
6157   struct objfile *objfile;
6158   const struct block *b, *surrounding_static_block = 0;
6159   int i;
6160   struct block_iterator iter;
6161   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6162
6163   gdb_assert (code == TYPE_CODE_UNDEF);
6164
6165   if (text0[0] == '<')
6166     {
6167       text = xstrdup (text0);
6168       make_cleanup (xfree, text);
6169       text_len = strlen (text);
6170       wild_match_p = 0;
6171       encoded_p = 1;
6172     }
6173   else
6174     {
6175       text = xstrdup (ada_encode (text0));
6176       make_cleanup (xfree, text);
6177       text_len = strlen (text);
6178       for (i = 0; i < text_len; i++)
6179         text[i] = tolower (text[i]);
6180
6181       encoded_p = (strstr (text0, "__") != NULL);
6182       /* If the name contains a ".", then the user is entering a fully
6183          qualified entity name, and the match must not be done in wild
6184          mode.  Similarly, if the user wants to complete what looks like
6185          an encoded name, the match must not be done in wild mode.  */
6186       wild_match_p = (strchr (text0, '.') == NULL && !encoded_p);
6187     }
6188
6189   /* First, look at the partial symtab symbols.  */
6190   {
6191     struct add_partial_datum data;
6192
6193     data.completions = &completions;
6194     data.text = text;
6195     data.text_len = text_len;
6196     data.text0 = text0;
6197     data.word = word;
6198     data.wild_match = wild_match_p;
6199     data.encoded = encoded_p;
6200     expand_symtabs_matching (NULL, ada_complete_symbol_matcher, ALL_DOMAIN,
6201                              &data);
6202   }
6203
6204   /* At this point scan through the misc symbol vectors and add each
6205      symbol you find to the list.  Eventually we want to ignore
6206      anything that isn't a text symbol (everything else will be
6207      handled by the psymtab code above).  */
6208
6209   ALL_MSYMBOLS (objfile, msymbol)
6210   {
6211     QUIT;
6212     symbol_completion_add (&completions, MSYMBOL_LINKAGE_NAME (msymbol),
6213                            text, text_len, text0, word, wild_match_p,
6214                            encoded_p);
6215   }
6216
6217   /* Search upwards from currently selected frame (so that we can
6218      complete on local vars.  */
6219
6220   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6221     {
6222       if (!BLOCK_SUPERBLOCK (b))
6223         surrounding_static_block = b;   /* For elmin of dups */
6224
6225       ALL_BLOCK_SYMBOLS (b, iter, sym)
6226       {
6227         symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6228                                text, text_len, text0, word,
6229                                wild_match_p, encoded_p);
6230       }
6231     }
6232
6233   /* Go through the symtabs and check the externs and statics for
6234      symbols which match.  */
6235
6236   ALL_COMPUNITS (objfile, s)
6237   {
6238     QUIT;
6239     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6240     ALL_BLOCK_SYMBOLS (b, iter, sym)
6241     {
6242       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6243                              text, text_len, text0, word,
6244                              wild_match_p, encoded_p);
6245     }
6246   }
6247
6248   ALL_COMPUNITS (objfile, s)
6249   {
6250     QUIT;
6251     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6252     /* Don't do this block twice.  */
6253     if (b == surrounding_static_block)
6254       continue;
6255     ALL_BLOCK_SYMBOLS (b, iter, sym)
6256     {
6257       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6258                              text, text_len, text0, word,
6259                              wild_match_p, encoded_p);
6260     }
6261   }
6262
6263   do_cleanups (old_chain);
6264   return completions;
6265 }
6266
6267                                 /* Field Access */
6268
6269 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6270    for tagged types.  */
6271
6272 static int
6273 ada_is_dispatch_table_ptr_type (struct type *type)
6274 {
6275   const char *name;
6276
6277   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6278     return 0;
6279
6280   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6281   if (name == NULL)
6282     return 0;
6283
6284   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6285 }
6286
6287 /* Return non-zero if TYPE is an interface tag.  */
6288
6289 static int
6290 ada_is_interface_tag (struct type *type)
6291 {
6292   const char *name = TYPE_NAME (type);
6293
6294   if (name == NULL)
6295     return 0;
6296
6297   return (strcmp (name, "ada__tags__interface_tag") == 0);
6298 }
6299
6300 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6301    to be invisible to users.  */
6302
6303 int
6304 ada_is_ignored_field (struct type *type, int field_num)
6305 {
6306   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6307     return 1;
6308
6309   /* Check the name of that field.  */
6310   {
6311     const char *name = TYPE_FIELD_NAME (type, field_num);
6312
6313     /* Anonymous field names should not be printed.
6314        brobecker/2007-02-20: I don't think this can actually happen
6315        but we don't want to print the value of annonymous fields anyway.  */
6316     if (name == NULL)
6317       return 1;
6318
6319     /* Normally, fields whose name start with an underscore ("_")
6320        are fields that have been internally generated by the compiler,
6321        and thus should not be printed.  The "_parent" field is special,
6322        however: This is a field internally generated by the compiler
6323        for tagged types, and it contains the components inherited from
6324        the parent type.  This field should not be printed as is, but
6325        should not be ignored either.  */
6326     if (name[0] == '_' && strncmp (name, "_parent", 7) != 0)
6327       return 1;
6328   }
6329
6330   /* If this is the dispatch table of a tagged type or an interface tag,
6331      then ignore.  */
6332   if (ada_is_tagged_type (type, 1)
6333       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6334           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6335     return 1;
6336
6337   /* Not a special field, so it should not be ignored.  */
6338   return 0;
6339 }
6340
6341 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6342    pointer or reference type whose ultimate target has a tag field.  */
6343
6344 int
6345 ada_is_tagged_type (struct type *type, int refok)
6346 {
6347   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL);
6348 }
6349
6350 /* True iff TYPE represents the type of X'Tag */
6351
6352 int
6353 ada_is_tag_type (struct type *type)
6354 {
6355   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6356     return 0;
6357   else
6358     {
6359       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6360
6361       return (name != NULL
6362               && strcmp (name, "ada__tags__dispatch_table") == 0);
6363     }
6364 }
6365
6366 /* The type of the tag on VAL.  */
6367
6368 struct type *
6369 ada_tag_type (struct value *val)
6370 {
6371   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0, NULL);
6372 }
6373
6374 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6375    retired at Ada 05).  */
6376
6377 static int
6378 is_ada95_tag (struct value *tag)
6379 {
6380   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6381 }
6382
6383 /* The value of the tag on VAL.  */
6384
6385 struct value *
6386 ada_value_tag (struct value *val)
6387 {
6388   return ada_value_struct_elt (val, "_tag", 0);
6389 }
6390
6391 /* The value of the tag on the object of type TYPE whose contents are
6392    saved at VALADDR, if it is non-null, or is at memory address
6393    ADDRESS.  */
6394
6395 static struct value *
6396 value_tag_from_contents_and_address (struct type *type,
6397                                      const gdb_byte *valaddr,
6398                                      CORE_ADDR address)
6399 {
6400   int tag_byte_offset;
6401   struct type *tag_type;
6402
6403   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6404                          NULL, NULL, NULL))
6405     {
6406       const gdb_byte *valaddr1 = ((valaddr == NULL)
6407                                   ? NULL
6408                                   : valaddr + tag_byte_offset);
6409       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6410
6411       return value_from_contents_and_address (tag_type, valaddr1, address1);
6412     }
6413   return NULL;
6414 }
6415
6416 static struct type *
6417 type_from_tag (struct value *tag)
6418 {
6419   const char *type_name = ada_tag_name (tag);
6420
6421   if (type_name != NULL)
6422     return ada_find_any_type (ada_encode (type_name));
6423   return NULL;
6424 }
6425
6426 /* Given a value OBJ of a tagged type, return a value of this
6427    type at the base address of the object.  The base address, as
6428    defined in Ada.Tags, it is the address of the primary tag of
6429    the object, and therefore where the field values of its full
6430    view can be fetched.  */
6431
6432 struct value *
6433 ada_tag_value_at_base_address (struct value *obj)
6434 {
6435   volatile struct gdb_exception e;
6436   struct value *val;
6437   LONGEST offset_to_top = 0;
6438   struct type *ptr_type, *obj_type;
6439   struct value *tag;
6440   CORE_ADDR base_address;
6441
6442   obj_type = value_type (obj);
6443
6444   /* It is the responsability of the caller to deref pointers.  */
6445
6446   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6447       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6448     return obj;
6449
6450   tag = ada_value_tag (obj);
6451   if (!tag)
6452     return obj;
6453
6454   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6455
6456   if (is_ada95_tag (tag))
6457     return obj;
6458
6459   ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
6460   ptr_type = lookup_pointer_type (ptr_type);
6461   val = value_cast (ptr_type, tag);
6462   if (!val)
6463     return obj;
6464
6465   /* It is perfectly possible that an exception be raised while
6466      trying to determine the base address, just like for the tag;
6467      see ada_tag_name for more details.  We do not print the error
6468      message for the same reason.  */
6469
6470   TRY_CATCH (e, RETURN_MASK_ERROR)
6471     {
6472       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6473     }
6474
6475   if (e.reason < 0)
6476     return obj;
6477
6478   /* If offset is null, nothing to do.  */
6479
6480   if (offset_to_top == 0)
6481     return obj;
6482
6483   /* -1 is a special case in Ada.Tags; however, what should be done
6484      is not quite clear from the documentation.  So do nothing for
6485      now.  */
6486
6487   if (offset_to_top == -1)
6488     return obj;
6489
6490   base_address = value_address (obj) - offset_to_top;
6491   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6492
6493   /* Make sure that we have a proper tag at the new address.
6494      Otherwise, offset_to_top is bogus (which can happen when
6495      the object is not initialized yet).  */
6496
6497   if (!tag)
6498     return obj;
6499
6500   obj_type = type_from_tag (tag);
6501
6502   if (!obj_type)
6503     return obj;
6504
6505   return value_from_contents_and_address (obj_type, NULL, base_address);
6506 }
6507
6508 /* Return the "ada__tags__type_specific_data" type.  */
6509
6510 static struct type *
6511 ada_get_tsd_type (struct inferior *inf)
6512 {
6513   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6514
6515   if (data->tsd_type == 0)
6516     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6517   return data->tsd_type;
6518 }
6519
6520 /* Return the TSD (type-specific data) associated to the given TAG.
6521    TAG is assumed to be the tag of a tagged-type entity.
6522
6523    May return NULL if we are unable to get the TSD.  */
6524
6525 static struct value *
6526 ada_get_tsd_from_tag (struct value *tag)
6527 {
6528   struct value *val;
6529   struct type *type;
6530
6531   /* First option: The TSD is simply stored as a field of our TAG.
6532      Only older versions of GNAT would use this format, but we have
6533      to test it first, because there are no visible markers for
6534      the current approach except the absence of that field.  */
6535
6536   val = ada_value_struct_elt (tag, "tsd", 1);
6537   if (val)
6538     return val;
6539
6540   /* Try the second representation for the dispatch table (in which
6541      there is no explicit 'tsd' field in the referent of the tag pointer,
6542      and instead the tsd pointer is stored just before the dispatch
6543      table.  */
6544
6545   type = ada_get_tsd_type (current_inferior());
6546   if (type == NULL)
6547     return NULL;
6548   type = lookup_pointer_type (lookup_pointer_type (type));
6549   val = value_cast (type, tag);
6550   if (val == NULL)
6551     return NULL;
6552   return value_ind (value_ptradd (val, -1));
6553 }
6554
6555 /* Given the TSD of a tag (type-specific data), return a string
6556    containing the name of the associated type.
6557
6558    The returned value is good until the next call.  May return NULL
6559    if we are unable to determine the tag name.  */
6560
6561 static char *
6562 ada_tag_name_from_tsd (struct value *tsd)
6563 {
6564   static char name[1024];
6565   char *p;
6566   struct value *val;
6567
6568   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6569   if (val == NULL)
6570     return NULL;
6571   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6572   for (p = name; *p != '\0'; p += 1)
6573     if (isalpha (*p))
6574       *p = tolower (*p);
6575   return name;
6576 }
6577
6578 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6579    a C string.
6580
6581    Return NULL if the TAG is not an Ada tag, or if we were unable to
6582    determine the name of that tag.  The result is good until the next
6583    call.  */
6584
6585 const char *
6586 ada_tag_name (struct value *tag)
6587 {
6588   volatile struct gdb_exception e;
6589   char *name = NULL;
6590
6591   if (!ada_is_tag_type (value_type (tag)))
6592     return NULL;
6593
6594   /* It is perfectly possible that an exception be raised while trying
6595      to determine the TAG's name, even under normal circumstances:
6596      The associated variable may be uninitialized or corrupted, for
6597      instance. We do not let any exception propagate past this point.
6598      instead we return NULL.
6599
6600      We also do not print the error message either (which often is very
6601      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6602      the caller print a more meaningful message if necessary.  */
6603   TRY_CATCH (e, RETURN_MASK_ERROR)
6604     {
6605       struct value *tsd = ada_get_tsd_from_tag (tag);
6606
6607       if (tsd != NULL)
6608         name = ada_tag_name_from_tsd (tsd);
6609     }
6610
6611   return name;
6612 }
6613
6614 /* The parent type of TYPE, or NULL if none.  */
6615
6616 struct type *
6617 ada_parent_type (struct type *type)
6618 {
6619   int i;
6620
6621   type = ada_check_typedef (type);
6622
6623   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6624     return NULL;
6625
6626   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6627     if (ada_is_parent_field (type, i))
6628       {
6629         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6630
6631         /* If the _parent field is a pointer, then dereference it.  */
6632         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6633           parent_type = TYPE_TARGET_TYPE (parent_type);
6634         /* If there is a parallel XVS type, get the actual base type.  */
6635         parent_type = ada_get_base_type (parent_type);
6636
6637         return ada_check_typedef (parent_type);
6638       }
6639
6640   return NULL;
6641 }
6642
6643 /* True iff field number FIELD_NUM of structure type TYPE contains the
6644    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6645    a structure type with at least FIELD_NUM+1 fields.  */
6646
6647 int
6648 ada_is_parent_field (struct type *type, int field_num)
6649 {
6650   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6651
6652   return (name != NULL
6653           && (strncmp (name, "PARENT", 6) == 0
6654               || strncmp (name, "_parent", 7) == 0));
6655 }
6656
6657 /* True iff field number FIELD_NUM of structure type TYPE is a
6658    transparent wrapper field (which should be silently traversed when doing
6659    field selection and flattened when printing).  Assumes TYPE is a
6660    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6661    structures.  */
6662
6663 int
6664 ada_is_wrapper_field (struct type *type, int field_num)
6665 {
6666   const char *name = TYPE_FIELD_NAME (type, field_num);
6667
6668   return (name != NULL
6669           && (strncmp (name, "PARENT", 6) == 0
6670               || strcmp (name, "REP") == 0
6671               || strncmp (name, "_parent", 7) == 0
6672               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6673 }
6674
6675 /* True iff field number FIELD_NUM of structure or union type TYPE
6676    is a variant wrapper.  Assumes TYPE is a structure type with at least
6677    FIELD_NUM+1 fields.  */
6678
6679 int
6680 ada_is_variant_part (struct type *type, int field_num)
6681 {
6682   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6683
6684   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6685           || (is_dynamic_field (type, field_num)
6686               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6687                   == TYPE_CODE_UNION)));
6688 }
6689
6690 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6691    whose discriminants are contained in the record type OUTER_TYPE,
6692    returns the type of the controlling discriminant for the variant.
6693    May return NULL if the type could not be found.  */
6694
6695 struct type *
6696 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6697 {
6698   char *name = ada_variant_discrim_name (var_type);
6699
6700   return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL);
6701 }
6702
6703 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6704    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6705    represents a 'when others' clause; otherwise 0.  */
6706
6707 int
6708 ada_is_others_clause (struct type *type, int field_num)
6709 {
6710   const char *name = TYPE_FIELD_NAME (type, field_num);
6711
6712   return (name != NULL && name[0] == 'O');
6713 }
6714
6715 /* Assuming that TYPE0 is the type of the variant part of a record,
6716    returns the name of the discriminant controlling the variant.
6717    The value is valid until the next call to ada_variant_discrim_name.  */
6718
6719 char *
6720 ada_variant_discrim_name (struct type *type0)
6721 {
6722   static char *result = NULL;
6723   static size_t result_len = 0;
6724   struct type *type;
6725   const char *name;
6726   const char *discrim_end;
6727   const char *discrim_start;
6728
6729   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
6730     type = TYPE_TARGET_TYPE (type0);
6731   else
6732     type = type0;
6733
6734   name = ada_type_name (type);
6735
6736   if (name == NULL || name[0] == '\000')
6737     return "";
6738
6739   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6740        discrim_end -= 1)
6741     {
6742       if (strncmp (discrim_end, "___XVN", 6) == 0)
6743         break;
6744     }
6745   if (discrim_end == name)
6746     return "";
6747
6748   for (discrim_start = discrim_end; discrim_start != name + 3;
6749        discrim_start -= 1)
6750     {
6751       if (discrim_start == name + 1)
6752         return "";
6753       if ((discrim_start > name + 3
6754            && strncmp (discrim_start - 3, "___", 3) == 0)
6755           || discrim_start[-1] == '.')
6756         break;
6757     }
6758
6759   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6760   strncpy (result, discrim_start, discrim_end - discrim_start);
6761   result[discrim_end - discrim_start] = '\0';
6762   return result;
6763 }
6764
6765 /* Scan STR for a subtype-encoded number, beginning at position K.
6766    Put the position of the character just past the number scanned in
6767    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6768    Return 1 if there was a valid number at the given position, and 0
6769    otherwise.  A "subtype-encoded" number consists of the absolute value
6770    in decimal, followed by the letter 'm' to indicate a negative number.
6771    Assumes 0m does not occur.  */
6772
6773 int
6774 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6775 {
6776   ULONGEST RU;
6777
6778   if (!isdigit (str[k]))
6779     return 0;
6780
6781   /* Do it the hard way so as not to make any assumption about
6782      the relationship of unsigned long (%lu scan format code) and
6783      LONGEST.  */
6784   RU = 0;
6785   while (isdigit (str[k]))
6786     {
6787       RU = RU * 10 + (str[k] - '0');
6788       k += 1;
6789     }
6790
6791   if (str[k] == 'm')
6792     {
6793       if (R != NULL)
6794         *R = (-(LONGEST) (RU - 1)) - 1;
6795       k += 1;
6796     }
6797   else if (R != NULL)
6798     *R = (LONGEST) RU;
6799
6800   /* NOTE on the above: Technically, C does not say what the results of
6801      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6802      number representable as a LONGEST (although either would probably work
6803      in most implementations).  When RU>0, the locution in the then branch
6804      above is always equivalent to the negative of RU.  */
6805
6806   if (new_k != NULL)
6807     *new_k = k;
6808   return 1;
6809 }
6810
6811 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6812    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6813    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6814
6815 int
6816 ada_in_variant (LONGEST val, struct type *type, int field_num)
6817 {
6818   const char *name = TYPE_FIELD_NAME (type, field_num);
6819   int p;
6820
6821   p = 0;
6822   while (1)
6823     {
6824       switch (name[p])
6825         {
6826         case '\0':
6827           return 0;
6828         case 'S':
6829           {
6830             LONGEST W;
6831
6832             if (!ada_scan_number (name, p + 1, &W, &p))
6833               return 0;
6834             if (val == W)
6835               return 1;
6836             break;
6837           }
6838         case 'R':
6839           {
6840             LONGEST L, U;
6841
6842             if (!ada_scan_number (name, p + 1, &L, &p)
6843                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6844               return 0;
6845             if (val >= L && val <= U)
6846               return 1;
6847             break;
6848           }
6849         case 'O':
6850           return 1;
6851         default:
6852           return 0;
6853         }
6854     }
6855 }
6856
6857 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
6858
6859 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6860    ARG_TYPE, extract and return the value of one of its (non-static)
6861    fields.  FIELDNO says which field.   Differs from value_primitive_field
6862    only in that it can handle packed values of arbitrary type.  */
6863
6864 static struct value *
6865 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6866                            struct type *arg_type)
6867 {
6868   struct type *type;
6869
6870   arg_type = ada_check_typedef (arg_type);
6871   type = TYPE_FIELD_TYPE (arg_type, fieldno);
6872
6873   /* Handle packed fields.  */
6874
6875   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
6876     {
6877       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6878       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6879
6880       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6881                                              offset + bit_pos / 8,
6882                                              bit_pos % 8, bit_size, type);
6883     }
6884   else
6885     return value_primitive_field (arg1, offset, fieldno, arg_type);
6886 }
6887
6888 /* Find field with name NAME in object of type TYPE.  If found, 
6889    set the following for each argument that is non-null:
6890     - *FIELD_TYPE_P to the field's type; 
6891     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
6892       an object of that type;
6893     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
6894     - *BIT_SIZE_P to its size in bits if the field is packed, and 
6895       0 otherwise;
6896    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6897    fields up to but not including the desired field, or by the total
6898    number of fields if not found.   A NULL value of NAME never
6899    matches; the function just counts visible fields in this case.
6900    
6901    Returns 1 if found, 0 otherwise.  */
6902
6903 static int
6904 find_struct_field (const char *name, struct type *type, int offset,
6905                    struct type **field_type_p,
6906                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
6907                    int *index_p)
6908 {
6909   int i;
6910
6911   type = ada_check_typedef (type);
6912
6913   if (field_type_p != NULL)
6914     *field_type_p = NULL;
6915   if (byte_offset_p != NULL)
6916     *byte_offset_p = 0;
6917   if (bit_offset_p != NULL)
6918     *bit_offset_p = 0;
6919   if (bit_size_p != NULL)
6920     *bit_size_p = 0;
6921
6922   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6923     {
6924       int bit_pos = TYPE_FIELD_BITPOS (type, i);
6925       int fld_offset = offset + bit_pos / 8;
6926       const char *t_field_name = TYPE_FIELD_NAME (type, i);
6927
6928       if (t_field_name == NULL)
6929         continue;
6930
6931       else if (name != NULL && field_name_match (t_field_name, name))
6932         {
6933           int bit_size = TYPE_FIELD_BITSIZE (type, i);
6934
6935           if (field_type_p != NULL)
6936             *field_type_p = TYPE_FIELD_TYPE (type, i);
6937           if (byte_offset_p != NULL)
6938             *byte_offset_p = fld_offset;
6939           if (bit_offset_p != NULL)
6940             *bit_offset_p = bit_pos % 8;
6941           if (bit_size_p != NULL)
6942             *bit_size_p = bit_size;
6943           return 1;
6944         }
6945       else if (ada_is_wrapper_field (type, i))
6946         {
6947           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
6948                                  field_type_p, byte_offset_p, bit_offset_p,
6949                                  bit_size_p, index_p))
6950             return 1;
6951         }
6952       else if (ada_is_variant_part (type, i))
6953         {
6954           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
6955              fixed type?? */
6956           int j;
6957           struct type *field_type
6958             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
6959
6960           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
6961             {
6962               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
6963                                      fld_offset
6964                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
6965                                      field_type_p, byte_offset_p,
6966                                      bit_offset_p, bit_size_p, index_p))
6967                 return 1;
6968             }
6969         }
6970       else if (index_p != NULL)
6971         *index_p += 1;
6972     }
6973   return 0;
6974 }
6975
6976 /* Number of user-visible fields in record type TYPE.  */
6977
6978 static int
6979 num_visible_fields (struct type *type)
6980 {
6981   int n;
6982
6983   n = 0;
6984   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
6985   return n;
6986 }
6987
6988 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
6989    and search in it assuming it has (class) type TYPE.
6990    If found, return value, else return NULL.
6991
6992    Searches recursively through wrapper fields (e.g., '_parent').  */
6993
6994 static struct value *
6995 ada_search_struct_field (char *name, struct value *arg, int offset,
6996                          struct type *type)
6997 {
6998   int i;
6999
7000   type = ada_check_typedef (type);
7001   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7002     {
7003       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7004
7005       if (t_field_name == NULL)
7006         continue;
7007
7008       else if (field_name_match (t_field_name, name))
7009         return ada_value_primitive_field (arg, offset, i, type);
7010
7011       else if (ada_is_wrapper_field (type, i))
7012         {
7013           struct value *v =     /* Do not let indent join lines here.  */
7014             ada_search_struct_field (name, arg,
7015                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7016                                      TYPE_FIELD_TYPE (type, i));
7017
7018           if (v != NULL)
7019             return v;
7020         }
7021
7022       else if (ada_is_variant_part (type, i))
7023         {
7024           /* PNH: Do we ever get here?  See find_struct_field.  */
7025           int j;
7026           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7027                                                                         i));
7028           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7029
7030           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7031             {
7032               struct value *v = ada_search_struct_field /* Force line
7033                                                            break.  */
7034                 (name, arg,
7035                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7036                  TYPE_FIELD_TYPE (field_type, j));
7037
7038               if (v != NULL)
7039                 return v;
7040             }
7041         }
7042     }
7043   return NULL;
7044 }
7045
7046 static struct value *ada_index_struct_field_1 (int *, struct value *,
7047                                                int, struct type *);
7048
7049
7050 /* Return field #INDEX in ARG, where the index is that returned by
7051  * find_struct_field through its INDEX_P argument.  Adjust the address
7052  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7053  * If found, return value, else return NULL.  */
7054
7055 static struct value *
7056 ada_index_struct_field (int index, struct value *arg, int offset,
7057                         struct type *type)
7058 {
7059   return ada_index_struct_field_1 (&index, arg, offset, type);
7060 }
7061
7062
7063 /* Auxiliary function for ada_index_struct_field.  Like
7064  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7065  * *INDEX_P.  */
7066
7067 static struct value *
7068 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7069                           struct type *type)
7070 {
7071   int i;
7072   type = ada_check_typedef (type);
7073
7074   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7075     {
7076       if (TYPE_FIELD_NAME (type, i) == NULL)
7077         continue;
7078       else if (ada_is_wrapper_field (type, i))
7079         {
7080           struct value *v =     /* Do not let indent join lines here.  */
7081             ada_index_struct_field_1 (index_p, arg,
7082                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7083                                       TYPE_FIELD_TYPE (type, i));
7084
7085           if (v != NULL)
7086             return v;
7087         }
7088
7089       else if (ada_is_variant_part (type, i))
7090         {
7091           /* PNH: Do we ever get here?  See ada_search_struct_field,
7092              find_struct_field.  */
7093           error (_("Cannot assign this kind of variant record"));
7094         }
7095       else if (*index_p == 0)
7096         return ada_value_primitive_field (arg, offset, i, type);
7097       else
7098         *index_p -= 1;
7099     }
7100   return NULL;
7101 }
7102
7103 /* Given ARG, a value of type (pointer or reference to a)*
7104    structure/union, extract the component named NAME from the ultimate
7105    target structure/union and return it as a value with its
7106    appropriate type.
7107
7108    The routine searches for NAME among all members of the structure itself
7109    and (recursively) among all members of any wrapper members
7110    (e.g., '_parent').
7111
7112    If NO_ERR, then simply return NULL in case of error, rather than 
7113    calling error.  */
7114
7115 struct value *
7116 ada_value_struct_elt (struct value *arg, char *name, int no_err)
7117 {
7118   struct type *t, *t1;
7119   struct value *v;
7120
7121   v = NULL;
7122   t1 = t = ada_check_typedef (value_type (arg));
7123   if (TYPE_CODE (t) == TYPE_CODE_REF)
7124     {
7125       t1 = TYPE_TARGET_TYPE (t);
7126       if (t1 == NULL)
7127         goto BadValue;
7128       t1 = ada_check_typedef (t1);
7129       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7130         {
7131           arg = coerce_ref (arg);
7132           t = t1;
7133         }
7134     }
7135
7136   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7137     {
7138       t1 = TYPE_TARGET_TYPE (t);
7139       if (t1 == NULL)
7140         goto BadValue;
7141       t1 = ada_check_typedef (t1);
7142       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7143         {
7144           arg = value_ind (arg);
7145           t = t1;
7146         }
7147       else
7148         break;
7149     }
7150
7151   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7152     goto BadValue;
7153
7154   if (t1 == t)
7155     v = ada_search_struct_field (name, arg, 0, t);
7156   else
7157     {
7158       int bit_offset, bit_size, byte_offset;
7159       struct type *field_type;
7160       CORE_ADDR address;
7161
7162       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7163         address = value_address (ada_value_ind (arg));
7164       else
7165         address = value_address (ada_coerce_ref (arg));
7166
7167       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL, 1);
7168       if (find_struct_field (name, t1, 0,
7169                              &field_type, &byte_offset, &bit_offset,
7170                              &bit_size, NULL))
7171         {
7172           if (bit_size != 0)
7173             {
7174               if (TYPE_CODE (t) == TYPE_CODE_REF)
7175                 arg = ada_coerce_ref (arg);
7176               else
7177                 arg = ada_value_ind (arg);
7178               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7179                                                   bit_offset, bit_size,
7180                                                   field_type);
7181             }
7182           else
7183             v = value_at_lazy (field_type, address + byte_offset);
7184         }
7185     }
7186
7187   if (v != NULL || no_err)
7188     return v;
7189   else
7190     error (_("There is no member named %s."), name);
7191
7192  BadValue:
7193   if (no_err)
7194     return NULL;
7195   else
7196     error (_("Attempt to extract a component of "
7197              "a value that is not a record."));
7198 }
7199
7200 /* Given a type TYPE, look up the type of the component of type named NAME.
7201    If DISPP is non-null, add its byte displacement from the beginning of a
7202    structure (pointed to by a value) of type TYPE to *DISPP (does not
7203    work for packed fields).
7204
7205    Matches any field whose name has NAME as a prefix, possibly
7206    followed by "___".
7207
7208    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7209    be a (pointer or reference)+ to a struct or union, and the
7210    ultimate target type will be searched.
7211
7212    Looks recursively into variant clauses and parent types.
7213
7214    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7215    TYPE is not a type of the right kind.  */
7216
7217 static struct type *
7218 ada_lookup_struct_elt_type (struct type *type, char *name, int refok,
7219                             int noerr, int *dispp)
7220 {
7221   int i;
7222
7223   if (name == NULL)
7224     goto BadName;
7225
7226   if (refok && type != NULL)
7227     while (1)
7228       {
7229         type = ada_check_typedef (type);
7230         if (TYPE_CODE (type) != TYPE_CODE_PTR
7231             && TYPE_CODE (type) != TYPE_CODE_REF)
7232           break;
7233         type = TYPE_TARGET_TYPE (type);
7234       }
7235
7236   if (type == NULL
7237       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7238           && TYPE_CODE (type) != TYPE_CODE_UNION))
7239     {
7240       if (noerr)
7241         return NULL;
7242       else
7243         {
7244           target_terminal_ours ();
7245           gdb_flush (gdb_stdout);
7246           if (type == NULL)
7247             error (_("Type (null) is not a structure or union type"));
7248           else
7249             {
7250               /* XXX: type_sprint */
7251               fprintf_unfiltered (gdb_stderr, _("Type "));
7252               type_print (type, "", gdb_stderr, -1);
7253               error (_(" is not a structure or union type"));
7254             }
7255         }
7256     }
7257
7258   type = to_static_fixed_type (type);
7259
7260   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7261     {
7262       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7263       struct type *t;
7264       int disp;
7265
7266       if (t_field_name == NULL)
7267         continue;
7268
7269       else if (field_name_match (t_field_name, name))
7270         {
7271           if (dispp != NULL)
7272             *dispp += TYPE_FIELD_BITPOS (type, i) / 8;
7273           return ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7274         }
7275
7276       else if (ada_is_wrapper_field (type, i))
7277         {
7278           disp = 0;
7279           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7280                                           0, 1, &disp);
7281           if (t != NULL)
7282             {
7283               if (dispp != NULL)
7284                 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7285               return t;
7286             }
7287         }
7288
7289       else if (ada_is_variant_part (type, i))
7290         {
7291           int j;
7292           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7293                                                                         i));
7294
7295           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7296             {
7297               /* FIXME pnh 2008/01/26: We check for a field that is
7298                  NOT wrapped in a struct, since the compiler sometimes
7299                  generates these for unchecked variant types.  Revisit
7300                  if the compiler changes this practice.  */
7301               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7302               disp = 0;
7303               if (v_field_name != NULL 
7304                   && field_name_match (v_field_name, name))
7305                 t = ada_check_typedef (TYPE_FIELD_TYPE (field_type, j));
7306               else
7307                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7308                                                                  j),
7309                                                 name, 0, 1, &disp);
7310
7311               if (t != NULL)
7312                 {
7313                   if (dispp != NULL)
7314                     *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7315                   return t;
7316                 }
7317             }
7318         }
7319
7320     }
7321
7322 BadName:
7323   if (!noerr)
7324     {
7325       target_terminal_ours ();
7326       gdb_flush (gdb_stdout);
7327       if (name == NULL)
7328         {
7329           /* XXX: type_sprint */
7330           fprintf_unfiltered (gdb_stderr, _("Type "));
7331           type_print (type, "", gdb_stderr, -1);
7332           error (_(" has no component named <null>"));
7333         }
7334       else
7335         {
7336           /* XXX: type_sprint */
7337           fprintf_unfiltered (gdb_stderr, _("Type "));
7338           type_print (type, "", gdb_stderr, -1);
7339           error (_(" has no component named %s"), name);
7340         }
7341     }
7342
7343   return NULL;
7344 }
7345
7346 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7347    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7348    represents an unchecked union (that is, the variant part of a
7349    record that is named in an Unchecked_Union pragma).  */
7350
7351 static int
7352 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7353 {
7354   char *discrim_name = ada_variant_discrim_name (var_type);
7355
7356   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) 
7357           == NULL);
7358 }
7359
7360
7361 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7362    within a value of type OUTER_TYPE that is stored in GDB at
7363    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7364    numbering from 0) is applicable.  Returns -1 if none are.  */
7365
7366 int
7367 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7368                            const gdb_byte *outer_valaddr)
7369 {
7370   int others_clause;
7371   int i;
7372   char *discrim_name = ada_variant_discrim_name (var_type);
7373   struct value *outer;
7374   struct value *discrim;
7375   LONGEST discrim_val;
7376
7377   /* Using plain value_from_contents_and_address here causes problems
7378      because we will end up trying to resolve a type that is currently
7379      being constructed.  */
7380   outer = value_from_contents_and_address_unresolved (outer_type,
7381                                                       outer_valaddr, 0);
7382   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7383   if (discrim == NULL)
7384     return -1;
7385   discrim_val = value_as_long (discrim);
7386
7387   others_clause = -1;
7388   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7389     {
7390       if (ada_is_others_clause (var_type, i))
7391         others_clause = i;
7392       else if (ada_in_variant (discrim_val, var_type, i))
7393         return i;
7394     }
7395
7396   return others_clause;
7397 }
7398 \f
7399
7400
7401                                 /* Dynamic-Sized Records */
7402
7403 /* Strategy: The type ostensibly attached to a value with dynamic size
7404    (i.e., a size that is not statically recorded in the debugging
7405    data) does not accurately reflect the size or layout of the value.
7406    Our strategy is to convert these values to values with accurate,
7407    conventional types that are constructed on the fly.  */
7408
7409 /* There is a subtle and tricky problem here.  In general, we cannot
7410    determine the size of dynamic records without its data.  However,
7411    the 'struct value' data structure, which GDB uses to represent
7412    quantities in the inferior process (the target), requires the size
7413    of the type at the time of its allocation in order to reserve space
7414    for GDB's internal copy of the data.  That's why the
7415    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7416    rather than struct value*s.
7417
7418    However, GDB's internal history variables ($1, $2, etc.) are
7419    struct value*s containing internal copies of the data that are not, in
7420    general, the same as the data at their corresponding addresses in
7421    the target.  Fortunately, the types we give to these values are all
7422    conventional, fixed-size types (as per the strategy described
7423    above), so that we don't usually have to perform the
7424    'to_fixed_xxx_type' conversions to look at their values.
7425    Unfortunately, there is one exception: if one of the internal
7426    history variables is an array whose elements are unconstrained
7427    records, then we will need to create distinct fixed types for each
7428    element selected.  */
7429
7430 /* The upshot of all of this is that many routines take a (type, host
7431    address, target address) triple as arguments to represent a value.
7432    The host address, if non-null, is supposed to contain an internal
7433    copy of the relevant data; otherwise, the program is to consult the
7434    target at the target address.  */
7435
7436 /* Assuming that VAL0 represents a pointer value, the result of
7437    dereferencing it.  Differs from value_ind in its treatment of
7438    dynamic-sized types.  */
7439
7440 struct value *
7441 ada_value_ind (struct value *val0)
7442 {
7443   struct value *val = value_ind (val0);
7444
7445   if (ada_is_tagged_type (value_type (val), 0))
7446     val = ada_tag_value_at_base_address (val);
7447
7448   return ada_to_fixed_value (val);
7449 }
7450
7451 /* The value resulting from dereferencing any "reference to"
7452    qualifiers on VAL0.  */
7453
7454 static struct value *
7455 ada_coerce_ref (struct value *val0)
7456 {
7457   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7458     {
7459       struct value *val = val0;
7460
7461       val = coerce_ref (val);
7462
7463       if (ada_is_tagged_type (value_type (val), 0))
7464         val = ada_tag_value_at_base_address (val);
7465
7466       return ada_to_fixed_value (val);
7467     }
7468   else
7469     return val0;
7470 }
7471
7472 /* Return OFF rounded upward if necessary to a multiple of
7473    ALIGNMENT (a power of 2).  */
7474
7475 static unsigned int
7476 align_value (unsigned int off, unsigned int alignment)
7477 {
7478   return (off + alignment - 1) & ~(alignment - 1);
7479 }
7480
7481 /* Return the bit alignment required for field #F of template type TYPE.  */
7482
7483 static unsigned int
7484 field_alignment (struct type *type, int f)
7485 {
7486   const char *name = TYPE_FIELD_NAME (type, f);
7487   int len;
7488   int align_offset;
7489
7490   /* The field name should never be null, unless the debugging information
7491      is somehow malformed.  In this case, we assume the field does not
7492      require any alignment.  */
7493   if (name == NULL)
7494     return 1;
7495
7496   len = strlen (name);
7497
7498   if (!isdigit (name[len - 1]))
7499     return 1;
7500
7501   if (isdigit (name[len - 2]))
7502     align_offset = len - 2;
7503   else
7504     align_offset = len - 1;
7505
7506   if (align_offset < 7 || strncmp ("___XV", name + align_offset - 6, 5) != 0)
7507     return TARGET_CHAR_BIT;
7508
7509   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7510 }
7511
7512 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7513
7514 static struct symbol *
7515 ada_find_any_type_symbol (const char *name)
7516 {
7517   struct symbol *sym;
7518
7519   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7520   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7521     return sym;
7522
7523   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7524   return sym;
7525 }
7526
7527 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7528    solely for types defined by debug info, it will not search the GDB
7529    primitive types.  */
7530
7531 static struct type *
7532 ada_find_any_type (const char *name)
7533 {
7534   struct symbol *sym = ada_find_any_type_symbol (name);
7535
7536   if (sym != NULL)
7537     return SYMBOL_TYPE (sym);
7538
7539   return NULL;
7540 }
7541
7542 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7543    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7544    symbol, in which case it is returned.  Otherwise, this looks for
7545    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7546    Return symbol if found, and NULL otherwise.  */
7547
7548 struct symbol *
7549 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7550 {
7551   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7552   struct symbol *sym;
7553
7554   if (strstr (name, "___XR") != NULL)
7555      return name_sym;
7556
7557   sym = find_old_style_renaming_symbol (name, block);
7558
7559   if (sym != NULL)
7560     return sym;
7561
7562   /* Not right yet.  FIXME pnh 7/20/2007.  */
7563   sym = ada_find_any_type_symbol (name);
7564   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7565     return sym;
7566   else
7567     return NULL;
7568 }
7569
7570 static struct symbol *
7571 find_old_style_renaming_symbol (const char *name, const struct block *block)
7572 {
7573   const struct symbol *function_sym = block_linkage_function (block);
7574   char *rename;
7575
7576   if (function_sym != NULL)
7577     {
7578       /* If the symbol is defined inside a function, NAME is not fully
7579          qualified.  This means we need to prepend the function name
7580          as well as adding the ``___XR'' suffix to build the name of
7581          the associated renaming symbol.  */
7582       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
7583       /* Function names sometimes contain suffixes used
7584          for instance to qualify nested subprograms.  When building
7585          the XR type name, we need to make sure that this suffix is
7586          not included.  So do not include any suffix in the function
7587          name length below.  */
7588       int function_name_len = ada_name_prefix_len (function_name);
7589       const int rename_len = function_name_len + 2      /*  "__" */
7590         + strlen (name) + 6 /* "___XR\0" */ ;
7591
7592       /* Strip the suffix if necessary.  */
7593       ada_remove_trailing_digits (function_name, &function_name_len);
7594       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
7595       ada_remove_Xbn_suffix (function_name, &function_name_len);
7596
7597       /* Library-level functions are a special case, as GNAT adds
7598          a ``_ada_'' prefix to the function name to avoid namespace
7599          pollution.  However, the renaming symbols themselves do not
7600          have this prefix, so we need to skip this prefix if present.  */
7601       if (function_name_len > 5 /* "_ada_" */
7602           && strstr (function_name, "_ada_") == function_name)
7603         {
7604           function_name += 5;
7605           function_name_len -= 5;
7606         }
7607
7608       rename = (char *) alloca (rename_len * sizeof (char));
7609       strncpy (rename, function_name, function_name_len);
7610       xsnprintf (rename + function_name_len, rename_len - function_name_len,
7611                  "__%s___XR", name);
7612     }
7613   else
7614     {
7615       const int rename_len = strlen (name) + 6;
7616
7617       rename = (char *) alloca (rename_len * sizeof (char));
7618       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
7619     }
7620
7621   return ada_find_any_type_symbol (rename);
7622 }
7623
7624 /* Because of GNAT encoding conventions, several GDB symbols may match a
7625    given type name.  If the type denoted by TYPE0 is to be preferred to
7626    that of TYPE1 for purposes of type printing, return non-zero;
7627    otherwise return 0.  */
7628
7629 int
7630 ada_prefer_type (struct type *type0, struct type *type1)
7631 {
7632   if (type1 == NULL)
7633     return 1;
7634   else if (type0 == NULL)
7635     return 0;
7636   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
7637     return 1;
7638   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
7639     return 0;
7640   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7641     return 1;
7642   else if (ada_is_constrained_packed_array_type (type0))
7643     return 1;
7644   else if (ada_is_array_descriptor_type (type0)
7645            && !ada_is_array_descriptor_type (type1))
7646     return 1;
7647   else
7648     {
7649       const char *type0_name = type_name_no_tag (type0);
7650       const char *type1_name = type_name_no_tag (type1);
7651
7652       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7653           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7654         return 1;
7655     }
7656   return 0;
7657 }
7658
7659 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
7660    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
7661
7662 const char *
7663 ada_type_name (struct type *type)
7664 {
7665   if (type == NULL)
7666     return NULL;
7667   else if (TYPE_NAME (type) != NULL)
7668     return TYPE_NAME (type);
7669   else
7670     return TYPE_TAG_NAME (type);
7671 }
7672
7673 /* Search the list of "descriptive" types associated to TYPE for a type
7674    whose name is NAME.  */
7675
7676 static struct type *
7677 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7678 {
7679   struct type *result;
7680
7681   if (ada_ignore_descriptive_types_p)
7682     return NULL;
7683
7684   /* If there no descriptive-type info, then there is no parallel type
7685      to be found.  */
7686   if (!HAVE_GNAT_AUX_INFO (type))
7687     return NULL;
7688
7689   result = TYPE_DESCRIPTIVE_TYPE (type);
7690   while (result != NULL)
7691     {
7692       const char *result_name = ada_type_name (result);
7693
7694       if (result_name == NULL)
7695         {
7696           warning (_("unexpected null name on descriptive type"));
7697           return NULL;
7698         }
7699
7700       /* If the names match, stop.  */
7701       if (strcmp (result_name, name) == 0)
7702         break;
7703
7704       /* Otherwise, look at the next item on the list, if any.  */
7705       if (HAVE_GNAT_AUX_INFO (result))
7706         result = TYPE_DESCRIPTIVE_TYPE (result);
7707       else
7708         result = NULL;
7709     }
7710
7711   /* If we didn't find a match, see whether this is a packed array.  With
7712      older compilers, the descriptive type information is either absent or
7713      irrelevant when it comes to packed arrays so the above lookup fails.
7714      Fall back to using a parallel lookup by name in this case.  */
7715   if (result == NULL && ada_is_constrained_packed_array_type (type))
7716     return ada_find_any_type (name);
7717
7718   return result;
7719 }
7720
7721 /* Find a parallel type to TYPE with the specified NAME, using the
7722    descriptive type taken from the debugging information, if available,
7723    and otherwise using the (slower) name-based method.  */
7724
7725 static struct type *
7726 ada_find_parallel_type_with_name (struct type *type, const char *name)
7727 {
7728   struct type *result = NULL;
7729
7730   if (HAVE_GNAT_AUX_INFO (type))
7731     result = find_parallel_type_by_descriptive_type (type, name);
7732   else
7733     result = ada_find_any_type (name);
7734
7735   return result;
7736 }
7737
7738 /* Same as above, but specify the name of the parallel type by appending
7739    SUFFIX to the name of TYPE.  */
7740
7741 struct type *
7742 ada_find_parallel_type (struct type *type, const char *suffix)
7743 {
7744   char *name;
7745   const char *typename = ada_type_name (type);
7746   int len;
7747
7748   if (typename == NULL)
7749     return NULL;
7750
7751   len = strlen (typename);
7752
7753   name = (char *) alloca (len + strlen (suffix) + 1);
7754
7755   strcpy (name, typename);
7756   strcpy (name + len, suffix);
7757
7758   return ada_find_parallel_type_with_name (type, name);
7759 }
7760
7761 /* If TYPE is a variable-size record type, return the corresponding template
7762    type describing its fields.  Otherwise, return NULL.  */
7763
7764 static struct type *
7765 dynamic_template_type (struct type *type)
7766 {
7767   type = ada_check_typedef (type);
7768
7769   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
7770       || ada_type_name (type) == NULL)
7771     return NULL;
7772   else
7773     {
7774       int len = strlen (ada_type_name (type));
7775
7776       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7777         return type;
7778       else
7779         return ada_find_parallel_type (type, "___XVE");
7780     }
7781 }
7782
7783 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7784    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7785
7786 static int
7787 is_dynamic_field (struct type *templ_type, int field_num)
7788 {
7789   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7790
7791   return name != NULL
7792     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
7793     && strstr (name, "___XVL") != NULL;
7794 }
7795
7796 /* The index of the variant field of TYPE, or -1 if TYPE does not
7797    represent a variant record type.  */
7798
7799 static int
7800 variant_field_index (struct type *type)
7801 {
7802   int f;
7803
7804   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
7805     return -1;
7806
7807   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
7808     {
7809       if (ada_is_variant_part (type, f))
7810         return f;
7811     }
7812   return -1;
7813 }
7814
7815 /* A record type with no fields.  */
7816
7817 static struct type *
7818 empty_record (struct type *template)
7819 {
7820   struct type *type = alloc_type_copy (template);
7821
7822   TYPE_CODE (type) = TYPE_CODE_STRUCT;
7823   TYPE_NFIELDS (type) = 0;
7824   TYPE_FIELDS (type) = NULL;
7825   INIT_CPLUS_SPECIFIC (type);
7826   TYPE_NAME (type) = "<empty>";
7827   TYPE_TAG_NAME (type) = NULL;
7828   TYPE_LENGTH (type) = 0;
7829   return type;
7830 }
7831
7832 /* An ordinary record type (with fixed-length fields) that describes
7833    the value of type TYPE at VALADDR or ADDRESS (see comments at
7834    the beginning of this section) VAL according to GNAT conventions.
7835    DVAL0 should describe the (portion of a) record that contains any
7836    necessary discriminants.  It should be NULL if value_type (VAL) is
7837    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7838    variant field (unless unchecked) is replaced by a particular branch
7839    of the variant.
7840
7841    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7842    length are not statically known are discarded.  As a consequence,
7843    VALADDR, ADDRESS and DVAL0 are ignored.
7844
7845    NOTE: Limitations: For now, we assume that dynamic fields and
7846    variants occupy whole numbers of bytes.  However, they need not be
7847    byte-aligned.  */
7848
7849 struct type *
7850 ada_template_to_fixed_record_type_1 (struct type *type,
7851                                      const gdb_byte *valaddr,
7852                                      CORE_ADDR address, struct value *dval0,
7853                                      int keep_dynamic_fields)
7854 {
7855   struct value *mark = value_mark ();
7856   struct value *dval;
7857   struct type *rtype;
7858   int nfields, bit_len;
7859   int variant_field;
7860   long off;
7861   int fld_bit_len;
7862   int f;
7863
7864   /* Compute the number of fields in this record type that are going
7865      to be processed: unless keep_dynamic_fields, this includes only
7866      fields whose position and length are static will be processed.  */
7867   if (keep_dynamic_fields)
7868     nfields = TYPE_NFIELDS (type);
7869   else
7870     {
7871       nfields = 0;
7872       while (nfields < TYPE_NFIELDS (type)
7873              && !ada_is_variant_part (type, nfields)
7874              && !is_dynamic_field (type, nfields))
7875         nfields++;
7876     }
7877
7878   rtype = alloc_type_copy (type);
7879   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
7880   INIT_CPLUS_SPECIFIC (rtype);
7881   TYPE_NFIELDS (rtype) = nfields;
7882   TYPE_FIELDS (rtype) = (struct field *)
7883     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
7884   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
7885   TYPE_NAME (rtype) = ada_type_name (type);
7886   TYPE_TAG_NAME (rtype) = NULL;
7887   TYPE_FIXED_INSTANCE (rtype) = 1;
7888
7889   off = 0;
7890   bit_len = 0;
7891   variant_field = -1;
7892
7893   for (f = 0; f < nfields; f += 1)
7894     {
7895       off = align_value (off, field_alignment (type, f))
7896         + TYPE_FIELD_BITPOS (type, f);
7897       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
7898       TYPE_FIELD_BITSIZE (rtype, f) = 0;
7899
7900       if (ada_is_variant_part (type, f))
7901         {
7902           variant_field = f;
7903           fld_bit_len = 0;
7904         }
7905       else if (is_dynamic_field (type, f))
7906         {
7907           const gdb_byte *field_valaddr = valaddr;
7908           CORE_ADDR field_address = address;
7909           struct type *field_type =
7910             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
7911
7912           if (dval0 == NULL)
7913             {
7914               /* rtype's length is computed based on the run-time
7915                  value of discriminants.  If the discriminants are not
7916                  initialized, the type size may be completely bogus and
7917                  GDB may fail to allocate a value for it.  So check the
7918                  size first before creating the value.  */
7919               ada_ensure_varsize_limit (rtype);
7920               /* Using plain value_from_contents_and_address here
7921                  causes problems because we will end up trying to
7922                  resolve a type that is currently being
7923                  constructed.  */
7924               dval = value_from_contents_and_address_unresolved (rtype,
7925                                                                  valaddr,
7926                                                                  address);
7927               rtype = value_type (dval);
7928             }
7929           else
7930             dval = dval0;
7931
7932           /* If the type referenced by this field is an aligner type, we need
7933              to unwrap that aligner type, because its size might not be set.
7934              Keeping the aligner type would cause us to compute the wrong
7935              size for this field, impacting the offset of the all the fields
7936              that follow this one.  */
7937           if (ada_is_aligner_type (field_type))
7938             {
7939               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7940
7941               field_valaddr = cond_offset_host (field_valaddr, field_offset);
7942               field_address = cond_offset_target (field_address, field_offset);
7943               field_type = ada_aligned_type (field_type);
7944             }
7945
7946           field_valaddr = cond_offset_host (field_valaddr,
7947                                             off / TARGET_CHAR_BIT);
7948           field_address = cond_offset_target (field_address,
7949                                               off / TARGET_CHAR_BIT);
7950
7951           /* Get the fixed type of the field.  Note that, in this case,
7952              we do not want to get the real type out of the tag: if
7953              the current field is the parent part of a tagged record,
7954              we will get the tag of the object.  Clearly wrong: the real
7955              type of the parent is not the real type of the child.  We
7956              would end up in an infinite loop.  */
7957           field_type = ada_get_base_type (field_type);
7958           field_type = ada_to_fixed_type (field_type, field_valaddr,
7959                                           field_address, dval, 0);
7960           /* If the field size is already larger than the maximum
7961              object size, then the record itself will necessarily
7962              be larger than the maximum object size.  We need to make
7963              this check now, because the size might be so ridiculously
7964              large (due to an uninitialized variable in the inferior)
7965              that it would cause an overflow when adding it to the
7966              record size.  */
7967           ada_ensure_varsize_limit (field_type);
7968
7969           TYPE_FIELD_TYPE (rtype, f) = field_type;
7970           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7971           /* The multiplication can potentially overflow.  But because
7972              the field length has been size-checked just above, and
7973              assuming that the maximum size is a reasonable value,
7974              an overflow should not happen in practice.  So rather than
7975              adding overflow recovery code to this already complex code,
7976              we just assume that it's not going to happen.  */
7977           fld_bit_len =
7978             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
7979         }
7980       else
7981         {
7982           /* Note: If this field's type is a typedef, it is important
7983              to preserve the typedef layer.
7984
7985              Otherwise, we might be transforming a typedef to a fat
7986              pointer (encoding a pointer to an unconstrained array),
7987              into a basic fat pointer (encoding an unconstrained
7988              array).  As both types are implemented using the same
7989              structure, the typedef is the only clue which allows us
7990              to distinguish between the two options.  Stripping it
7991              would prevent us from printing this field appropriately.  */
7992           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
7993           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7994           if (TYPE_FIELD_BITSIZE (type, f) > 0)
7995             fld_bit_len =
7996               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7997           else
7998             {
7999               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8000
8001               /* We need to be careful of typedefs when computing
8002                  the length of our field.  If this is a typedef,
8003                  get the length of the target type, not the length
8004                  of the typedef.  */
8005               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8006                 field_type = ada_typedef_target_type (field_type);
8007
8008               fld_bit_len =
8009                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8010             }
8011         }
8012       if (off + fld_bit_len > bit_len)
8013         bit_len = off + fld_bit_len;
8014       off += fld_bit_len;
8015       TYPE_LENGTH (rtype) =
8016         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8017     }
8018
8019   /* We handle the variant part, if any, at the end because of certain
8020      odd cases in which it is re-ordered so as NOT to be the last field of
8021      the record.  This can happen in the presence of representation
8022      clauses.  */
8023   if (variant_field >= 0)
8024     {
8025       struct type *branch_type;
8026
8027       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8028
8029       if (dval0 == NULL)
8030         {
8031           /* Using plain value_from_contents_and_address here causes
8032              problems because we will end up trying to resolve a type
8033              that is currently being constructed.  */
8034           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8035                                                              address);
8036           rtype = value_type (dval);
8037         }
8038       else
8039         dval = dval0;
8040
8041       branch_type =
8042         to_fixed_variant_branch_type
8043         (TYPE_FIELD_TYPE (type, variant_field),
8044          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8045          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8046       if (branch_type == NULL)
8047         {
8048           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8049             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8050           TYPE_NFIELDS (rtype) -= 1;
8051         }
8052       else
8053         {
8054           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8055           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8056           fld_bit_len =
8057             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8058             TARGET_CHAR_BIT;
8059           if (off + fld_bit_len > bit_len)
8060             bit_len = off + fld_bit_len;
8061           TYPE_LENGTH (rtype) =
8062             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8063         }
8064     }
8065
8066   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8067      should contain the alignment of that record, which should be a strictly
8068      positive value.  If null or negative, then something is wrong, most
8069      probably in the debug info.  In that case, we don't round up the size
8070      of the resulting type.  If this record is not part of another structure,
8071      the current RTYPE length might be good enough for our purposes.  */
8072   if (TYPE_LENGTH (type) <= 0)
8073     {
8074       if (TYPE_NAME (rtype))
8075         warning (_("Invalid type size for `%s' detected: %d."),
8076                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8077       else
8078         warning (_("Invalid type size for <unnamed> detected: %d."),
8079                  TYPE_LENGTH (type));
8080     }
8081   else
8082     {
8083       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8084                                          TYPE_LENGTH (type));
8085     }
8086
8087   value_free_to_mark (mark);
8088   if (TYPE_LENGTH (rtype) > varsize_limit)
8089     error (_("record type with dynamic size is larger than varsize-limit"));
8090   return rtype;
8091 }
8092
8093 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8094    of 1.  */
8095
8096 static struct type *
8097 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8098                                CORE_ADDR address, struct value *dval0)
8099 {
8100   return ada_template_to_fixed_record_type_1 (type, valaddr,
8101                                               address, dval0, 1);
8102 }
8103
8104 /* An ordinary record type in which ___XVL-convention fields and
8105    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8106    static approximations, containing all possible fields.  Uses
8107    no runtime values.  Useless for use in values, but that's OK,
8108    since the results are used only for type determinations.   Works on both
8109    structs and unions.  Representation note: to save space, we memorize
8110    the result of this function in the TYPE_TARGET_TYPE of the
8111    template type.  */
8112
8113 static struct type *
8114 template_to_static_fixed_type (struct type *type0)
8115 {
8116   struct type *type;
8117   int nfields;
8118   int f;
8119
8120   if (TYPE_TARGET_TYPE (type0) != NULL)
8121     return TYPE_TARGET_TYPE (type0);
8122
8123   nfields = TYPE_NFIELDS (type0);
8124   type = type0;
8125
8126   for (f = 0; f < nfields; f += 1)
8127     {
8128       struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type0, f));
8129       struct type *new_type;
8130
8131       if (is_dynamic_field (type0, f))
8132         new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8133       else
8134         new_type = static_unwrap_type (field_type);
8135       if (type == type0 && new_type != field_type)
8136         {
8137           TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8138           TYPE_CODE (type) = TYPE_CODE (type0);
8139           INIT_CPLUS_SPECIFIC (type);
8140           TYPE_NFIELDS (type) = nfields;
8141           TYPE_FIELDS (type) = (struct field *)
8142             TYPE_ALLOC (type, nfields * sizeof (struct field));
8143           memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8144                   sizeof (struct field) * nfields);
8145           TYPE_NAME (type) = ada_type_name (type0);
8146           TYPE_TAG_NAME (type) = NULL;
8147           TYPE_FIXED_INSTANCE (type) = 1;
8148           TYPE_LENGTH (type) = 0;
8149         }
8150       TYPE_FIELD_TYPE (type, f) = new_type;
8151       TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8152     }
8153   return type;
8154 }
8155
8156 /* Given an object of type TYPE whose contents are at VALADDR and
8157    whose address in memory is ADDRESS, returns a revision of TYPE,
8158    which should be a non-dynamic-sized record, in which the variant
8159    part, if any, is replaced with the appropriate branch.  Looks
8160    for discriminant values in DVAL0, which can be NULL if the record
8161    contains the necessary discriminant values.  */
8162
8163 static struct type *
8164 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8165                                    CORE_ADDR address, struct value *dval0)
8166 {
8167   struct value *mark = value_mark ();
8168   struct value *dval;
8169   struct type *rtype;
8170   struct type *branch_type;
8171   int nfields = TYPE_NFIELDS (type);
8172   int variant_field = variant_field_index (type);
8173
8174   if (variant_field == -1)
8175     return type;
8176
8177   if (dval0 == NULL)
8178     {
8179       dval = value_from_contents_and_address (type, valaddr, address);
8180       type = value_type (dval);
8181     }
8182   else
8183     dval = dval0;
8184
8185   rtype = alloc_type_copy (type);
8186   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8187   INIT_CPLUS_SPECIFIC (rtype);
8188   TYPE_NFIELDS (rtype) = nfields;
8189   TYPE_FIELDS (rtype) =
8190     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8191   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8192           sizeof (struct field) * nfields);
8193   TYPE_NAME (rtype) = ada_type_name (type);
8194   TYPE_TAG_NAME (rtype) = NULL;
8195   TYPE_FIXED_INSTANCE (rtype) = 1;
8196   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8197
8198   branch_type = to_fixed_variant_branch_type
8199     (TYPE_FIELD_TYPE (type, variant_field),
8200      cond_offset_host (valaddr,
8201                        TYPE_FIELD_BITPOS (type, variant_field)
8202                        / TARGET_CHAR_BIT),
8203      cond_offset_target (address,
8204                          TYPE_FIELD_BITPOS (type, variant_field)
8205                          / TARGET_CHAR_BIT), dval);
8206   if (branch_type == NULL)
8207     {
8208       int f;
8209
8210       for (f = variant_field + 1; f < nfields; f += 1)
8211         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8212       TYPE_NFIELDS (rtype) -= 1;
8213     }
8214   else
8215     {
8216       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8217       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8218       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8219       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8220     }
8221   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8222
8223   value_free_to_mark (mark);
8224   return rtype;
8225 }
8226
8227 /* An ordinary record type (with fixed-length fields) that describes
8228    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8229    beginning of this section].   Any necessary discriminants' values
8230    should be in DVAL, a record value; it may be NULL if the object
8231    at ADDR itself contains any necessary discriminant values.
8232    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8233    values from the record are needed.  Except in the case that DVAL,
8234    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8235    unchecked) is replaced by a particular branch of the variant.
8236
8237    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8238    is questionable and may be removed.  It can arise during the
8239    processing of an unconstrained-array-of-record type where all the
8240    variant branches have exactly the same size.  This is because in
8241    such cases, the compiler does not bother to use the XVS convention
8242    when encoding the record.  I am currently dubious of this
8243    shortcut and suspect the compiler should be altered.  FIXME.  */
8244
8245 static struct type *
8246 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8247                       CORE_ADDR address, struct value *dval)
8248 {
8249   struct type *templ_type;
8250
8251   if (TYPE_FIXED_INSTANCE (type0))
8252     return type0;
8253
8254   templ_type = dynamic_template_type (type0);
8255
8256   if (templ_type != NULL)
8257     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8258   else if (variant_field_index (type0) >= 0)
8259     {
8260       if (dval == NULL && valaddr == NULL && address == 0)
8261         return type0;
8262       return to_record_with_fixed_variant_part (type0, valaddr, address,
8263                                                 dval);
8264     }
8265   else
8266     {
8267       TYPE_FIXED_INSTANCE (type0) = 1;
8268       return type0;
8269     }
8270
8271 }
8272
8273 /* An ordinary record type (with fixed-length fields) that describes
8274    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8275    union type.  Any necessary discriminants' values should be in DVAL,
8276    a record value.  That is, this routine selects the appropriate
8277    branch of the union at ADDR according to the discriminant value
8278    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8279    it represents a variant subject to a pragma Unchecked_Union.  */
8280
8281 static struct type *
8282 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8283                               CORE_ADDR address, struct value *dval)
8284 {
8285   int which;
8286   struct type *templ_type;
8287   struct type *var_type;
8288
8289   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8290     var_type = TYPE_TARGET_TYPE (var_type0);
8291   else
8292     var_type = var_type0;
8293
8294   templ_type = ada_find_parallel_type (var_type, "___XVU");
8295
8296   if (templ_type != NULL)
8297     var_type = templ_type;
8298
8299   if (is_unchecked_variant (var_type, value_type (dval)))
8300       return var_type0;
8301   which =
8302     ada_which_variant_applies (var_type,
8303                                value_type (dval), value_contents (dval));
8304
8305   if (which < 0)
8306     return empty_record (var_type);
8307   else if (is_dynamic_field (var_type, which))
8308     return to_fixed_record_type
8309       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8310        valaddr, address, dval);
8311   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8312     return
8313       to_fixed_record_type
8314       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8315   else
8316     return TYPE_FIELD_TYPE (var_type, which);
8317 }
8318
8319 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8320    ENCODING_TYPE, a type following the GNAT conventions for discrete
8321    type encodings, only carries redundant information.  */
8322
8323 static int
8324 ada_is_redundant_range_encoding (struct type *range_type,
8325                                  struct type *encoding_type)
8326 {
8327   struct type *fixed_range_type;
8328   char *bounds_str;
8329   int n;
8330   LONGEST lo, hi;
8331
8332   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8333
8334   if (TYPE_CODE (get_base_type (range_type))
8335       != TYPE_CODE (get_base_type (encoding_type)))
8336     {
8337       /* The compiler probably used a simple base type to describe
8338          the range type instead of the range's actual base type,
8339          expecting us to get the real base type from the encoding
8340          anyway.  In this situation, the encoding cannot be ignored
8341          as redundant.  */
8342       return 0;
8343     }
8344
8345   if (is_dynamic_type (range_type))
8346     return 0;
8347
8348   if (TYPE_NAME (encoding_type) == NULL)
8349     return 0;
8350
8351   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8352   if (bounds_str == NULL)
8353     return 0;
8354
8355   n = 8; /* Skip "___XDLU_".  */
8356   if (!ada_scan_number (bounds_str, n, &lo, &n))
8357     return 0;
8358   if (TYPE_LOW_BOUND (range_type) != lo)
8359     return 0;
8360
8361   n += 2; /* Skip the "__" separator between the two bounds.  */
8362   if (!ada_scan_number (bounds_str, n, &hi, &n))
8363     return 0;
8364   if (TYPE_HIGH_BOUND (range_type) != hi)
8365     return 0;
8366
8367   return 1;
8368 }
8369
8370 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8371    a type following the GNAT encoding for describing array type
8372    indices, only carries redundant information.  */
8373
8374 static int
8375 ada_is_redundant_index_type_desc (struct type *array_type,
8376                                   struct type *desc_type)
8377 {
8378   struct type *this_layer = check_typedef (array_type);
8379   int i;
8380
8381   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8382     {
8383       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8384                                             TYPE_FIELD_TYPE (desc_type, i)))
8385         return 0;
8386       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8387     }
8388
8389   return 1;
8390 }
8391
8392 /* Assuming that TYPE0 is an array type describing the type of a value
8393    at ADDR, and that DVAL describes a record containing any
8394    discriminants used in TYPE0, returns a type for the value that
8395    contains no dynamic components (that is, no components whose sizes
8396    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8397    true, gives an error message if the resulting type's size is over
8398    varsize_limit.  */
8399
8400 static struct type *
8401 to_fixed_array_type (struct type *type0, struct value *dval,
8402                      int ignore_too_big)
8403 {
8404   struct type *index_type_desc;
8405   struct type *result;
8406   int constrained_packed_array_p;
8407
8408   type0 = ada_check_typedef (type0);
8409   if (TYPE_FIXED_INSTANCE (type0))
8410     return type0;
8411
8412   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8413   if (constrained_packed_array_p)
8414     type0 = decode_constrained_packed_array_type (type0);
8415
8416   index_type_desc = ada_find_parallel_type (type0, "___XA");
8417   ada_fixup_array_indexes_type (index_type_desc);
8418   if (index_type_desc != NULL
8419       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8420     {
8421       /* Ignore this ___XA parallel type, as it does not bring any
8422          useful information.  This allows us to avoid creating fixed
8423          versions of the array's index types, which would be identical
8424          to the original ones.  This, in turn, can also help avoid
8425          the creation of fixed versions of the array itself.  */
8426       index_type_desc = NULL;
8427     }
8428
8429   if (index_type_desc == NULL)
8430     {
8431       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8432
8433       /* NOTE: elt_type---the fixed version of elt_type0---should never
8434          depend on the contents of the array in properly constructed
8435          debugging data.  */
8436       /* Create a fixed version of the array element type.
8437          We're not providing the address of an element here,
8438          and thus the actual object value cannot be inspected to do
8439          the conversion.  This should not be a problem, since arrays of
8440          unconstrained objects are not allowed.  In particular, all
8441          the elements of an array of a tagged type should all be of
8442          the same type specified in the debugging info.  No need to
8443          consult the object tag.  */
8444       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8445
8446       /* Make sure we always create a new array type when dealing with
8447          packed array types, since we're going to fix-up the array
8448          type length and element bitsize a little further down.  */
8449       if (elt_type0 == elt_type && !constrained_packed_array_p)
8450         result = type0;
8451       else
8452         result = create_array_type (alloc_type_copy (type0),
8453                                     elt_type, TYPE_INDEX_TYPE (type0));
8454     }
8455   else
8456     {
8457       int i;
8458       struct type *elt_type0;
8459
8460       elt_type0 = type0;
8461       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8462         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8463
8464       /* NOTE: result---the fixed version of elt_type0---should never
8465          depend on the contents of the array in properly constructed
8466          debugging data.  */
8467       /* Create a fixed version of the array element type.
8468          We're not providing the address of an element here,
8469          and thus the actual object value cannot be inspected to do
8470          the conversion.  This should not be a problem, since arrays of
8471          unconstrained objects are not allowed.  In particular, all
8472          the elements of an array of a tagged type should all be of
8473          the same type specified in the debugging info.  No need to
8474          consult the object tag.  */
8475       result =
8476         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8477
8478       elt_type0 = type0;
8479       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8480         {
8481           struct type *range_type =
8482             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8483
8484           result = create_array_type (alloc_type_copy (elt_type0),
8485                                       result, range_type);
8486           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8487         }
8488       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8489         error (_("array type with dynamic size is larger than varsize-limit"));
8490     }
8491
8492   /* We want to preserve the type name.  This can be useful when
8493      trying to get the type name of a value that has already been
8494      printed (for instance, if the user did "print VAR; whatis $".  */
8495   TYPE_NAME (result) = TYPE_NAME (type0);
8496
8497   if (constrained_packed_array_p)
8498     {
8499       /* So far, the resulting type has been created as if the original
8500          type was a regular (non-packed) array type.  As a result, the
8501          bitsize of the array elements needs to be set again, and the array
8502          length needs to be recomputed based on that bitsize.  */
8503       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8504       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8505
8506       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8507       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8508       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8509         TYPE_LENGTH (result)++;
8510     }
8511
8512   TYPE_FIXED_INSTANCE (result) = 1;
8513   return result;
8514 }
8515
8516
8517 /* A standard type (containing no dynamically sized components)
8518    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8519    DVAL describes a record containing any discriminants used in TYPE0,
8520    and may be NULL if there are none, or if the object of type TYPE at
8521    ADDRESS or in VALADDR contains these discriminants.
8522    
8523    If CHECK_TAG is not null, in the case of tagged types, this function
8524    attempts to locate the object's tag and use it to compute the actual
8525    type.  However, when ADDRESS is null, we cannot use it to determine the
8526    location of the tag, and therefore compute the tagged type's actual type.
8527    So we return the tagged type without consulting the tag.  */
8528    
8529 static struct type *
8530 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8531                    CORE_ADDR address, struct value *dval, int check_tag)
8532 {
8533   type = ada_check_typedef (type);
8534   switch (TYPE_CODE (type))
8535     {
8536     default:
8537       return type;
8538     case TYPE_CODE_STRUCT:
8539       {
8540         struct type *static_type = to_static_fixed_type (type);
8541         struct type *fixed_record_type =
8542           to_fixed_record_type (type, valaddr, address, NULL);
8543
8544         /* If STATIC_TYPE is a tagged type and we know the object's address,
8545            then we can determine its tag, and compute the object's actual
8546            type from there.  Note that we have to use the fixed record
8547            type (the parent part of the record may have dynamic fields
8548            and the way the location of _tag is expressed may depend on
8549            them).  */
8550
8551         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8552           {
8553             struct value *tag =
8554               value_tag_from_contents_and_address
8555               (fixed_record_type,
8556                valaddr,
8557                address);
8558             struct type *real_type = type_from_tag (tag);
8559             struct value *obj =
8560               value_from_contents_and_address (fixed_record_type,
8561                                                valaddr,
8562                                                address);
8563             fixed_record_type = value_type (obj);
8564             if (real_type != NULL)
8565               return to_fixed_record_type
8566                 (real_type, NULL,
8567                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8568           }
8569
8570         /* Check to see if there is a parallel ___XVZ variable.
8571            If there is, then it provides the actual size of our type.  */
8572         else if (ada_type_name (fixed_record_type) != NULL)
8573           {
8574             const char *name = ada_type_name (fixed_record_type);
8575             char *xvz_name = alloca (strlen (name) + 7 /* "___XVZ\0" */);
8576             int xvz_found = 0;
8577             LONGEST size;
8578
8579             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8580             size = get_int_var_value (xvz_name, &xvz_found);
8581             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8582               {
8583                 fixed_record_type = copy_type (fixed_record_type);
8584                 TYPE_LENGTH (fixed_record_type) = size;
8585
8586                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8587                    observed this when the debugging info is STABS, and
8588                    apparently it is something that is hard to fix.
8589
8590                    In practice, we don't need the actual type definition
8591                    at all, because the presence of the XVZ variable allows us
8592                    to assume that there must be a XVS type as well, which we
8593                    should be able to use later, when we need the actual type
8594                    definition.
8595
8596                    In the meantime, pretend that the "fixed" type we are
8597                    returning is NOT a stub, because this can cause trouble
8598                    when using this type to create new types targeting it.
8599                    Indeed, the associated creation routines often check
8600                    whether the target type is a stub and will try to replace
8601                    it, thus using a type with the wrong size.  This, in turn,
8602                    might cause the new type to have the wrong size too.
8603                    Consider the case of an array, for instance, where the size
8604                    of the array is computed from the number of elements in
8605                    our array multiplied by the size of its element.  */
8606                 TYPE_STUB (fixed_record_type) = 0;
8607               }
8608           }
8609         return fixed_record_type;
8610       }
8611     case TYPE_CODE_ARRAY:
8612       return to_fixed_array_type (type, dval, 1);
8613     case TYPE_CODE_UNION:
8614       if (dval == NULL)
8615         return type;
8616       else
8617         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8618     }
8619 }
8620
8621 /* The same as ada_to_fixed_type_1, except that it preserves the type
8622    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8623
8624    The typedef layer needs be preserved in order to differentiate between
8625    arrays and array pointers when both types are implemented using the same
8626    fat pointer.  In the array pointer case, the pointer is encoded as
8627    a typedef of the pointer type.  For instance, considering:
8628
8629           type String_Access is access String;
8630           S1 : String_Access := null;
8631
8632    To the debugger, S1 is defined as a typedef of type String.  But
8633    to the user, it is a pointer.  So if the user tries to print S1,
8634    we should not dereference the array, but print the array address
8635    instead.
8636
8637    If we didn't preserve the typedef layer, we would lose the fact that
8638    the type is to be presented as a pointer (needs de-reference before
8639    being printed).  And we would also use the source-level type name.  */
8640
8641 struct type *
8642 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8643                    CORE_ADDR address, struct value *dval, int check_tag)
8644
8645 {
8646   struct type *fixed_type =
8647     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8648
8649   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8650       then preserve the typedef layer.
8651
8652       Implementation note: We can only check the main-type portion of
8653       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8654       from TYPE now returns a type that has the same instance flags
8655       as TYPE.  For instance, if TYPE is a "typedef const", and its
8656       target type is a "struct", then the typedef elimination will return
8657       a "const" version of the target type.  See check_typedef for more
8658       details about how the typedef layer elimination is done.
8659
8660       brobecker/2010-11-19: It seems to me that the only case where it is
8661       useful to preserve the typedef layer is when dealing with fat pointers.
8662       Perhaps, we could add a check for that and preserve the typedef layer
8663       only in that situation.  But this seems unecessary so far, probably
8664       because we call check_typedef/ada_check_typedef pretty much everywhere.
8665       */
8666   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
8667       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8668           == TYPE_MAIN_TYPE (fixed_type)))
8669     return type;
8670
8671   return fixed_type;
8672 }
8673
8674 /* A standard (static-sized) type corresponding as well as possible to
8675    TYPE0, but based on no runtime data.  */
8676
8677 static struct type *
8678 to_static_fixed_type (struct type *type0)
8679 {
8680   struct type *type;
8681
8682   if (type0 == NULL)
8683     return NULL;
8684
8685   if (TYPE_FIXED_INSTANCE (type0))
8686     return type0;
8687
8688   type0 = ada_check_typedef (type0);
8689
8690   switch (TYPE_CODE (type0))
8691     {
8692     default:
8693       return type0;
8694     case TYPE_CODE_STRUCT:
8695       type = dynamic_template_type (type0);
8696       if (type != NULL)
8697         return template_to_static_fixed_type (type);
8698       else
8699         return template_to_static_fixed_type (type0);
8700     case TYPE_CODE_UNION:
8701       type = ada_find_parallel_type (type0, "___XVU");
8702       if (type != NULL)
8703         return template_to_static_fixed_type (type);
8704       else
8705         return template_to_static_fixed_type (type0);
8706     }
8707 }
8708
8709 /* A static approximation of TYPE with all type wrappers removed.  */
8710
8711 static struct type *
8712 static_unwrap_type (struct type *type)
8713 {
8714   if (ada_is_aligner_type (type))
8715     {
8716       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8717       if (ada_type_name (type1) == NULL)
8718         TYPE_NAME (type1) = ada_type_name (type);
8719
8720       return static_unwrap_type (type1);
8721     }
8722   else
8723     {
8724       struct type *raw_real_type = ada_get_base_type (type);
8725
8726       if (raw_real_type == type)
8727         return type;
8728       else
8729         return to_static_fixed_type (raw_real_type);
8730     }
8731 }
8732
8733 /* In some cases, incomplete and private types require
8734    cross-references that are not resolved as records (for example,
8735       type Foo;
8736       type FooP is access Foo;
8737       V: FooP;
8738       type Foo is array ...;
8739    ).  In these cases, since there is no mechanism for producing
8740    cross-references to such types, we instead substitute for FooP a
8741    stub enumeration type that is nowhere resolved, and whose tag is
8742    the name of the actual type.  Call these types "non-record stubs".  */
8743
8744 /* A type equivalent to TYPE that is not a non-record stub, if one
8745    exists, otherwise TYPE.  */
8746
8747 struct type *
8748 ada_check_typedef (struct type *type)
8749 {
8750   if (type == NULL)
8751     return NULL;
8752
8753   /* If our type is a typedef type of a fat pointer, then we're done.
8754      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8755      what allows us to distinguish between fat pointers that represent
8756      array types, and fat pointers that represent array access types
8757      (in both cases, the compiler implements them as fat pointers).  */
8758   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
8759       && is_thick_pntr (ada_typedef_target_type (type)))
8760     return type;
8761
8762   CHECK_TYPEDEF (type);
8763   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
8764       || !TYPE_STUB (type)
8765       || TYPE_TAG_NAME (type) == NULL)
8766     return type;
8767   else
8768     {
8769       const char *name = TYPE_TAG_NAME (type);
8770       struct type *type1 = ada_find_any_type (name);
8771
8772       if (type1 == NULL)
8773         return type;
8774
8775       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8776          stubs pointing to arrays, as we don't create symbols for array
8777          types, only for the typedef-to-array types).  If that's the case,
8778          strip the typedef layer.  */
8779       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
8780         type1 = ada_check_typedef (type1);
8781
8782       return type1;
8783     }
8784 }
8785
8786 /* A value representing the data at VALADDR/ADDRESS as described by
8787    type TYPE0, but with a standard (static-sized) type that correctly
8788    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8789    type, then return VAL0 [this feature is simply to avoid redundant
8790    creation of struct values].  */
8791
8792 static struct value *
8793 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8794                            struct value *val0)
8795 {
8796   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8797
8798   if (type == type0 && val0 != NULL)
8799     return val0;
8800   else
8801     return value_from_contents_and_address (type, 0, address);
8802 }
8803
8804 /* A value representing VAL, but with a standard (static-sized) type
8805    that correctly describes it.  Does not necessarily create a new
8806    value.  */
8807
8808 struct value *
8809 ada_to_fixed_value (struct value *val)
8810 {
8811   val = unwrap_value (val);
8812   val = ada_to_fixed_value_create (value_type (val),
8813                                       value_address (val),
8814                                       val);
8815   return val;
8816 }
8817 \f
8818
8819 /* Attributes */
8820
8821 /* Table mapping attribute numbers to names.
8822    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
8823
8824 static const char *attribute_names[] = {
8825   "<?>",
8826
8827   "first",
8828   "last",
8829   "length",
8830   "image",
8831   "max",
8832   "min",
8833   "modulus",
8834   "pos",
8835   "size",
8836   "tag",
8837   "val",
8838   0
8839 };
8840
8841 const char *
8842 ada_attribute_name (enum exp_opcode n)
8843 {
8844   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8845     return attribute_names[n - OP_ATR_FIRST + 1];
8846   else
8847     return attribute_names[0];
8848 }
8849
8850 /* Evaluate the 'POS attribute applied to ARG.  */
8851
8852 static LONGEST
8853 pos_atr (struct value *arg)
8854 {
8855   struct value *val = coerce_ref (arg);
8856   struct type *type = value_type (val);
8857
8858   if (!discrete_type_p (type))
8859     error (_("'POS only defined on discrete types"));
8860
8861   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8862     {
8863       int i;
8864       LONGEST v = value_as_long (val);
8865
8866       for (i = 0; i < TYPE_NFIELDS (type); i += 1)
8867         {
8868           if (v == TYPE_FIELD_ENUMVAL (type, i))
8869             return i;
8870         }
8871       error (_("enumeration value is invalid: can't find 'POS"));
8872     }
8873   else
8874     return value_as_long (val);
8875 }
8876
8877 static struct value *
8878 value_pos_atr (struct type *type, struct value *arg)
8879 {
8880   return value_from_longest (type, pos_atr (arg));
8881 }
8882
8883 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
8884
8885 static struct value *
8886 value_val_atr (struct type *type, struct value *arg)
8887 {
8888   if (!discrete_type_p (type))
8889     error (_("'VAL only defined on discrete types"));
8890   if (!integer_type_p (value_type (arg)))
8891     error (_("'VAL requires integral argument"));
8892
8893   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8894     {
8895       long pos = value_as_long (arg);
8896
8897       if (pos < 0 || pos >= TYPE_NFIELDS (type))
8898         error (_("argument to 'VAL out of range"));
8899       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
8900     }
8901   else
8902     return value_from_longest (type, value_as_long (arg));
8903 }
8904 \f
8905
8906                                 /* Evaluation */
8907
8908 /* True if TYPE appears to be an Ada character type.
8909    [At the moment, this is true only for Character and Wide_Character;
8910    It is a heuristic test that could stand improvement].  */
8911
8912 int
8913 ada_is_character_type (struct type *type)
8914 {
8915   const char *name;
8916
8917   /* If the type code says it's a character, then assume it really is,
8918      and don't check any further.  */
8919   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
8920     return 1;
8921   
8922   /* Otherwise, assume it's a character type iff it is a discrete type
8923      with a known character type name.  */
8924   name = ada_type_name (type);
8925   return (name != NULL
8926           && (TYPE_CODE (type) == TYPE_CODE_INT
8927               || TYPE_CODE (type) == TYPE_CODE_RANGE)
8928           && (strcmp (name, "character") == 0
8929               || strcmp (name, "wide_character") == 0
8930               || strcmp (name, "wide_wide_character") == 0
8931               || strcmp (name, "unsigned char") == 0));
8932 }
8933
8934 /* True if TYPE appears to be an Ada string type.  */
8935
8936 int
8937 ada_is_string_type (struct type *type)
8938 {
8939   type = ada_check_typedef (type);
8940   if (type != NULL
8941       && TYPE_CODE (type) != TYPE_CODE_PTR
8942       && (ada_is_simple_array_type (type)
8943           || ada_is_array_descriptor_type (type))
8944       && ada_array_arity (type) == 1)
8945     {
8946       struct type *elttype = ada_array_element_type (type, 1);
8947
8948       return ada_is_character_type (elttype);
8949     }
8950   else
8951     return 0;
8952 }
8953
8954 /* The compiler sometimes provides a parallel XVS type for a given
8955    PAD type.  Normally, it is safe to follow the PAD type directly,
8956    but older versions of the compiler have a bug that causes the offset
8957    of its "F" field to be wrong.  Following that field in that case
8958    would lead to incorrect results, but this can be worked around
8959    by ignoring the PAD type and using the associated XVS type instead.
8960
8961    Set to True if the debugger should trust the contents of PAD types.
8962    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
8963 static int trust_pad_over_xvs = 1;
8964
8965 /* True if TYPE is a struct type introduced by the compiler to force the
8966    alignment of a value.  Such types have a single field with a
8967    distinctive name.  */
8968
8969 int
8970 ada_is_aligner_type (struct type *type)
8971 {
8972   type = ada_check_typedef (type);
8973
8974   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
8975     return 0;
8976
8977   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
8978           && TYPE_NFIELDS (type) == 1
8979           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
8980 }
8981
8982 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8983    the parallel type.  */
8984
8985 struct type *
8986 ada_get_base_type (struct type *raw_type)
8987 {
8988   struct type *real_type_namer;
8989   struct type *raw_real_type;
8990
8991   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
8992     return raw_type;
8993
8994   if (ada_is_aligner_type (raw_type))
8995     /* The encoding specifies that we should always use the aligner type.
8996        So, even if this aligner type has an associated XVS type, we should
8997        simply ignore it.
8998
8999        According to the compiler gurus, an XVS type parallel to an aligner
9000        type may exist because of a stabs limitation.  In stabs, aligner
9001        types are empty because the field has a variable-sized type, and
9002        thus cannot actually be used as an aligner type.  As a result,
9003        we need the associated parallel XVS type to decode the type.
9004        Since the policy in the compiler is to not change the internal
9005        representation based on the debugging info format, we sometimes
9006        end up having a redundant XVS type parallel to the aligner type.  */
9007     return raw_type;
9008
9009   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9010   if (real_type_namer == NULL
9011       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9012       || TYPE_NFIELDS (real_type_namer) != 1)
9013     return raw_type;
9014
9015   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9016     {
9017       /* This is an older encoding form where the base type needs to be
9018          looked up by name.  We prefer the newer enconding because it is
9019          more efficient.  */
9020       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9021       if (raw_real_type == NULL)
9022         return raw_type;
9023       else
9024         return raw_real_type;
9025     }
9026
9027   /* The field in our XVS type is a reference to the base type.  */
9028   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9029 }
9030
9031 /* The type of value designated by TYPE, with all aligners removed.  */
9032
9033 struct type *
9034 ada_aligned_type (struct type *type)
9035 {
9036   if (ada_is_aligner_type (type))
9037     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9038   else
9039     return ada_get_base_type (type);
9040 }
9041
9042
9043 /* The address of the aligned value in an object at address VALADDR
9044    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9045
9046 const gdb_byte *
9047 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9048 {
9049   if (ada_is_aligner_type (type))
9050     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9051                                    valaddr +
9052                                    TYPE_FIELD_BITPOS (type,
9053                                                       0) / TARGET_CHAR_BIT);
9054   else
9055     return valaddr;
9056 }
9057
9058
9059
9060 /* The printed representation of an enumeration literal with encoded
9061    name NAME.  The value is good to the next call of ada_enum_name.  */
9062 const char *
9063 ada_enum_name (const char *name)
9064 {
9065   static char *result;
9066   static size_t result_len = 0;
9067   char *tmp;
9068
9069   /* First, unqualify the enumeration name:
9070      1. Search for the last '.' character.  If we find one, then skip
9071      all the preceding characters, the unqualified name starts
9072      right after that dot.
9073      2. Otherwise, we may be debugging on a target where the compiler
9074      translates dots into "__".  Search forward for double underscores,
9075      but stop searching when we hit an overloading suffix, which is
9076      of the form "__" followed by digits.  */
9077
9078   tmp = strrchr (name, '.');
9079   if (tmp != NULL)
9080     name = tmp + 1;
9081   else
9082     {
9083       while ((tmp = strstr (name, "__")) != NULL)
9084         {
9085           if (isdigit (tmp[2]))
9086             break;
9087           else
9088             name = tmp + 2;
9089         }
9090     }
9091
9092   if (name[0] == 'Q')
9093     {
9094       int v;
9095
9096       if (name[1] == 'U' || name[1] == 'W')
9097         {
9098           if (sscanf (name + 2, "%x", &v) != 1)
9099             return name;
9100         }
9101       else
9102         return name;
9103
9104       GROW_VECT (result, result_len, 16);
9105       if (isascii (v) && isprint (v))
9106         xsnprintf (result, result_len, "'%c'", v);
9107       else if (name[1] == 'U')
9108         xsnprintf (result, result_len, "[\"%02x\"]", v);
9109       else
9110         xsnprintf (result, result_len, "[\"%04x\"]", v);
9111
9112       return result;
9113     }
9114   else
9115     {
9116       tmp = strstr (name, "__");
9117       if (tmp == NULL)
9118         tmp = strstr (name, "$");
9119       if (tmp != NULL)
9120         {
9121           GROW_VECT (result, result_len, tmp - name + 1);
9122           strncpy (result, name, tmp - name);
9123           result[tmp - name] = '\0';
9124           return result;
9125         }
9126
9127       return name;
9128     }
9129 }
9130
9131 /* Evaluate the subexpression of EXP starting at *POS as for
9132    evaluate_type, updating *POS to point just past the evaluated
9133    expression.  */
9134
9135 static struct value *
9136 evaluate_subexp_type (struct expression *exp, int *pos)
9137 {
9138   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9139 }
9140
9141 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9142    value it wraps.  */
9143
9144 static struct value *
9145 unwrap_value (struct value *val)
9146 {
9147   struct type *type = ada_check_typedef (value_type (val));
9148
9149   if (ada_is_aligner_type (type))
9150     {
9151       struct value *v = ada_value_struct_elt (val, "F", 0);
9152       struct type *val_type = ada_check_typedef (value_type (v));
9153
9154       if (ada_type_name (val_type) == NULL)
9155         TYPE_NAME (val_type) = ada_type_name (type);
9156
9157       return unwrap_value (v);
9158     }
9159   else
9160     {
9161       struct type *raw_real_type =
9162         ada_check_typedef (ada_get_base_type (type));
9163
9164       /* If there is no parallel XVS or XVE type, then the value is
9165          already unwrapped.  Return it without further modification.  */
9166       if ((type == raw_real_type)
9167           && ada_find_parallel_type (type, "___XVE") == NULL)
9168         return val;
9169
9170       return
9171         coerce_unspec_val_to_type
9172         (val, ada_to_fixed_type (raw_real_type, 0,
9173                                  value_address (val),
9174                                  NULL, 1));
9175     }
9176 }
9177
9178 static struct value *
9179 cast_to_fixed (struct type *type, struct value *arg)
9180 {
9181   LONGEST val;
9182
9183   if (type == value_type (arg))
9184     return arg;
9185   else if (ada_is_fixed_point_type (value_type (arg)))
9186     val = ada_float_to_fixed (type,
9187                               ada_fixed_to_float (value_type (arg),
9188                                                   value_as_long (arg)));
9189   else
9190     {
9191       DOUBLEST argd = value_as_double (arg);
9192
9193       val = ada_float_to_fixed (type, argd);
9194     }
9195
9196   return value_from_longest (type, val);
9197 }
9198
9199 static struct value *
9200 cast_from_fixed (struct type *type, struct value *arg)
9201 {
9202   DOUBLEST val = ada_fixed_to_float (value_type (arg),
9203                                      value_as_long (arg));
9204
9205   return value_from_double (type, val);
9206 }
9207
9208 /* Given two array types T1 and T2, return nonzero iff both arrays
9209    contain the same number of elements.  */
9210
9211 static int
9212 ada_same_array_size_p (struct type *t1, struct type *t2)
9213 {
9214   LONGEST lo1, hi1, lo2, hi2;
9215
9216   /* Get the array bounds in order to verify that the size of
9217      the two arrays match.  */
9218   if (!get_array_bounds (t1, &lo1, &hi1)
9219       || !get_array_bounds (t2, &lo2, &hi2))
9220     error (_("unable to determine array bounds"));
9221
9222   /* To make things easier for size comparison, normalize a bit
9223      the case of empty arrays by making sure that the difference
9224      between upper bound and lower bound is always -1.  */
9225   if (lo1 > hi1)
9226     hi1 = lo1 - 1;
9227   if (lo2 > hi2)
9228     hi2 = lo2 - 1;
9229
9230   return (hi1 - lo1 == hi2 - lo2);
9231 }
9232
9233 /* Assuming that VAL is an array of integrals, and TYPE represents
9234    an array with the same number of elements, but with wider integral
9235    elements, return an array "casted" to TYPE.  In practice, this
9236    means that the returned array is built by casting each element
9237    of the original array into TYPE's (wider) element type.  */
9238
9239 static struct value *
9240 ada_promote_array_of_integrals (struct type *type, struct value *val)
9241 {
9242   struct type *elt_type = TYPE_TARGET_TYPE (type);
9243   LONGEST lo, hi;
9244   struct value *res;
9245   LONGEST i;
9246
9247   /* Verify that both val and type are arrays of scalars, and
9248      that the size of val's elements is smaller than the size
9249      of type's element.  */
9250   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9251   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9252   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9253   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9254   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9255               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9256
9257   if (!get_array_bounds (type, &lo, &hi))
9258     error (_("unable to determine array bounds"));
9259
9260   res = allocate_value (type);
9261
9262   /* Promote each array element.  */
9263   for (i = 0; i < hi - lo + 1; i++)
9264     {
9265       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9266
9267       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9268               value_contents_all (elt), TYPE_LENGTH (elt_type));
9269     }
9270
9271   return res;
9272 }
9273
9274 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9275    return the converted value.  */
9276
9277 static struct value *
9278 coerce_for_assign (struct type *type, struct value *val)
9279 {
9280   struct type *type2 = value_type (val);
9281
9282   if (type == type2)
9283     return val;
9284
9285   type2 = ada_check_typedef (type2);
9286   type = ada_check_typedef (type);
9287
9288   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9289       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9290     {
9291       val = ada_value_ind (val);
9292       type2 = value_type (val);
9293     }
9294
9295   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9296       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9297     {
9298       if (!ada_same_array_size_p (type, type2))
9299         error (_("cannot assign arrays of different length"));
9300
9301       if (is_integral_type (TYPE_TARGET_TYPE (type))
9302           && is_integral_type (TYPE_TARGET_TYPE (type2))
9303           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9304                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9305         {
9306           /* Allow implicit promotion of the array elements to
9307              a wider type.  */
9308           return ada_promote_array_of_integrals (type, val);
9309         }
9310
9311       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9312           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9313         error (_("Incompatible types in assignment"));
9314       deprecated_set_value_type (val, type);
9315     }
9316   return val;
9317 }
9318
9319 static struct value *
9320 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9321 {
9322   struct value *val;
9323   struct type *type1, *type2;
9324   LONGEST v, v1, v2;
9325
9326   arg1 = coerce_ref (arg1);
9327   arg2 = coerce_ref (arg2);
9328   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9329   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9330
9331   if (TYPE_CODE (type1) != TYPE_CODE_INT
9332       || TYPE_CODE (type2) != TYPE_CODE_INT)
9333     return value_binop (arg1, arg2, op);
9334
9335   switch (op)
9336     {
9337     case BINOP_MOD:
9338     case BINOP_DIV:
9339     case BINOP_REM:
9340       break;
9341     default:
9342       return value_binop (arg1, arg2, op);
9343     }
9344
9345   v2 = value_as_long (arg2);
9346   if (v2 == 0)
9347     error (_("second operand of %s must not be zero."), op_string (op));
9348
9349   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9350     return value_binop (arg1, arg2, op);
9351
9352   v1 = value_as_long (arg1);
9353   switch (op)
9354     {
9355     case BINOP_DIV:
9356       v = v1 / v2;
9357       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9358         v += v > 0 ? -1 : 1;
9359       break;
9360     case BINOP_REM:
9361       v = v1 % v2;
9362       if (v * v1 < 0)
9363         v -= v2;
9364       break;
9365     default:
9366       /* Should not reach this point.  */
9367       v = 0;
9368     }
9369
9370   val = allocate_value (type1);
9371   store_unsigned_integer (value_contents_raw (val),
9372                           TYPE_LENGTH (value_type (val)),
9373                           gdbarch_byte_order (get_type_arch (type1)), v);
9374   return val;
9375 }
9376
9377 static int
9378 ada_value_equal (struct value *arg1, struct value *arg2)
9379 {
9380   if (ada_is_direct_array_type (value_type (arg1))
9381       || ada_is_direct_array_type (value_type (arg2)))
9382     {
9383       /* Automatically dereference any array reference before
9384          we attempt to perform the comparison.  */
9385       arg1 = ada_coerce_ref (arg1);
9386       arg2 = ada_coerce_ref (arg2);
9387       
9388       arg1 = ada_coerce_to_simple_array (arg1);
9389       arg2 = ada_coerce_to_simple_array (arg2);
9390       if (TYPE_CODE (value_type (arg1)) != TYPE_CODE_ARRAY
9391           || TYPE_CODE (value_type (arg2)) != TYPE_CODE_ARRAY)
9392         error (_("Attempt to compare array with non-array"));
9393       /* FIXME: The following works only for types whose
9394          representations use all bits (no padding or undefined bits)
9395          and do not have user-defined equality.  */
9396       return
9397         TYPE_LENGTH (value_type (arg1)) == TYPE_LENGTH (value_type (arg2))
9398         && memcmp (value_contents (arg1), value_contents (arg2),
9399                    TYPE_LENGTH (value_type (arg1))) == 0;
9400     }
9401   return value_equal (arg1, arg2);
9402 }
9403
9404 /* Total number of component associations in the aggregate starting at
9405    index PC in EXP.  Assumes that index PC is the start of an
9406    OP_AGGREGATE.  */
9407
9408 static int
9409 num_component_specs (struct expression *exp, int pc)
9410 {
9411   int n, m, i;
9412
9413   m = exp->elts[pc + 1].longconst;
9414   pc += 3;
9415   n = 0;
9416   for (i = 0; i < m; i += 1)
9417     {
9418       switch (exp->elts[pc].opcode) 
9419         {
9420         default:
9421           n += 1;
9422           break;
9423         case OP_CHOICES:
9424           n += exp->elts[pc + 1].longconst;
9425           break;
9426         }
9427       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9428     }
9429   return n;
9430 }
9431
9432 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9433    component of LHS (a simple array or a record), updating *POS past
9434    the expression, assuming that LHS is contained in CONTAINER.  Does
9435    not modify the inferior's memory, nor does it modify LHS (unless
9436    LHS == CONTAINER).  */
9437
9438 static void
9439 assign_component (struct value *container, struct value *lhs, LONGEST index,
9440                   struct expression *exp, int *pos)
9441 {
9442   struct value *mark = value_mark ();
9443   struct value *elt;
9444
9445   if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY)
9446     {
9447       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9448       struct value *index_val = value_from_longest (index_type, index);
9449
9450       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9451     }
9452   else
9453     {
9454       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9455       elt = ada_to_fixed_value (elt);
9456     }
9457
9458   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9459     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9460   else
9461     value_assign_to_component (container, elt, 
9462                                ada_evaluate_subexp (NULL, exp, pos, 
9463                                                     EVAL_NORMAL));
9464
9465   value_free_to_mark (mark);
9466 }
9467
9468 /* Assuming that LHS represents an lvalue having a record or array
9469    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9470    of that aggregate's value to LHS, advancing *POS past the
9471    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9472    lvalue containing LHS (possibly LHS itself).  Does not modify
9473    the inferior's memory, nor does it modify the contents of 
9474    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9475
9476 static struct value *
9477 assign_aggregate (struct value *container, 
9478                   struct value *lhs, struct expression *exp, 
9479                   int *pos, enum noside noside)
9480 {
9481   struct type *lhs_type;
9482   int n = exp->elts[*pos+1].longconst;
9483   LONGEST low_index, high_index;
9484   int num_specs;
9485   LONGEST *indices;
9486   int max_indices, num_indices;
9487   int i;
9488
9489   *pos += 3;
9490   if (noside != EVAL_NORMAL)
9491     {
9492       for (i = 0; i < n; i += 1)
9493         ada_evaluate_subexp (NULL, exp, pos, noside);
9494       return container;
9495     }
9496
9497   container = ada_coerce_ref (container);
9498   if (ada_is_direct_array_type (value_type (container)))
9499     container = ada_coerce_to_simple_array (container);
9500   lhs = ada_coerce_ref (lhs);
9501   if (!deprecated_value_modifiable (lhs))
9502     error (_("Left operand of assignment is not a modifiable lvalue."));
9503
9504   lhs_type = value_type (lhs);
9505   if (ada_is_direct_array_type (lhs_type))
9506     {
9507       lhs = ada_coerce_to_simple_array (lhs);
9508       lhs_type = value_type (lhs);
9509       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9510       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9511     }
9512   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9513     {
9514       low_index = 0;
9515       high_index = num_visible_fields (lhs_type) - 1;
9516     }
9517   else
9518     error (_("Left-hand side must be array or record."));
9519
9520   num_specs = num_component_specs (exp, *pos - 3);
9521   max_indices = 4 * num_specs + 4;
9522   indices = alloca (max_indices * sizeof (indices[0]));
9523   indices[0] = indices[1] = low_index - 1;
9524   indices[2] = indices[3] = high_index + 1;
9525   num_indices = 4;
9526
9527   for (i = 0; i < n; i += 1)
9528     {
9529       switch (exp->elts[*pos].opcode)
9530         {
9531           case OP_CHOICES:
9532             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9533                                            &num_indices, max_indices,
9534                                            low_index, high_index);
9535             break;
9536           case OP_POSITIONAL:
9537             aggregate_assign_positional (container, lhs, exp, pos, indices,
9538                                          &num_indices, max_indices,
9539                                          low_index, high_index);
9540             break;
9541           case OP_OTHERS:
9542             if (i != n-1)
9543               error (_("Misplaced 'others' clause"));
9544             aggregate_assign_others (container, lhs, exp, pos, indices, 
9545                                      num_indices, low_index, high_index);
9546             break;
9547           default:
9548             error (_("Internal error: bad aggregate clause"));
9549         }
9550     }
9551
9552   return container;
9553 }
9554               
9555 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9556    construct at *POS, updating *POS past the construct, given that
9557    the positions are relative to lower bound LOW, where HIGH is the 
9558    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9559    updating *NUM_INDICES as needed.  CONTAINER is as for
9560    assign_aggregate.  */
9561 static void
9562 aggregate_assign_positional (struct value *container,
9563                              struct value *lhs, struct expression *exp,
9564                              int *pos, LONGEST *indices, int *num_indices,
9565                              int max_indices, LONGEST low, LONGEST high) 
9566 {
9567   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9568   
9569   if (ind - 1 == high)
9570     warning (_("Extra components in aggregate ignored."));
9571   if (ind <= high)
9572     {
9573       add_component_interval (ind, ind, indices, num_indices, max_indices);
9574       *pos += 3;
9575       assign_component (container, lhs, ind, exp, pos);
9576     }
9577   else
9578     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9579 }
9580
9581 /* Assign into the components of LHS indexed by the OP_CHOICES
9582    construct at *POS, updating *POS past the construct, given that
9583    the allowable indices are LOW..HIGH.  Record the indices assigned
9584    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9585    needed.  CONTAINER is as for assign_aggregate.  */
9586 static void
9587 aggregate_assign_from_choices (struct value *container,
9588                                struct value *lhs, struct expression *exp,
9589                                int *pos, LONGEST *indices, int *num_indices,
9590                                int max_indices, LONGEST low, LONGEST high) 
9591 {
9592   int j;
9593   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9594   int choice_pos, expr_pc;
9595   int is_array = ada_is_direct_array_type (value_type (lhs));
9596
9597   choice_pos = *pos += 3;
9598
9599   for (j = 0; j < n_choices; j += 1)
9600     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9601   expr_pc = *pos;
9602   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9603   
9604   for (j = 0; j < n_choices; j += 1)
9605     {
9606       LONGEST lower, upper;
9607       enum exp_opcode op = exp->elts[choice_pos].opcode;
9608
9609       if (op == OP_DISCRETE_RANGE)
9610         {
9611           choice_pos += 1;
9612           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9613                                                       EVAL_NORMAL));
9614           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9615                                                       EVAL_NORMAL));
9616         }
9617       else if (is_array)
9618         {
9619           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9620                                                       EVAL_NORMAL));
9621           upper = lower;
9622         }
9623       else
9624         {
9625           int ind;
9626           const char *name;
9627
9628           switch (op)
9629             {
9630             case OP_NAME:
9631               name = &exp->elts[choice_pos + 2].string;
9632               break;
9633             case OP_VAR_VALUE:
9634               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
9635               break;
9636             default:
9637               error (_("Invalid record component association."));
9638             }
9639           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9640           ind = 0;
9641           if (! find_struct_field (name, value_type (lhs), 0, 
9642                                    NULL, NULL, NULL, NULL, &ind))
9643             error (_("Unknown component name: %s."), name);
9644           lower = upper = ind;
9645         }
9646
9647       if (lower <= upper && (lower < low || upper > high))
9648         error (_("Index in component association out of bounds."));
9649
9650       add_component_interval (lower, upper, indices, num_indices,
9651                               max_indices);
9652       while (lower <= upper)
9653         {
9654           int pos1;
9655
9656           pos1 = expr_pc;
9657           assign_component (container, lhs, lower, exp, &pos1);
9658           lower += 1;
9659         }
9660     }
9661 }
9662
9663 /* Assign the value of the expression in the OP_OTHERS construct in
9664    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9665    have not been previously assigned.  The index intervals already assigned
9666    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9667    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9668 static void
9669 aggregate_assign_others (struct value *container,
9670                          struct value *lhs, struct expression *exp,
9671                          int *pos, LONGEST *indices, int num_indices,
9672                          LONGEST low, LONGEST high) 
9673 {
9674   int i;
9675   int expr_pc = *pos + 1;
9676   
9677   for (i = 0; i < num_indices - 2; i += 2)
9678     {
9679       LONGEST ind;
9680
9681       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9682         {
9683           int localpos;
9684
9685           localpos = expr_pc;
9686           assign_component (container, lhs, ind, exp, &localpos);
9687         }
9688     }
9689   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9690 }
9691
9692 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9693    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9694    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9695    MAX_SIZE.  The resulting intervals do not overlap.  */
9696 static void
9697 add_component_interval (LONGEST low, LONGEST high, 
9698                         LONGEST* indices, int *size, int max_size)
9699 {
9700   int i, j;
9701
9702   for (i = 0; i < *size; i += 2) {
9703     if (high >= indices[i] && low <= indices[i + 1])
9704       {
9705         int kh;
9706
9707         for (kh = i + 2; kh < *size; kh += 2)
9708           if (high < indices[kh])
9709             break;
9710         if (low < indices[i])
9711           indices[i] = low;
9712         indices[i + 1] = indices[kh - 1];
9713         if (high > indices[i + 1])
9714           indices[i + 1] = high;
9715         memcpy (indices + i + 2, indices + kh, *size - kh);
9716         *size -= kh - i - 2;
9717         return;
9718       }
9719     else if (high < indices[i])
9720       break;
9721   }
9722         
9723   if (*size == max_size)
9724     error (_("Internal error: miscounted aggregate components."));
9725   *size += 2;
9726   for (j = *size-1; j >= i+2; j -= 1)
9727     indices[j] = indices[j - 2];
9728   indices[i] = low;
9729   indices[i + 1] = high;
9730 }
9731
9732 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9733    is different.  */
9734
9735 static struct value *
9736 ada_value_cast (struct type *type, struct value *arg2, enum noside noside)
9737 {
9738   if (type == ada_check_typedef (value_type (arg2)))
9739     return arg2;
9740
9741   if (ada_is_fixed_point_type (type))
9742     return (cast_to_fixed (type, arg2));
9743
9744   if (ada_is_fixed_point_type (value_type (arg2)))
9745     return cast_from_fixed (type, arg2);
9746
9747   return value_cast (type, arg2);
9748 }
9749
9750 /*  Evaluating Ada expressions, and printing their result.
9751     ------------------------------------------------------
9752
9753     1. Introduction:
9754     ----------------
9755
9756     We usually evaluate an Ada expression in order to print its value.
9757     We also evaluate an expression in order to print its type, which
9758     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9759     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9760     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9761     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9762     similar.
9763
9764     Evaluating expressions is a little more complicated for Ada entities
9765     than it is for entities in languages such as C.  The main reason for
9766     this is that Ada provides types whose definition might be dynamic.
9767     One example of such types is variant records.  Or another example
9768     would be an array whose bounds can only be known at run time.
9769
9770     The following description is a general guide as to what should be
9771     done (and what should NOT be done) in order to evaluate an expression
9772     involving such types, and when.  This does not cover how the semantic
9773     information is encoded by GNAT as this is covered separatly.  For the
9774     document used as the reference for the GNAT encoding, see exp_dbug.ads
9775     in the GNAT sources.
9776
9777     Ideally, we should embed each part of this description next to its
9778     associated code.  Unfortunately, the amount of code is so vast right
9779     now that it's hard to see whether the code handling a particular
9780     situation might be duplicated or not.  One day, when the code is
9781     cleaned up, this guide might become redundant with the comments
9782     inserted in the code, and we might want to remove it.
9783
9784     2. ``Fixing'' an Entity, the Simple Case:
9785     -----------------------------------------
9786
9787     When evaluating Ada expressions, the tricky issue is that they may
9788     reference entities whose type contents and size are not statically
9789     known.  Consider for instance a variant record:
9790
9791        type Rec (Empty : Boolean := True) is record
9792           case Empty is
9793              when True => null;
9794              when False => Value : Integer;
9795           end case;
9796        end record;
9797        Yes : Rec := (Empty => False, Value => 1);
9798        No  : Rec := (empty => True);
9799
9800     The size and contents of that record depends on the value of the
9801     descriminant (Rec.Empty).  At this point, neither the debugging
9802     information nor the associated type structure in GDB are able to
9803     express such dynamic types.  So what the debugger does is to create
9804     "fixed" versions of the type that applies to the specific object.
9805     We also informally refer to this opperation as "fixing" an object,
9806     which means creating its associated fixed type.
9807
9808     Example: when printing the value of variable "Yes" above, its fixed
9809     type would look like this:
9810
9811        type Rec is record
9812           Empty : Boolean;
9813           Value : Integer;
9814        end record;
9815
9816     On the other hand, if we printed the value of "No", its fixed type
9817     would become:
9818
9819        type Rec is record
9820           Empty : Boolean;
9821        end record;
9822
9823     Things become a little more complicated when trying to fix an entity
9824     with a dynamic type that directly contains another dynamic type,
9825     such as an array of variant records, for instance.  There are
9826     two possible cases: Arrays, and records.
9827
9828     3. ``Fixing'' Arrays:
9829     ---------------------
9830
9831     The type structure in GDB describes an array in terms of its bounds,
9832     and the type of its elements.  By design, all elements in the array
9833     have the same type and we cannot represent an array of variant elements
9834     using the current type structure in GDB.  When fixing an array,
9835     we cannot fix the array element, as we would potentially need one
9836     fixed type per element of the array.  As a result, the best we can do
9837     when fixing an array is to produce an array whose bounds and size
9838     are correct (allowing us to read it from memory), but without having
9839     touched its element type.  Fixing each element will be done later,
9840     when (if) necessary.
9841
9842     Arrays are a little simpler to handle than records, because the same
9843     amount of memory is allocated for each element of the array, even if
9844     the amount of space actually used by each element differs from element
9845     to element.  Consider for instance the following array of type Rec:
9846
9847        type Rec_Array is array (1 .. 2) of Rec;
9848
9849     The actual amount of memory occupied by each element might be different
9850     from element to element, depending on the value of their discriminant.
9851     But the amount of space reserved for each element in the array remains
9852     fixed regardless.  So we simply need to compute that size using
9853     the debugging information available, from which we can then determine
9854     the array size (we multiply the number of elements of the array by
9855     the size of each element).
9856
9857     The simplest case is when we have an array of a constrained element
9858     type. For instance, consider the following type declarations:
9859
9860         type Bounded_String (Max_Size : Integer) is
9861            Length : Integer;
9862            Buffer : String (1 .. Max_Size);
9863         end record;
9864         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9865
9866     In this case, the compiler describes the array as an array of
9867     variable-size elements (identified by its XVS suffix) for which
9868     the size can be read in the parallel XVZ variable.
9869
9870     In the case of an array of an unconstrained element type, the compiler
9871     wraps the array element inside a private PAD type.  This type should not
9872     be shown to the user, and must be "unwrap"'ed before printing.  Note
9873     that we also use the adjective "aligner" in our code to designate
9874     these wrapper types.
9875
9876     In some cases, the size allocated for each element is statically
9877     known.  In that case, the PAD type already has the correct size,
9878     and the array element should remain unfixed.
9879
9880     But there are cases when this size is not statically known.
9881     For instance, assuming that "Five" is an integer variable:
9882
9883         type Dynamic is array (1 .. Five) of Integer;
9884         type Wrapper (Has_Length : Boolean := False) is record
9885            Data : Dynamic;
9886            case Has_Length is
9887               when True => Length : Integer;
9888               when False => null;
9889            end case;
9890         end record;
9891         type Wrapper_Array is array (1 .. 2) of Wrapper;
9892
9893         Hello : Wrapper_Array := (others => (Has_Length => True,
9894                                              Data => (others => 17),
9895                                              Length => 1));
9896
9897
9898     The debugging info would describe variable Hello as being an
9899     array of a PAD type.  The size of that PAD type is not statically
9900     known, but can be determined using a parallel XVZ variable.
9901     In that case, a copy of the PAD type with the correct size should
9902     be used for the fixed array.
9903
9904     3. ``Fixing'' record type objects:
9905     ----------------------------------
9906
9907     Things are slightly different from arrays in the case of dynamic
9908     record types.  In this case, in order to compute the associated
9909     fixed type, we need to determine the size and offset of each of
9910     its components.  This, in turn, requires us to compute the fixed
9911     type of each of these components.
9912
9913     Consider for instance the example:
9914
9915         type Bounded_String (Max_Size : Natural) is record
9916            Str : String (1 .. Max_Size);
9917            Length : Natural;
9918         end record;
9919         My_String : Bounded_String (Max_Size => 10);
9920
9921     In that case, the position of field "Length" depends on the size
9922     of field Str, which itself depends on the value of the Max_Size
9923     discriminant.  In order to fix the type of variable My_String,
9924     we need to fix the type of field Str.  Therefore, fixing a variant
9925     record requires us to fix each of its components.
9926
9927     However, if a component does not have a dynamic size, the component
9928     should not be fixed.  In particular, fields that use a PAD type
9929     should not fixed.  Here is an example where this might happen
9930     (assuming type Rec above):
9931
9932        type Container (Big : Boolean) is record
9933           First : Rec;
9934           After : Integer;
9935           case Big is
9936              when True => Another : Integer;
9937              when False => null;
9938           end case;
9939        end record;
9940        My_Container : Container := (Big => False,
9941                                     First => (Empty => True),
9942                                     After => 42);
9943
9944     In that example, the compiler creates a PAD type for component First,
9945     whose size is constant, and then positions the component After just
9946     right after it.  The offset of component After is therefore constant
9947     in this case.
9948
9949     The debugger computes the position of each field based on an algorithm
9950     that uses, among other things, the actual position and size of the field
9951     preceding it.  Let's now imagine that the user is trying to print
9952     the value of My_Container.  If the type fixing was recursive, we would
9953     end up computing the offset of field After based on the size of the
9954     fixed version of field First.  And since in our example First has
9955     only one actual field, the size of the fixed type is actually smaller
9956     than the amount of space allocated to that field, and thus we would
9957     compute the wrong offset of field After.
9958
9959     To make things more complicated, we need to watch out for dynamic
9960     components of variant records (identified by the ___XVL suffix in
9961     the component name).  Even if the target type is a PAD type, the size
9962     of that type might not be statically known.  So the PAD type needs
9963     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
9964     we might end up with the wrong size for our component.  This can be
9965     observed with the following type declarations:
9966
9967         type Octal is new Integer range 0 .. 7;
9968         type Octal_Array is array (Positive range <>) of Octal;
9969         pragma Pack (Octal_Array);
9970
9971         type Octal_Buffer (Size : Positive) is record
9972            Buffer : Octal_Array (1 .. Size);
9973            Length : Integer;
9974         end record;
9975
9976     In that case, Buffer is a PAD type whose size is unset and needs
9977     to be computed by fixing the unwrapped type.
9978
9979     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
9980     ----------------------------------------------------------
9981
9982     Lastly, when should the sub-elements of an entity that remained unfixed
9983     thus far, be actually fixed?
9984
9985     The answer is: Only when referencing that element.  For instance
9986     when selecting one component of a record, this specific component
9987     should be fixed at that point in time.  Or when printing the value
9988     of a record, each component should be fixed before its value gets
9989     printed.  Similarly for arrays, the element of the array should be
9990     fixed when printing each element of the array, or when extracting
9991     one element out of that array.  On the other hand, fixing should
9992     not be performed on the elements when taking a slice of an array!
9993
9994     Note that one of the side-effects of miscomputing the offset and
9995     size of each field is that we end up also miscomputing the size
9996     of the containing type.  This can have adverse results when computing
9997     the value of an entity.  GDB fetches the value of an entity based
9998     on the size of its type, and thus a wrong size causes GDB to fetch
9999     the wrong amount of memory.  In the case where the computed size is
10000     too small, GDB fetches too little data to print the value of our
10001     entiry.  Results in this case as unpredicatble, as we usually read
10002     past the buffer containing the data =:-o.  */
10003
10004 /* Implement the evaluate_exp routine in the exp_descriptor structure
10005    for the Ada language.  */
10006
10007 static struct value *
10008 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10009                      int *pos, enum noside noside)
10010 {
10011   enum exp_opcode op;
10012   int tem;
10013   int pc;
10014   int preeval_pos;
10015   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10016   struct type *type;
10017   int nargs, oplen;
10018   struct value **argvec;
10019
10020   pc = *pos;
10021   *pos += 1;
10022   op = exp->elts[pc].opcode;
10023
10024   switch (op)
10025     {
10026     default:
10027       *pos -= 1;
10028       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10029
10030       if (noside == EVAL_NORMAL)
10031         arg1 = unwrap_value (arg1);
10032
10033       /* If evaluating an OP_DOUBLE and an EXPECT_TYPE was provided,
10034          then we need to perform the conversion manually, because
10035          evaluate_subexp_standard doesn't do it.  This conversion is
10036          necessary in Ada because the different kinds of float/fixed
10037          types in Ada have different representations.
10038
10039          Similarly, we need to perform the conversion from OP_LONG
10040          ourselves.  */
10041       if ((op == OP_DOUBLE || op == OP_LONG) && expect_type != NULL)
10042         arg1 = ada_value_cast (expect_type, arg1, noside);
10043
10044       return arg1;
10045
10046     case OP_STRING:
10047       {
10048         struct value *result;
10049
10050         *pos -= 1;
10051         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10052         /* The result type will have code OP_STRING, bashed there from 
10053            OP_ARRAY.  Bash it back.  */
10054         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10055           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10056         return result;
10057       }
10058
10059     case UNOP_CAST:
10060       (*pos) += 2;
10061       type = exp->elts[pc + 1].type;
10062       arg1 = evaluate_subexp (type, exp, pos, noside);
10063       if (noside == EVAL_SKIP)
10064         goto nosideret;
10065       arg1 = ada_value_cast (type, arg1, noside);
10066       return arg1;
10067
10068     case UNOP_QUAL:
10069       (*pos) += 2;
10070       type = exp->elts[pc + 1].type;
10071       return ada_evaluate_subexp (type, exp, pos, noside);
10072
10073     case BINOP_ASSIGN:
10074       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10075       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10076         {
10077           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10078           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10079             return arg1;
10080           return ada_value_assign (arg1, arg1);
10081         }
10082       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10083          except if the lhs of our assignment is a convenience variable.
10084          In the case of assigning to a convenience variable, the lhs
10085          should be exactly the result of the evaluation of the rhs.  */
10086       type = value_type (arg1);
10087       if (VALUE_LVAL (arg1) == lval_internalvar)
10088          type = NULL;
10089       arg2 = evaluate_subexp (type, exp, pos, noside);
10090       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10091         return arg1;
10092       if (ada_is_fixed_point_type (value_type (arg1)))
10093         arg2 = cast_to_fixed (value_type (arg1), arg2);
10094       else if (ada_is_fixed_point_type (value_type (arg2)))
10095         error
10096           (_("Fixed-point values must be assigned to fixed-point variables"));
10097       else
10098         arg2 = coerce_for_assign (value_type (arg1), arg2);
10099       return ada_value_assign (arg1, arg2);
10100
10101     case BINOP_ADD:
10102       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10103       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10104       if (noside == EVAL_SKIP)
10105         goto nosideret;
10106       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10107         return (value_from_longest
10108                  (value_type (arg1),
10109                   value_as_long (arg1) + value_as_long (arg2)));
10110       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10111         return (value_from_longest
10112                  (value_type (arg2),
10113                   value_as_long (arg1) + value_as_long (arg2)));
10114       if ((ada_is_fixed_point_type (value_type (arg1))
10115            || ada_is_fixed_point_type (value_type (arg2)))
10116           && value_type (arg1) != value_type (arg2))
10117         error (_("Operands of fixed-point addition must have the same type"));
10118       /* Do the addition, and cast the result to the type of the first
10119          argument.  We cannot cast the result to a reference type, so if
10120          ARG1 is a reference type, find its underlying type.  */
10121       type = value_type (arg1);
10122       while (TYPE_CODE (type) == TYPE_CODE_REF)
10123         type = TYPE_TARGET_TYPE (type);
10124       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10125       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10126
10127     case BINOP_SUB:
10128       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10129       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10130       if (noside == EVAL_SKIP)
10131         goto nosideret;
10132       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10133         return (value_from_longest
10134                  (value_type (arg1),
10135                   value_as_long (arg1) - value_as_long (arg2)));
10136       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10137         return (value_from_longest
10138                  (value_type (arg2),
10139                   value_as_long (arg1) - value_as_long (arg2)));
10140       if ((ada_is_fixed_point_type (value_type (arg1))
10141            || ada_is_fixed_point_type (value_type (arg2)))
10142           && value_type (arg1) != value_type (arg2))
10143         error (_("Operands of fixed-point subtraction "
10144                  "must have the same type"));
10145       /* Do the substraction, and cast the result to the type of the first
10146          argument.  We cannot cast the result to a reference type, so if
10147          ARG1 is a reference type, find its underlying type.  */
10148       type = value_type (arg1);
10149       while (TYPE_CODE (type) == TYPE_CODE_REF)
10150         type = TYPE_TARGET_TYPE (type);
10151       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10152       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10153
10154     case BINOP_MUL:
10155     case BINOP_DIV:
10156     case BINOP_REM:
10157     case BINOP_MOD:
10158       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10159       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10160       if (noside == EVAL_SKIP)
10161         goto nosideret;
10162       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10163         {
10164           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10165           return value_zero (value_type (arg1), not_lval);
10166         }
10167       else
10168         {
10169           type = builtin_type (exp->gdbarch)->builtin_double;
10170           if (ada_is_fixed_point_type (value_type (arg1)))
10171             arg1 = cast_from_fixed (type, arg1);
10172           if (ada_is_fixed_point_type (value_type (arg2)))
10173             arg2 = cast_from_fixed (type, arg2);
10174           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10175           return ada_value_binop (arg1, arg2, op);
10176         }
10177
10178     case BINOP_EQUAL:
10179     case BINOP_NOTEQUAL:
10180       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10181       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10182       if (noside == EVAL_SKIP)
10183         goto nosideret;
10184       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10185         tem = 0;
10186       else
10187         {
10188           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10189           tem = ada_value_equal (arg1, arg2);
10190         }
10191       if (op == BINOP_NOTEQUAL)
10192         tem = !tem;
10193       type = language_bool_type (exp->language_defn, exp->gdbarch);
10194       return value_from_longest (type, (LONGEST) tem);
10195
10196     case UNOP_NEG:
10197       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10198       if (noside == EVAL_SKIP)
10199         goto nosideret;
10200       else if (ada_is_fixed_point_type (value_type (arg1)))
10201         return value_cast (value_type (arg1), value_neg (arg1));
10202       else
10203         {
10204           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10205           return value_neg (arg1);
10206         }
10207
10208     case BINOP_LOGICAL_AND:
10209     case BINOP_LOGICAL_OR:
10210     case UNOP_LOGICAL_NOT:
10211       {
10212         struct value *val;
10213
10214         *pos -= 1;
10215         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10216         type = language_bool_type (exp->language_defn, exp->gdbarch);
10217         return value_cast (type, val);
10218       }
10219
10220     case BINOP_BITWISE_AND:
10221     case BINOP_BITWISE_IOR:
10222     case BINOP_BITWISE_XOR:
10223       {
10224         struct value *val;
10225
10226         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10227         *pos = pc;
10228         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10229
10230         return value_cast (value_type (arg1), val);
10231       }
10232
10233     case OP_VAR_VALUE:
10234       *pos -= 1;
10235
10236       if (noside == EVAL_SKIP)
10237         {
10238           *pos += 4;
10239           goto nosideret;
10240         }
10241
10242       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10243         /* Only encountered when an unresolved symbol occurs in a
10244            context other than a function call, in which case, it is
10245            invalid.  */
10246         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10247                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10248
10249       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10250         {
10251           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10252           /* Check to see if this is a tagged type.  We also need to handle
10253              the case where the type is a reference to a tagged type, but
10254              we have to be careful to exclude pointers to tagged types.
10255              The latter should be shown as usual (as a pointer), whereas
10256              a reference should mostly be transparent to the user.  */
10257           if (ada_is_tagged_type (type, 0)
10258               || (TYPE_CODE (type) == TYPE_CODE_REF
10259                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10260             {
10261               /* Tagged types are a little special in the fact that the real
10262                  type is dynamic and can only be determined by inspecting the
10263                  object's tag.  This means that we need to get the object's
10264                  value first (EVAL_NORMAL) and then extract the actual object
10265                  type from its tag.
10266
10267                  Note that we cannot skip the final step where we extract
10268                  the object type from its tag, because the EVAL_NORMAL phase
10269                  results in dynamic components being resolved into fixed ones.
10270                  This can cause problems when trying to print the type
10271                  description of tagged types whose parent has a dynamic size:
10272                  We use the type name of the "_parent" component in order
10273                  to print the name of the ancestor type in the type description.
10274                  If that component had a dynamic size, the resolution into
10275                  a fixed type would result in the loss of that type name,
10276                  thus preventing us from printing the name of the ancestor
10277                  type in the type description.  */
10278               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10279
10280               if (TYPE_CODE (type) != TYPE_CODE_REF)
10281                 {
10282                   struct type *actual_type;
10283
10284                   actual_type = type_from_tag (ada_value_tag (arg1));
10285                   if (actual_type == NULL)
10286                     /* If, for some reason, we were unable to determine
10287                        the actual type from the tag, then use the static
10288                        approximation that we just computed as a fallback.
10289                        This can happen if the debugging information is
10290                        incomplete, for instance.  */
10291                     actual_type = type;
10292                   return value_zero (actual_type, not_lval);
10293                 }
10294               else
10295                 {
10296                   /* In the case of a ref, ada_coerce_ref takes care
10297                      of determining the actual type.  But the evaluation
10298                      should return a ref as it should be valid to ask
10299                      for its address; so rebuild a ref after coerce.  */
10300                   arg1 = ada_coerce_ref (arg1);
10301                   return value_ref (arg1);
10302                 }
10303             }
10304
10305           /* Records and unions for which GNAT encodings have been
10306              generated need to be statically fixed as well.
10307              Otherwise, non-static fixing produces a type where
10308              all dynamic properties are removed, which prevents "ptype"
10309              from being able to completely describe the type.
10310              For instance, a case statement in a variant record would be
10311              replaced by the relevant components based on the actual
10312              value of the discriminants.  */
10313           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10314                && dynamic_template_type (type) != NULL)
10315               || (TYPE_CODE (type) == TYPE_CODE_UNION
10316                   && ada_find_parallel_type (type, "___XVU") != NULL))
10317             {
10318               *pos += 4;
10319               return value_zero (to_static_fixed_type (type), not_lval);
10320             }
10321         }
10322
10323       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10324       return ada_to_fixed_value (arg1);
10325
10326     case OP_FUNCALL:
10327       (*pos) += 2;
10328
10329       /* Allocate arg vector, including space for the function to be
10330          called in argvec[0] and a terminating NULL.  */
10331       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10332       argvec =
10333         (struct value **) alloca (sizeof (struct value *) * (nargs + 2));
10334
10335       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10336           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10337         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10338                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10339       else
10340         {
10341           for (tem = 0; tem <= nargs; tem += 1)
10342             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10343           argvec[tem] = 0;
10344
10345           if (noside == EVAL_SKIP)
10346             goto nosideret;
10347         }
10348
10349       if (ada_is_constrained_packed_array_type
10350           (desc_base_type (value_type (argvec[0]))))
10351         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10352       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10353                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10354         /* This is a packed array that has already been fixed, and
10355            therefore already coerced to a simple array.  Nothing further
10356            to do.  */
10357         ;
10358       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF
10359                || (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10360                    && VALUE_LVAL (argvec[0]) == lval_memory))
10361         argvec[0] = value_addr (argvec[0]);
10362
10363       type = ada_check_typedef (value_type (argvec[0]));
10364
10365       /* Ada allows us to implicitly dereference arrays when subscripting
10366          them.  So, if this is an array typedef (encoding use for array
10367          access types encoded as fat pointers), strip it now.  */
10368       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10369         type = ada_typedef_target_type (type);
10370
10371       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10372         {
10373           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10374             {
10375             case TYPE_CODE_FUNC:
10376               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10377               break;
10378             case TYPE_CODE_ARRAY:
10379               break;
10380             case TYPE_CODE_STRUCT:
10381               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10382                 argvec[0] = ada_value_ind (argvec[0]);
10383               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10384               break;
10385             default:
10386               error (_("cannot subscript or call something of type `%s'"),
10387                      ada_type_name (value_type (argvec[0])));
10388               break;
10389             }
10390         }
10391
10392       switch (TYPE_CODE (type))
10393         {
10394         case TYPE_CODE_FUNC:
10395           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10396             {
10397               struct type *rtype = TYPE_TARGET_TYPE (type);
10398
10399               if (TYPE_GNU_IFUNC (type))
10400                 return allocate_value (TYPE_TARGET_TYPE (rtype));
10401               return allocate_value (rtype);
10402             }
10403           return call_function_by_hand (argvec[0], nargs, argvec + 1);
10404         case TYPE_CODE_INTERNAL_FUNCTION:
10405           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10406             /* We don't know anything about what the internal
10407                function might return, but we have to return
10408                something.  */
10409             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10410                                not_lval);
10411           else
10412             return call_internal_function (exp->gdbarch, exp->language_defn,
10413                                            argvec[0], nargs, argvec + 1);
10414
10415         case TYPE_CODE_STRUCT:
10416           {
10417             int arity;
10418
10419             arity = ada_array_arity (type);
10420             type = ada_array_element_type (type, nargs);
10421             if (type == NULL)
10422               error (_("cannot subscript or call a record"));
10423             if (arity != nargs)
10424               error (_("wrong number of subscripts; expecting %d"), arity);
10425             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10426               return value_zero (ada_aligned_type (type), lval_memory);
10427             return
10428               unwrap_value (ada_value_subscript
10429                             (argvec[0], nargs, argvec + 1));
10430           }
10431         case TYPE_CODE_ARRAY:
10432           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10433             {
10434               type = ada_array_element_type (type, nargs);
10435               if (type == NULL)
10436                 error (_("element type of array unknown"));
10437               else
10438                 return value_zero (ada_aligned_type (type), lval_memory);
10439             }
10440           return
10441             unwrap_value (ada_value_subscript
10442                           (ada_coerce_to_simple_array (argvec[0]),
10443                            nargs, argvec + 1));
10444         case TYPE_CODE_PTR:     /* Pointer to array */
10445           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10446             {
10447               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10448               type = ada_array_element_type (type, nargs);
10449               if (type == NULL)
10450                 error (_("element type of array unknown"));
10451               else
10452                 return value_zero (ada_aligned_type (type), lval_memory);
10453             }
10454           return
10455             unwrap_value (ada_value_ptr_subscript (argvec[0],
10456                                                    nargs, argvec + 1));
10457
10458         default:
10459           error (_("Attempt to index or call something other than an "
10460                    "array or function"));
10461         }
10462
10463     case TERNOP_SLICE:
10464       {
10465         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10466         struct value *low_bound_val =
10467           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10468         struct value *high_bound_val =
10469           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10470         LONGEST low_bound;
10471         LONGEST high_bound;
10472
10473         low_bound_val = coerce_ref (low_bound_val);
10474         high_bound_val = coerce_ref (high_bound_val);
10475         low_bound = pos_atr (low_bound_val);
10476         high_bound = pos_atr (high_bound_val);
10477
10478         if (noside == EVAL_SKIP)
10479           goto nosideret;
10480
10481         /* If this is a reference to an aligner type, then remove all
10482            the aligners.  */
10483         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10484             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10485           TYPE_TARGET_TYPE (value_type (array)) =
10486             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10487
10488         if (ada_is_constrained_packed_array_type (value_type (array)))
10489           error (_("cannot slice a packed array"));
10490
10491         /* If this is a reference to an array or an array lvalue,
10492            convert to a pointer.  */
10493         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10494             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
10495                 && VALUE_LVAL (array) == lval_memory))
10496           array = value_addr (array);
10497
10498         if (noside == EVAL_AVOID_SIDE_EFFECTS
10499             && ada_is_array_descriptor_type (ada_check_typedef
10500                                              (value_type (array))))
10501           return empty_array (ada_type_of_array (array, 0), low_bound);
10502
10503         array = ada_coerce_to_simple_array_ptr (array);
10504
10505         /* If we have more than one level of pointer indirection,
10506            dereference the value until we get only one level.  */
10507         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
10508                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
10509                      == TYPE_CODE_PTR))
10510           array = value_ind (array);
10511
10512         /* Make sure we really do have an array type before going further,
10513            to avoid a SEGV when trying to get the index type or the target
10514            type later down the road if the debug info generated by
10515            the compiler is incorrect or incomplete.  */
10516         if (!ada_is_simple_array_type (value_type (array)))
10517           error (_("cannot take slice of non-array"));
10518
10519         if (TYPE_CODE (ada_check_typedef (value_type (array)))
10520             == TYPE_CODE_PTR)
10521           {
10522             struct type *type0 = ada_check_typedef (value_type (array));
10523
10524             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10525               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
10526             else
10527               {
10528                 struct type *arr_type0 =
10529                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10530
10531                 return ada_value_slice_from_ptr (array, arr_type0,
10532                                                  longest_to_int (low_bound),
10533                                                  longest_to_int (high_bound));
10534               }
10535           }
10536         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10537           return array;
10538         else if (high_bound < low_bound)
10539           return empty_array (value_type (array), low_bound);
10540         else
10541           return ada_value_slice (array, longest_to_int (low_bound),
10542                                   longest_to_int (high_bound));
10543       }
10544
10545     case UNOP_IN_RANGE:
10546       (*pos) += 2;
10547       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10548       type = check_typedef (exp->elts[pc + 1].type);
10549
10550       if (noside == EVAL_SKIP)
10551         goto nosideret;
10552
10553       switch (TYPE_CODE (type))
10554         {
10555         default:
10556           lim_warning (_("Membership test incompletely implemented; "
10557                          "always returns true"));
10558           type = language_bool_type (exp->language_defn, exp->gdbarch);
10559           return value_from_longest (type, (LONGEST) 1);
10560
10561         case TYPE_CODE_RANGE:
10562           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10563           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10564           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10565           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10566           type = language_bool_type (exp->language_defn, exp->gdbarch);
10567           return
10568             value_from_longest (type,
10569                                 (value_less (arg1, arg3)
10570                                  || value_equal (arg1, arg3))
10571                                 && (value_less (arg2, arg1)
10572                                     || value_equal (arg2, arg1)));
10573         }
10574
10575     case BINOP_IN_BOUNDS:
10576       (*pos) += 2;
10577       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10578       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10579
10580       if (noside == EVAL_SKIP)
10581         goto nosideret;
10582
10583       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10584         {
10585           type = language_bool_type (exp->language_defn, exp->gdbarch);
10586           return value_zero (type, not_lval);
10587         }
10588
10589       tem = longest_to_int (exp->elts[pc + 1].longconst);
10590
10591       type = ada_index_type (value_type (arg2), tem, "range");
10592       if (!type)
10593         type = value_type (arg1);
10594
10595       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10596       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10597
10598       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10599       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10600       type = language_bool_type (exp->language_defn, exp->gdbarch);
10601       return
10602         value_from_longest (type,
10603                             (value_less (arg1, arg3)
10604                              || value_equal (arg1, arg3))
10605                             && (value_less (arg2, arg1)
10606                                 || value_equal (arg2, arg1)));
10607
10608     case TERNOP_IN_RANGE:
10609       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10610       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10611       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10612
10613       if (noside == EVAL_SKIP)
10614         goto nosideret;
10615
10616       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10617       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10618       type = language_bool_type (exp->language_defn, exp->gdbarch);
10619       return
10620         value_from_longest (type,
10621                             (value_less (arg1, arg3)
10622                              || value_equal (arg1, arg3))
10623                             && (value_less (arg2, arg1)
10624                                 || value_equal (arg2, arg1)));
10625
10626     case OP_ATR_FIRST:
10627     case OP_ATR_LAST:
10628     case OP_ATR_LENGTH:
10629       {
10630         struct type *type_arg;
10631
10632         if (exp->elts[*pos].opcode == OP_TYPE)
10633           {
10634             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10635             arg1 = NULL;
10636             type_arg = check_typedef (exp->elts[pc + 2].type);
10637           }
10638         else
10639           {
10640             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10641             type_arg = NULL;
10642           }
10643
10644         if (exp->elts[*pos].opcode != OP_LONG)
10645           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10646         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10647         *pos += 4;
10648
10649         if (noside == EVAL_SKIP)
10650           goto nosideret;
10651
10652         if (type_arg == NULL)
10653           {
10654             arg1 = ada_coerce_ref (arg1);
10655
10656             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10657               arg1 = ada_coerce_to_simple_array (arg1);
10658
10659             if (op == OP_ATR_LENGTH)
10660               type = builtin_type (exp->gdbarch)->builtin_int;
10661             else
10662               {
10663                 type = ada_index_type (value_type (arg1), tem,
10664                                        ada_attribute_name (op));
10665                 if (type == NULL)
10666                   type = builtin_type (exp->gdbarch)->builtin_int;
10667               }
10668
10669             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10670               return allocate_value (type);
10671
10672             switch (op)
10673               {
10674               default:          /* Should never happen.  */
10675                 error (_("unexpected attribute encountered"));
10676               case OP_ATR_FIRST:
10677                 return value_from_longest
10678                         (type, ada_array_bound (arg1, tem, 0));
10679               case OP_ATR_LAST:
10680                 return value_from_longest
10681                         (type, ada_array_bound (arg1, tem, 1));
10682               case OP_ATR_LENGTH:
10683                 return value_from_longest
10684                         (type, ada_array_length (arg1, tem));
10685               }
10686           }
10687         else if (discrete_type_p (type_arg))
10688           {
10689             struct type *range_type;
10690             const char *name = ada_type_name (type_arg);
10691
10692             range_type = NULL;
10693             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
10694               range_type = to_fixed_range_type (type_arg, NULL);
10695             if (range_type == NULL)
10696               range_type = type_arg;
10697             switch (op)
10698               {
10699               default:
10700                 error (_("unexpected attribute encountered"));
10701               case OP_ATR_FIRST:
10702                 return value_from_longest 
10703                   (range_type, ada_discrete_type_low_bound (range_type));
10704               case OP_ATR_LAST:
10705                 return value_from_longest
10706                   (range_type, ada_discrete_type_high_bound (range_type));
10707               case OP_ATR_LENGTH:
10708                 error (_("the 'length attribute applies only to array types"));
10709               }
10710           }
10711         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
10712           error (_("unimplemented type attribute"));
10713         else
10714           {
10715             LONGEST low, high;
10716
10717             if (ada_is_constrained_packed_array_type (type_arg))
10718               type_arg = decode_constrained_packed_array_type (type_arg);
10719
10720             if (op == OP_ATR_LENGTH)
10721               type = builtin_type (exp->gdbarch)->builtin_int;
10722             else
10723               {
10724                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10725                 if (type == NULL)
10726                   type = builtin_type (exp->gdbarch)->builtin_int;
10727               }
10728
10729             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10730               return allocate_value (type);
10731
10732             switch (op)
10733               {
10734               default:
10735                 error (_("unexpected attribute encountered"));
10736               case OP_ATR_FIRST:
10737                 low = ada_array_bound_from_type (type_arg, tem, 0);
10738                 return value_from_longest (type, low);
10739               case OP_ATR_LAST:
10740                 high = ada_array_bound_from_type (type_arg, tem, 1);
10741                 return value_from_longest (type, high);
10742               case OP_ATR_LENGTH:
10743                 low = ada_array_bound_from_type (type_arg, tem, 0);
10744                 high = ada_array_bound_from_type (type_arg, tem, 1);
10745                 return value_from_longest (type, high - low + 1);
10746               }
10747           }
10748       }
10749
10750     case OP_ATR_TAG:
10751       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10752       if (noside == EVAL_SKIP)
10753         goto nosideret;
10754
10755       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10756         return value_zero (ada_tag_type (arg1), not_lval);
10757
10758       return ada_value_tag (arg1);
10759
10760     case OP_ATR_MIN:
10761     case OP_ATR_MAX:
10762       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10763       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10764       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10765       if (noside == EVAL_SKIP)
10766         goto nosideret;
10767       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10768         return value_zero (value_type (arg1), not_lval);
10769       else
10770         {
10771           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10772           return value_binop (arg1, arg2,
10773                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
10774         }
10775
10776     case OP_ATR_MODULUS:
10777       {
10778         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
10779
10780         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10781         if (noside == EVAL_SKIP)
10782           goto nosideret;
10783
10784         if (!ada_is_modular_type (type_arg))
10785           error (_("'modulus must be applied to modular type"));
10786
10787         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
10788                                    ada_modulus (type_arg));
10789       }
10790
10791
10792     case OP_ATR_POS:
10793       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10794       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10795       if (noside == EVAL_SKIP)
10796         goto nosideret;
10797       type = builtin_type (exp->gdbarch)->builtin_int;
10798       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10799         return value_zero (type, not_lval);
10800       else
10801         return value_pos_atr (type, arg1);
10802
10803     case OP_ATR_SIZE:
10804       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10805       type = value_type (arg1);
10806
10807       /* If the argument is a reference, then dereference its type, since
10808          the user is really asking for the size of the actual object,
10809          not the size of the pointer.  */
10810       if (TYPE_CODE (type) == TYPE_CODE_REF)
10811         type = TYPE_TARGET_TYPE (type);
10812
10813       if (noside == EVAL_SKIP)
10814         goto nosideret;
10815       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10816         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
10817       else
10818         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
10819                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
10820
10821     case OP_ATR_VAL:
10822       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10823       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10824       type = exp->elts[pc + 2].type;
10825       if (noside == EVAL_SKIP)
10826         goto nosideret;
10827       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10828         return value_zero (type, not_lval);
10829       else
10830         return value_val_atr (type, arg1);
10831
10832     case BINOP_EXP:
10833       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10834       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10835       if (noside == EVAL_SKIP)
10836         goto nosideret;
10837       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10838         return value_zero (value_type (arg1), not_lval);
10839       else
10840         {
10841           /* For integer exponentiation operations,
10842              only promote the first argument.  */
10843           if (is_integral_type (value_type (arg2)))
10844             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10845           else
10846             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10847
10848           return value_binop (arg1, arg2, op);
10849         }
10850
10851     case UNOP_PLUS:
10852       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10853       if (noside == EVAL_SKIP)
10854         goto nosideret;
10855       else
10856         return arg1;
10857
10858     case UNOP_ABS:
10859       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10860       if (noside == EVAL_SKIP)
10861         goto nosideret;
10862       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10863       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
10864         return value_neg (arg1);
10865       else
10866         return arg1;
10867
10868     case UNOP_IND:
10869       preeval_pos = *pos;
10870       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10871       if (noside == EVAL_SKIP)
10872         goto nosideret;
10873       type = ada_check_typedef (value_type (arg1));
10874       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10875         {
10876           if (ada_is_array_descriptor_type (type))
10877             /* GDB allows dereferencing GNAT array descriptors.  */
10878             {
10879               struct type *arrType = ada_type_of_array (arg1, 0);
10880
10881               if (arrType == NULL)
10882                 error (_("Attempt to dereference null array pointer."));
10883               return value_at_lazy (arrType, 0);
10884             }
10885           else if (TYPE_CODE (type) == TYPE_CODE_PTR
10886                    || TYPE_CODE (type) == TYPE_CODE_REF
10887                    /* In C you can dereference an array to get the 1st elt.  */
10888                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
10889             {
10890             /* As mentioned in the OP_VAR_VALUE case, tagged types can
10891                only be determined by inspecting the object's tag.
10892                This means that we need to evaluate completely the
10893                expression in order to get its type.  */
10894
10895               if ((TYPE_CODE (type) == TYPE_CODE_REF
10896                    || TYPE_CODE (type) == TYPE_CODE_PTR)
10897                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
10898                 {
10899                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
10900                                           EVAL_NORMAL);
10901                   type = value_type (ada_value_ind (arg1));
10902                 }
10903               else
10904                 {
10905                   type = to_static_fixed_type
10906                     (ada_aligned_type
10907                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
10908                 }
10909               ada_ensure_varsize_limit (type);
10910               return value_zero (type, lval_memory);
10911             }
10912           else if (TYPE_CODE (type) == TYPE_CODE_INT)
10913             {
10914               /* GDB allows dereferencing an int.  */
10915               if (expect_type == NULL)
10916                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10917                                    lval_memory);
10918               else
10919                 {
10920                   expect_type = 
10921                     to_static_fixed_type (ada_aligned_type (expect_type));
10922                   return value_zero (expect_type, lval_memory);
10923                 }
10924             }
10925           else
10926             error (_("Attempt to take contents of a non-pointer value."));
10927         }
10928       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
10929       type = ada_check_typedef (value_type (arg1));
10930
10931       if (TYPE_CODE (type) == TYPE_CODE_INT)
10932           /* GDB allows dereferencing an int.  If we were given
10933              the expect_type, then use that as the target type.
10934              Otherwise, assume that the target type is an int.  */
10935         {
10936           if (expect_type != NULL)
10937             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
10938                                               arg1));
10939           else
10940             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
10941                                   (CORE_ADDR) value_as_address (arg1));
10942         }
10943
10944       if (ada_is_array_descriptor_type (type))
10945         /* GDB allows dereferencing GNAT array descriptors.  */
10946         return ada_coerce_to_simple_array (arg1);
10947       else
10948         return ada_value_ind (arg1);
10949
10950     case STRUCTOP_STRUCT:
10951       tem = longest_to_int (exp->elts[pc + 1].longconst);
10952       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
10953       preeval_pos = *pos;
10954       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10955       if (noside == EVAL_SKIP)
10956         goto nosideret;
10957       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10958         {
10959           struct type *type1 = value_type (arg1);
10960
10961           if (ada_is_tagged_type (type1, 1))
10962             {
10963               type = ada_lookup_struct_elt_type (type1,
10964                                                  &exp->elts[pc + 2].string,
10965                                                  1, 1, NULL);
10966
10967               /* If the field is not found, check if it exists in the
10968                  extension of this object's type. This means that we
10969                  need to evaluate completely the expression.  */
10970
10971               if (type == NULL)
10972                 {
10973                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
10974                                           EVAL_NORMAL);
10975                   arg1 = ada_value_struct_elt (arg1,
10976                                                &exp->elts[pc + 2].string,
10977                                                0);
10978                   arg1 = unwrap_value (arg1);
10979                   type = value_type (ada_to_fixed_value (arg1));
10980                 }
10981             }
10982           else
10983             type =
10984               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
10985                                           0, NULL);
10986
10987           return value_zero (ada_aligned_type (type), lval_memory);
10988         }
10989       else
10990         arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
10991         arg1 = unwrap_value (arg1);
10992         return ada_to_fixed_value (arg1);
10993
10994     case OP_TYPE:
10995       /* The value is not supposed to be used.  This is here to make it
10996          easier to accommodate expressions that contain types.  */
10997       (*pos) += 2;
10998       if (noside == EVAL_SKIP)
10999         goto nosideret;
11000       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11001         return allocate_value (exp->elts[pc + 1].type);
11002       else
11003         error (_("Attempt to use a type name as an expression"));
11004
11005     case OP_AGGREGATE:
11006     case OP_CHOICES:
11007     case OP_OTHERS:
11008     case OP_DISCRETE_RANGE:
11009     case OP_POSITIONAL:
11010     case OP_NAME:
11011       if (noside == EVAL_NORMAL)
11012         switch (op) 
11013           {
11014           case OP_NAME:
11015             error (_("Undefined name, ambiguous name, or renaming used in "
11016                      "component association: %s."), &exp->elts[pc+2].string);
11017           case OP_AGGREGATE:
11018             error (_("Aggregates only allowed on the right of an assignment"));
11019           default:
11020             internal_error (__FILE__, __LINE__,
11021                             _("aggregate apparently mangled"));
11022           }
11023
11024       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11025       *pos += oplen - 1;
11026       for (tem = 0; tem < nargs; tem += 1) 
11027         ada_evaluate_subexp (NULL, exp, pos, noside);
11028       goto nosideret;
11029     }
11030
11031 nosideret:
11032   return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
11033 }
11034 \f
11035
11036                                 /* Fixed point */
11037
11038 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11039    type name that encodes the 'small and 'delta information.
11040    Otherwise, return NULL.  */
11041
11042 static const char *
11043 fixed_type_info (struct type *type)
11044 {
11045   const char *name = ada_type_name (type);
11046   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11047
11048   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11049     {
11050       const char *tail = strstr (name, "___XF_");
11051
11052       if (tail == NULL)
11053         return NULL;
11054       else
11055         return tail + 5;
11056     }
11057   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11058     return fixed_type_info (TYPE_TARGET_TYPE (type));
11059   else
11060     return NULL;
11061 }
11062
11063 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11064
11065 int
11066 ada_is_fixed_point_type (struct type *type)
11067 {
11068   return fixed_type_info (type) != NULL;
11069 }
11070
11071 /* Return non-zero iff TYPE represents a System.Address type.  */
11072
11073 int
11074 ada_is_system_address_type (struct type *type)
11075 {
11076   return (TYPE_NAME (type)
11077           && strcmp (TYPE_NAME (type), "system__address") == 0);
11078 }
11079
11080 /* Assuming that TYPE is the representation of an Ada fixed-point
11081    type, return its delta, or -1 if the type is malformed and the
11082    delta cannot be determined.  */
11083
11084 DOUBLEST
11085 ada_delta (struct type *type)
11086 {
11087   const char *encoding = fixed_type_info (type);
11088   DOUBLEST num, den;
11089
11090   /* Strictly speaking, num and den are encoded as integer.  However,
11091      they may not fit into a long, and they will have to be converted
11092      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11093   if (sscanf (encoding, "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11094               &num, &den) < 2)
11095     return -1.0;
11096   else
11097     return num / den;
11098 }
11099
11100 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11101    factor ('SMALL value) associated with the type.  */
11102
11103 static DOUBLEST
11104 scaling_factor (struct type *type)
11105 {
11106   const char *encoding = fixed_type_info (type);
11107   DOUBLEST num0, den0, num1, den1;
11108   int n;
11109
11110   /* Strictly speaking, num's and den's are encoded as integer.  However,
11111      they may not fit into a long, and they will have to be converted
11112      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11113   n = sscanf (encoding,
11114               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT
11115               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11116               &num0, &den0, &num1, &den1);
11117
11118   if (n < 2)
11119     return 1.0;
11120   else if (n == 4)
11121     return num1 / den1;
11122   else
11123     return num0 / den0;
11124 }
11125
11126
11127 /* Assuming that X is the representation of a value of fixed-point
11128    type TYPE, return its floating-point equivalent.  */
11129
11130 DOUBLEST
11131 ada_fixed_to_float (struct type *type, LONGEST x)
11132 {
11133   return (DOUBLEST) x *scaling_factor (type);
11134 }
11135
11136 /* The representation of a fixed-point value of type TYPE
11137    corresponding to the value X.  */
11138
11139 LONGEST
11140 ada_float_to_fixed (struct type *type, DOUBLEST x)
11141 {
11142   return (LONGEST) (x / scaling_factor (type) + 0.5);
11143 }
11144
11145 \f
11146
11147                                 /* Range types */
11148
11149 /* Scan STR beginning at position K for a discriminant name, and
11150    return the value of that discriminant field of DVAL in *PX.  If
11151    PNEW_K is not null, put the position of the character beyond the
11152    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11153    not alter *PX and *PNEW_K if unsuccessful.  */
11154
11155 static int
11156 scan_discrim_bound (char *str, int k, struct value *dval, LONGEST * px,
11157                     int *pnew_k)
11158 {
11159   static char *bound_buffer = NULL;
11160   static size_t bound_buffer_len = 0;
11161   char *bound;
11162   char *pend;
11163   struct value *bound_val;
11164
11165   if (dval == NULL || str == NULL || str[k] == '\0')
11166     return 0;
11167
11168   pend = strstr (str + k, "__");
11169   if (pend == NULL)
11170     {
11171       bound = str + k;
11172       k += strlen (bound);
11173     }
11174   else
11175     {
11176       GROW_VECT (bound_buffer, bound_buffer_len, pend - (str + k) + 1);
11177       bound = bound_buffer;
11178       strncpy (bound_buffer, str + k, pend - (str + k));
11179       bound[pend - (str + k)] = '\0';
11180       k = pend - str;
11181     }
11182
11183   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11184   if (bound_val == NULL)
11185     return 0;
11186
11187   *px = value_as_long (bound_val);
11188   if (pnew_k != NULL)
11189     *pnew_k = k;
11190   return 1;
11191 }
11192
11193 /* Value of variable named NAME in the current environment.  If
11194    no such variable found, then if ERR_MSG is null, returns 0, and
11195    otherwise causes an error with message ERR_MSG.  */
11196
11197 static struct value *
11198 get_var_value (char *name, char *err_msg)
11199 {
11200   struct ada_symbol_info *syms;
11201   int nsyms;
11202
11203   nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN,
11204                                   &syms);
11205
11206   if (nsyms != 1)
11207     {
11208       if (err_msg == NULL)
11209         return 0;
11210       else
11211         error (("%s"), err_msg);
11212     }
11213
11214   return value_of_variable (syms[0].sym, syms[0].block);
11215 }
11216
11217 /* Value of integer variable named NAME in the current environment.  If
11218    no such variable found, returns 0, and sets *FLAG to 0.  If
11219    successful, sets *FLAG to 1.  */
11220
11221 LONGEST
11222 get_int_var_value (char *name, int *flag)
11223 {
11224   struct value *var_val = get_var_value (name, 0);
11225
11226   if (var_val == 0)
11227     {
11228       if (flag != NULL)
11229         *flag = 0;
11230       return 0;
11231     }
11232   else
11233     {
11234       if (flag != NULL)
11235         *flag = 1;
11236       return value_as_long (var_val);
11237     }
11238 }
11239
11240
11241 /* Return a range type whose base type is that of the range type named
11242    NAME in the current environment, and whose bounds are calculated
11243    from NAME according to the GNAT range encoding conventions.
11244    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11245    corresponding range type from debug information; fall back to using it
11246    if symbol lookup fails.  If a new type must be created, allocate it
11247    like ORIG_TYPE was.  The bounds information, in general, is encoded
11248    in NAME, the base type given in the named range type.  */
11249
11250 static struct type *
11251 to_fixed_range_type (struct type *raw_type, struct value *dval)
11252 {
11253   const char *name;
11254   struct type *base_type;
11255   char *subtype_info;
11256
11257   gdb_assert (raw_type != NULL);
11258   gdb_assert (TYPE_NAME (raw_type) != NULL);
11259
11260   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11261     base_type = TYPE_TARGET_TYPE (raw_type);
11262   else
11263     base_type = raw_type;
11264
11265   name = TYPE_NAME (raw_type);
11266   subtype_info = strstr (name, "___XD");
11267   if (subtype_info == NULL)
11268     {
11269       LONGEST L = ada_discrete_type_low_bound (raw_type);
11270       LONGEST U = ada_discrete_type_high_bound (raw_type);
11271
11272       if (L < INT_MIN || U > INT_MAX)
11273         return raw_type;
11274       else
11275         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11276                                          L, U);
11277     }
11278   else
11279     {
11280       static char *name_buf = NULL;
11281       static size_t name_len = 0;
11282       int prefix_len = subtype_info - name;
11283       LONGEST L, U;
11284       struct type *type;
11285       char *bounds_str;
11286       int n;
11287
11288       GROW_VECT (name_buf, name_len, prefix_len + 5);
11289       strncpy (name_buf, name, prefix_len);
11290       name_buf[prefix_len] = '\0';
11291
11292       subtype_info += 5;
11293       bounds_str = strchr (subtype_info, '_');
11294       n = 1;
11295
11296       if (*subtype_info == 'L')
11297         {
11298           if (!ada_scan_number (bounds_str, n, &L, &n)
11299               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11300             return raw_type;
11301           if (bounds_str[n] == '_')
11302             n += 2;
11303           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11304             n += 1;
11305           subtype_info += 1;
11306         }
11307       else
11308         {
11309           int ok;
11310
11311           strcpy (name_buf + prefix_len, "___L");
11312           L = get_int_var_value (name_buf, &ok);
11313           if (!ok)
11314             {
11315               lim_warning (_("Unknown lower bound, using 1."));
11316               L = 1;
11317             }
11318         }
11319
11320       if (*subtype_info == 'U')
11321         {
11322           if (!ada_scan_number (bounds_str, n, &U, &n)
11323               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11324             return raw_type;
11325         }
11326       else
11327         {
11328           int ok;
11329
11330           strcpy (name_buf + prefix_len, "___U");
11331           U = get_int_var_value (name_buf, &ok);
11332           if (!ok)
11333             {
11334               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11335               U = L;
11336             }
11337         }
11338
11339       type = create_static_range_type (alloc_type_copy (raw_type),
11340                                        base_type, L, U);
11341       TYPE_NAME (type) = name;
11342       return type;
11343     }
11344 }
11345
11346 /* True iff NAME is the name of a range type.  */
11347
11348 int
11349 ada_is_range_type_name (const char *name)
11350 {
11351   return (name != NULL && strstr (name, "___XD"));
11352 }
11353 \f
11354
11355                                 /* Modular types */
11356
11357 /* True iff TYPE is an Ada modular type.  */
11358
11359 int
11360 ada_is_modular_type (struct type *type)
11361 {
11362   struct type *subranged_type = get_base_type (type);
11363
11364   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11365           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11366           && TYPE_UNSIGNED (subranged_type));
11367 }
11368
11369 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11370
11371 ULONGEST
11372 ada_modulus (struct type *type)
11373 {
11374   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11375 }
11376 \f
11377
11378 /* Ada exception catchpoint support:
11379    ---------------------------------
11380
11381    We support 3 kinds of exception catchpoints:
11382      . catchpoints on Ada exceptions
11383      . catchpoints on unhandled Ada exceptions
11384      . catchpoints on failed assertions
11385
11386    Exceptions raised during failed assertions, or unhandled exceptions
11387    could perfectly be caught with the general catchpoint on Ada exceptions.
11388    However, we can easily differentiate these two special cases, and having
11389    the option to distinguish these two cases from the rest can be useful
11390    to zero-in on certain situations.
11391
11392    Exception catchpoints are a specialized form of breakpoint,
11393    since they rely on inserting breakpoints inside known routines
11394    of the GNAT runtime.  The implementation therefore uses a standard
11395    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11396    of breakpoint_ops.
11397
11398    Support in the runtime for exception catchpoints have been changed
11399    a few times already, and these changes affect the implementation
11400    of these catchpoints.  In order to be able to support several
11401    variants of the runtime, we use a sniffer that will determine
11402    the runtime variant used by the program being debugged.  */
11403
11404 /* Ada's standard exceptions.
11405
11406    The Ada 83 standard also defined Numeric_Error.  But there so many
11407    situations where it was unclear from the Ada 83 Reference Manual
11408    (RM) whether Constraint_Error or Numeric_Error should be raised,
11409    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11410    Interpretation saying that anytime the RM says that Numeric_Error
11411    should be raised, the implementation may raise Constraint_Error.
11412    Ada 95 went one step further and pretty much removed Numeric_Error
11413    from the list of standard exceptions (it made it a renaming of
11414    Constraint_Error, to help preserve compatibility when compiling
11415    an Ada83 compiler). As such, we do not include Numeric_Error from
11416    this list of standard exceptions.  */
11417
11418 static char *standard_exc[] = {
11419   "constraint_error",
11420   "program_error",
11421   "storage_error",
11422   "tasking_error"
11423 };
11424
11425 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11426
11427 /* A structure that describes how to support exception catchpoints
11428    for a given executable.  */
11429
11430 struct exception_support_info
11431 {
11432    /* The name of the symbol to break on in order to insert
11433       a catchpoint on exceptions.  */
11434    const char *catch_exception_sym;
11435
11436    /* The name of the symbol to break on in order to insert
11437       a catchpoint on unhandled exceptions.  */
11438    const char *catch_exception_unhandled_sym;
11439
11440    /* The name of the symbol to break on in order to insert
11441       a catchpoint on failed assertions.  */
11442    const char *catch_assert_sym;
11443
11444    /* Assuming that the inferior just triggered an unhandled exception
11445       catchpoint, this function is responsible for returning the address
11446       in inferior memory where the name of that exception is stored.
11447       Return zero if the address could not be computed.  */
11448    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11449 };
11450
11451 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11452 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11453
11454 /* The following exception support info structure describes how to
11455    implement exception catchpoints with the latest version of the
11456    Ada runtime (as of 2007-03-06).  */
11457
11458 static const struct exception_support_info default_exception_support_info =
11459 {
11460   "__gnat_debug_raise_exception", /* catch_exception_sym */
11461   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11462   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11463   ada_unhandled_exception_name_addr
11464 };
11465
11466 /* The following exception support info structure describes how to
11467    implement exception catchpoints with a slightly older version
11468    of the Ada runtime.  */
11469
11470 static const struct exception_support_info exception_support_info_fallback =
11471 {
11472   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11473   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11474   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11475   ada_unhandled_exception_name_addr_from_raise
11476 };
11477
11478 /* Return nonzero if we can detect the exception support routines
11479    described in EINFO.
11480
11481    This function errors out if an abnormal situation is detected
11482    (for instance, if we find the exception support routines, but
11483    that support is found to be incomplete).  */
11484
11485 static int
11486 ada_has_this_exception_support (const struct exception_support_info *einfo)
11487 {
11488   struct symbol *sym;
11489
11490   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11491      that should be compiled with debugging information.  As a result, we
11492      expect to find that symbol in the symtabs.  */
11493
11494   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11495   if (sym == NULL)
11496     {
11497       /* Perhaps we did not find our symbol because the Ada runtime was
11498          compiled without debugging info, or simply stripped of it.
11499          It happens on some GNU/Linux distributions for instance, where
11500          users have to install a separate debug package in order to get
11501          the runtime's debugging info.  In that situation, let the user
11502          know why we cannot insert an Ada exception catchpoint.
11503
11504          Note: Just for the purpose of inserting our Ada exception
11505          catchpoint, we could rely purely on the associated minimal symbol.
11506          But we would be operating in degraded mode anyway, since we are
11507          still lacking the debugging info needed later on to extract
11508          the name of the exception being raised (this name is printed in
11509          the catchpoint message, and is also used when trying to catch
11510          a specific exception).  We do not handle this case for now.  */
11511       struct bound_minimal_symbol msym
11512         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11513
11514       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11515         error (_("Your Ada runtime appears to be missing some debugging "
11516                  "information.\nCannot insert Ada exception catchpoint "
11517                  "in this configuration."));
11518
11519       return 0;
11520     }
11521
11522   /* Make sure that the symbol we found corresponds to a function.  */
11523
11524   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11525     error (_("Symbol \"%s\" is not a function (class = %d)"),
11526            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
11527
11528   return 1;
11529 }
11530
11531 /* Inspect the Ada runtime and determine which exception info structure
11532    should be used to provide support for exception catchpoints.
11533
11534    This function will always set the per-inferior exception_info,
11535    or raise an error.  */
11536
11537 static void
11538 ada_exception_support_info_sniffer (void)
11539 {
11540   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11541
11542   /* If the exception info is already known, then no need to recompute it.  */
11543   if (data->exception_info != NULL)
11544     return;
11545
11546   /* Check the latest (default) exception support info.  */
11547   if (ada_has_this_exception_support (&default_exception_support_info))
11548     {
11549       data->exception_info = &default_exception_support_info;
11550       return;
11551     }
11552
11553   /* Try our fallback exception suport info.  */
11554   if (ada_has_this_exception_support (&exception_support_info_fallback))
11555     {
11556       data->exception_info = &exception_support_info_fallback;
11557       return;
11558     }
11559
11560   /* Sometimes, it is normal for us to not be able to find the routine
11561      we are looking for.  This happens when the program is linked with
11562      the shared version of the GNAT runtime, and the program has not been
11563      started yet.  Inform the user of these two possible causes if
11564      applicable.  */
11565
11566   if (ada_update_initial_language (language_unknown) != language_ada)
11567     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11568
11569   /* If the symbol does not exist, then check that the program is
11570      already started, to make sure that shared libraries have been
11571      loaded.  If it is not started, this may mean that the symbol is
11572      in a shared library.  */
11573
11574   if (ptid_get_pid (inferior_ptid) == 0)
11575     error (_("Unable to insert catchpoint. Try to start the program first."));
11576
11577   /* At this point, we know that we are debugging an Ada program and
11578      that the inferior has been started, but we still are not able to
11579      find the run-time symbols.  That can mean that we are in
11580      configurable run time mode, or that a-except as been optimized
11581      out by the linker...  In any case, at this point it is not worth
11582      supporting this feature.  */
11583
11584   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11585 }
11586
11587 /* True iff FRAME is very likely to be that of a function that is
11588    part of the runtime system.  This is all very heuristic, but is
11589    intended to be used as advice as to what frames are uninteresting
11590    to most users.  */
11591
11592 static int
11593 is_known_support_routine (struct frame_info *frame)
11594 {
11595   struct symtab_and_line sal;
11596   char *func_name;
11597   enum language func_lang;
11598   int i;
11599   const char *fullname;
11600
11601   /* If this code does not have any debugging information (no symtab),
11602      This cannot be any user code.  */
11603
11604   find_frame_sal (frame, &sal);
11605   if (sal.symtab == NULL)
11606     return 1;
11607
11608   /* If there is a symtab, but the associated source file cannot be
11609      located, then assume this is not user code:  Selecting a frame
11610      for which we cannot display the code would not be very helpful
11611      for the user.  This should also take care of case such as VxWorks
11612      where the kernel has some debugging info provided for a few units.  */
11613
11614   fullname = symtab_to_fullname (sal.symtab);
11615   if (access (fullname, R_OK) != 0)
11616     return 1;
11617
11618   /* Check the unit filename againt the Ada runtime file naming.
11619      We also check the name of the objfile against the name of some
11620      known system libraries that sometimes come with debugging info
11621      too.  */
11622
11623   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11624     {
11625       re_comp (known_runtime_file_name_patterns[i]);
11626       if (re_exec (lbasename (sal.symtab->filename)))
11627         return 1;
11628       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11629           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11630         return 1;
11631     }
11632
11633   /* Check whether the function is a GNAT-generated entity.  */
11634
11635   find_frame_funname (frame, &func_name, &func_lang, NULL);
11636   if (func_name == NULL)
11637     return 1;
11638
11639   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11640     {
11641       re_comp (known_auxiliary_function_name_patterns[i]);
11642       if (re_exec (func_name))
11643         {
11644           xfree (func_name);
11645           return 1;
11646         }
11647     }
11648
11649   xfree (func_name);
11650   return 0;
11651 }
11652
11653 /* Find the first frame that contains debugging information and that is not
11654    part of the Ada run-time, starting from FI and moving upward.  */
11655
11656 void
11657 ada_find_printable_frame (struct frame_info *fi)
11658 {
11659   for (; fi != NULL; fi = get_prev_frame (fi))
11660     {
11661       if (!is_known_support_routine (fi))
11662         {
11663           select_frame (fi);
11664           break;
11665         }
11666     }
11667
11668 }
11669
11670 /* Assuming that the inferior just triggered an unhandled exception
11671    catchpoint, return the address in inferior memory where the name
11672    of the exception is stored.
11673    
11674    Return zero if the address could not be computed.  */
11675
11676 static CORE_ADDR
11677 ada_unhandled_exception_name_addr (void)
11678 {
11679   return parse_and_eval_address ("e.full_name");
11680 }
11681
11682 /* Same as ada_unhandled_exception_name_addr, except that this function
11683    should be used when the inferior uses an older version of the runtime,
11684    where the exception name needs to be extracted from a specific frame
11685    several frames up in the callstack.  */
11686
11687 static CORE_ADDR
11688 ada_unhandled_exception_name_addr_from_raise (void)
11689 {
11690   int frame_level;
11691   struct frame_info *fi;
11692   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11693   struct cleanup *old_chain;
11694
11695   /* To determine the name of this exception, we need to select
11696      the frame corresponding to RAISE_SYM_NAME.  This frame is
11697      at least 3 levels up, so we simply skip the first 3 frames
11698      without checking the name of their associated function.  */
11699   fi = get_current_frame ();
11700   for (frame_level = 0; frame_level < 3; frame_level += 1)
11701     if (fi != NULL)
11702       fi = get_prev_frame (fi); 
11703
11704   old_chain = make_cleanup (null_cleanup, NULL);
11705   while (fi != NULL)
11706     {
11707       char *func_name;
11708       enum language func_lang;
11709
11710       find_frame_funname (fi, &func_name, &func_lang, NULL);
11711       if (func_name != NULL)
11712         {
11713           make_cleanup (xfree, func_name);
11714
11715           if (strcmp (func_name,
11716                       data->exception_info->catch_exception_sym) == 0)
11717             break; /* We found the frame we were looking for...  */
11718           fi = get_prev_frame (fi);
11719         }
11720     }
11721   do_cleanups (old_chain);
11722
11723   if (fi == NULL)
11724     return 0;
11725
11726   select_frame (fi);
11727   return parse_and_eval_address ("id.full_name");
11728 }
11729
11730 /* Assuming the inferior just triggered an Ada exception catchpoint
11731    (of any type), return the address in inferior memory where the name
11732    of the exception is stored, if applicable.
11733
11734    Return zero if the address could not be computed, or if not relevant.  */
11735
11736 static CORE_ADDR
11737 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11738                            struct breakpoint *b)
11739 {
11740   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11741
11742   switch (ex)
11743     {
11744       case ada_catch_exception:
11745         return (parse_and_eval_address ("e.full_name"));
11746         break;
11747
11748       case ada_catch_exception_unhandled:
11749         return data->exception_info->unhandled_exception_name_addr ();
11750         break;
11751       
11752       case ada_catch_assert:
11753         return 0;  /* Exception name is not relevant in this case.  */
11754         break;
11755
11756       default:
11757         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11758         break;
11759     }
11760
11761   return 0; /* Should never be reached.  */
11762 }
11763
11764 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
11765    any error that ada_exception_name_addr_1 might cause to be thrown.
11766    When an error is intercepted, a warning with the error message is printed,
11767    and zero is returned.  */
11768
11769 static CORE_ADDR
11770 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
11771                          struct breakpoint *b)
11772 {
11773   volatile struct gdb_exception e;
11774   CORE_ADDR result = 0;
11775
11776   TRY_CATCH (e, RETURN_MASK_ERROR)
11777     {
11778       result = ada_exception_name_addr_1 (ex, b);
11779     }
11780
11781   if (e.reason < 0)
11782     {
11783       warning (_("failed to get exception name: %s"), e.message);
11784       return 0;
11785     }
11786
11787   return result;
11788 }
11789
11790 static char *ada_exception_catchpoint_cond_string (const char *excep_string);
11791
11792 /* Ada catchpoints.
11793
11794    In the case of catchpoints on Ada exceptions, the catchpoint will
11795    stop the target on every exception the program throws.  When a user
11796    specifies the name of a specific exception, we translate this
11797    request into a condition expression (in text form), and then parse
11798    it into an expression stored in each of the catchpoint's locations.
11799    We then use this condition to check whether the exception that was
11800    raised is the one the user is interested in.  If not, then the
11801    target is resumed again.  We store the name of the requested
11802    exception, in order to be able to re-set the condition expression
11803    when symbols change.  */
11804
11805 /* An instance of this type is used to represent an Ada catchpoint
11806    breakpoint location.  It includes a "struct bp_location" as a kind
11807    of base class; users downcast to "struct bp_location *" when
11808    needed.  */
11809
11810 struct ada_catchpoint_location
11811 {
11812   /* The base class.  */
11813   struct bp_location base;
11814
11815   /* The condition that checks whether the exception that was raised
11816      is the specific exception the user specified on catchpoint
11817      creation.  */
11818   struct expression *excep_cond_expr;
11819 };
11820
11821 /* Implement the DTOR method in the bp_location_ops structure for all
11822    Ada exception catchpoint kinds.  */
11823
11824 static void
11825 ada_catchpoint_location_dtor (struct bp_location *bl)
11826 {
11827   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
11828
11829   xfree (al->excep_cond_expr);
11830 }
11831
11832 /* The vtable to be used in Ada catchpoint locations.  */
11833
11834 static const struct bp_location_ops ada_catchpoint_location_ops =
11835 {
11836   ada_catchpoint_location_dtor
11837 };
11838
11839 /* An instance of this type is used to represent an Ada catchpoint.
11840    It includes a "struct breakpoint" as a kind of base class; users
11841    downcast to "struct breakpoint *" when needed.  */
11842
11843 struct ada_catchpoint
11844 {
11845   /* The base class.  */
11846   struct breakpoint base;
11847
11848   /* The name of the specific exception the user specified.  */
11849   char *excep_string;
11850 };
11851
11852 /* Parse the exception condition string in the context of each of the
11853    catchpoint's locations, and store them for later evaluation.  */
11854
11855 static void
11856 create_excep_cond_exprs (struct ada_catchpoint *c)
11857 {
11858   struct cleanup *old_chain;
11859   struct bp_location *bl;
11860   char *cond_string;
11861
11862   /* Nothing to do if there's no specific exception to catch.  */
11863   if (c->excep_string == NULL)
11864     return;
11865
11866   /* Same if there are no locations... */
11867   if (c->base.loc == NULL)
11868     return;
11869
11870   /* Compute the condition expression in text form, from the specific
11871      expection we want to catch.  */
11872   cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
11873   old_chain = make_cleanup (xfree, cond_string);
11874
11875   /* Iterate over all the catchpoint's locations, and parse an
11876      expression for each.  */
11877   for (bl = c->base.loc; bl != NULL; bl = bl->next)
11878     {
11879       struct ada_catchpoint_location *ada_loc
11880         = (struct ada_catchpoint_location *) bl;
11881       struct expression *exp = NULL;
11882
11883       if (!bl->shlib_disabled)
11884         {
11885           volatile struct gdb_exception e;
11886           const char *s;
11887
11888           s = cond_string;
11889           TRY_CATCH (e, RETURN_MASK_ERROR)
11890             {
11891               exp = parse_exp_1 (&s, bl->address,
11892                                  block_for_pc (bl->address), 0);
11893             }
11894           if (e.reason < 0)
11895             {
11896               warning (_("failed to reevaluate internal exception condition "
11897                          "for catchpoint %d: %s"),
11898                        c->base.number, e.message);
11899               /* There is a bug in GCC on sparc-solaris when building with
11900                  optimization which causes EXP to change unexpectedly
11901                  (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56982).
11902                  The problem should be fixed starting with GCC 4.9.
11903                  In the meantime, work around it by forcing EXP back
11904                  to NULL.  */
11905               exp = NULL;
11906             }
11907         }
11908
11909       ada_loc->excep_cond_expr = exp;
11910     }
11911
11912   do_cleanups (old_chain);
11913 }
11914
11915 /* Implement the DTOR method in the breakpoint_ops structure for all
11916    exception catchpoint kinds.  */
11917
11918 static void
11919 dtor_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
11920 {
11921   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11922
11923   xfree (c->excep_string);
11924
11925   bkpt_breakpoint_ops.dtor (b);
11926 }
11927
11928 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
11929    structure for all exception catchpoint kinds.  */
11930
11931 static struct bp_location *
11932 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
11933                              struct breakpoint *self)
11934 {
11935   struct ada_catchpoint_location *loc;
11936
11937   loc = XNEW (struct ada_catchpoint_location);
11938   init_bp_location (&loc->base, &ada_catchpoint_location_ops, self);
11939   loc->excep_cond_expr = NULL;
11940   return &loc->base;
11941 }
11942
11943 /* Implement the RE_SET method in the breakpoint_ops structure for all
11944    exception catchpoint kinds.  */
11945
11946 static void
11947 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
11948 {
11949   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11950
11951   /* Call the base class's method.  This updates the catchpoint's
11952      locations.  */
11953   bkpt_breakpoint_ops.re_set (b);
11954
11955   /* Reparse the exception conditional expressions.  One for each
11956      location.  */
11957   create_excep_cond_exprs (c);
11958 }
11959
11960 /* Returns true if we should stop for this breakpoint hit.  If the
11961    user specified a specific exception, we only want to cause a stop
11962    if the program thrown that exception.  */
11963
11964 static int
11965 should_stop_exception (const struct bp_location *bl)
11966 {
11967   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
11968   const struct ada_catchpoint_location *ada_loc
11969     = (const struct ada_catchpoint_location *) bl;
11970   volatile struct gdb_exception ex;
11971   int stop;
11972
11973   /* With no specific exception, should always stop.  */
11974   if (c->excep_string == NULL)
11975     return 1;
11976
11977   if (ada_loc->excep_cond_expr == NULL)
11978     {
11979       /* We will have a NULL expression if back when we were creating
11980          the expressions, this location's had failed to parse.  */
11981       return 1;
11982     }
11983
11984   stop = 1;
11985   TRY_CATCH (ex, RETURN_MASK_ALL)
11986     {
11987       struct value *mark;
11988
11989       mark = value_mark ();
11990       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr));
11991       value_free_to_mark (mark);
11992     }
11993   if (ex.reason < 0)
11994     exception_fprintf (gdb_stderr, ex,
11995                        _("Error in testing exception condition:\n"));
11996   return stop;
11997 }
11998
11999 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12000    for all exception catchpoint kinds.  */
12001
12002 static void
12003 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12004 {
12005   bs->stop = should_stop_exception (bs->bp_location_at);
12006 }
12007
12008 /* Implement the PRINT_IT method in the breakpoint_ops structure
12009    for all exception catchpoint kinds.  */
12010
12011 static enum print_stop_action
12012 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12013 {
12014   struct ui_out *uiout = current_uiout;
12015   struct breakpoint *b = bs->breakpoint_at;
12016
12017   annotate_catchpoint (b->number);
12018
12019   if (ui_out_is_mi_like_p (uiout))
12020     {
12021       ui_out_field_string (uiout, "reason",
12022                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12023       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12024     }
12025
12026   ui_out_text (uiout,
12027                b->disposition == disp_del ? "\nTemporary catchpoint "
12028                                           : "\nCatchpoint ");
12029   ui_out_field_int (uiout, "bkptno", b->number);
12030   ui_out_text (uiout, ", ");
12031
12032   switch (ex)
12033     {
12034       case ada_catch_exception:
12035       case ada_catch_exception_unhandled:
12036         {
12037           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12038           char exception_name[256];
12039
12040           if (addr != 0)
12041             {
12042               read_memory (addr, (gdb_byte *) exception_name,
12043                            sizeof (exception_name) - 1);
12044               exception_name [sizeof (exception_name) - 1] = '\0';
12045             }
12046           else
12047             {
12048               /* For some reason, we were unable to read the exception
12049                  name.  This could happen if the Runtime was compiled
12050                  without debugging info, for instance.  In that case,
12051                  just replace the exception name by the generic string
12052                  "exception" - it will read as "an exception" in the
12053                  notification we are about to print.  */
12054               memcpy (exception_name, "exception", sizeof ("exception"));
12055             }
12056           /* In the case of unhandled exception breakpoints, we print
12057              the exception name as "unhandled EXCEPTION_NAME", to make
12058              it clearer to the user which kind of catchpoint just got
12059              hit.  We used ui_out_text to make sure that this extra
12060              info does not pollute the exception name in the MI case.  */
12061           if (ex == ada_catch_exception_unhandled)
12062             ui_out_text (uiout, "unhandled ");
12063           ui_out_field_string (uiout, "exception-name", exception_name);
12064         }
12065         break;
12066       case ada_catch_assert:
12067         /* In this case, the name of the exception is not really
12068            important.  Just print "failed assertion" to make it clearer
12069            that his program just hit an assertion-failure catchpoint.
12070            We used ui_out_text because this info does not belong in
12071            the MI output.  */
12072         ui_out_text (uiout, "failed assertion");
12073         break;
12074     }
12075   ui_out_text (uiout, " at ");
12076   ada_find_printable_frame (get_current_frame ());
12077
12078   return PRINT_SRC_AND_LOC;
12079 }
12080
12081 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12082    for all exception catchpoint kinds.  */
12083
12084 static void
12085 print_one_exception (enum ada_exception_catchpoint_kind ex,
12086                      struct breakpoint *b, struct bp_location **last_loc)
12087
12088   struct ui_out *uiout = current_uiout;
12089   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12090   struct value_print_options opts;
12091
12092   get_user_print_options (&opts);
12093   if (opts.addressprint)
12094     {
12095       annotate_field (4);
12096       ui_out_field_core_addr (uiout, "addr", b->loc->gdbarch, b->loc->address);
12097     }
12098
12099   annotate_field (5);
12100   *last_loc = b->loc;
12101   switch (ex)
12102     {
12103       case ada_catch_exception:
12104         if (c->excep_string != NULL)
12105           {
12106             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12107
12108             ui_out_field_string (uiout, "what", msg);
12109             xfree (msg);
12110           }
12111         else
12112           ui_out_field_string (uiout, "what", "all Ada exceptions");
12113         
12114         break;
12115
12116       case ada_catch_exception_unhandled:
12117         ui_out_field_string (uiout, "what", "unhandled Ada exceptions");
12118         break;
12119       
12120       case ada_catch_assert:
12121         ui_out_field_string (uiout, "what", "failed Ada assertions");
12122         break;
12123
12124       default:
12125         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12126         break;
12127     }
12128 }
12129
12130 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12131    for all exception catchpoint kinds.  */
12132
12133 static void
12134 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12135                          struct breakpoint *b)
12136 {
12137   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12138   struct ui_out *uiout = current_uiout;
12139
12140   ui_out_text (uiout, b->disposition == disp_del ? _("Temporary catchpoint ")
12141                                                  : _("Catchpoint "));
12142   ui_out_field_int (uiout, "bkptno", b->number);
12143   ui_out_text (uiout, ": ");
12144
12145   switch (ex)
12146     {
12147       case ada_catch_exception:
12148         if (c->excep_string != NULL)
12149           {
12150             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12151             struct cleanup *old_chain = make_cleanup (xfree, info);
12152
12153             ui_out_text (uiout, info);
12154             do_cleanups (old_chain);
12155           }
12156         else
12157           ui_out_text (uiout, _("all Ada exceptions"));
12158         break;
12159
12160       case ada_catch_exception_unhandled:
12161         ui_out_text (uiout, _("unhandled Ada exceptions"));
12162         break;
12163       
12164       case ada_catch_assert:
12165         ui_out_text (uiout, _("failed Ada assertions"));
12166         break;
12167
12168       default:
12169         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12170         break;
12171     }
12172 }
12173
12174 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12175    for all exception catchpoint kinds.  */
12176
12177 static void
12178 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12179                           struct breakpoint *b, struct ui_file *fp)
12180 {
12181   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12182
12183   switch (ex)
12184     {
12185       case ada_catch_exception:
12186         fprintf_filtered (fp, "catch exception");
12187         if (c->excep_string != NULL)
12188           fprintf_filtered (fp, " %s", c->excep_string);
12189         break;
12190
12191       case ada_catch_exception_unhandled:
12192         fprintf_filtered (fp, "catch exception unhandled");
12193         break;
12194
12195       case ada_catch_assert:
12196         fprintf_filtered (fp, "catch assert");
12197         break;
12198
12199       default:
12200         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12201     }
12202   print_recreate_thread (b, fp);
12203 }
12204
12205 /* Virtual table for "catch exception" breakpoints.  */
12206
12207 static void
12208 dtor_catch_exception (struct breakpoint *b)
12209 {
12210   dtor_exception (ada_catch_exception, b);
12211 }
12212
12213 static struct bp_location *
12214 allocate_location_catch_exception (struct breakpoint *self)
12215 {
12216   return allocate_location_exception (ada_catch_exception, self);
12217 }
12218
12219 static void
12220 re_set_catch_exception (struct breakpoint *b)
12221 {
12222   re_set_exception (ada_catch_exception, b);
12223 }
12224
12225 static void
12226 check_status_catch_exception (bpstat bs)
12227 {
12228   check_status_exception (ada_catch_exception, bs);
12229 }
12230
12231 static enum print_stop_action
12232 print_it_catch_exception (bpstat bs)
12233 {
12234   return print_it_exception (ada_catch_exception, bs);
12235 }
12236
12237 static void
12238 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12239 {
12240   print_one_exception (ada_catch_exception, b, last_loc);
12241 }
12242
12243 static void
12244 print_mention_catch_exception (struct breakpoint *b)
12245 {
12246   print_mention_exception (ada_catch_exception, b);
12247 }
12248
12249 static void
12250 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12251 {
12252   print_recreate_exception (ada_catch_exception, b, fp);
12253 }
12254
12255 static struct breakpoint_ops catch_exception_breakpoint_ops;
12256
12257 /* Virtual table for "catch exception unhandled" breakpoints.  */
12258
12259 static void
12260 dtor_catch_exception_unhandled (struct breakpoint *b)
12261 {
12262   dtor_exception (ada_catch_exception_unhandled, b);
12263 }
12264
12265 static struct bp_location *
12266 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12267 {
12268   return allocate_location_exception (ada_catch_exception_unhandled, self);
12269 }
12270
12271 static void
12272 re_set_catch_exception_unhandled (struct breakpoint *b)
12273 {
12274   re_set_exception (ada_catch_exception_unhandled, b);
12275 }
12276
12277 static void
12278 check_status_catch_exception_unhandled (bpstat bs)
12279 {
12280   check_status_exception (ada_catch_exception_unhandled, bs);
12281 }
12282
12283 static enum print_stop_action
12284 print_it_catch_exception_unhandled (bpstat bs)
12285 {
12286   return print_it_exception (ada_catch_exception_unhandled, bs);
12287 }
12288
12289 static void
12290 print_one_catch_exception_unhandled (struct breakpoint *b,
12291                                      struct bp_location **last_loc)
12292 {
12293   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12294 }
12295
12296 static void
12297 print_mention_catch_exception_unhandled (struct breakpoint *b)
12298 {
12299   print_mention_exception (ada_catch_exception_unhandled, b);
12300 }
12301
12302 static void
12303 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12304                                           struct ui_file *fp)
12305 {
12306   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12307 }
12308
12309 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12310
12311 /* Virtual table for "catch assert" breakpoints.  */
12312
12313 static void
12314 dtor_catch_assert (struct breakpoint *b)
12315 {
12316   dtor_exception (ada_catch_assert, b);
12317 }
12318
12319 static struct bp_location *
12320 allocate_location_catch_assert (struct breakpoint *self)
12321 {
12322   return allocate_location_exception (ada_catch_assert, self);
12323 }
12324
12325 static void
12326 re_set_catch_assert (struct breakpoint *b)
12327 {
12328   re_set_exception (ada_catch_assert, b);
12329 }
12330
12331 static void
12332 check_status_catch_assert (bpstat bs)
12333 {
12334   check_status_exception (ada_catch_assert, bs);
12335 }
12336
12337 static enum print_stop_action
12338 print_it_catch_assert (bpstat bs)
12339 {
12340   return print_it_exception (ada_catch_assert, bs);
12341 }
12342
12343 static void
12344 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12345 {
12346   print_one_exception (ada_catch_assert, b, last_loc);
12347 }
12348
12349 static void
12350 print_mention_catch_assert (struct breakpoint *b)
12351 {
12352   print_mention_exception (ada_catch_assert, b);
12353 }
12354
12355 static void
12356 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12357 {
12358   print_recreate_exception (ada_catch_assert, b, fp);
12359 }
12360
12361 static struct breakpoint_ops catch_assert_breakpoint_ops;
12362
12363 /* Return a newly allocated copy of the first space-separated token
12364    in ARGSP, and then adjust ARGSP to point immediately after that
12365    token.
12366
12367    Return NULL if ARGPS does not contain any more tokens.  */
12368
12369 static char *
12370 ada_get_next_arg (char **argsp)
12371 {
12372   char *args = *argsp;
12373   char *end;
12374   char *result;
12375
12376   args = skip_spaces (args);
12377   if (args[0] == '\0')
12378     return NULL; /* No more arguments.  */
12379   
12380   /* Find the end of the current argument.  */
12381
12382   end = skip_to_space (args);
12383
12384   /* Adjust ARGSP to point to the start of the next argument.  */
12385
12386   *argsp = end;
12387
12388   /* Make a copy of the current argument and return it.  */
12389
12390   result = xmalloc (end - args + 1);
12391   strncpy (result, args, end - args);
12392   result[end - args] = '\0';
12393   
12394   return result;
12395 }
12396
12397 /* Split the arguments specified in a "catch exception" command.  
12398    Set EX to the appropriate catchpoint type.
12399    Set EXCEP_STRING to the name of the specific exception if
12400    specified by the user.
12401    If a condition is found at the end of the arguments, the condition
12402    expression is stored in COND_STRING (memory must be deallocated
12403    after use).  Otherwise COND_STRING is set to NULL.  */
12404
12405 static void
12406 catch_ada_exception_command_split (char *args,
12407                                    enum ada_exception_catchpoint_kind *ex,
12408                                    char **excep_string,
12409                                    char **cond_string)
12410 {
12411   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
12412   char *exception_name;
12413   char *cond = NULL;
12414
12415   exception_name = ada_get_next_arg (&args);
12416   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
12417     {
12418       /* This is not an exception name; this is the start of a condition
12419          expression for a catchpoint on all exceptions.  So, "un-get"
12420          this token, and set exception_name to NULL.  */
12421       xfree (exception_name);
12422       exception_name = NULL;
12423       args -= 2;
12424     }
12425   make_cleanup (xfree, exception_name);
12426
12427   /* Check to see if we have a condition.  */
12428
12429   args = skip_spaces (args);
12430   if (strncmp (args, "if", 2) == 0
12431       && (isspace (args[2]) || args[2] == '\0'))
12432     {
12433       args += 2;
12434       args = skip_spaces (args);
12435
12436       if (args[0] == '\0')
12437         error (_("Condition missing after `if' keyword"));
12438       cond = xstrdup (args);
12439       make_cleanup (xfree, cond);
12440
12441       args += strlen (args);
12442     }
12443
12444   /* Check that we do not have any more arguments.  Anything else
12445      is unexpected.  */
12446
12447   if (args[0] != '\0')
12448     error (_("Junk at end of expression"));
12449
12450   discard_cleanups (old_chain);
12451
12452   if (exception_name == NULL)
12453     {
12454       /* Catch all exceptions.  */
12455       *ex = ada_catch_exception;
12456       *excep_string = NULL;
12457     }
12458   else if (strcmp (exception_name, "unhandled") == 0)
12459     {
12460       /* Catch unhandled exceptions.  */
12461       *ex = ada_catch_exception_unhandled;
12462       *excep_string = NULL;
12463     }
12464   else
12465     {
12466       /* Catch a specific exception.  */
12467       *ex = ada_catch_exception;
12468       *excep_string = exception_name;
12469     }
12470   *cond_string = cond;
12471 }
12472
12473 /* Return the name of the symbol on which we should break in order to
12474    implement a catchpoint of the EX kind.  */
12475
12476 static const char *
12477 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12478 {
12479   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12480
12481   gdb_assert (data->exception_info != NULL);
12482
12483   switch (ex)
12484     {
12485       case ada_catch_exception:
12486         return (data->exception_info->catch_exception_sym);
12487         break;
12488       case ada_catch_exception_unhandled:
12489         return (data->exception_info->catch_exception_unhandled_sym);
12490         break;
12491       case ada_catch_assert:
12492         return (data->exception_info->catch_assert_sym);
12493         break;
12494       default:
12495         internal_error (__FILE__, __LINE__,
12496                         _("unexpected catchpoint kind (%d)"), ex);
12497     }
12498 }
12499
12500 /* Return the breakpoint ops "virtual table" used for catchpoints
12501    of the EX kind.  */
12502
12503 static const struct breakpoint_ops *
12504 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12505 {
12506   switch (ex)
12507     {
12508       case ada_catch_exception:
12509         return (&catch_exception_breakpoint_ops);
12510         break;
12511       case ada_catch_exception_unhandled:
12512         return (&catch_exception_unhandled_breakpoint_ops);
12513         break;
12514       case ada_catch_assert:
12515         return (&catch_assert_breakpoint_ops);
12516         break;
12517       default:
12518         internal_error (__FILE__, __LINE__,
12519                         _("unexpected catchpoint kind (%d)"), ex);
12520     }
12521 }
12522
12523 /* Return the condition that will be used to match the current exception
12524    being raised with the exception that the user wants to catch.  This
12525    assumes that this condition is used when the inferior just triggered
12526    an exception catchpoint.
12527    
12528    The string returned is a newly allocated string that needs to be
12529    deallocated later.  */
12530
12531 static char *
12532 ada_exception_catchpoint_cond_string (const char *excep_string)
12533 {
12534   int i;
12535
12536   /* The standard exceptions are a special case.  They are defined in
12537      runtime units that have been compiled without debugging info; if
12538      EXCEP_STRING is the not-fully-qualified name of a standard
12539      exception (e.g. "constraint_error") then, during the evaluation
12540      of the condition expression, the symbol lookup on this name would
12541      *not* return this standard exception.  The catchpoint condition
12542      may then be set only on user-defined exceptions which have the
12543      same not-fully-qualified name (e.g. my_package.constraint_error).
12544
12545      To avoid this unexcepted behavior, these standard exceptions are
12546      systematically prefixed by "standard".  This means that "catch
12547      exception constraint_error" is rewritten into "catch exception
12548      standard.constraint_error".
12549
12550      If an exception named contraint_error is defined in another package of
12551      the inferior program, then the only way to specify this exception as a
12552      breakpoint condition is to use its fully-qualified named:
12553      e.g. my_package.constraint_error.  */
12554
12555   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12556     {
12557       if (strcmp (standard_exc [i], excep_string) == 0)
12558         {
12559           return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
12560                              excep_string);
12561         }
12562     }
12563   return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
12564 }
12565
12566 /* Return the symtab_and_line that should be used to insert an exception
12567    catchpoint of the TYPE kind.
12568
12569    EXCEP_STRING should contain the name of a specific exception that
12570    the catchpoint should catch, or NULL otherwise.
12571
12572    ADDR_STRING returns the name of the function where the real
12573    breakpoint that implements the catchpoints is set, depending on the
12574    type of catchpoint we need to create.  */
12575
12576 static struct symtab_and_line
12577 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
12578                    char **addr_string, const struct breakpoint_ops **ops)
12579 {
12580   const char *sym_name;
12581   struct symbol *sym;
12582
12583   /* First, find out which exception support info to use.  */
12584   ada_exception_support_info_sniffer ();
12585
12586   /* Then lookup the function on which we will break in order to catch
12587      the Ada exceptions requested by the user.  */
12588   sym_name = ada_exception_sym_name (ex);
12589   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12590
12591   /* We can assume that SYM is not NULL at this stage.  If the symbol
12592      did not exist, ada_exception_support_info_sniffer would have
12593      raised an exception.
12594
12595      Also, ada_exception_support_info_sniffer should have already
12596      verified that SYM is a function symbol.  */
12597   gdb_assert (sym != NULL);
12598   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
12599
12600   /* Set ADDR_STRING.  */
12601   *addr_string = xstrdup (sym_name);
12602
12603   /* Set OPS.  */
12604   *ops = ada_exception_breakpoint_ops (ex);
12605
12606   return find_function_start_sal (sym, 1);
12607 }
12608
12609 /* Create an Ada exception catchpoint.
12610
12611    EX_KIND is the kind of exception catchpoint to be created.
12612
12613    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
12614    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12615    of the exception to which this catchpoint applies.  When not NULL,
12616    the string must be allocated on the heap, and its deallocation
12617    is no longer the responsibility of the caller.
12618
12619    COND_STRING, if not NULL, is the catchpoint condition.  This string
12620    must be allocated on the heap, and its deallocation is no longer
12621    the responsibility of the caller.
12622
12623    TEMPFLAG, if nonzero, means that the underlying breakpoint
12624    should be temporary.
12625
12626    FROM_TTY is the usual argument passed to all commands implementations.  */
12627
12628 void
12629 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12630                                  enum ada_exception_catchpoint_kind ex_kind,
12631                                  char *excep_string,
12632                                  char *cond_string,
12633                                  int tempflag,
12634                                  int disabled,
12635                                  int from_tty)
12636 {
12637   struct ada_catchpoint *c;
12638   char *addr_string = NULL;
12639   const struct breakpoint_ops *ops = NULL;
12640   struct symtab_and_line sal
12641     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
12642
12643   c = XNEW (struct ada_catchpoint);
12644   init_ada_exception_breakpoint (&c->base, gdbarch, sal, addr_string,
12645                                  ops, tempflag, disabled, from_tty);
12646   c->excep_string = excep_string;
12647   create_excep_cond_exprs (c);
12648   if (cond_string != NULL)
12649     set_breakpoint_condition (&c->base, cond_string, from_tty);
12650   install_breakpoint (0, &c->base, 1);
12651 }
12652
12653 /* Implement the "catch exception" command.  */
12654
12655 static void
12656 catch_ada_exception_command (char *arg, int from_tty,
12657                              struct cmd_list_element *command)
12658 {
12659   struct gdbarch *gdbarch = get_current_arch ();
12660   int tempflag;
12661   enum ada_exception_catchpoint_kind ex_kind;
12662   char *excep_string = NULL;
12663   char *cond_string = NULL;
12664
12665   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12666
12667   if (!arg)
12668     arg = "";
12669   catch_ada_exception_command_split (arg, &ex_kind, &excep_string,
12670                                      &cond_string);
12671   create_ada_exception_catchpoint (gdbarch, ex_kind,
12672                                    excep_string, cond_string,
12673                                    tempflag, 1 /* enabled */,
12674                                    from_tty);
12675 }
12676
12677 /* Split the arguments specified in a "catch assert" command.
12678
12679    ARGS contains the command's arguments (or the empty string if
12680    no arguments were passed).
12681
12682    If ARGS contains a condition, set COND_STRING to that condition
12683    (the memory needs to be deallocated after use).  */
12684
12685 static void
12686 catch_ada_assert_command_split (char *args, char **cond_string)
12687 {
12688   args = skip_spaces (args);
12689
12690   /* Check whether a condition was provided.  */
12691   if (strncmp (args, "if", 2) == 0
12692       && (isspace (args[2]) || args[2] == '\0'))
12693     {
12694       args += 2;
12695       args = skip_spaces (args);
12696       if (args[0] == '\0')
12697         error (_("condition missing after `if' keyword"));
12698       *cond_string = xstrdup (args);
12699     }
12700
12701   /* Otherwise, there should be no other argument at the end of
12702      the command.  */
12703   else if (args[0] != '\0')
12704     error (_("Junk at end of arguments."));
12705 }
12706
12707 /* Implement the "catch assert" command.  */
12708
12709 static void
12710 catch_assert_command (char *arg, int from_tty,
12711                       struct cmd_list_element *command)
12712 {
12713   struct gdbarch *gdbarch = get_current_arch ();
12714   int tempflag;
12715   char *cond_string = NULL;
12716
12717   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12718
12719   if (!arg)
12720     arg = "";
12721   catch_ada_assert_command_split (arg, &cond_string);
12722   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12723                                    NULL, cond_string,
12724                                    tempflag, 1 /* enabled */,
12725                                    from_tty);
12726 }
12727
12728 /* Return non-zero if the symbol SYM is an Ada exception object.  */
12729
12730 static int
12731 ada_is_exception_sym (struct symbol *sym)
12732 {
12733   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
12734
12735   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12736           && SYMBOL_CLASS (sym) != LOC_BLOCK
12737           && SYMBOL_CLASS (sym) != LOC_CONST
12738           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12739           && type_name != NULL && strcmp (type_name, "exception") == 0);
12740 }
12741
12742 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12743    Ada exception object.  This matches all exceptions except the ones
12744    defined by the Ada language.  */
12745
12746 static int
12747 ada_is_non_standard_exception_sym (struct symbol *sym)
12748 {
12749   int i;
12750
12751   if (!ada_is_exception_sym (sym))
12752     return 0;
12753
12754   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12755     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
12756       return 0;  /* A standard exception.  */
12757
12758   /* Numeric_Error is also a standard exception, so exclude it.
12759      See the STANDARD_EXC description for more details as to why
12760      this exception is not listed in that array.  */
12761   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
12762     return 0;
12763
12764   return 1;
12765 }
12766
12767 /* A helper function for qsort, comparing two struct ada_exc_info
12768    objects.
12769
12770    The comparison is determined first by exception name, and then
12771    by exception address.  */
12772
12773 static int
12774 compare_ada_exception_info (const void *a, const void *b)
12775 {
12776   const struct ada_exc_info *exc_a = (struct ada_exc_info *) a;
12777   const struct ada_exc_info *exc_b = (struct ada_exc_info *) b;
12778   int result;
12779
12780   result = strcmp (exc_a->name, exc_b->name);
12781   if (result != 0)
12782     return result;
12783
12784   if (exc_a->addr < exc_b->addr)
12785     return -1;
12786   if (exc_a->addr > exc_b->addr)
12787     return 1;
12788
12789   return 0;
12790 }
12791
12792 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12793    routine, but keeping the first SKIP elements untouched.
12794
12795    All duplicates are also removed.  */
12796
12797 static void
12798 sort_remove_dups_ada_exceptions_list (VEC(ada_exc_info) **exceptions,
12799                                       int skip)
12800 {
12801   struct ada_exc_info *to_sort
12802     = VEC_address (ada_exc_info, *exceptions) + skip;
12803   int to_sort_len
12804     = VEC_length (ada_exc_info, *exceptions) - skip;
12805   int i, j;
12806
12807   qsort (to_sort, to_sort_len, sizeof (struct ada_exc_info),
12808          compare_ada_exception_info);
12809
12810   for (i = 1, j = 1; i < to_sort_len; i++)
12811     if (compare_ada_exception_info (&to_sort[i], &to_sort[j - 1]) != 0)
12812       to_sort[j++] = to_sort[i];
12813   to_sort_len = j;
12814   VEC_truncate(ada_exc_info, *exceptions, skip + to_sort_len);
12815 }
12816
12817 /* A function intended as the "name_matcher" callback in the struct
12818    quick_symbol_functions' expand_symtabs_matching method.
12819
12820    SEARCH_NAME is the symbol's search name.
12821
12822    If USER_DATA is not NULL, it is a pointer to a regext_t object
12823    used to match the symbol (by natural name).  Otherwise, when USER_DATA
12824    is null, no filtering is performed, and all symbols are a positive
12825    match.  */
12826
12827 static int
12828 ada_exc_search_name_matches (const char *search_name, void *user_data)
12829 {
12830   regex_t *preg = user_data;
12831
12832   if (preg == NULL)
12833     return 1;
12834
12835   /* In Ada, the symbol "search name" is a linkage name, whereas
12836      the regular expression used to do the matching refers to
12837      the natural name.  So match against the decoded name.  */
12838   return (regexec (preg, ada_decode (search_name), 0, NULL, 0) == 0);
12839 }
12840
12841 /* Add all exceptions defined by the Ada standard whose name match
12842    a regular expression.
12843
12844    If PREG is not NULL, then this regexp_t object is used to
12845    perform the symbol name matching.  Otherwise, no name-based
12846    filtering is performed.
12847
12848    EXCEPTIONS is a vector of exceptions to which matching exceptions
12849    gets pushed.  */
12850
12851 static void
12852 ada_add_standard_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
12853 {
12854   int i;
12855
12856   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12857     {
12858       if (preg == NULL
12859           || regexec (preg, standard_exc[i], 0, NULL, 0) == 0)
12860         {
12861           struct bound_minimal_symbol msymbol
12862             = ada_lookup_simple_minsym (standard_exc[i]);
12863
12864           if (msymbol.minsym != NULL)
12865             {
12866               struct ada_exc_info info
12867                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12868
12869               VEC_safe_push (ada_exc_info, *exceptions, &info);
12870             }
12871         }
12872     }
12873 }
12874
12875 /* Add all Ada exceptions defined locally and accessible from the given
12876    FRAME.
12877
12878    If PREG is not NULL, then this regexp_t object is used to
12879    perform the symbol name matching.  Otherwise, no name-based
12880    filtering is performed.
12881
12882    EXCEPTIONS is a vector of exceptions to which matching exceptions
12883    gets pushed.  */
12884
12885 static void
12886 ada_add_exceptions_from_frame (regex_t *preg, struct frame_info *frame,
12887                                VEC(ada_exc_info) **exceptions)
12888 {
12889   const struct block *block = get_frame_block (frame, 0);
12890
12891   while (block != 0)
12892     {
12893       struct block_iterator iter;
12894       struct symbol *sym;
12895
12896       ALL_BLOCK_SYMBOLS (block, iter, sym)
12897         {
12898           switch (SYMBOL_CLASS (sym))
12899             {
12900             case LOC_TYPEDEF:
12901             case LOC_BLOCK:
12902             case LOC_CONST:
12903               break;
12904             default:
12905               if (ada_is_exception_sym (sym))
12906                 {
12907                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
12908                                               SYMBOL_VALUE_ADDRESS (sym)};
12909
12910                   VEC_safe_push (ada_exc_info, *exceptions, &info);
12911                 }
12912             }
12913         }
12914       if (BLOCK_FUNCTION (block) != NULL)
12915         break;
12916       block = BLOCK_SUPERBLOCK (block);
12917     }
12918 }
12919
12920 /* Add all exceptions defined globally whose name name match
12921    a regular expression, excluding standard exceptions.
12922
12923    The reason we exclude standard exceptions is that they need
12924    to be handled separately: Standard exceptions are defined inside
12925    a runtime unit which is normally not compiled with debugging info,
12926    and thus usually do not show up in our symbol search.  However,
12927    if the unit was in fact built with debugging info, we need to
12928    exclude them because they would duplicate the entry we found
12929    during the special loop that specifically searches for those
12930    standard exceptions.
12931
12932    If PREG is not NULL, then this regexp_t object is used to
12933    perform the symbol name matching.  Otherwise, no name-based
12934    filtering is performed.
12935
12936    EXCEPTIONS is a vector of exceptions to which matching exceptions
12937    gets pushed.  */
12938
12939 static void
12940 ada_add_global_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
12941 {
12942   struct objfile *objfile;
12943   struct compunit_symtab *s;
12944
12945   expand_symtabs_matching (NULL, ada_exc_search_name_matches,
12946                            VARIABLES_DOMAIN, preg);
12947
12948   ALL_COMPUNITS (objfile, s)
12949     {
12950       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
12951       int i;
12952
12953       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
12954         {
12955           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
12956           struct block_iterator iter;
12957           struct symbol *sym;
12958
12959           ALL_BLOCK_SYMBOLS (b, iter, sym)
12960             if (ada_is_non_standard_exception_sym (sym)
12961                 && (preg == NULL
12962                     || regexec (preg, SYMBOL_NATURAL_NAME (sym),
12963                                 0, NULL, 0) == 0))
12964               {
12965                 struct ada_exc_info info
12966                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
12967
12968                 VEC_safe_push (ada_exc_info, *exceptions, &info);
12969               }
12970         }
12971     }
12972 }
12973
12974 /* Implements ada_exceptions_list with the regular expression passed
12975    as a regex_t, rather than a string.
12976
12977    If not NULL, PREG is used to filter out exceptions whose names
12978    do not match.  Otherwise, all exceptions are listed.  */
12979
12980 static VEC(ada_exc_info) *
12981 ada_exceptions_list_1 (regex_t *preg)
12982 {
12983   VEC(ada_exc_info) *result = NULL;
12984   struct cleanup *old_chain
12985     = make_cleanup (VEC_cleanup (ada_exc_info), &result);
12986   int prev_len;
12987
12988   /* First, list the known standard exceptions.  These exceptions
12989      need to be handled separately, as they are usually defined in
12990      runtime units that have been compiled without debugging info.  */
12991
12992   ada_add_standard_exceptions (preg, &result);
12993
12994   /* Next, find all exceptions whose scope is local and accessible
12995      from the currently selected frame.  */
12996
12997   if (has_stack_frames ())
12998     {
12999       prev_len = VEC_length (ada_exc_info, result);
13000       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13001                                      &result);
13002       if (VEC_length (ada_exc_info, result) > prev_len)
13003         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13004     }
13005
13006   /* Add all exceptions whose scope is global.  */
13007
13008   prev_len = VEC_length (ada_exc_info, result);
13009   ada_add_global_exceptions (preg, &result);
13010   if (VEC_length (ada_exc_info, result) > prev_len)
13011     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13012
13013   discard_cleanups (old_chain);
13014   return result;
13015 }
13016
13017 /* Return a vector of ada_exc_info.
13018
13019    If REGEXP is NULL, all exceptions are included in the result.
13020    Otherwise, it should contain a valid regular expression,
13021    and only the exceptions whose names match that regular expression
13022    are included in the result.
13023
13024    The exceptions are sorted in the following order:
13025      - Standard exceptions (defined by the Ada language), in
13026        alphabetical order;
13027      - Exceptions only visible from the current frame, in
13028        alphabetical order;
13029      - Exceptions whose scope is global, in alphabetical order.  */
13030
13031 VEC(ada_exc_info) *
13032 ada_exceptions_list (const char *regexp)
13033 {
13034   VEC(ada_exc_info) *result = NULL;
13035   struct cleanup *old_chain = NULL;
13036   regex_t reg;
13037
13038   if (regexp != NULL)
13039     old_chain = compile_rx_or_error (&reg, regexp,
13040                                      _("invalid regular expression"));
13041
13042   result = ada_exceptions_list_1 (regexp != NULL ? &reg : NULL);
13043
13044   if (old_chain != NULL)
13045     do_cleanups (old_chain);
13046   return result;
13047 }
13048
13049 /* Implement the "info exceptions" command.  */
13050
13051 static void
13052 info_exceptions_command (char *regexp, int from_tty)
13053 {
13054   VEC(ada_exc_info) *exceptions;
13055   struct cleanup *cleanup;
13056   struct gdbarch *gdbarch = get_current_arch ();
13057   int ix;
13058   struct ada_exc_info *info;
13059
13060   exceptions = ada_exceptions_list (regexp);
13061   cleanup = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions);
13062
13063   if (regexp != NULL)
13064     printf_filtered
13065       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13066   else
13067     printf_filtered (_("All defined Ada exceptions:\n"));
13068
13069   for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++)
13070     printf_filtered ("%s: %s\n", info->name, paddress (gdbarch, info->addr));
13071
13072   do_cleanups (cleanup);
13073 }
13074
13075                                 /* Operators */
13076 /* Information about operators given special treatment in functions
13077    below.  */
13078 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13079
13080 #define ADA_OPERATORS \
13081     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13082     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13083     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13084     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13085     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13086     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13087     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13088     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13089     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13090     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13091     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13092     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13093     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13094     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13095     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13096     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13097     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13098     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13099     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13100
13101 static void
13102 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13103                      int *argsp)
13104 {
13105   switch (exp->elts[pc - 1].opcode)
13106     {
13107     default:
13108       operator_length_standard (exp, pc, oplenp, argsp);
13109       break;
13110
13111 #define OP_DEFN(op, len, args, binop) \
13112     case op: *oplenp = len; *argsp = args; break;
13113       ADA_OPERATORS;
13114 #undef OP_DEFN
13115
13116     case OP_AGGREGATE:
13117       *oplenp = 3;
13118       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13119       break;
13120
13121     case OP_CHOICES:
13122       *oplenp = 3;
13123       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13124       break;
13125     }
13126 }
13127
13128 /* Implementation of the exp_descriptor method operator_check.  */
13129
13130 static int
13131 ada_operator_check (struct expression *exp, int pos,
13132                     int (*objfile_func) (struct objfile *objfile, void *data),
13133                     void *data)
13134 {
13135   const union exp_element *const elts = exp->elts;
13136   struct type *type = NULL;
13137
13138   switch (elts[pos].opcode)
13139     {
13140       case UNOP_IN_RANGE:
13141       case UNOP_QUAL:
13142         type = elts[pos + 1].type;
13143         break;
13144
13145       default:
13146         return operator_check_standard (exp, pos, objfile_func, data);
13147     }
13148
13149   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13150
13151   if (type && TYPE_OBJFILE (type)
13152       && (*objfile_func) (TYPE_OBJFILE (type), data))
13153     return 1;
13154
13155   return 0;
13156 }
13157
13158 static char *
13159 ada_op_name (enum exp_opcode opcode)
13160 {
13161   switch (opcode)
13162     {
13163     default:
13164       return op_name_standard (opcode);
13165
13166 #define OP_DEFN(op, len, args, binop) case op: return #op;
13167       ADA_OPERATORS;
13168 #undef OP_DEFN
13169
13170     case OP_AGGREGATE:
13171       return "OP_AGGREGATE";
13172     case OP_CHOICES:
13173       return "OP_CHOICES";
13174     case OP_NAME:
13175       return "OP_NAME";
13176     }
13177 }
13178
13179 /* As for operator_length, but assumes PC is pointing at the first
13180    element of the operator, and gives meaningful results only for the 
13181    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13182
13183 static void
13184 ada_forward_operator_length (struct expression *exp, int pc,
13185                              int *oplenp, int *argsp)
13186 {
13187   switch (exp->elts[pc].opcode)
13188     {
13189     default:
13190       *oplenp = *argsp = 0;
13191       break;
13192
13193 #define OP_DEFN(op, len, args, binop) \
13194     case op: *oplenp = len; *argsp = args; break;
13195       ADA_OPERATORS;
13196 #undef OP_DEFN
13197
13198     case OP_AGGREGATE:
13199       *oplenp = 3;
13200       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13201       break;
13202
13203     case OP_CHOICES:
13204       *oplenp = 3;
13205       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13206       break;
13207
13208     case OP_STRING:
13209     case OP_NAME:
13210       {
13211         int len = longest_to_int (exp->elts[pc + 1].longconst);
13212
13213         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13214         *argsp = 0;
13215         break;
13216       }
13217     }
13218 }
13219
13220 static int
13221 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13222 {
13223   enum exp_opcode op = exp->elts[elt].opcode;
13224   int oplen, nargs;
13225   int pc = elt;
13226   int i;
13227
13228   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13229
13230   switch (op)
13231     {
13232       /* Ada attributes ('Foo).  */
13233     case OP_ATR_FIRST:
13234     case OP_ATR_LAST:
13235     case OP_ATR_LENGTH:
13236     case OP_ATR_IMAGE:
13237     case OP_ATR_MAX:
13238     case OP_ATR_MIN:
13239     case OP_ATR_MODULUS:
13240     case OP_ATR_POS:
13241     case OP_ATR_SIZE:
13242     case OP_ATR_TAG:
13243     case OP_ATR_VAL:
13244       break;
13245
13246     case UNOP_IN_RANGE:
13247     case UNOP_QUAL:
13248       /* XXX: gdb_sprint_host_address, type_sprint */
13249       fprintf_filtered (stream, _("Type @"));
13250       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13251       fprintf_filtered (stream, " (");
13252       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13253       fprintf_filtered (stream, ")");
13254       break;
13255     case BINOP_IN_BOUNDS:
13256       fprintf_filtered (stream, " (%d)",
13257                         longest_to_int (exp->elts[pc + 2].longconst));
13258       break;
13259     case TERNOP_IN_RANGE:
13260       break;
13261
13262     case OP_AGGREGATE:
13263     case OP_OTHERS:
13264     case OP_DISCRETE_RANGE:
13265     case OP_POSITIONAL:
13266     case OP_CHOICES:
13267       break;
13268
13269     case OP_NAME:
13270     case OP_STRING:
13271       {
13272         char *name = &exp->elts[elt + 2].string;
13273         int len = longest_to_int (exp->elts[elt + 1].longconst);
13274
13275         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13276         break;
13277       }
13278
13279     default:
13280       return dump_subexp_body_standard (exp, stream, elt);
13281     }
13282
13283   elt += oplen;
13284   for (i = 0; i < nargs; i += 1)
13285     elt = dump_subexp (exp, stream, elt);
13286
13287   return elt;
13288 }
13289
13290 /* The Ada extension of print_subexp (q.v.).  */
13291
13292 static void
13293 ada_print_subexp (struct expression *exp, int *pos,
13294                   struct ui_file *stream, enum precedence prec)
13295 {
13296   int oplen, nargs, i;
13297   int pc = *pos;
13298   enum exp_opcode op = exp->elts[pc].opcode;
13299
13300   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13301
13302   *pos += oplen;
13303   switch (op)
13304     {
13305     default:
13306       *pos -= oplen;
13307       print_subexp_standard (exp, pos, stream, prec);
13308       return;
13309
13310     case OP_VAR_VALUE:
13311       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13312       return;
13313
13314     case BINOP_IN_BOUNDS:
13315       /* XXX: sprint_subexp */
13316       print_subexp (exp, pos, stream, PREC_SUFFIX);
13317       fputs_filtered (" in ", stream);
13318       print_subexp (exp, pos, stream, PREC_SUFFIX);
13319       fputs_filtered ("'range", stream);
13320       if (exp->elts[pc + 1].longconst > 1)
13321         fprintf_filtered (stream, "(%ld)",
13322                           (long) exp->elts[pc + 1].longconst);
13323       return;
13324
13325     case TERNOP_IN_RANGE:
13326       if (prec >= PREC_EQUAL)
13327         fputs_filtered ("(", stream);
13328       /* XXX: sprint_subexp */
13329       print_subexp (exp, pos, stream, PREC_SUFFIX);
13330       fputs_filtered (" in ", stream);
13331       print_subexp (exp, pos, stream, PREC_EQUAL);
13332       fputs_filtered (" .. ", stream);
13333       print_subexp (exp, pos, stream, PREC_EQUAL);
13334       if (prec >= PREC_EQUAL)
13335         fputs_filtered (")", stream);
13336       return;
13337
13338     case OP_ATR_FIRST:
13339     case OP_ATR_LAST:
13340     case OP_ATR_LENGTH:
13341     case OP_ATR_IMAGE:
13342     case OP_ATR_MAX:
13343     case OP_ATR_MIN:
13344     case OP_ATR_MODULUS:
13345     case OP_ATR_POS:
13346     case OP_ATR_SIZE:
13347     case OP_ATR_TAG:
13348     case OP_ATR_VAL:
13349       if (exp->elts[*pos].opcode == OP_TYPE)
13350         {
13351           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13352             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13353                            &type_print_raw_options);
13354           *pos += 3;
13355         }
13356       else
13357         print_subexp (exp, pos, stream, PREC_SUFFIX);
13358       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13359       if (nargs > 1)
13360         {
13361           int tem;
13362
13363           for (tem = 1; tem < nargs; tem += 1)
13364             {
13365               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13366               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13367             }
13368           fputs_filtered (")", stream);
13369         }
13370       return;
13371
13372     case UNOP_QUAL:
13373       type_print (exp->elts[pc + 1].type, "", stream, 0);
13374       fputs_filtered ("'(", stream);
13375       print_subexp (exp, pos, stream, PREC_PREFIX);
13376       fputs_filtered (")", stream);
13377       return;
13378
13379     case UNOP_IN_RANGE:
13380       /* XXX: sprint_subexp */
13381       print_subexp (exp, pos, stream, PREC_SUFFIX);
13382       fputs_filtered (" in ", stream);
13383       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13384                      &type_print_raw_options);
13385       return;
13386
13387     case OP_DISCRETE_RANGE:
13388       print_subexp (exp, pos, stream, PREC_SUFFIX);
13389       fputs_filtered ("..", stream);
13390       print_subexp (exp, pos, stream, PREC_SUFFIX);
13391       return;
13392
13393     case OP_OTHERS:
13394       fputs_filtered ("others => ", stream);
13395       print_subexp (exp, pos, stream, PREC_SUFFIX);
13396       return;
13397
13398     case OP_CHOICES:
13399       for (i = 0; i < nargs-1; i += 1)
13400         {
13401           if (i > 0)
13402             fputs_filtered ("|", stream);
13403           print_subexp (exp, pos, stream, PREC_SUFFIX);
13404         }
13405       fputs_filtered (" => ", stream);
13406       print_subexp (exp, pos, stream, PREC_SUFFIX);
13407       return;
13408       
13409     case OP_POSITIONAL:
13410       print_subexp (exp, pos, stream, PREC_SUFFIX);
13411       return;
13412
13413     case OP_AGGREGATE:
13414       fputs_filtered ("(", stream);
13415       for (i = 0; i < nargs; i += 1)
13416         {
13417           if (i > 0)
13418             fputs_filtered (", ", stream);
13419           print_subexp (exp, pos, stream, PREC_SUFFIX);
13420         }
13421       fputs_filtered (")", stream);
13422       return;
13423     }
13424 }
13425
13426 /* Table mapping opcodes into strings for printing operators
13427    and precedences of the operators.  */
13428
13429 static const struct op_print ada_op_print_tab[] = {
13430   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13431   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13432   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13433   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13434   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13435   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13436   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13437   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13438   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13439   {">=", BINOP_GEQ, PREC_ORDER, 0},
13440   {">", BINOP_GTR, PREC_ORDER, 0},
13441   {"<", BINOP_LESS, PREC_ORDER, 0},
13442   {">>", BINOP_RSH, PREC_SHIFT, 0},
13443   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13444   {"+", BINOP_ADD, PREC_ADD, 0},
13445   {"-", BINOP_SUB, PREC_ADD, 0},
13446   {"&", BINOP_CONCAT, PREC_ADD, 0},
13447   {"*", BINOP_MUL, PREC_MUL, 0},
13448   {"/", BINOP_DIV, PREC_MUL, 0},
13449   {"rem", BINOP_REM, PREC_MUL, 0},
13450   {"mod", BINOP_MOD, PREC_MUL, 0},
13451   {"**", BINOP_EXP, PREC_REPEAT, 0},
13452   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13453   {"-", UNOP_NEG, PREC_PREFIX, 0},
13454   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13455   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13456   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13457   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13458   {".all", UNOP_IND, PREC_SUFFIX, 1},
13459   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13460   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13461   {NULL, 0, 0, 0}
13462 };
13463 \f
13464 enum ada_primitive_types {
13465   ada_primitive_type_int,
13466   ada_primitive_type_long,
13467   ada_primitive_type_short,
13468   ada_primitive_type_char,
13469   ada_primitive_type_float,
13470   ada_primitive_type_double,
13471   ada_primitive_type_void,
13472   ada_primitive_type_long_long,
13473   ada_primitive_type_long_double,
13474   ada_primitive_type_natural,
13475   ada_primitive_type_positive,
13476   ada_primitive_type_system_address,
13477   nr_ada_primitive_types
13478 };
13479
13480 static void
13481 ada_language_arch_info (struct gdbarch *gdbarch,
13482                         struct language_arch_info *lai)
13483 {
13484   const struct builtin_type *builtin = builtin_type (gdbarch);
13485
13486   lai->primitive_type_vector
13487     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13488                               struct type *);
13489
13490   lai->primitive_type_vector [ada_primitive_type_int]
13491     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13492                          0, "integer");
13493   lai->primitive_type_vector [ada_primitive_type_long]
13494     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13495                          0, "long_integer");
13496   lai->primitive_type_vector [ada_primitive_type_short]
13497     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13498                          0, "short_integer");
13499   lai->string_char_type
13500     = lai->primitive_type_vector [ada_primitive_type_char]
13501     = arch_integer_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13502   lai->primitive_type_vector [ada_primitive_type_float]
13503     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13504                        "float", NULL);
13505   lai->primitive_type_vector [ada_primitive_type_double]
13506     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13507                        "long_float", NULL);
13508   lai->primitive_type_vector [ada_primitive_type_long_long]
13509     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13510                          0, "long_long_integer");
13511   lai->primitive_type_vector [ada_primitive_type_long_double]
13512     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13513                        "long_long_float", NULL);
13514   lai->primitive_type_vector [ada_primitive_type_natural]
13515     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13516                          0, "natural");
13517   lai->primitive_type_vector [ada_primitive_type_positive]
13518     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13519                          0, "positive");
13520   lai->primitive_type_vector [ada_primitive_type_void]
13521     = builtin->builtin_void;
13522
13523   lai->primitive_type_vector [ada_primitive_type_system_address]
13524     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, 1, "void"));
13525   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
13526     = "system__address";
13527
13528   lai->bool_type_symbol = NULL;
13529   lai->bool_type_default = builtin->builtin_bool;
13530 }
13531 \f
13532                                 /* Language vector */
13533
13534 /* Not really used, but needed in the ada_language_defn.  */
13535
13536 static void
13537 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13538 {
13539   ada_emit_char (c, type, stream, quoter, 1);
13540 }
13541
13542 static int
13543 parse (struct parser_state *ps)
13544 {
13545   warnings_issued = 0;
13546   return ada_parse (ps);
13547 }
13548
13549 static const struct exp_descriptor ada_exp_descriptor = {
13550   ada_print_subexp,
13551   ada_operator_length,
13552   ada_operator_check,
13553   ada_op_name,
13554   ada_dump_subexp_body,
13555   ada_evaluate_subexp
13556 };
13557
13558 /* Implement the "la_get_symbol_name_cmp" language_defn method
13559    for Ada.  */
13560
13561 static symbol_name_cmp_ftype
13562 ada_get_symbol_name_cmp (const char *lookup_name)
13563 {
13564   if (should_use_wild_match (lookup_name))
13565     return wild_match;
13566   else
13567     return compare_names;
13568 }
13569
13570 /* Implement the "la_read_var_value" language_defn method for Ada.  */
13571
13572 static struct value *
13573 ada_read_var_value (struct symbol *var, struct frame_info *frame)
13574 {
13575   const struct block *frame_block = NULL;
13576   struct symbol *renaming_sym = NULL;
13577
13578   /* The only case where default_read_var_value is not sufficient
13579      is when VAR is a renaming...  */
13580   if (frame)
13581     frame_block = get_frame_block (frame, NULL);
13582   if (frame_block)
13583     renaming_sym = ada_find_renaming_symbol (var, frame_block);
13584   if (renaming_sym != NULL)
13585     return ada_read_renaming_var_value (renaming_sym, frame_block);
13586
13587   /* This is a typical case where we expect the default_read_var_value
13588      function to work.  */
13589   return default_read_var_value (var, frame);
13590 }
13591
13592 const struct language_defn ada_language_defn = {
13593   "ada",                        /* Language name */
13594   "Ada",
13595   language_ada,
13596   range_check_off,
13597   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13598                                    that's not quite what this means.  */
13599   array_row_major,
13600   macro_expansion_no,
13601   &ada_exp_descriptor,
13602   parse,
13603   ada_error,
13604   resolve,
13605   ada_printchar,                /* Print a character constant */
13606   ada_printstr,                 /* Function to print string constant */
13607   emit_char,                    /* Function to print single char (not used) */
13608   ada_print_type,               /* Print a type using appropriate syntax */
13609   ada_print_typedef,            /* Print a typedef using appropriate syntax */
13610   ada_val_print,                /* Print a value using appropriate syntax */
13611   ada_value_print,              /* Print a top-level value */
13612   ada_read_var_value,           /* la_read_var_value */
13613   NULL,                         /* Language specific skip_trampoline */
13614   NULL,                         /* name_of_this */
13615   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
13616   basic_lookup_transparent_type,        /* lookup_transparent_type */
13617   ada_la_decode,                /* Language specific symbol demangler */
13618   NULL,                         /* Language specific
13619                                    class_name_from_physname */
13620   ada_op_print_tab,             /* expression operators for printing */
13621   0,                            /* c-style arrays */
13622   1,                            /* String lower bound */
13623   ada_get_gdb_completer_word_break_characters,
13624   ada_make_symbol_completion_list,
13625   ada_language_arch_info,
13626   ada_print_array_index,
13627   default_pass_by_reference,
13628   c_get_string,
13629   ada_get_symbol_name_cmp,      /* la_get_symbol_name_cmp */
13630   ada_iterate_over_symbols,
13631   &ada_varobj_ops,
13632   NULL,
13633   NULL,
13634   LANG_MAGIC
13635 };
13636
13637 /* Provide a prototype to silence -Wmissing-prototypes.  */
13638 extern initialize_file_ftype _initialize_ada_language;
13639
13640 /* Command-list for the "set/show ada" prefix command.  */
13641 static struct cmd_list_element *set_ada_list;
13642 static struct cmd_list_element *show_ada_list;
13643
13644 /* Implement the "set ada" prefix command.  */
13645
13646 static void
13647 set_ada_command (char *arg, int from_tty)
13648 {
13649   printf_unfiltered (_(\
13650 "\"set ada\" must be followed by the name of a setting.\n"));
13651   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
13652 }
13653
13654 /* Implement the "show ada" prefix command.  */
13655
13656 static void
13657 show_ada_command (char *args, int from_tty)
13658 {
13659   cmd_show_list (show_ada_list, from_tty, "");
13660 }
13661
13662 static void
13663 initialize_ada_catchpoint_ops (void)
13664 {
13665   struct breakpoint_ops *ops;
13666
13667   initialize_breakpoint_ops ();
13668
13669   ops = &catch_exception_breakpoint_ops;
13670   *ops = bkpt_breakpoint_ops;
13671   ops->dtor = dtor_catch_exception;
13672   ops->allocate_location = allocate_location_catch_exception;
13673   ops->re_set = re_set_catch_exception;
13674   ops->check_status = check_status_catch_exception;
13675   ops->print_it = print_it_catch_exception;
13676   ops->print_one = print_one_catch_exception;
13677   ops->print_mention = print_mention_catch_exception;
13678   ops->print_recreate = print_recreate_catch_exception;
13679
13680   ops = &catch_exception_unhandled_breakpoint_ops;
13681   *ops = bkpt_breakpoint_ops;
13682   ops->dtor = dtor_catch_exception_unhandled;
13683   ops->allocate_location = allocate_location_catch_exception_unhandled;
13684   ops->re_set = re_set_catch_exception_unhandled;
13685   ops->check_status = check_status_catch_exception_unhandled;
13686   ops->print_it = print_it_catch_exception_unhandled;
13687   ops->print_one = print_one_catch_exception_unhandled;
13688   ops->print_mention = print_mention_catch_exception_unhandled;
13689   ops->print_recreate = print_recreate_catch_exception_unhandled;
13690
13691   ops = &catch_assert_breakpoint_ops;
13692   *ops = bkpt_breakpoint_ops;
13693   ops->dtor = dtor_catch_assert;
13694   ops->allocate_location = allocate_location_catch_assert;
13695   ops->re_set = re_set_catch_assert;
13696   ops->check_status = check_status_catch_assert;
13697   ops->print_it = print_it_catch_assert;
13698   ops->print_one = print_one_catch_assert;
13699   ops->print_mention = print_mention_catch_assert;
13700   ops->print_recreate = print_recreate_catch_assert;
13701 }
13702
13703 /* This module's 'new_objfile' observer.  */
13704
13705 static void
13706 ada_new_objfile_observer (struct objfile *objfile)
13707 {
13708   ada_clear_symbol_cache ();
13709 }
13710
13711 /* This module's 'free_objfile' observer.  */
13712
13713 static void
13714 ada_free_objfile_observer (struct objfile *objfile)
13715 {
13716   ada_clear_symbol_cache ();
13717 }
13718
13719 void
13720 _initialize_ada_language (void)
13721 {
13722   add_language (&ada_language_defn);
13723
13724   initialize_ada_catchpoint_ops ();
13725
13726   add_prefix_cmd ("ada", no_class, set_ada_command,
13727                   _("Prefix command for changing Ada-specfic settings"),
13728                   &set_ada_list, "set ada ", 0, &setlist);
13729
13730   add_prefix_cmd ("ada", no_class, show_ada_command,
13731                   _("Generic command for showing Ada-specific settings."),
13732                   &show_ada_list, "show ada ", 0, &showlist);
13733
13734   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
13735                            &trust_pad_over_xvs, _("\
13736 Enable or disable an optimization trusting PAD types over XVS types"), _("\
13737 Show whether an optimization trusting PAD types over XVS types is activated"),
13738                            _("\
13739 This is related to the encoding used by the GNAT compiler.  The debugger\n\
13740 should normally trust the contents of PAD types, but certain older versions\n\
13741 of GNAT have a bug that sometimes causes the information in the PAD type\n\
13742 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
13743 work around this bug.  It is always safe to turn this option \"off\", but\n\
13744 this incurs a slight performance penalty, so it is recommended to NOT change\n\
13745 this option to \"off\" unless necessary."),
13746                             NULL, NULL, &set_ada_list, &show_ada_list);
13747
13748   add_catch_command ("exception", _("\
13749 Catch Ada exceptions, when raised.\n\
13750 With an argument, catch only exceptions with the given name."),
13751                      catch_ada_exception_command,
13752                      NULL,
13753                      CATCH_PERMANENT,
13754                      CATCH_TEMPORARY);
13755   add_catch_command ("assert", _("\
13756 Catch failed Ada assertions, when raised.\n\
13757 With an argument, catch only exceptions with the given name."),
13758                      catch_assert_command,
13759                      NULL,
13760                      CATCH_PERMANENT,
13761                      CATCH_TEMPORARY);
13762
13763   varsize_limit = 65536;
13764
13765   add_info ("exceptions", info_exceptions_command,
13766             _("\
13767 List all Ada exception names.\n\
13768 If a regular expression is passed as an argument, only those matching\n\
13769 the regular expression are listed."));
13770
13771   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
13772                   _("Set Ada maintenance-related variables."),
13773                   &maint_set_ada_cmdlist, "maintenance set ada ",
13774                   0/*allow-unknown*/, &maintenance_set_cmdlist);
13775
13776   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
13777                   _("Show Ada maintenance-related variables"),
13778                   &maint_show_ada_cmdlist, "maintenance show ada ",
13779                   0/*allow-unknown*/, &maintenance_show_cmdlist);
13780
13781   add_setshow_boolean_cmd
13782     ("ignore-descriptive-types", class_maintenance,
13783      &ada_ignore_descriptive_types_p,
13784      _("Set whether descriptive types generated by GNAT should be ignored."),
13785      _("Show whether descriptive types generated by GNAT should be ignored."),
13786      _("\
13787 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
13788 DWARF attribute."),
13789      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
13790
13791   obstack_init (&symbol_list_obstack);
13792
13793   decoded_names_store = htab_create_alloc
13794     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
13795      NULL, xcalloc, xfree);
13796
13797   /* The ada-lang observers.  */
13798   observer_attach_new_objfile (ada_new_objfile_observer);
13799   observer_attach_free_objfile (ada_free_objfile_observer);
13800   observer_attach_inferior_exit (ada_inferior_exit);
13801
13802   /* Setup various context-specific data.  */
13803   ada_inferior_data
13804     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
13805   ada_pspace_data_handle
13806     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
13807 }