3a024d9abeff5358a142da99d187b53c87e09039
[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 void check_size (const struct type *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238                                              struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *, 
241                                        struct expression *,
242                                        int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *, 
245                                            struct expression *,
246                                            int *, LONGEST *, int *,
247                                            int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250                                          struct expression *,
251                                          int *, LONGEST *, int *, int,
252                                          LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256                                      struct expression *,
257                                      int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264                                           int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267                                          int *);
268
269 static struct type *ada_find_any_type (const char *name);
270 \f
271
272 /* The result of a symbol lookup to be stored in our symbol cache.  */
273
274 struct cache_entry
275 {
276   /* The name used to perform the lookup.  */
277   const char *name;
278   /* The namespace used during the lookup.  */
279   domain_enum namespace;
280   /* The symbol returned by the lookup, or NULL if no matching symbol
281      was found.  */
282   struct symbol *sym;
283   /* The block where the symbol was found, or NULL if no matching
284      symbol was found.  */
285   const struct block *block;
286   /* A pointer to the next entry with the same hash.  */
287   struct cache_entry *next;
288 };
289
290 /* The Ada symbol cache, used to store the result of Ada-mode symbol
291    lookups in the course of executing the user's commands.
292
293    The cache is implemented using a simple, fixed-sized hash.
294    The size is fixed on the grounds that there are not likely to be
295    all that many symbols looked up during any given session, regardless
296    of the size of the symbol table.  If we decide to go to a resizable
297    table, let's just use the stuff from libiberty instead.  */
298
299 #define HASH_SIZE 1009
300
301 struct ada_symbol_cache
302 {
303   /* An obstack used to store the entries in our cache.  */
304   struct obstack cache_space;
305
306   /* The root of the hash table used to implement our symbol cache.  */
307   struct cache_entry *root[HASH_SIZE];
308 };
309
310 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
311
312 /* Maximum-sized dynamic type.  */
313 static unsigned int varsize_limit;
314
315 /* FIXME: brobecker/2003-09-17: No longer a const because it is
316    returned by a function that does not return a const char *.  */
317 static char *ada_completer_word_break_characters =
318 #ifdef VMS
319   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
320 #else
321   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
322 #endif
323
324 /* The name of the symbol to use to get the name of the main subprogram.  */
325 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
326   = "__gnat_ada_main_program_name";
327
328 /* Limit on the number of warnings to raise per expression evaluation.  */
329 static int warning_limit = 2;
330
331 /* Number of warning messages issued; reset to 0 by cleanups after
332    expression evaluation.  */
333 static int warnings_issued = 0;
334
335 static const char *known_runtime_file_name_patterns[] = {
336   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
337 };
338
339 static const char *known_auxiliary_function_name_patterns[] = {
340   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
341 };
342
343 /* Space for allocating results of ada_lookup_symbol_list.  */
344 static struct obstack symbol_list_obstack;
345
346 /* Maintenance-related settings for this module.  */
347
348 static struct cmd_list_element *maint_set_ada_cmdlist;
349 static struct cmd_list_element *maint_show_ada_cmdlist;
350
351 /* Implement the "maintenance set ada" (prefix) command.  */
352
353 static void
354 maint_set_ada_cmd (char *args, int from_tty)
355 {
356   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
357              gdb_stdout);
358 }
359
360 /* Implement the "maintenance show ada" (prefix) command.  */
361
362 static void
363 maint_show_ada_cmd (char *args, int from_tty)
364 {
365   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
366 }
367
368 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
369
370 static int ada_ignore_descriptive_types_p = 0;
371
372                         /* Inferior-specific data.  */
373
374 /* Per-inferior data for this module.  */
375
376 struct ada_inferior_data
377 {
378   /* The ada__tags__type_specific_data type, which is used when decoding
379      tagged types.  With older versions of GNAT, this type was directly
380      accessible through a component ("tsd") in the object tag.  But this
381      is no longer the case, so we cache it for each inferior.  */
382   struct type *tsd_type;
383
384   /* The exception_support_info data.  This data is used to determine
385      how to implement support for Ada exception catchpoints in a given
386      inferior.  */
387   const struct exception_support_info *exception_info;
388 };
389
390 /* Our key to this module's inferior data.  */
391 static const struct inferior_data *ada_inferior_data;
392
393 /* A cleanup routine for our inferior data.  */
394 static void
395 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
396 {
397   struct ada_inferior_data *data;
398
399   data = inferior_data (inf, ada_inferior_data);
400   if (data != NULL)
401     xfree (data);
402 }
403
404 /* Return our inferior data for the given inferior (INF).
405
406    This function always returns a valid pointer to an allocated
407    ada_inferior_data structure.  If INF's inferior data has not
408    been previously set, this functions creates a new one with all
409    fields set to zero, sets INF's inferior to it, and then returns
410    a pointer to that newly allocated ada_inferior_data.  */
411
412 static struct ada_inferior_data *
413 get_ada_inferior_data (struct inferior *inf)
414 {
415   struct ada_inferior_data *data;
416
417   data = inferior_data (inf, ada_inferior_data);
418   if (data == NULL)
419     {
420       data = XCNEW (struct ada_inferior_data);
421       set_inferior_data (inf, ada_inferior_data, data);
422     }
423
424   return data;
425 }
426
427 /* Perform all necessary cleanups regarding our module's inferior data
428    that is required after the inferior INF just exited.  */
429
430 static void
431 ada_inferior_exit (struct inferior *inf)
432 {
433   ada_inferior_data_cleanup (inf, NULL);
434   set_inferior_data (inf, ada_inferior_data, NULL);
435 }
436
437
438                         /* program-space-specific data.  */
439
440 /* This module's per-program-space data.  */
441 struct ada_pspace_data
442 {
443   /* The Ada symbol cache.  */
444   struct ada_symbol_cache *sym_cache;
445 };
446
447 /* Key to our per-program-space data.  */
448 static const struct program_space_data *ada_pspace_data_handle;
449
450 /* Return this module's data for the given program space (PSPACE).
451    If not is found, add a zero'ed one now.
452
453    This function always returns a valid object.  */
454
455 static struct ada_pspace_data *
456 get_ada_pspace_data (struct program_space *pspace)
457 {
458   struct ada_pspace_data *data;
459
460   data = program_space_data (pspace, ada_pspace_data_handle);
461   if (data == NULL)
462     {
463       data = XCNEW (struct ada_pspace_data);
464       set_program_space_data (pspace, ada_pspace_data_handle, data);
465     }
466
467   return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data.  */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475   struct ada_pspace_data *pspace_data = data;
476
477   if (pspace_data->sym_cache != NULL)
478     ada_free_symbol_cache (pspace_data->sym_cache);
479   xfree (pspace_data);
480 }
481
482                         /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485    all typedef layers have been peeled.  Otherwise, return TYPE.
486
487    Normally, we really expect a typedef type to only have 1 typedef layer.
488    In other words, we really expect the target type of a typedef type to be
489    a non-typedef type.  This is particularly true for Ada units, because
490    the language does not have a typedef vs not-typedef distinction.
491    In that respect, the Ada compiler has been trying to eliminate as many
492    typedef definitions in the debugging information, since they generally
493    do not bring any extra information (we still use typedef under certain
494    circumstances related mostly to the GNAT encoding).
495
496    Unfortunately, we have seen situations where the debugging information
497    generated by the compiler leads to such multiple typedef layers.  For
498    instance, consider the following example with stabs:
499
500      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503    This is an error in the debugging information which causes type
504    pck__float_array___XUP to be defined twice, and the second time,
505    it is defined as a typedef of a typedef.
506
507    This is on the fringe of legality as far as debugging information is
508    concerned, and certainly unexpected.  But it is easy to handle these
509    situations correctly, so we can afford to be lenient in this case.  */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515     type = TYPE_TARGET_TYPE (type);
516   return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520    decoded form (ie using the Ada dotted notation), returns
521    its unqualified name.  */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526   const char *result;
527   
528   /* If the decoded name starts with '<', it means that the encoded
529      name does not follow standard naming conventions, and thus that
530      it is not your typical Ada symbol name.  Trying to unqualify it
531      is therefore pointless and possibly erroneous.  */
532   if (decoded_name[0] == '<')
533     return decoded_name;
534
535   result = strrchr (decoded_name, '.');
536   if (result != NULL)
537     result++;                   /* Skip the dot...  */
538   else
539     result = decoded_name;
540
541   return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'.
545    The result is good until the next call.  */
546
547 static char *
548 add_angle_brackets (const char *str)
549 {
550   static char *result = NULL;
551
552   xfree (result);
553   result = xstrprintf ("<%s>", str);
554   return result;
555 }
556
557 static char *
558 ada_get_gdb_completer_word_break_characters (void)
559 {
560   return ada_completer_word_break_characters;
561 }
562
563 /* Print an array element index using the Ada syntax.  */
564
565 static void
566 ada_print_array_index (struct value *index_value, struct ui_file *stream,
567                        const struct value_print_options *options)
568 {
569   LA_VALUE_PRINT (index_value, stream, options);
570   fprintf_filtered (stream, " => ");
571 }
572
573 /* Assuming VECT points to an array of *SIZE objects of size
574    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
575    updating *SIZE as necessary and returning the (new) array.  */
576
577 void *
578 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
579 {
580   if (*size < min_size)
581     {
582       *size *= 2;
583       if (*size < min_size)
584         *size = min_size;
585       vect = xrealloc (vect, *size * element_size);
586     }
587   return vect;
588 }
589
590 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
591    suffix of FIELD_NAME beginning "___".  */
592
593 static int
594 field_name_match (const char *field_name, const char *target)
595 {
596   int len = strlen (target);
597
598   return
599     (strncmp (field_name, target, len) == 0
600      && (field_name[len] == '\0'
601          || (strncmp (field_name + len, "___", 3) == 0
602              && strcmp (field_name + strlen (field_name) - 6,
603                         "___XVN") != 0)));
604 }
605
606
607 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
608    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
609    and return its index.  This function also handles fields whose name
610    have ___ suffixes because the compiler sometimes alters their name
611    by adding such a suffix to represent fields with certain constraints.
612    If the field could not be found, return a negative number if
613    MAYBE_MISSING is set.  Otherwise raise an error.  */
614
615 int
616 ada_get_field_index (const struct type *type, const char *field_name,
617                      int maybe_missing)
618 {
619   int fieldno;
620   struct type *struct_type = check_typedef ((struct type *) type);
621
622   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
623     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
624       return fieldno;
625
626   if (!maybe_missing)
627     error (_("Unable to find field %s in struct %s.  Aborting"),
628            field_name, TYPE_NAME (struct_type));
629
630   return -1;
631 }
632
633 /* The length of the prefix of NAME prior to any "___" suffix.  */
634
635 int
636 ada_name_prefix_len (const char *name)
637 {
638   if (name == NULL)
639     return 0;
640   else
641     {
642       const char *p = strstr (name, "___");
643
644       if (p == NULL)
645         return strlen (name);
646       else
647         return p - name;
648     }
649 }
650
651 /* Return non-zero if SUFFIX is a suffix of STR.
652    Return zero if STR is null.  */
653
654 static int
655 is_suffix (const char *str, const char *suffix)
656 {
657   int len1, len2;
658
659   if (str == NULL)
660     return 0;
661   len1 = strlen (str);
662   len2 = strlen (suffix);
663   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
664 }
665
666 /* The contents of value VAL, treated as a value of type TYPE.  The
667    result is an lval in memory if VAL is.  */
668
669 static struct value *
670 coerce_unspec_val_to_type (struct value *val, struct type *type)
671 {
672   type = ada_check_typedef (type);
673   if (value_type (val) == type)
674     return val;
675   else
676     {
677       struct value *result;
678
679       /* Make sure that the object size is not unreasonable before
680          trying to allocate some memory for it.  */
681       check_size (type);
682
683       if (value_lazy (val)
684           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
685         result = allocate_value_lazy (type);
686       else
687         {
688           result = allocate_value (type);
689           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
690         }
691       set_value_component_location (result, val);
692       set_value_bitsize (result, value_bitsize (val));
693       set_value_bitpos (result, value_bitpos (val));
694       set_value_address (result, value_address (val));
695       return result;
696     }
697 }
698
699 static const gdb_byte *
700 cond_offset_host (const gdb_byte *valaddr, long offset)
701 {
702   if (valaddr == NULL)
703     return NULL;
704   else
705     return valaddr + offset;
706 }
707
708 static CORE_ADDR
709 cond_offset_target (CORE_ADDR address, long offset)
710 {
711   if (address == 0)
712     return 0;
713   else
714     return address + offset;
715 }
716
717 /* Issue a warning (as for the definition of warning in utils.c, but
718    with exactly one argument rather than ...), unless the limit on the
719    number of warnings has passed during the evaluation of the current
720    expression.  */
721
722 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
723    provided by "complaint".  */
724 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
725
726 static void
727 lim_warning (const char *format, ...)
728 {
729   va_list args;
730
731   va_start (args, format);
732   warnings_issued += 1;
733   if (warnings_issued <= warning_limit)
734     vwarning (format, args);
735
736   va_end (args);
737 }
738
739 /* Issue an error if the size of an object of type T is unreasonable,
740    i.e. if it would be a bad idea to allocate a value of this type in
741    GDB.  */
742
743 static void
744 check_size (const struct type *type)
745 {
746   if (TYPE_LENGTH (type) > varsize_limit)
747     error (_("object size is larger than varsize-limit"));
748 }
749
750 /* Maximum value of a SIZE-byte signed integer type.  */
751 static LONGEST
752 max_of_size (int size)
753 {
754   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
755
756   return top_bit | (top_bit - 1);
757 }
758
759 /* Minimum value of a SIZE-byte signed integer type.  */
760 static LONGEST
761 min_of_size (int size)
762 {
763   return -max_of_size (size) - 1;
764 }
765
766 /* Maximum value of a SIZE-byte unsigned integer type.  */
767 static ULONGEST
768 umax_of_size (int size)
769 {
770   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
771
772   return top_bit | (top_bit - 1);
773 }
774
775 /* Maximum value of integral type T, as a signed quantity.  */
776 static LONGEST
777 max_of_type (struct type *t)
778 {
779   if (TYPE_UNSIGNED (t))
780     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
781   else
782     return max_of_size (TYPE_LENGTH (t));
783 }
784
785 /* Minimum value of integral type T, as a signed quantity.  */
786 static LONGEST
787 min_of_type (struct type *t)
788 {
789   if (TYPE_UNSIGNED (t)) 
790     return 0;
791   else
792     return min_of_size (TYPE_LENGTH (t));
793 }
794
795 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
796 LONGEST
797 ada_discrete_type_high_bound (struct type *type)
798 {
799   type = resolve_dynamic_type (type, 0);
800   switch (TYPE_CODE (type))
801     {
802     case TYPE_CODE_RANGE:
803       return TYPE_HIGH_BOUND (type);
804     case TYPE_CODE_ENUM:
805       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
806     case TYPE_CODE_BOOL:
807       return 1;
808     case TYPE_CODE_CHAR:
809     case TYPE_CODE_INT:
810       return max_of_type (type);
811     default:
812       error (_("Unexpected type in ada_discrete_type_high_bound."));
813     }
814 }
815
816 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
817 LONGEST
818 ada_discrete_type_low_bound (struct type *type)
819 {
820   type = resolve_dynamic_type (type, 0);
821   switch (TYPE_CODE (type))
822     {
823     case TYPE_CODE_RANGE:
824       return TYPE_LOW_BOUND (type);
825     case TYPE_CODE_ENUM:
826       return TYPE_FIELD_ENUMVAL (type, 0);
827     case TYPE_CODE_BOOL:
828       return 0;
829     case TYPE_CODE_CHAR:
830     case TYPE_CODE_INT:
831       return min_of_type (type);
832     default:
833       error (_("Unexpected type in ada_discrete_type_low_bound."));
834     }
835 }
836
837 /* The identity on non-range types.  For range types, the underlying
838    non-range scalar type.  */
839
840 static struct type *
841 get_base_type (struct type *type)
842 {
843   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
844     {
845       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
846         return type;
847       type = TYPE_TARGET_TYPE (type);
848     }
849   return type;
850 }
851
852 /* Return a decoded version of the given VALUE.  This means returning
853    a value whose type is obtained by applying all the GNAT-specific
854    encondings, making the resulting type a static but standard description
855    of the initial type.  */
856
857 struct value *
858 ada_get_decoded_value (struct value *value)
859 {
860   struct type *type = ada_check_typedef (value_type (value));
861
862   if (ada_is_array_descriptor_type (type)
863       || (ada_is_constrained_packed_array_type (type)
864           && TYPE_CODE (type) != TYPE_CODE_PTR))
865     {
866       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
867         value = ada_coerce_to_simple_array_ptr (value);
868       else
869         value = ada_coerce_to_simple_array (value);
870     }
871   else
872     value = ada_to_fixed_value (value);
873
874   return value;
875 }
876
877 /* Same as ada_get_decoded_value, but with the given TYPE.
878    Because there is no associated actual value for this type,
879    the resulting type might be a best-effort approximation in
880    the case of dynamic types.  */
881
882 struct type *
883 ada_get_decoded_type (struct type *type)
884 {
885   type = to_static_fixed_type (type);
886   if (ada_is_constrained_packed_array_type (type))
887     type = ada_coerce_to_simple_array_type (type);
888   return type;
889 }
890
891 \f
892
893                                 /* Language Selection */
894
895 /* If the main program is in Ada, return language_ada, otherwise return LANG
896    (the main program is in Ada iif the adainit symbol is found).  */
897
898 enum language
899 ada_update_initial_language (enum language lang)
900 {
901   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
902                              (struct objfile *) NULL).minsym != NULL)
903     return language_ada;
904
905   return lang;
906 }
907
908 /* If the main procedure is written in Ada, then return its name.
909    The result is good until the next call.  Return NULL if the main
910    procedure doesn't appear to be in Ada.  */
911
912 char *
913 ada_main_name (void)
914 {
915   struct bound_minimal_symbol msym;
916   static char *main_program_name = NULL;
917
918   /* For Ada, the name of the main procedure is stored in a specific
919      string constant, generated by the binder.  Look for that symbol,
920      extract its address, and then read that string.  If we didn't find
921      that string, then most probably the main procedure is not written
922      in Ada.  */
923   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
924
925   if (msym.minsym != NULL)
926     {
927       CORE_ADDR main_program_name_addr;
928       int err_code;
929
930       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
931       if (main_program_name_addr == 0)
932         error (_("Invalid address for Ada main program name."));
933
934       xfree (main_program_name);
935       target_read_string (main_program_name_addr, &main_program_name,
936                           1024, &err_code);
937
938       if (err_code != 0)
939         return NULL;
940       return main_program_name;
941     }
942
943   /* The main procedure doesn't seem to be in Ada.  */
944   return NULL;
945 }
946 \f
947                                 /* Symbols */
948
949 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
950    of NULLs.  */
951
952 const struct ada_opname_map ada_opname_table[] = {
953   {"Oadd", "\"+\"", BINOP_ADD},
954   {"Osubtract", "\"-\"", BINOP_SUB},
955   {"Omultiply", "\"*\"", BINOP_MUL},
956   {"Odivide", "\"/\"", BINOP_DIV},
957   {"Omod", "\"mod\"", BINOP_MOD},
958   {"Orem", "\"rem\"", BINOP_REM},
959   {"Oexpon", "\"**\"", BINOP_EXP},
960   {"Olt", "\"<\"", BINOP_LESS},
961   {"Ole", "\"<=\"", BINOP_LEQ},
962   {"Ogt", "\">\"", BINOP_GTR},
963   {"Oge", "\">=\"", BINOP_GEQ},
964   {"Oeq", "\"=\"", BINOP_EQUAL},
965   {"One", "\"/=\"", BINOP_NOTEQUAL},
966   {"Oand", "\"and\"", BINOP_BITWISE_AND},
967   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
968   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
969   {"Oconcat", "\"&\"", BINOP_CONCAT},
970   {"Oabs", "\"abs\"", UNOP_ABS},
971   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
972   {"Oadd", "\"+\"", UNOP_PLUS},
973   {"Osubtract", "\"-\"", UNOP_NEG},
974   {NULL, NULL}
975 };
976
977 /* The "encoded" form of DECODED, according to GNAT conventions.
978    The result is valid until the next call to ada_encode.  */
979
980 char *
981 ada_encode (const char *decoded)
982 {
983   static char *encoding_buffer = NULL;
984   static size_t encoding_buffer_size = 0;
985   const char *p;
986   int k;
987
988   if (decoded == NULL)
989     return NULL;
990
991   GROW_VECT (encoding_buffer, encoding_buffer_size,
992              2 * strlen (decoded) + 10);
993
994   k = 0;
995   for (p = decoded; *p != '\0'; p += 1)
996     {
997       if (*p == '.')
998         {
999           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1000           k += 2;
1001         }
1002       else if (*p == '"')
1003         {
1004           const struct ada_opname_map *mapping;
1005
1006           for (mapping = ada_opname_table;
1007                mapping->encoded != NULL
1008                && strncmp (mapping->decoded, p,
1009                            strlen (mapping->decoded)) != 0; mapping += 1)
1010             ;
1011           if (mapping->encoded == NULL)
1012             error (_("invalid Ada operator name: %s"), p);
1013           strcpy (encoding_buffer + k, mapping->encoded);
1014           k += strlen (mapping->encoded);
1015           break;
1016         }
1017       else
1018         {
1019           encoding_buffer[k] = *p;
1020           k += 1;
1021         }
1022     }
1023
1024   encoding_buffer[k] = '\0';
1025   return encoding_buffer;
1026 }
1027
1028 /* Return NAME folded to lower case, or, if surrounded by single
1029    quotes, unfolded, but with the quotes stripped away.  Result good
1030    to next call.  */
1031
1032 char *
1033 ada_fold_name (const char *name)
1034 {
1035   static char *fold_buffer = NULL;
1036   static size_t fold_buffer_size = 0;
1037
1038   int len = strlen (name);
1039   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1040
1041   if (name[0] == '\'')
1042     {
1043       strncpy (fold_buffer, name + 1, len - 2);
1044       fold_buffer[len - 2] = '\000';
1045     }
1046   else
1047     {
1048       int i;
1049
1050       for (i = 0; i <= len; i += 1)
1051         fold_buffer[i] = tolower (name[i]);
1052     }
1053
1054   return fold_buffer;
1055 }
1056
1057 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1058
1059 static int
1060 is_lower_alphanum (const char c)
1061 {
1062   return (isdigit (c) || (isalpha (c) && islower (c)));
1063 }
1064
1065 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1066    This function saves in LEN the length of that same symbol name but
1067    without either of these suffixes:
1068      . .{DIGIT}+
1069      . ${DIGIT}+
1070      . ___{DIGIT}+
1071      . __{DIGIT}+.
1072
1073    These are suffixes introduced by the compiler for entities such as
1074    nested subprogram for instance, in order to avoid name clashes.
1075    They do not serve any purpose for the debugger.  */
1076
1077 static void
1078 ada_remove_trailing_digits (const char *encoded, int *len)
1079 {
1080   if (*len > 1 && isdigit (encoded[*len - 1]))
1081     {
1082       int i = *len - 2;
1083
1084       while (i > 0 && isdigit (encoded[i]))
1085         i--;
1086       if (i >= 0 && encoded[i] == '.')
1087         *len = i;
1088       else if (i >= 0 && encoded[i] == '$')
1089         *len = i;
1090       else if (i >= 2 && strncmp (encoded + i - 2, "___", 3) == 0)
1091         *len = i - 2;
1092       else if (i >= 1 && strncmp (encoded + i - 1, "__", 2) == 0)
1093         *len = i - 1;
1094     }
1095 }
1096
1097 /* Remove the suffix introduced by the compiler for protected object
1098    subprograms.  */
1099
1100 static void
1101 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1102 {
1103   /* Remove trailing N.  */
1104
1105   /* Protected entry subprograms are broken into two
1106      separate subprograms: The first one is unprotected, and has
1107      a 'N' suffix; the second is the protected version, and has
1108      the 'P' suffix.  The second calls the first one after handling
1109      the protection.  Since the P subprograms are internally generated,
1110      we leave these names undecoded, giving the user a clue that this
1111      entity is internal.  */
1112
1113   if (*len > 1
1114       && encoded[*len - 1] == 'N'
1115       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1116     *len = *len - 1;
1117 }
1118
1119 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1120
1121 static void
1122 ada_remove_Xbn_suffix (const char *encoded, int *len)
1123 {
1124   int i = *len - 1;
1125
1126   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1127     i--;
1128
1129   if (encoded[i] != 'X')
1130     return;
1131
1132   if (i == 0)
1133     return;
1134
1135   if (isalnum (encoded[i-1]))
1136     *len = i;
1137 }
1138
1139 /* If ENCODED follows the GNAT entity encoding conventions, then return
1140    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1141    replaced by ENCODED.
1142
1143    The resulting string is valid until the next call of ada_decode.
1144    If the string is unchanged by decoding, the original string pointer
1145    is returned.  */
1146
1147 const char *
1148 ada_decode (const char *encoded)
1149 {
1150   int i, j;
1151   int len0;
1152   const char *p;
1153   char *decoded;
1154   int at_start_name;
1155   static char *decoding_buffer = NULL;
1156   static size_t decoding_buffer_size = 0;
1157
1158   /* The name of the Ada main procedure starts with "_ada_".
1159      This prefix is not part of the decoded name, so skip this part
1160      if we see this prefix.  */
1161   if (strncmp (encoded, "_ada_", 5) == 0)
1162     encoded += 5;
1163
1164   /* If the name starts with '_', then it is not a properly encoded
1165      name, so do not attempt to decode it.  Similarly, if the name
1166      starts with '<', the name should not be decoded.  */
1167   if (encoded[0] == '_' || encoded[0] == '<')
1168     goto Suppress;
1169
1170   len0 = strlen (encoded);
1171
1172   ada_remove_trailing_digits (encoded, &len0);
1173   ada_remove_po_subprogram_suffix (encoded, &len0);
1174
1175   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1176      the suffix is located before the current "end" of ENCODED.  We want
1177      to avoid re-matching parts of ENCODED that have previously been
1178      marked as discarded (by decrementing LEN0).  */
1179   p = strstr (encoded, "___");
1180   if (p != NULL && p - encoded < len0 - 3)
1181     {
1182       if (p[3] == 'X')
1183         len0 = p - encoded;
1184       else
1185         goto Suppress;
1186     }
1187
1188   /* Remove any trailing TKB suffix.  It tells us that this symbol
1189      is for the body of a task, but that information does not actually
1190      appear in the decoded name.  */
1191
1192   if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0)
1193     len0 -= 3;
1194
1195   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1196      from the TKB suffix because it is used for non-anonymous task
1197      bodies.  */
1198
1199   if (len0 > 2 && strncmp (encoded + len0 - 2, "TB", 2) == 0)
1200     len0 -= 2;
1201
1202   /* Remove trailing "B" suffixes.  */
1203   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1204
1205   if (len0 > 1 && strncmp (encoded + len0 - 1, "B", 1) == 0)
1206     len0 -= 1;
1207
1208   /* Make decoded big enough for possible expansion by operator name.  */
1209
1210   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1211   decoded = decoding_buffer;
1212
1213   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1214
1215   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1216     {
1217       i = len0 - 2;
1218       while ((i >= 0 && isdigit (encoded[i]))
1219              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1220         i -= 1;
1221       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1222         len0 = i - 1;
1223       else if (encoded[i] == '$')
1224         len0 = i;
1225     }
1226
1227   /* The first few characters that are not alphabetic are not part
1228      of any encoding we use, so we can copy them over verbatim.  */
1229
1230   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1231     decoded[j] = encoded[i];
1232
1233   at_start_name = 1;
1234   while (i < len0)
1235     {
1236       /* Is this a symbol function?  */
1237       if (at_start_name && encoded[i] == 'O')
1238         {
1239           int k;
1240
1241           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1242             {
1243               int op_len = strlen (ada_opname_table[k].encoded);
1244               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1245                             op_len - 1) == 0)
1246                   && !isalnum (encoded[i + op_len]))
1247                 {
1248                   strcpy (decoded + j, ada_opname_table[k].decoded);
1249                   at_start_name = 0;
1250                   i += op_len;
1251                   j += strlen (ada_opname_table[k].decoded);
1252                   break;
1253                 }
1254             }
1255           if (ada_opname_table[k].encoded != NULL)
1256             continue;
1257         }
1258       at_start_name = 0;
1259
1260       /* Replace "TK__" with "__", which will eventually be translated
1261          into "." (just below).  */
1262
1263       if (i < len0 - 4 && strncmp (encoded + i, "TK__", 4) == 0)
1264         i += 2;
1265
1266       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1267          be translated into "." (just below).  These are internal names
1268          generated for anonymous blocks inside which our symbol is nested.  */
1269
1270       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1271           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1272           && isdigit (encoded [i+4]))
1273         {
1274           int k = i + 5;
1275           
1276           while (k < len0 && isdigit (encoded[k]))
1277             k++;  /* Skip any extra digit.  */
1278
1279           /* Double-check that the "__B_{DIGITS}+" sequence we found
1280              is indeed followed by "__".  */
1281           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1282             i = k;
1283         }
1284
1285       /* Remove _E{DIGITS}+[sb] */
1286
1287       /* Just as for protected object subprograms, there are 2 categories
1288          of subprograms created by the compiler for each entry.  The first
1289          one implements the actual entry code, and has a suffix following
1290          the convention above; the second one implements the barrier and
1291          uses the same convention as above, except that the 'E' is replaced
1292          by a 'B'.
1293
1294          Just as above, we do not decode the name of barrier functions
1295          to give the user a clue that the code he is debugging has been
1296          internally generated.  */
1297
1298       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1299           && isdigit (encoded[i+2]))
1300         {
1301           int k = i + 3;
1302
1303           while (k < len0 && isdigit (encoded[k]))
1304             k++;
1305
1306           if (k < len0
1307               && (encoded[k] == 'b' || encoded[k] == 's'))
1308             {
1309               k++;
1310               /* Just as an extra precaution, make sure that if this
1311                  suffix is followed by anything else, it is a '_'.
1312                  Otherwise, we matched this sequence by accident.  */
1313               if (k == len0
1314                   || (k < len0 && encoded[k] == '_'))
1315                 i = k;
1316             }
1317         }
1318
1319       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1320          the GNAT front-end in protected object subprograms.  */
1321
1322       if (i < len0 + 3
1323           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1324         {
1325           /* Backtrack a bit up until we reach either the begining of
1326              the encoded name, or "__".  Make sure that we only find
1327              digits or lowercase characters.  */
1328           const char *ptr = encoded + i - 1;
1329
1330           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1331             ptr--;
1332           if (ptr < encoded
1333               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1334             i++;
1335         }
1336
1337       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1338         {
1339           /* This is a X[bn]* sequence not separated from the previous
1340              part of the name with a non-alpha-numeric character (in other
1341              words, immediately following an alpha-numeric character), then
1342              verify that it is placed at the end of the encoded name.  If
1343              not, then the encoding is not valid and we should abort the
1344              decoding.  Otherwise, just skip it, it is used in body-nested
1345              package names.  */
1346           do
1347             i += 1;
1348           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1349           if (i < len0)
1350             goto Suppress;
1351         }
1352       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1353         {
1354          /* Replace '__' by '.'.  */
1355           decoded[j] = '.';
1356           at_start_name = 1;
1357           i += 2;
1358           j += 1;
1359         }
1360       else
1361         {
1362           /* It's a character part of the decoded name, so just copy it
1363              over.  */
1364           decoded[j] = encoded[i];
1365           i += 1;
1366           j += 1;
1367         }
1368     }
1369   decoded[j] = '\000';
1370
1371   /* Decoded names should never contain any uppercase character.
1372      Double-check this, and abort the decoding if we find one.  */
1373
1374   for (i = 0; decoded[i] != '\0'; i += 1)
1375     if (isupper (decoded[i]) || decoded[i] == ' ')
1376       goto Suppress;
1377
1378   if (strcmp (decoded, encoded) == 0)
1379     return encoded;
1380   else
1381     return decoded;
1382
1383 Suppress:
1384   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1385   decoded = decoding_buffer;
1386   if (encoded[0] == '<')
1387     strcpy (decoded, encoded);
1388   else
1389     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1390   return decoded;
1391
1392 }
1393
1394 /* Table for keeping permanent unique copies of decoded names.  Once
1395    allocated, names in this table are never released.  While this is a
1396    storage leak, it should not be significant unless there are massive
1397    changes in the set of decoded names in successive versions of a 
1398    symbol table loaded during a single session.  */
1399 static struct htab *decoded_names_store;
1400
1401 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1402    in the language-specific part of GSYMBOL, if it has not been
1403    previously computed.  Tries to save the decoded name in the same
1404    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1405    in any case, the decoded symbol has a lifetime at least that of
1406    GSYMBOL).
1407    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1408    const, but nevertheless modified to a semantically equivalent form
1409    when a decoded name is cached in it.  */
1410
1411 const char *
1412 ada_decode_symbol (const struct general_symbol_info *arg)
1413 {
1414   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1415   const char **resultp =
1416     &gsymbol->language_specific.mangled_lang.demangled_name;
1417
1418   if (!gsymbol->ada_mangled)
1419     {
1420       const char *decoded = ada_decode (gsymbol->name);
1421       struct obstack *obstack = gsymbol->language_specific.obstack;
1422
1423       gsymbol->ada_mangled = 1;
1424
1425       if (obstack != NULL)
1426         *resultp = obstack_copy0 (obstack, decoded, strlen (decoded));
1427       else
1428         {
1429           /* Sometimes, we can't find a corresponding objfile, in
1430              which case, we put the result on the heap.  Since we only
1431              decode when needed, we hope this usually does not cause a
1432              significant memory leak (FIXME).  */
1433
1434           char **slot = (char **) htab_find_slot (decoded_names_store,
1435                                                   decoded, INSERT);
1436
1437           if (*slot == NULL)
1438             *slot = xstrdup (decoded);
1439           *resultp = *slot;
1440         }
1441     }
1442
1443   return *resultp;
1444 }
1445
1446 static char *
1447 ada_la_decode (const char *encoded, int options)
1448 {
1449   return xstrdup (ada_decode (encoded));
1450 }
1451
1452 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing
1453    suffixes that encode debugging information or leading _ada_ on
1454    SYM_NAME (see is_name_suffix commentary for the debugging
1455    information that is ignored).  If WILD, then NAME need only match a
1456    suffix of SYM_NAME minus the same suffixes.  Also returns 0 if
1457    either argument is NULL.  */
1458
1459 static int
1460 match_name (const char *sym_name, const char *name, int wild)
1461 {
1462   if (sym_name == NULL || name == NULL)
1463     return 0;
1464   else if (wild)
1465     return wild_match (sym_name, name) == 0;
1466   else
1467     {
1468       int len_name = strlen (name);
1469
1470       return (strncmp (sym_name, name, len_name) == 0
1471               && is_name_suffix (sym_name + len_name))
1472         || (strncmp (sym_name, "_ada_", 5) == 0
1473             && strncmp (sym_name + 5, name, len_name) == 0
1474             && is_name_suffix (sym_name + len_name + 5));
1475     }
1476 }
1477 \f
1478
1479                                 /* Arrays */
1480
1481 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1482    generated by the GNAT compiler to describe the index type used
1483    for each dimension of an array, check whether it follows the latest
1484    known encoding.  If not, fix it up to conform to the latest encoding.
1485    Otherwise, do nothing.  This function also does nothing if
1486    INDEX_DESC_TYPE is NULL.
1487
1488    The GNAT encoding used to describle the array index type evolved a bit.
1489    Initially, the information would be provided through the name of each
1490    field of the structure type only, while the type of these fields was
1491    described as unspecified and irrelevant.  The debugger was then expected
1492    to perform a global type lookup using the name of that field in order
1493    to get access to the full index type description.  Because these global
1494    lookups can be very expensive, the encoding was later enhanced to make
1495    the global lookup unnecessary by defining the field type as being
1496    the full index type description.
1497
1498    The purpose of this routine is to allow us to support older versions
1499    of the compiler by detecting the use of the older encoding, and by
1500    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1501    we essentially replace each field's meaningless type by the associated
1502    index subtype).  */
1503
1504 void
1505 ada_fixup_array_indexes_type (struct type *index_desc_type)
1506 {
1507   int i;
1508
1509   if (index_desc_type == NULL)
1510     return;
1511   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1512
1513   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1514      to check one field only, no need to check them all).  If not, return
1515      now.
1516
1517      If our INDEX_DESC_TYPE was generated using the older encoding,
1518      the field type should be a meaningless integer type whose name
1519      is not equal to the field name.  */
1520   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1521       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1522                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1523     return;
1524
1525   /* Fixup each field of INDEX_DESC_TYPE.  */
1526   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1527    {
1528      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1529      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1530
1531      if (raw_type)
1532        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1533    }
1534 }
1535
1536 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1537
1538 static char *bound_name[] = {
1539   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1540   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1541 };
1542
1543 /* Maximum number of array dimensions we are prepared to handle.  */
1544
1545 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1546
1547
1548 /* The desc_* routines return primitive portions of array descriptors
1549    (fat pointers).  */
1550
1551 /* The descriptor or array type, if any, indicated by TYPE; removes
1552    level of indirection, if needed.  */
1553
1554 static struct type *
1555 desc_base_type (struct type *type)
1556 {
1557   if (type == NULL)
1558     return NULL;
1559   type = ada_check_typedef (type);
1560   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1561     type = ada_typedef_target_type (type);
1562
1563   if (type != NULL
1564       && (TYPE_CODE (type) == TYPE_CODE_PTR
1565           || TYPE_CODE (type) == TYPE_CODE_REF))
1566     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1567   else
1568     return type;
1569 }
1570
1571 /* True iff TYPE indicates a "thin" array pointer type.  */
1572
1573 static int
1574 is_thin_pntr (struct type *type)
1575 {
1576   return
1577     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1578     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1579 }
1580
1581 /* The descriptor type for thin pointer type TYPE.  */
1582
1583 static struct type *
1584 thin_descriptor_type (struct type *type)
1585 {
1586   struct type *base_type = desc_base_type (type);
1587
1588   if (base_type == NULL)
1589     return NULL;
1590   if (is_suffix (ada_type_name (base_type), "___XVE"))
1591     return base_type;
1592   else
1593     {
1594       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1595
1596       if (alt_type == NULL)
1597         return base_type;
1598       else
1599         return alt_type;
1600     }
1601 }
1602
1603 /* A pointer to the array data for thin-pointer value VAL.  */
1604
1605 static struct value *
1606 thin_data_pntr (struct value *val)
1607 {
1608   struct type *type = ada_check_typedef (value_type (val));
1609   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1610
1611   data_type = lookup_pointer_type (data_type);
1612
1613   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1614     return value_cast (data_type, value_copy (val));
1615   else
1616     return value_from_longest (data_type, value_address (val));
1617 }
1618
1619 /* True iff TYPE indicates a "thick" array pointer type.  */
1620
1621 static int
1622 is_thick_pntr (struct type *type)
1623 {
1624   type = desc_base_type (type);
1625   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1626           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1627 }
1628
1629 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1630    pointer to one, the type of its bounds data; otherwise, NULL.  */
1631
1632 static struct type *
1633 desc_bounds_type (struct type *type)
1634 {
1635   struct type *r;
1636
1637   type = desc_base_type (type);
1638
1639   if (type == NULL)
1640     return NULL;
1641   else if (is_thin_pntr (type))
1642     {
1643       type = thin_descriptor_type (type);
1644       if (type == NULL)
1645         return NULL;
1646       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1647       if (r != NULL)
1648         return ada_check_typedef (r);
1649     }
1650   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1651     {
1652       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1653       if (r != NULL)
1654         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1655     }
1656   return NULL;
1657 }
1658
1659 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1660    one, a pointer to its bounds data.   Otherwise NULL.  */
1661
1662 static struct value *
1663 desc_bounds (struct value *arr)
1664 {
1665   struct type *type = ada_check_typedef (value_type (arr));
1666
1667   if (is_thin_pntr (type))
1668     {
1669       struct type *bounds_type =
1670         desc_bounds_type (thin_descriptor_type (type));
1671       LONGEST addr;
1672
1673       if (bounds_type == NULL)
1674         error (_("Bad GNAT array descriptor"));
1675
1676       /* NOTE: The following calculation is not really kosher, but
1677          since desc_type is an XVE-encoded type (and shouldn't be),
1678          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1679       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1680         addr = value_as_long (arr);
1681       else
1682         addr = value_address (arr);
1683
1684       return
1685         value_from_longest (lookup_pointer_type (bounds_type),
1686                             addr - TYPE_LENGTH (bounds_type));
1687     }
1688
1689   else if (is_thick_pntr (type))
1690     {
1691       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1692                                                _("Bad GNAT array descriptor"));
1693       struct type *p_bounds_type = value_type (p_bounds);
1694
1695       if (p_bounds_type
1696           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1697         {
1698           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1699
1700           if (TYPE_STUB (target_type))
1701             p_bounds = value_cast (lookup_pointer_type
1702                                    (ada_check_typedef (target_type)),
1703                                    p_bounds);
1704         }
1705       else
1706         error (_("Bad GNAT array descriptor"));
1707
1708       return p_bounds;
1709     }
1710   else
1711     return NULL;
1712 }
1713
1714 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1715    position of the field containing the address of the bounds data.  */
1716
1717 static int
1718 fat_pntr_bounds_bitpos (struct type *type)
1719 {
1720   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1721 }
1722
1723 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1724    size of the field containing the address of the bounds data.  */
1725
1726 static int
1727 fat_pntr_bounds_bitsize (struct type *type)
1728 {
1729   type = desc_base_type (type);
1730
1731   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1732     return TYPE_FIELD_BITSIZE (type, 1);
1733   else
1734     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1735 }
1736
1737 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1738    pointer to one, the type of its array data (a array-with-no-bounds type);
1739    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1740    data.  */
1741
1742 static struct type *
1743 desc_data_target_type (struct type *type)
1744 {
1745   type = desc_base_type (type);
1746
1747   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1748   if (is_thin_pntr (type))
1749     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1750   else if (is_thick_pntr (type))
1751     {
1752       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1753
1754       if (data_type
1755           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1756         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1757     }
1758
1759   return NULL;
1760 }
1761
1762 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1763    its array data.  */
1764
1765 static struct value *
1766 desc_data (struct value *arr)
1767 {
1768   struct type *type = value_type (arr);
1769
1770   if (is_thin_pntr (type))
1771     return thin_data_pntr (arr);
1772   else if (is_thick_pntr (type))
1773     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1774                              _("Bad GNAT array descriptor"));
1775   else
1776     return NULL;
1777 }
1778
1779
1780 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1781    position of the field containing the address of the data.  */
1782
1783 static int
1784 fat_pntr_data_bitpos (struct type *type)
1785 {
1786   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1787 }
1788
1789 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1790    size of the field containing the address of the data.  */
1791
1792 static int
1793 fat_pntr_data_bitsize (struct type *type)
1794 {
1795   type = desc_base_type (type);
1796
1797   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1798     return TYPE_FIELD_BITSIZE (type, 0);
1799   else
1800     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1801 }
1802
1803 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1804    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1805    bound, if WHICH is 1.  The first bound is I=1.  */
1806
1807 static struct value *
1808 desc_one_bound (struct value *bounds, int i, int which)
1809 {
1810   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1811                            _("Bad GNAT array descriptor bounds"));
1812 }
1813
1814 /* If BOUNDS is an array-bounds structure type, return the bit position
1815    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1816    bound, if WHICH is 1.  The first bound is I=1.  */
1817
1818 static int
1819 desc_bound_bitpos (struct type *type, int i, int which)
1820 {
1821   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1822 }
1823
1824 /* If BOUNDS is an array-bounds structure type, return the bit field size
1825    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1826    bound, if WHICH is 1.  The first bound is I=1.  */
1827
1828 static int
1829 desc_bound_bitsize (struct type *type, int i, int which)
1830 {
1831   type = desc_base_type (type);
1832
1833   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1834     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1835   else
1836     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1837 }
1838
1839 /* If TYPE is the type of an array-bounds structure, the type of its
1840    Ith bound (numbering from 1).  Otherwise, NULL.  */
1841
1842 static struct type *
1843 desc_index_type (struct type *type, int i)
1844 {
1845   type = desc_base_type (type);
1846
1847   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1848     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1849   else
1850     return NULL;
1851 }
1852
1853 /* The number of index positions in the array-bounds type TYPE.
1854    Return 0 if TYPE is NULL.  */
1855
1856 static int
1857 desc_arity (struct type *type)
1858 {
1859   type = desc_base_type (type);
1860
1861   if (type != NULL)
1862     return TYPE_NFIELDS (type) / 2;
1863   return 0;
1864 }
1865
1866 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1867    an array descriptor type (representing an unconstrained array
1868    type).  */
1869
1870 static int
1871 ada_is_direct_array_type (struct type *type)
1872 {
1873   if (type == NULL)
1874     return 0;
1875   type = ada_check_typedef (type);
1876   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1877           || ada_is_array_descriptor_type (type));
1878 }
1879
1880 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1881  * to one.  */
1882
1883 static int
1884 ada_is_array_type (struct type *type)
1885 {
1886   while (type != NULL 
1887          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1888              || TYPE_CODE (type) == TYPE_CODE_REF))
1889     type = TYPE_TARGET_TYPE (type);
1890   return ada_is_direct_array_type (type);
1891 }
1892
1893 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1894
1895 int
1896 ada_is_simple_array_type (struct type *type)
1897 {
1898   if (type == NULL)
1899     return 0;
1900   type = ada_check_typedef (type);
1901   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1902           || (TYPE_CODE (type) == TYPE_CODE_PTR
1903               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1904                  == TYPE_CODE_ARRAY));
1905 }
1906
1907 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1908
1909 int
1910 ada_is_array_descriptor_type (struct type *type)
1911 {
1912   struct type *data_type = desc_data_target_type (type);
1913
1914   if (type == NULL)
1915     return 0;
1916   type = ada_check_typedef (type);
1917   return (data_type != NULL
1918           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1919           && desc_arity (desc_bounds_type (type)) > 0);
1920 }
1921
1922 /* Non-zero iff type is a partially mal-formed GNAT array
1923    descriptor.  FIXME: This is to compensate for some problems with
1924    debugging output from GNAT.  Re-examine periodically to see if it
1925    is still needed.  */
1926
1927 int
1928 ada_is_bogus_array_descriptor (struct type *type)
1929 {
1930   return
1931     type != NULL
1932     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1933     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1934         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1935     && !ada_is_array_descriptor_type (type);
1936 }
1937
1938
1939 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1940    (fat pointer) returns the type of the array data described---specifically,
1941    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1942    in from the descriptor; otherwise, they are left unspecified.  If
1943    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1944    returns NULL.  The result is simply the type of ARR if ARR is not
1945    a descriptor.  */
1946 struct type *
1947 ada_type_of_array (struct value *arr, int bounds)
1948 {
1949   if (ada_is_constrained_packed_array_type (value_type (arr)))
1950     return decode_constrained_packed_array_type (value_type (arr));
1951
1952   if (!ada_is_array_descriptor_type (value_type (arr)))
1953     return value_type (arr);
1954
1955   if (!bounds)
1956     {
1957       struct type *array_type =
1958         ada_check_typedef (desc_data_target_type (value_type (arr)));
1959
1960       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1961         TYPE_FIELD_BITSIZE (array_type, 0) =
1962           decode_packed_array_bitsize (value_type (arr));
1963       
1964       return array_type;
1965     }
1966   else
1967     {
1968       struct type *elt_type;
1969       int arity;
1970       struct value *descriptor;
1971
1972       elt_type = ada_array_element_type (value_type (arr), -1);
1973       arity = ada_array_arity (value_type (arr));
1974
1975       if (elt_type == NULL || arity == 0)
1976         return ada_check_typedef (value_type (arr));
1977
1978       descriptor = desc_bounds (arr);
1979       if (value_as_long (descriptor) == 0)
1980         return NULL;
1981       while (arity > 0)
1982         {
1983           struct type *range_type = alloc_type_copy (value_type (arr));
1984           struct type *array_type = alloc_type_copy (value_type (arr));
1985           struct value *low = desc_one_bound (descriptor, arity, 0);
1986           struct value *high = desc_one_bound (descriptor, arity, 1);
1987
1988           arity -= 1;
1989           create_static_range_type (range_type, value_type (low),
1990                                     longest_to_int (value_as_long (low)),
1991                                     longest_to_int (value_as_long (high)));
1992           elt_type = create_array_type (array_type, elt_type, range_type);
1993
1994           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1995             {
1996               /* We need to store the element packed bitsize, as well as
1997                  recompute the array size, because it was previously
1998                  computed based on the unpacked element size.  */
1999               LONGEST lo = value_as_long (low);
2000               LONGEST hi = value_as_long (high);
2001
2002               TYPE_FIELD_BITSIZE (elt_type, 0) =
2003                 decode_packed_array_bitsize (value_type (arr));
2004               /* If the array has no element, then the size is already
2005                  zero, and does not need to be recomputed.  */
2006               if (lo < hi)
2007                 {
2008                   int array_bitsize =
2009                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2010
2011                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2012                 }
2013             }
2014         }
2015
2016       return lookup_pointer_type (elt_type);
2017     }
2018 }
2019
2020 /* If ARR does not represent an array, returns ARR unchanged.
2021    Otherwise, returns either a standard GDB array with bounds set
2022    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2023    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2024
2025 struct value *
2026 ada_coerce_to_simple_array_ptr (struct value *arr)
2027 {
2028   if (ada_is_array_descriptor_type (value_type (arr)))
2029     {
2030       struct type *arrType = ada_type_of_array (arr, 1);
2031
2032       if (arrType == NULL)
2033         return NULL;
2034       return value_cast (arrType, value_copy (desc_data (arr)));
2035     }
2036   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2037     return decode_constrained_packed_array (arr);
2038   else
2039     return arr;
2040 }
2041
2042 /* If ARR does not represent an array, returns ARR unchanged.
2043    Otherwise, returns a standard GDB array describing ARR (which may
2044    be ARR itself if it already is in the proper form).  */
2045
2046 struct value *
2047 ada_coerce_to_simple_array (struct value *arr)
2048 {
2049   if (ada_is_array_descriptor_type (value_type (arr)))
2050     {
2051       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2052
2053       if (arrVal == NULL)
2054         error (_("Bounds unavailable for null array pointer."));
2055       check_size (TYPE_TARGET_TYPE (value_type (arrVal)));
2056       return value_ind (arrVal);
2057     }
2058   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2059     return decode_constrained_packed_array (arr);
2060   else
2061     return arr;
2062 }
2063
2064 /* If TYPE represents a GNAT array type, return it translated to an
2065    ordinary GDB array type (possibly with BITSIZE fields indicating
2066    packing).  For other types, is the identity.  */
2067
2068 struct type *
2069 ada_coerce_to_simple_array_type (struct type *type)
2070 {
2071   if (ada_is_constrained_packed_array_type (type))
2072     return decode_constrained_packed_array_type (type);
2073
2074   if (ada_is_array_descriptor_type (type))
2075     return ada_check_typedef (desc_data_target_type (type));
2076
2077   return type;
2078 }
2079
2080 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2081
2082 static int
2083 ada_is_packed_array_type  (struct type *type)
2084 {
2085   if (type == NULL)
2086     return 0;
2087   type = desc_base_type (type);
2088   type = ada_check_typedef (type);
2089   return
2090     ada_type_name (type) != NULL
2091     && strstr (ada_type_name (type), "___XP") != NULL;
2092 }
2093
2094 /* Non-zero iff TYPE represents a standard GNAT constrained
2095    packed-array type.  */
2096
2097 int
2098 ada_is_constrained_packed_array_type (struct type *type)
2099 {
2100   return ada_is_packed_array_type (type)
2101     && !ada_is_array_descriptor_type (type);
2102 }
2103
2104 /* Non-zero iff TYPE represents an array descriptor for a
2105    unconstrained packed-array type.  */
2106
2107 static int
2108 ada_is_unconstrained_packed_array_type (struct type *type)
2109 {
2110   return ada_is_packed_array_type (type)
2111     && ada_is_array_descriptor_type (type);
2112 }
2113
2114 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2115    return the size of its elements in bits.  */
2116
2117 static long
2118 decode_packed_array_bitsize (struct type *type)
2119 {
2120   const char *raw_name;
2121   const char *tail;
2122   long bits;
2123
2124   /* Access to arrays implemented as fat pointers are encoded as a typedef
2125      of the fat pointer type.  We need the name of the fat pointer type
2126      to do the decoding, so strip the typedef layer.  */
2127   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2128     type = ada_typedef_target_type (type);
2129
2130   raw_name = ada_type_name (ada_check_typedef (type));
2131   if (!raw_name)
2132     raw_name = ada_type_name (desc_base_type (type));
2133
2134   if (!raw_name)
2135     return 0;
2136
2137   tail = strstr (raw_name, "___XP");
2138   gdb_assert (tail != NULL);
2139
2140   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2141     {
2142       lim_warning
2143         (_("could not understand bit size information on packed array"));
2144       return 0;
2145     }
2146
2147   return bits;
2148 }
2149
2150 /* Given that TYPE is a standard GDB array type with all bounds filled
2151    in, and that the element size of its ultimate scalar constituents
2152    (that is, either its elements, or, if it is an array of arrays, its
2153    elements' elements, etc.) is *ELT_BITS, return an identical type,
2154    but with the bit sizes of its elements (and those of any
2155    constituent arrays) recorded in the BITSIZE components of its
2156    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2157    in bits.
2158
2159    Note that, for arrays whose index type has an XA encoding where
2160    a bound references a record discriminant, getting that discriminant,
2161    and therefore the actual value of that bound, is not possible
2162    because none of the given parameters gives us access to the record.
2163    This function assumes that it is OK in the context where it is being
2164    used to return an array whose bounds are still dynamic and where
2165    the length is arbitrary.  */
2166
2167 static struct type *
2168 constrained_packed_array_type (struct type *type, long *elt_bits)
2169 {
2170   struct type *new_elt_type;
2171   struct type *new_type;
2172   struct type *index_type_desc;
2173   struct type *index_type;
2174   LONGEST low_bound, high_bound;
2175
2176   type = ada_check_typedef (type);
2177   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2178     return type;
2179
2180   index_type_desc = ada_find_parallel_type (type, "___XA");
2181   if (index_type_desc)
2182     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2183                                       NULL);
2184   else
2185     index_type = TYPE_INDEX_TYPE (type);
2186
2187   new_type = alloc_type_copy (type);
2188   new_elt_type =
2189     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2190                                    elt_bits);
2191   create_array_type (new_type, new_elt_type, index_type);
2192   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2193   TYPE_NAME (new_type) = ada_type_name (type);
2194
2195   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2196        && is_dynamic_type (check_typedef (index_type)))
2197       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2198     low_bound = high_bound = 0;
2199   if (high_bound < low_bound)
2200     *elt_bits = TYPE_LENGTH (new_type) = 0;
2201   else
2202     {
2203       *elt_bits *= (high_bound - low_bound + 1);
2204       TYPE_LENGTH (new_type) =
2205         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2206     }
2207
2208   TYPE_FIXED_INSTANCE (new_type) = 1;
2209   return new_type;
2210 }
2211
2212 /* The array type encoded by TYPE, where
2213    ada_is_constrained_packed_array_type (TYPE).  */
2214
2215 static struct type *
2216 decode_constrained_packed_array_type (struct type *type)
2217 {
2218   const char *raw_name = ada_type_name (ada_check_typedef (type));
2219   char *name;
2220   const char *tail;
2221   struct type *shadow_type;
2222   long bits;
2223
2224   if (!raw_name)
2225     raw_name = ada_type_name (desc_base_type (type));
2226
2227   if (!raw_name)
2228     return NULL;
2229
2230   name = (char *) alloca (strlen (raw_name) + 1);
2231   tail = strstr (raw_name, "___XP");
2232   type = desc_base_type (type);
2233
2234   memcpy (name, raw_name, tail - raw_name);
2235   name[tail - raw_name] = '\000';
2236
2237   shadow_type = ada_find_parallel_type_with_name (type, name);
2238
2239   if (shadow_type == NULL)
2240     {
2241       lim_warning (_("could not find bounds information on packed array"));
2242       return NULL;
2243     }
2244   CHECK_TYPEDEF (shadow_type);
2245
2246   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2247     {
2248       lim_warning (_("could not understand bounds "
2249                      "information on packed array"));
2250       return NULL;
2251     }
2252
2253   bits = decode_packed_array_bitsize (type);
2254   return constrained_packed_array_type (shadow_type, &bits);
2255 }
2256
2257 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2258    array, returns a simple array that denotes that array.  Its type is a
2259    standard GDB array type except that the BITSIZEs of the array
2260    target types are set to the number of bits in each element, and the
2261    type length is set appropriately.  */
2262
2263 static struct value *
2264 decode_constrained_packed_array (struct value *arr)
2265 {
2266   struct type *type;
2267
2268   /* If our value is a pointer, then dereference it. Likewise if
2269      the value is a reference.  Make sure that this operation does not
2270      cause the target type to be fixed, as this would indirectly cause
2271      this array to be decoded.  The rest of the routine assumes that
2272      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2273      and "value_ind" routines to perform the dereferencing, as opposed
2274      to using "ada_coerce_ref" or "ada_value_ind".  */
2275   arr = coerce_ref (arr);
2276   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2277     arr = value_ind (arr);
2278
2279   type = decode_constrained_packed_array_type (value_type (arr));
2280   if (type == NULL)
2281     {
2282       error (_("can't unpack array"));
2283       return NULL;
2284     }
2285
2286   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2287       && ada_is_modular_type (value_type (arr)))
2288     {
2289        /* This is a (right-justified) modular type representing a packed
2290          array with no wrapper.  In order to interpret the value through
2291          the (left-justified) packed array type we just built, we must
2292          first left-justify it.  */
2293       int bit_size, bit_pos;
2294       ULONGEST mod;
2295
2296       mod = ada_modulus (value_type (arr)) - 1;
2297       bit_size = 0;
2298       while (mod > 0)
2299         {
2300           bit_size += 1;
2301           mod >>= 1;
2302         }
2303       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2304       arr = ada_value_primitive_packed_val (arr, NULL,
2305                                             bit_pos / HOST_CHAR_BIT,
2306                                             bit_pos % HOST_CHAR_BIT,
2307                                             bit_size,
2308                                             type);
2309     }
2310
2311   return coerce_unspec_val_to_type (arr, type);
2312 }
2313
2314
2315 /* The value of the element of packed array ARR at the ARITY indices
2316    given in IND.   ARR must be a simple array.  */
2317
2318 static struct value *
2319 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2320 {
2321   int i;
2322   int bits, elt_off, bit_off;
2323   long elt_total_bit_offset;
2324   struct type *elt_type;
2325   struct value *v;
2326
2327   bits = 0;
2328   elt_total_bit_offset = 0;
2329   elt_type = ada_check_typedef (value_type (arr));
2330   for (i = 0; i < arity; i += 1)
2331     {
2332       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2333           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2334         error
2335           (_("attempt to do packed indexing of "
2336              "something other than a packed array"));
2337       else
2338         {
2339           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2340           LONGEST lowerbound, upperbound;
2341           LONGEST idx;
2342
2343           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2344             {
2345               lim_warning (_("don't know bounds of array"));
2346               lowerbound = upperbound = 0;
2347             }
2348
2349           idx = pos_atr (ind[i]);
2350           if (idx < lowerbound || idx > upperbound)
2351             lim_warning (_("packed array index %ld out of bounds"),
2352                          (long) idx);
2353           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2354           elt_total_bit_offset += (idx - lowerbound) * bits;
2355           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2356         }
2357     }
2358   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2359   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2360
2361   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2362                                       bits, elt_type);
2363   return v;
2364 }
2365
2366 /* Non-zero iff TYPE includes negative integer values.  */
2367
2368 static int
2369 has_negatives (struct type *type)
2370 {
2371   switch (TYPE_CODE (type))
2372     {
2373     default:
2374       return 0;
2375     case TYPE_CODE_INT:
2376       return !TYPE_UNSIGNED (type);
2377     case TYPE_CODE_RANGE:
2378       return TYPE_LOW_BOUND (type) < 0;
2379     }
2380 }
2381
2382
2383 /* Create a new value of type TYPE from the contents of OBJ starting
2384    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2385    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2386    assigning through the result will set the field fetched from.
2387    VALADDR is ignored unless OBJ is NULL, in which case,
2388    VALADDR+OFFSET must address the start of storage containing the 
2389    packed value.  The value returned  in this case is never an lval.
2390    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2391
2392 struct value *
2393 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2394                                 long offset, int bit_offset, int bit_size,
2395                                 struct type *type)
2396 {
2397   struct value *v;
2398   int src,                      /* Index into the source area */
2399     targ,                       /* Index into the target area */
2400     srcBitsLeft,                /* Number of source bits left to move */
2401     nsrc, ntarg,                /* Number of source and target bytes */
2402     unusedLS,                   /* Number of bits in next significant
2403                                    byte of source that are unused */
2404     accumSize;                  /* Number of meaningful bits in accum */
2405   unsigned char *bytes;         /* First byte containing data to unpack */
2406   unsigned char *unpacked;
2407   unsigned long accum;          /* Staging area for bits being transferred */
2408   unsigned char sign;
2409   int len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2410   /* Transmit bytes from least to most significant; delta is the direction
2411      the indices move.  */
2412   int delta = gdbarch_bits_big_endian (get_type_arch (type)) ? -1 : 1;
2413
2414   type = ada_check_typedef (type);
2415
2416   if (obj == NULL)
2417     {
2418       v = allocate_value (type);
2419       bytes = (unsigned char *) (valaddr + offset);
2420     }
2421   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2422     {
2423       v = value_at (type, value_address (obj));
2424       type = value_type (v);
2425       bytes = (unsigned char *) alloca (len);
2426       read_memory (value_address (v) + offset, bytes, len);
2427     }
2428   else
2429     {
2430       v = allocate_value (type);
2431       bytes = (unsigned char *) value_contents (obj) + offset;
2432     }
2433
2434   if (obj != NULL)
2435     {
2436       long new_offset = offset;
2437
2438       set_value_component_location (v, obj);
2439       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2440       set_value_bitsize (v, bit_size);
2441       if (value_bitpos (v) >= HOST_CHAR_BIT)
2442         {
2443           ++new_offset;
2444           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2445         }
2446       set_value_offset (v, new_offset);
2447
2448       /* Also set the parent value.  This is needed when trying to
2449          assign a new value (in inferior memory).  */
2450       set_value_parent (v, obj);
2451     }
2452   else
2453     set_value_bitsize (v, bit_size);
2454   unpacked = (unsigned char *) value_contents (v);
2455
2456   srcBitsLeft = bit_size;
2457   nsrc = len;
2458   ntarg = TYPE_LENGTH (type);
2459   sign = 0;
2460   if (bit_size == 0)
2461     {
2462       memset (unpacked, 0, TYPE_LENGTH (type));
2463       return v;
2464     }
2465   else if (gdbarch_bits_big_endian (get_type_arch (type)))
2466     {
2467       src = len - 1;
2468       if (has_negatives (type)
2469           && ((bytes[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2470         sign = ~0;
2471
2472       unusedLS =
2473         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2474         % HOST_CHAR_BIT;
2475
2476       switch (TYPE_CODE (type))
2477         {
2478         case TYPE_CODE_ARRAY:
2479         case TYPE_CODE_UNION:
2480         case TYPE_CODE_STRUCT:
2481           /* Non-scalar values must be aligned at a byte boundary...  */
2482           accumSize =
2483             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2484           /* ... And are placed at the beginning (most-significant) bytes
2485              of the target.  */
2486           targ = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2487           ntarg = targ + 1;
2488           break;
2489         default:
2490           accumSize = 0;
2491           targ = TYPE_LENGTH (type) - 1;
2492           break;
2493         }
2494     }
2495   else
2496     {
2497       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2498
2499       src = targ = 0;
2500       unusedLS = bit_offset;
2501       accumSize = 0;
2502
2503       if (has_negatives (type) && (bytes[len - 1] & (1 << sign_bit_offset)))
2504         sign = ~0;
2505     }
2506
2507   accum = 0;
2508   while (nsrc > 0)
2509     {
2510       /* Mask for removing bits of the next source byte that are not
2511          part of the value.  */
2512       unsigned int unusedMSMask =
2513         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2514         1;
2515       /* Sign-extend bits for this byte.  */
2516       unsigned int signMask = sign & ~unusedMSMask;
2517
2518       accum |=
2519         (((bytes[src] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2520       accumSize += HOST_CHAR_BIT - unusedLS;
2521       if (accumSize >= HOST_CHAR_BIT)
2522         {
2523           unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
2524           accumSize -= HOST_CHAR_BIT;
2525           accum >>= HOST_CHAR_BIT;
2526           ntarg -= 1;
2527           targ += delta;
2528         }
2529       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2530       unusedLS = 0;
2531       nsrc -= 1;
2532       src += delta;
2533     }
2534   while (ntarg > 0)
2535     {
2536       accum |= sign << accumSize;
2537       unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
2538       accumSize -= HOST_CHAR_BIT;
2539       accum >>= HOST_CHAR_BIT;
2540       ntarg -= 1;
2541       targ += delta;
2542     }
2543
2544   return v;
2545 }
2546
2547 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2548    TARGET, starting at bit offset TARG_OFFSET.  SOURCE and TARGET must
2549    not overlap.  */
2550 static void
2551 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
2552            int src_offset, int n, int bits_big_endian_p)
2553 {
2554   unsigned int accum, mask;
2555   int accum_bits, chunk_size;
2556
2557   target += targ_offset / HOST_CHAR_BIT;
2558   targ_offset %= HOST_CHAR_BIT;
2559   source += src_offset / HOST_CHAR_BIT;
2560   src_offset %= HOST_CHAR_BIT;
2561   if (bits_big_endian_p)
2562     {
2563       accum = (unsigned char) *source;
2564       source += 1;
2565       accum_bits = HOST_CHAR_BIT - src_offset;
2566
2567       while (n > 0)
2568         {
2569           int unused_right;
2570
2571           accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2572           accum_bits += HOST_CHAR_BIT;
2573           source += 1;
2574           chunk_size = HOST_CHAR_BIT - targ_offset;
2575           if (chunk_size > n)
2576             chunk_size = n;
2577           unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2578           mask = ((1 << chunk_size) - 1) << unused_right;
2579           *target =
2580             (*target & ~mask)
2581             | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2582           n -= chunk_size;
2583           accum_bits -= chunk_size;
2584           target += 1;
2585           targ_offset = 0;
2586         }
2587     }
2588   else
2589     {
2590       accum = (unsigned char) *source >> src_offset;
2591       source += 1;
2592       accum_bits = HOST_CHAR_BIT - src_offset;
2593
2594       while (n > 0)
2595         {
2596           accum = accum + ((unsigned char) *source << accum_bits);
2597           accum_bits += HOST_CHAR_BIT;
2598           source += 1;
2599           chunk_size = HOST_CHAR_BIT - targ_offset;
2600           if (chunk_size > n)
2601             chunk_size = n;
2602           mask = ((1 << chunk_size) - 1) << targ_offset;
2603           *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2604           n -= chunk_size;
2605           accum_bits -= chunk_size;
2606           accum >>= chunk_size;
2607           target += 1;
2608           targ_offset = 0;
2609         }
2610     }
2611 }
2612
2613 /* Store the contents of FROMVAL into the location of TOVAL.
2614    Return a new value with the location of TOVAL and contents of
2615    FROMVAL.   Handles assignment into packed fields that have
2616    floating-point or non-scalar types.  */
2617
2618 static struct value *
2619 ada_value_assign (struct value *toval, struct value *fromval)
2620 {
2621   struct type *type = value_type (toval);
2622   int bits = value_bitsize (toval);
2623
2624   toval = ada_coerce_ref (toval);
2625   fromval = ada_coerce_ref (fromval);
2626
2627   if (ada_is_direct_array_type (value_type (toval)))
2628     toval = ada_coerce_to_simple_array (toval);
2629   if (ada_is_direct_array_type (value_type (fromval)))
2630     fromval = ada_coerce_to_simple_array (fromval);
2631
2632   if (!deprecated_value_modifiable (toval))
2633     error (_("Left operand of assignment is not a modifiable lvalue."));
2634
2635   if (VALUE_LVAL (toval) == lval_memory
2636       && bits > 0
2637       && (TYPE_CODE (type) == TYPE_CODE_FLT
2638           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2639     {
2640       int len = (value_bitpos (toval)
2641                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2642       int from_size;
2643       gdb_byte *buffer = alloca (len);
2644       struct value *val;
2645       CORE_ADDR to_addr = value_address (toval);
2646
2647       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2648         fromval = value_cast (type, fromval);
2649
2650       read_memory (to_addr, buffer, len);
2651       from_size = value_bitsize (fromval);
2652       if (from_size == 0)
2653         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2654       if (gdbarch_bits_big_endian (get_type_arch (type)))
2655         move_bits (buffer, value_bitpos (toval),
2656                    value_contents (fromval), from_size - bits, bits, 1);
2657       else
2658         move_bits (buffer, value_bitpos (toval),
2659                    value_contents (fromval), 0, bits, 0);
2660       write_memory_with_notification (to_addr, buffer, len);
2661
2662       val = value_copy (toval);
2663       memcpy (value_contents_raw (val), value_contents (fromval),
2664               TYPE_LENGTH (type));
2665       deprecated_set_value_type (val, type);
2666
2667       return val;
2668     }
2669
2670   return value_assign (toval, fromval);
2671 }
2672
2673
2674 /* Given that COMPONENT is a memory lvalue that is part of the lvalue 
2675  * CONTAINER, assign the contents of VAL to COMPONENTS's place in 
2676  * CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not 
2677  * COMPONENT, and not the inferior's memory.  The current contents 
2678  * of COMPONENT are ignored.  */
2679 static void
2680 value_assign_to_component (struct value *container, struct value *component,
2681                            struct value *val)
2682 {
2683   LONGEST offset_in_container =
2684     (LONGEST)  (value_address (component) - value_address (container));
2685   int bit_offset_in_container = 
2686     value_bitpos (component) - value_bitpos (container);
2687   int bits;
2688   
2689   val = value_cast (value_type (component), val);
2690
2691   if (value_bitsize (component) == 0)
2692     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2693   else
2694     bits = value_bitsize (component);
2695
2696   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2697     move_bits (value_contents_writeable (container) + offset_in_container, 
2698                value_bitpos (container) + bit_offset_in_container,
2699                value_contents (val),
2700                TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits,
2701                bits, 1);
2702   else
2703     move_bits (value_contents_writeable (container) + offset_in_container, 
2704                value_bitpos (container) + bit_offset_in_container,
2705                value_contents (val), 0, bits, 0);
2706 }              
2707                         
2708 /* The value of the element of array ARR at the ARITY indices given in IND.
2709    ARR may be either a simple array, GNAT array descriptor, or pointer
2710    thereto.  */
2711
2712 struct value *
2713 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2714 {
2715   int k;
2716   struct value *elt;
2717   struct type *elt_type;
2718
2719   elt = ada_coerce_to_simple_array (arr);
2720
2721   elt_type = ada_check_typedef (value_type (elt));
2722   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2723       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2724     return value_subscript_packed (elt, arity, ind);
2725
2726   for (k = 0; k < arity; k += 1)
2727     {
2728       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2729         error (_("too many subscripts (%d expected)"), k);
2730       elt = value_subscript (elt, pos_atr (ind[k]));
2731     }
2732   return elt;
2733 }
2734
2735 /* Assuming ARR is a pointer to a GDB array, the value of the element
2736    of *ARR at the ARITY indices given in IND.
2737    Does not read the entire array into memory.  */
2738
2739 static struct value *
2740 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2741 {
2742   int k;
2743   struct type *type
2744     = check_typedef (value_enclosing_type (ada_value_ind (arr)));
2745
2746   for (k = 0; k < arity; k += 1)
2747     {
2748       LONGEST lwb, upb;
2749
2750       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2751         error (_("too many subscripts (%d expected)"), k);
2752       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2753                         value_copy (arr));
2754       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2755       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2756       type = TYPE_TARGET_TYPE (type);
2757     }
2758
2759   return value_ind (arr);
2760 }
2761
2762 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2763    actual type of ARRAY_PTR is ignored), returns the Ada slice of HIGH-LOW+1
2764    elements starting at index LOW.  The lower bound of this array is LOW, as
2765    per Ada rules.  */
2766 static struct value *
2767 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2768                           int low, int high)
2769 {
2770   struct type *type0 = ada_check_typedef (type);
2771   CORE_ADDR base = value_as_address (array_ptr)
2772     + ((low - ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0)))
2773        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2774   struct type *index_type
2775     = create_static_range_type (NULL,
2776                                 TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0)),
2777                                 low, high);
2778   struct type *slice_type =
2779     create_array_type (NULL, TYPE_TARGET_TYPE (type0), index_type);
2780
2781   return value_at_lazy (slice_type, base);
2782 }
2783
2784
2785 static struct value *
2786 ada_value_slice (struct value *array, int low, int high)
2787 {
2788   struct type *type = ada_check_typedef (value_type (array));
2789   struct type *index_type
2790     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2791   struct type *slice_type =
2792     create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2793
2794   return value_cast (slice_type, value_slice (array, low, high - low + 1));
2795 }
2796
2797 /* If type is a record type in the form of a standard GNAT array
2798    descriptor, returns the number of dimensions for type.  If arr is a
2799    simple array, returns the number of "array of"s that prefix its
2800    type designation.  Otherwise, returns 0.  */
2801
2802 int
2803 ada_array_arity (struct type *type)
2804 {
2805   int arity;
2806
2807   if (type == NULL)
2808     return 0;
2809
2810   type = desc_base_type (type);
2811
2812   arity = 0;
2813   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2814     return desc_arity (desc_bounds_type (type));
2815   else
2816     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2817       {
2818         arity += 1;
2819         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2820       }
2821
2822   return arity;
2823 }
2824
2825 /* If TYPE is a record type in the form of a standard GNAT array
2826    descriptor or a simple array type, returns the element type for
2827    TYPE after indexing by NINDICES indices, or by all indices if
2828    NINDICES is -1.  Otherwise, returns NULL.  */
2829
2830 struct type *
2831 ada_array_element_type (struct type *type, int nindices)
2832 {
2833   type = desc_base_type (type);
2834
2835   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2836     {
2837       int k;
2838       struct type *p_array_type;
2839
2840       p_array_type = desc_data_target_type (type);
2841
2842       k = ada_array_arity (type);
2843       if (k == 0)
2844         return NULL;
2845
2846       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2847       if (nindices >= 0 && k > nindices)
2848         k = nindices;
2849       while (k > 0 && p_array_type != NULL)
2850         {
2851           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2852           k -= 1;
2853         }
2854       return p_array_type;
2855     }
2856   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2857     {
2858       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2859         {
2860           type = TYPE_TARGET_TYPE (type);
2861           nindices -= 1;
2862         }
2863       return type;
2864     }
2865
2866   return NULL;
2867 }
2868
2869 /* The type of nth index in arrays of given type (n numbering from 1).
2870    Does not examine memory.  Throws an error if N is invalid or TYPE
2871    is not an array type.  NAME is the name of the Ada attribute being
2872    evaluated ('range, 'first, 'last, or 'length); it is used in building
2873    the error message.  */
2874
2875 static struct type *
2876 ada_index_type (struct type *type, int n, const char *name)
2877 {
2878   struct type *result_type;
2879
2880   type = desc_base_type (type);
2881
2882   if (n < 0 || n > ada_array_arity (type))
2883     error (_("invalid dimension number to '%s"), name);
2884
2885   if (ada_is_simple_array_type (type))
2886     {
2887       int i;
2888
2889       for (i = 1; i < n; i += 1)
2890         type = TYPE_TARGET_TYPE (type);
2891       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2892       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2893          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2894          perhaps stabsread.c would make more sense.  */
2895       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
2896         result_type = NULL;
2897     }
2898   else
2899     {
2900       result_type = desc_index_type (desc_bounds_type (type), n);
2901       if (result_type == NULL)
2902         error (_("attempt to take bound of something that is not an array"));
2903     }
2904
2905   return result_type;
2906 }
2907
2908 /* Given that arr is an array type, returns the lower bound of the
2909    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2910    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2911    array-descriptor type.  It works for other arrays with bounds supplied
2912    by run-time quantities other than discriminants.  */
2913
2914 static LONGEST
2915 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2916 {
2917   struct type *type, *index_type_desc, *index_type;
2918   int i;
2919
2920   gdb_assert (which == 0 || which == 1);
2921
2922   if (ada_is_constrained_packed_array_type (arr_type))
2923     arr_type = decode_constrained_packed_array_type (arr_type);
2924
2925   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2926     return (LONGEST) - which;
2927
2928   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
2929     type = TYPE_TARGET_TYPE (arr_type);
2930   else
2931     type = arr_type;
2932
2933   index_type_desc = ada_find_parallel_type (type, "___XA");
2934   ada_fixup_array_indexes_type (index_type_desc);
2935   if (index_type_desc != NULL)
2936     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
2937                                       NULL);
2938   else
2939     {
2940       struct type *elt_type = check_typedef (type);
2941
2942       for (i = 1; i < n; i++)
2943         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2944
2945       index_type = TYPE_INDEX_TYPE (elt_type);
2946     }
2947
2948   return
2949     (LONGEST) (which == 0
2950                ? ada_discrete_type_low_bound (index_type)
2951                : ada_discrete_type_high_bound (index_type));
2952 }
2953
2954 /* Given that arr is an array value, returns the lower bound of the
2955    nth index (numbering from 1) if WHICH is 0, and the upper bound if
2956    WHICH is 1.  This routine will also work for arrays with bounds
2957    supplied by run-time quantities other than discriminants.  */
2958
2959 static LONGEST
2960 ada_array_bound (struct value *arr, int n, int which)
2961 {
2962   struct type *arr_type;
2963
2964   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2965     arr = value_ind (arr);
2966   arr_type = value_enclosing_type (arr);
2967
2968   if (ada_is_constrained_packed_array_type (arr_type))
2969     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
2970   else if (ada_is_simple_array_type (arr_type))
2971     return ada_array_bound_from_type (arr_type, n, which);
2972   else
2973     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
2974 }
2975
2976 /* Given that arr is an array value, returns the length of the
2977    nth index.  This routine will also work for arrays with bounds
2978    supplied by run-time quantities other than discriminants.
2979    Does not work for arrays indexed by enumeration types with representation
2980    clauses at the moment.  */
2981
2982 static LONGEST
2983 ada_array_length (struct value *arr, int n)
2984 {
2985   struct type *arr_type;
2986
2987   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2988     arr = value_ind (arr);
2989   arr_type = value_enclosing_type (arr);
2990
2991   if (ada_is_constrained_packed_array_type (arr_type))
2992     return ada_array_length (decode_constrained_packed_array (arr), n);
2993
2994   if (ada_is_simple_array_type (arr_type))
2995     return (ada_array_bound_from_type (arr_type, n, 1)
2996             - ada_array_bound_from_type (arr_type, n, 0) + 1);
2997   else
2998     return (value_as_long (desc_one_bound (desc_bounds (arr), n, 1))
2999             - value_as_long (desc_one_bound (desc_bounds (arr), n, 0)) + 1);
3000 }
3001
3002 /* An empty array whose type is that of ARR_TYPE (an array type),
3003    with bounds LOW to LOW-1.  */
3004
3005 static struct value *
3006 empty_array (struct type *arr_type, int low)
3007 {
3008   struct type *arr_type0 = ada_check_typedef (arr_type);
3009   struct type *index_type
3010     = create_static_range_type
3011         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)),  low, low - 1);
3012   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3013
3014   return allocate_value (create_array_type (NULL, elt_type, index_type));
3015 }
3016 \f
3017
3018                                 /* Name resolution */
3019
3020 /* The "decoded" name for the user-definable Ada operator corresponding
3021    to OP.  */
3022
3023 static const char *
3024 ada_decoded_op_name (enum exp_opcode op)
3025 {
3026   int i;
3027
3028   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3029     {
3030       if (ada_opname_table[i].op == op)
3031         return ada_opname_table[i].decoded;
3032     }
3033   error (_("Could not find operator name for opcode"));
3034 }
3035
3036
3037 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3038    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3039    undefined namespace) and converts operators that are
3040    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3041    non-null, it provides a preferred result type [at the moment, only
3042    type void has any effect---causing procedures to be preferred over
3043    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3044    return type is preferred.  May change (expand) *EXP.  */
3045
3046 static void
3047 resolve (struct expression **expp, int void_context_p)
3048 {
3049   struct type *context_type = NULL;
3050   int pc = 0;
3051
3052   if (void_context_p)
3053     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3054
3055   resolve_subexp (expp, &pc, 1, context_type);
3056 }
3057
3058 /* Resolve the operator of the subexpression beginning at
3059    position *POS of *EXPP.  "Resolving" consists of replacing
3060    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3061    with their resolutions, replacing built-in operators with
3062    function calls to user-defined operators, where appropriate, and,
3063    when DEPROCEDURE_P is non-zero, converting function-valued variables
3064    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3065    are as in ada_resolve, above.  */
3066
3067 static struct value *
3068 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
3069                 struct type *context_type)
3070 {
3071   int pc = *pos;
3072   int i;
3073   struct expression *exp;       /* Convenience: == *expp.  */
3074   enum exp_opcode op = (*expp)->elts[pc].opcode;
3075   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3076   int nargs;                    /* Number of operands.  */
3077   int oplen;
3078
3079   argvec = NULL;
3080   nargs = 0;
3081   exp = *expp;
3082
3083   /* Pass one: resolve operands, saving their types and updating *pos,
3084      if needed.  */
3085   switch (op)
3086     {
3087     case OP_FUNCALL:
3088       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3089           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3090         *pos += 7;
3091       else
3092         {
3093           *pos += 3;
3094           resolve_subexp (expp, pos, 0, NULL);
3095         }
3096       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3097       break;
3098
3099     case UNOP_ADDR:
3100       *pos += 1;
3101       resolve_subexp (expp, pos, 0, NULL);
3102       break;
3103
3104     case UNOP_QUAL:
3105       *pos += 3;
3106       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3107       break;
3108
3109     case OP_ATR_MODULUS:
3110     case OP_ATR_SIZE:
3111     case OP_ATR_TAG:
3112     case OP_ATR_FIRST:
3113     case OP_ATR_LAST:
3114     case OP_ATR_LENGTH:
3115     case OP_ATR_POS:
3116     case OP_ATR_VAL:
3117     case OP_ATR_MIN:
3118     case OP_ATR_MAX:
3119     case TERNOP_IN_RANGE:
3120     case BINOP_IN_BOUNDS:
3121     case UNOP_IN_RANGE:
3122     case OP_AGGREGATE:
3123     case OP_OTHERS:
3124     case OP_CHOICES:
3125     case OP_POSITIONAL:
3126     case OP_DISCRETE_RANGE:
3127     case OP_NAME:
3128       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3129       *pos += oplen;
3130       break;
3131
3132     case BINOP_ASSIGN:
3133       {
3134         struct value *arg1;
3135
3136         *pos += 1;
3137         arg1 = resolve_subexp (expp, pos, 0, NULL);
3138         if (arg1 == NULL)
3139           resolve_subexp (expp, pos, 1, NULL);
3140         else
3141           resolve_subexp (expp, pos, 1, value_type (arg1));
3142         break;
3143       }
3144
3145     case UNOP_CAST:
3146       *pos += 3;
3147       nargs = 1;
3148       break;
3149
3150     case BINOP_ADD:
3151     case BINOP_SUB:
3152     case BINOP_MUL:
3153     case BINOP_DIV:
3154     case BINOP_REM:
3155     case BINOP_MOD:
3156     case BINOP_EXP:
3157     case BINOP_CONCAT:
3158     case BINOP_LOGICAL_AND:
3159     case BINOP_LOGICAL_OR:
3160     case BINOP_BITWISE_AND:
3161     case BINOP_BITWISE_IOR:
3162     case BINOP_BITWISE_XOR:
3163
3164     case BINOP_EQUAL:
3165     case BINOP_NOTEQUAL:
3166     case BINOP_LESS:
3167     case BINOP_GTR:
3168     case BINOP_LEQ:
3169     case BINOP_GEQ:
3170
3171     case BINOP_REPEAT:
3172     case BINOP_SUBSCRIPT:
3173     case BINOP_COMMA:
3174       *pos += 1;
3175       nargs = 2;
3176       break;
3177
3178     case UNOP_NEG:
3179     case UNOP_PLUS:
3180     case UNOP_LOGICAL_NOT:
3181     case UNOP_ABS:
3182     case UNOP_IND:
3183       *pos += 1;
3184       nargs = 1;
3185       break;
3186
3187     case OP_LONG:
3188     case OP_DOUBLE:
3189     case OP_VAR_VALUE:
3190       *pos += 4;
3191       break;
3192
3193     case OP_TYPE:
3194     case OP_BOOL:
3195     case OP_LAST:
3196     case OP_INTERNALVAR:
3197       *pos += 3;
3198       break;
3199
3200     case UNOP_MEMVAL:
3201       *pos += 3;
3202       nargs = 1;
3203       break;
3204
3205     case OP_REGISTER:
3206       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3207       break;
3208
3209     case STRUCTOP_STRUCT:
3210       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3211       nargs = 1;
3212       break;
3213
3214     case TERNOP_SLICE:
3215       *pos += 1;
3216       nargs = 3;
3217       break;
3218
3219     case OP_STRING:
3220       break;
3221
3222     default:
3223       error (_("Unexpected operator during name resolution"));
3224     }
3225
3226   argvec = (struct value * *) alloca (sizeof (struct value *) * (nargs + 1));
3227   for (i = 0; i < nargs; i += 1)
3228     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3229   argvec[i] = NULL;
3230   exp = *expp;
3231
3232   /* Pass two: perform any resolution on principal operator.  */
3233   switch (op)
3234     {
3235     default:
3236       break;
3237
3238     case OP_VAR_VALUE:
3239       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3240         {
3241           struct ada_symbol_info *candidates;
3242           int n_candidates;
3243
3244           n_candidates =
3245             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3246                                     (exp->elts[pc + 2].symbol),
3247                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3248                                     &candidates);
3249
3250           if (n_candidates > 1)
3251             {
3252               /* Types tend to get re-introduced locally, so if there
3253                  are any local symbols that are not types, first filter
3254                  out all types.  */
3255               int j;
3256               for (j = 0; j < n_candidates; j += 1)
3257                 switch (SYMBOL_CLASS (candidates[j].sym))
3258                   {
3259                   case LOC_REGISTER:
3260                   case LOC_ARG:
3261                   case LOC_REF_ARG:
3262                   case LOC_REGPARM_ADDR:
3263                   case LOC_LOCAL:
3264                   case LOC_COMPUTED:
3265                     goto FoundNonType;
3266                   default:
3267                     break;
3268                   }
3269             FoundNonType:
3270               if (j < n_candidates)
3271                 {
3272                   j = 0;
3273                   while (j < n_candidates)
3274                     {
3275                       if (SYMBOL_CLASS (candidates[j].sym) == LOC_TYPEDEF)
3276                         {
3277                           candidates[j] = candidates[n_candidates - 1];
3278                           n_candidates -= 1;
3279                         }
3280                       else
3281                         j += 1;
3282                     }
3283                 }
3284             }
3285
3286           if (n_candidates == 0)
3287             error (_("No definition found for %s"),
3288                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3289           else if (n_candidates == 1)
3290             i = 0;
3291           else if (deprocedure_p
3292                    && !is_nonfunction (candidates, n_candidates))
3293             {
3294               i = ada_resolve_function
3295                 (candidates, n_candidates, NULL, 0,
3296                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3297                  context_type);
3298               if (i < 0)
3299                 error (_("Could not find a match for %s"),
3300                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3301             }
3302           else
3303             {
3304               printf_filtered (_("Multiple matches for %s\n"),
3305                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3306               user_select_syms (candidates, n_candidates, 1);
3307               i = 0;
3308             }
3309
3310           exp->elts[pc + 1].block = candidates[i].block;
3311           exp->elts[pc + 2].symbol = candidates[i].sym;
3312           if (innermost_block == NULL
3313               || contained_in (candidates[i].block, innermost_block))
3314             innermost_block = candidates[i].block;
3315         }
3316
3317       if (deprocedure_p
3318           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3319               == TYPE_CODE_FUNC))
3320         {
3321           replace_operator_with_call (expp, pc, 0, 0,
3322                                       exp->elts[pc + 2].symbol,
3323                                       exp->elts[pc + 1].block);
3324           exp = *expp;
3325         }
3326       break;
3327
3328     case OP_FUNCALL:
3329       {
3330         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3331             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3332           {
3333             struct ada_symbol_info *candidates;
3334             int n_candidates;
3335
3336             n_candidates =
3337               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3338                                       (exp->elts[pc + 5].symbol),
3339                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3340                                       &candidates);
3341             if (n_candidates == 1)
3342               i = 0;
3343             else
3344               {
3345                 i = ada_resolve_function
3346                   (candidates, n_candidates,
3347                    argvec, nargs,
3348                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3349                    context_type);
3350                 if (i < 0)
3351                   error (_("Could not find a match for %s"),
3352                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3353               }
3354
3355             exp->elts[pc + 4].block = candidates[i].block;
3356             exp->elts[pc + 5].symbol = candidates[i].sym;
3357             if (innermost_block == NULL
3358                 || contained_in (candidates[i].block, innermost_block))
3359               innermost_block = candidates[i].block;
3360           }
3361       }
3362       break;
3363     case BINOP_ADD:
3364     case BINOP_SUB:
3365     case BINOP_MUL:
3366     case BINOP_DIV:
3367     case BINOP_REM:
3368     case BINOP_MOD:
3369     case BINOP_CONCAT:
3370     case BINOP_BITWISE_AND:
3371     case BINOP_BITWISE_IOR:
3372     case BINOP_BITWISE_XOR:
3373     case BINOP_EQUAL:
3374     case BINOP_NOTEQUAL:
3375     case BINOP_LESS:
3376     case BINOP_GTR:
3377     case BINOP_LEQ:
3378     case BINOP_GEQ:
3379     case BINOP_EXP:
3380     case UNOP_NEG:
3381     case UNOP_PLUS:
3382     case UNOP_LOGICAL_NOT:
3383     case UNOP_ABS:
3384       if (possible_user_operator_p (op, argvec))
3385         {
3386           struct ada_symbol_info *candidates;
3387           int n_candidates;
3388
3389           n_candidates =
3390             ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)),
3391                                     (struct block *) NULL, VAR_DOMAIN,
3392                                     &candidates);
3393           i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
3394                                     ada_decoded_op_name (op), NULL);
3395           if (i < 0)
3396             break;
3397
3398           replace_operator_with_call (expp, pc, nargs, 1,
3399                                       candidates[i].sym, candidates[i].block);
3400           exp = *expp;
3401         }
3402       break;
3403
3404     case OP_TYPE:
3405     case OP_REGISTER:
3406       return NULL;
3407     }
3408
3409   *pos = pc;
3410   return evaluate_subexp_type (exp, pos);
3411 }
3412
3413 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3414    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3415    a non-pointer.  */
3416 /* The term "match" here is rather loose.  The match is heuristic and
3417    liberal.  */
3418
3419 static int
3420 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3421 {
3422   ftype = ada_check_typedef (ftype);
3423   atype = ada_check_typedef (atype);
3424
3425   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3426     ftype = TYPE_TARGET_TYPE (ftype);
3427   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3428     atype = TYPE_TARGET_TYPE (atype);
3429
3430   switch (TYPE_CODE (ftype))
3431     {
3432     default:
3433       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3434     case TYPE_CODE_PTR:
3435       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3436         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3437                                TYPE_TARGET_TYPE (atype), 0);
3438       else
3439         return (may_deref
3440                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3441     case TYPE_CODE_INT:
3442     case TYPE_CODE_ENUM:
3443     case TYPE_CODE_RANGE:
3444       switch (TYPE_CODE (atype))
3445         {
3446         case TYPE_CODE_INT:
3447         case TYPE_CODE_ENUM:
3448         case TYPE_CODE_RANGE:
3449           return 1;
3450         default:
3451           return 0;
3452         }
3453
3454     case TYPE_CODE_ARRAY:
3455       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3456               || ada_is_array_descriptor_type (atype));
3457
3458     case TYPE_CODE_STRUCT:
3459       if (ada_is_array_descriptor_type (ftype))
3460         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3461                 || ada_is_array_descriptor_type (atype));
3462       else
3463         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3464                 && !ada_is_array_descriptor_type (atype));
3465
3466     case TYPE_CODE_UNION:
3467     case TYPE_CODE_FLT:
3468       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3469     }
3470 }
3471
3472 /* Return non-zero if the formals of FUNC "sufficiently match" the
3473    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3474    may also be an enumeral, in which case it is treated as a 0-
3475    argument function.  */
3476
3477 static int
3478 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3479 {
3480   int i;
3481   struct type *func_type = SYMBOL_TYPE (func);
3482
3483   if (SYMBOL_CLASS (func) == LOC_CONST
3484       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3485     return (n_actuals == 0);
3486   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3487     return 0;
3488
3489   if (TYPE_NFIELDS (func_type) != n_actuals)
3490     return 0;
3491
3492   for (i = 0; i < n_actuals; i += 1)
3493     {
3494       if (actuals[i] == NULL)
3495         return 0;
3496       else
3497         {
3498           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3499                                                                    i));
3500           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3501
3502           if (!ada_type_match (ftype, atype, 1))
3503             return 0;
3504         }
3505     }
3506   return 1;
3507 }
3508
3509 /* False iff function type FUNC_TYPE definitely does not produce a value
3510    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3511    FUNC_TYPE is not a valid function type with a non-null return type
3512    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3513
3514 static int
3515 return_match (struct type *func_type, struct type *context_type)
3516 {
3517   struct type *return_type;
3518
3519   if (func_type == NULL)
3520     return 1;
3521
3522   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3523     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3524   else
3525     return_type = get_base_type (func_type);
3526   if (return_type == NULL)
3527     return 1;
3528
3529   context_type = get_base_type (context_type);
3530
3531   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3532     return context_type == NULL || return_type == context_type;
3533   else if (context_type == NULL)
3534     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3535   else
3536     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3537 }
3538
3539
3540 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3541    function (if any) that matches the types of the NARGS arguments in
3542    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3543    that returns that type, then eliminate matches that don't.  If
3544    CONTEXT_TYPE is void and there is at least one match that does not
3545    return void, eliminate all matches that do.
3546
3547    Asks the user if there is more than one match remaining.  Returns -1
3548    if there is no such symbol or none is selected.  NAME is used
3549    solely for messages.  May re-arrange and modify SYMS in
3550    the process; the index returned is for the modified vector.  */
3551
3552 static int
3553 ada_resolve_function (struct ada_symbol_info syms[],
3554                       int nsyms, struct value **args, int nargs,
3555                       const char *name, struct type *context_type)
3556 {
3557   int fallback;
3558   int k;
3559   int m;                        /* Number of hits */
3560
3561   m = 0;
3562   /* In the first pass of the loop, we only accept functions matching
3563      context_type.  If none are found, we add a second pass of the loop
3564      where every function is accepted.  */
3565   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3566     {
3567       for (k = 0; k < nsyms; k += 1)
3568         {
3569           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].sym));
3570
3571           if (ada_args_match (syms[k].sym, args, nargs)
3572               && (fallback || return_match (type, context_type)))
3573             {
3574               syms[m] = syms[k];
3575               m += 1;
3576             }
3577         }
3578     }
3579
3580   if (m == 0)
3581     return -1;
3582   else if (m > 1)
3583     {
3584       printf_filtered (_("Multiple matches for %s\n"), name);
3585       user_select_syms (syms, m, 1);
3586       return 0;
3587     }
3588   return 0;
3589 }
3590
3591 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3592    in a listing of choices during disambiguation (see sort_choices, below).
3593    The idea is that overloadings of a subprogram name from the
3594    same package should sort in their source order.  We settle for ordering
3595    such symbols by their trailing number (__N  or $N).  */
3596
3597 static int
3598 encoded_ordered_before (const char *N0, const char *N1)
3599 {
3600   if (N1 == NULL)
3601     return 0;
3602   else if (N0 == NULL)
3603     return 1;
3604   else
3605     {
3606       int k0, k1;
3607
3608       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3609         ;
3610       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3611         ;
3612       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3613           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3614         {
3615           int n0, n1;
3616
3617           n0 = k0;
3618           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3619             n0 -= 1;
3620           n1 = k1;
3621           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3622             n1 -= 1;
3623           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3624             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3625         }
3626       return (strcmp (N0, N1) < 0);
3627     }
3628 }
3629
3630 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3631    encoded names.  */
3632
3633 static void
3634 sort_choices (struct ada_symbol_info syms[], int nsyms)
3635 {
3636   int i;
3637
3638   for (i = 1; i < nsyms; i += 1)
3639     {
3640       struct ada_symbol_info sym = syms[i];
3641       int j;
3642
3643       for (j = i - 1; j >= 0; j -= 1)
3644         {
3645           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].sym),
3646                                       SYMBOL_LINKAGE_NAME (sym.sym)))
3647             break;
3648           syms[j + 1] = syms[j];
3649         }
3650       syms[j + 1] = sym;
3651     }
3652 }
3653
3654 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3655    by asking the user (if necessary), returning the number selected, 
3656    and setting the first elements of SYMS items.  Error if no symbols
3657    selected.  */
3658
3659 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3660    to be re-integrated one of these days.  */
3661
3662 int
3663 user_select_syms (struct ada_symbol_info *syms, int nsyms, int max_results)
3664 {
3665   int i;
3666   int *chosen = (int *) alloca (sizeof (int) * nsyms);
3667   int n_chosen;
3668   int first_choice = (max_results == 1) ? 1 : 2;
3669   const char *select_mode = multiple_symbols_select_mode ();
3670
3671   if (max_results < 1)
3672     error (_("Request to select 0 symbols!"));
3673   if (nsyms <= 1)
3674     return nsyms;
3675
3676   if (select_mode == multiple_symbols_cancel)
3677     error (_("\
3678 canceled because the command is ambiguous\n\
3679 See set/show multiple-symbol."));
3680   
3681   /* If select_mode is "all", then return all possible symbols.
3682      Only do that if more than one symbol can be selected, of course.
3683      Otherwise, display the menu as usual.  */
3684   if (select_mode == multiple_symbols_all && max_results > 1)
3685     return nsyms;
3686
3687   printf_unfiltered (_("[0] cancel\n"));
3688   if (max_results > 1)
3689     printf_unfiltered (_("[1] all\n"));
3690
3691   sort_choices (syms, nsyms);
3692
3693   for (i = 0; i < nsyms; i += 1)
3694     {
3695       if (syms[i].sym == NULL)
3696         continue;
3697
3698       if (SYMBOL_CLASS (syms[i].sym) == LOC_BLOCK)
3699         {
3700           struct symtab_and_line sal =
3701             find_function_start_sal (syms[i].sym, 1);
3702
3703           if (sal.symtab == NULL)
3704             printf_unfiltered (_("[%d] %s at <no source file available>:%d\n"),
3705                                i + first_choice,
3706                                SYMBOL_PRINT_NAME (syms[i].sym),
3707                                sal.line);
3708           else
3709             printf_unfiltered (_("[%d] %s at %s:%d\n"), i + first_choice,
3710                                SYMBOL_PRINT_NAME (syms[i].sym),
3711                                symtab_to_filename_for_display (sal.symtab),
3712                                sal.line);
3713           continue;
3714         }
3715       else
3716         {
3717           int is_enumeral =
3718             (SYMBOL_CLASS (syms[i].sym) == LOC_CONST
3719              && SYMBOL_TYPE (syms[i].sym) != NULL
3720              && TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) == TYPE_CODE_ENUM);
3721           struct symtab *symtab = SYMBOL_SYMTAB (syms[i].sym);
3722
3723           if (SYMBOL_LINE (syms[i].sym) != 0 && symtab != NULL)
3724             printf_unfiltered (_("[%d] %s at %s:%d\n"),
3725                                i + first_choice,
3726                                SYMBOL_PRINT_NAME (syms[i].sym),
3727                                symtab_to_filename_for_display (symtab),
3728                                SYMBOL_LINE (syms[i].sym));
3729           else if (is_enumeral
3730                    && TYPE_NAME (SYMBOL_TYPE (syms[i].sym)) != NULL)
3731             {
3732               printf_unfiltered (("[%d] "), i + first_choice);
3733               ada_print_type (SYMBOL_TYPE (syms[i].sym), NULL,
3734                               gdb_stdout, -1, 0, &type_print_raw_options);
3735               printf_unfiltered (_("'(%s) (enumeral)\n"),
3736                                  SYMBOL_PRINT_NAME (syms[i].sym));
3737             }
3738           else if (symtab != NULL)
3739             printf_unfiltered (is_enumeral
3740                                ? _("[%d] %s in %s (enumeral)\n")
3741                                : _("[%d] %s at %s:?\n"),
3742                                i + first_choice,
3743                                SYMBOL_PRINT_NAME (syms[i].sym),
3744                                symtab_to_filename_for_display (symtab));
3745           else
3746             printf_unfiltered (is_enumeral
3747                                ? _("[%d] %s (enumeral)\n")
3748                                : _("[%d] %s at ?\n"),
3749                                i + first_choice,
3750                                SYMBOL_PRINT_NAME (syms[i].sym));
3751         }
3752     }
3753
3754   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3755                              "overload-choice");
3756
3757   for (i = 0; i < n_chosen; i += 1)
3758     syms[i] = syms[chosen[i]];
3759
3760   return n_chosen;
3761 }
3762
3763 /* Read and validate a set of numeric choices from the user in the
3764    range 0 .. N_CHOICES-1.  Place the results in increasing
3765    order in CHOICES[0 .. N-1], and return N.
3766
3767    The user types choices as a sequence of numbers on one line
3768    separated by blanks, encoding them as follows:
3769
3770      + A choice of 0 means to cancel the selection, throwing an error.
3771      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3772      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3773
3774    The user is not allowed to choose more than MAX_RESULTS values.
3775
3776    ANNOTATION_SUFFIX, if present, is used to annotate the input
3777    prompts (for use with the -f switch).  */
3778
3779 int
3780 get_selections (int *choices, int n_choices, int max_results,
3781                 int is_all_choice, char *annotation_suffix)
3782 {
3783   char *args;
3784   char *prompt;
3785   int n_chosen;
3786   int first_choice = is_all_choice ? 2 : 1;
3787
3788   prompt = getenv ("PS2");
3789   if (prompt == NULL)
3790     prompt = "> ";
3791
3792   args = command_line_input (prompt, 0, annotation_suffix);
3793
3794   if (args == NULL)
3795     error_no_arg (_("one or more choice numbers"));
3796
3797   n_chosen = 0;
3798
3799   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3800      order, as given in args.  Choices are validated.  */
3801   while (1)
3802     {
3803       char *args2;
3804       int choice, j;
3805
3806       args = skip_spaces (args);
3807       if (*args == '\0' && n_chosen == 0)
3808         error_no_arg (_("one or more choice numbers"));
3809       else if (*args == '\0')
3810         break;
3811
3812       choice = strtol (args, &args2, 10);
3813       if (args == args2 || choice < 0
3814           || choice > n_choices + first_choice - 1)
3815         error (_("Argument must be choice number"));
3816       args = args2;
3817
3818       if (choice == 0)
3819         error (_("cancelled"));
3820
3821       if (choice < first_choice)
3822         {
3823           n_chosen = n_choices;
3824           for (j = 0; j < n_choices; j += 1)
3825             choices[j] = j;
3826           break;
3827         }
3828       choice -= first_choice;
3829
3830       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3831         {
3832         }
3833
3834       if (j < 0 || choice != choices[j])
3835         {
3836           int k;
3837
3838           for (k = n_chosen - 1; k > j; k -= 1)
3839             choices[k + 1] = choices[k];
3840           choices[j + 1] = choice;
3841           n_chosen += 1;
3842         }
3843     }
3844
3845   if (n_chosen > max_results)
3846     error (_("Select no more than %d of the above"), max_results);
3847
3848   return n_chosen;
3849 }
3850
3851 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3852    on the function identified by SYM and BLOCK, and taking NARGS
3853    arguments.  Update *EXPP as needed to hold more space.  */
3854
3855 static void
3856 replace_operator_with_call (struct expression **expp, int pc, int nargs,
3857                             int oplen, struct symbol *sym,
3858                             const struct block *block)
3859 {
3860   /* A new expression, with 6 more elements (3 for funcall, 4 for function
3861      symbol, -oplen for operator being replaced).  */
3862   struct expression *newexp = (struct expression *)
3863     xzalloc (sizeof (struct expression)
3864              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3865   struct expression *exp = *expp;
3866
3867   newexp->nelts = exp->nelts + 7 - oplen;
3868   newexp->language_defn = exp->language_defn;
3869   newexp->gdbarch = exp->gdbarch;
3870   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3871   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3872           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3873
3874   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3875   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3876
3877   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3878   newexp->elts[pc + 4].block = block;
3879   newexp->elts[pc + 5].symbol = sym;
3880
3881   *expp = newexp;
3882   xfree (exp);
3883 }
3884
3885 /* Type-class predicates */
3886
3887 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3888    or FLOAT).  */
3889
3890 static int
3891 numeric_type_p (struct type *type)
3892 {
3893   if (type == NULL)
3894     return 0;
3895   else
3896     {
3897       switch (TYPE_CODE (type))
3898         {
3899         case TYPE_CODE_INT:
3900         case TYPE_CODE_FLT:
3901           return 1;
3902         case TYPE_CODE_RANGE:
3903           return (type == TYPE_TARGET_TYPE (type)
3904                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
3905         default:
3906           return 0;
3907         }
3908     }
3909 }
3910
3911 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
3912
3913 static int
3914 integer_type_p (struct type *type)
3915 {
3916   if (type == NULL)
3917     return 0;
3918   else
3919     {
3920       switch (TYPE_CODE (type))
3921         {
3922         case TYPE_CODE_INT:
3923           return 1;
3924         case TYPE_CODE_RANGE:
3925           return (type == TYPE_TARGET_TYPE (type)
3926                   || integer_type_p (TYPE_TARGET_TYPE (type)));
3927         default:
3928           return 0;
3929         }
3930     }
3931 }
3932
3933 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
3934
3935 static int
3936 scalar_type_p (struct type *type)
3937 {
3938   if (type == NULL)
3939     return 0;
3940   else
3941     {
3942       switch (TYPE_CODE (type))
3943         {
3944         case TYPE_CODE_INT:
3945         case TYPE_CODE_RANGE:
3946         case TYPE_CODE_ENUM:
3947         case TYPE_CODE_FLT:
3948           return 1;
3949         default:
3950           return 0;
3951         }
3952     }
3953 }
3954
3955 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
3956
3957 static int
3958 discrete_type_p (struct type *type)
3959 {
3960   if (type == NULL)
3961     return 0;
3962   else
3963     {
3964       switch (TYPE_CODE (type))
3965         {
3966         case TYPE_CODE_INT:
3967         case TYPE_CODE_RANGE:
3968         case TYPE_CODE_ENUM:
3969         case TYPE_CODE_BOOL:
3970           return 1;
3971         default:
3972           return 0;
3973         }
3974     }
3975 }
3976
3977 /* Returns non-zero if OP with operands in the vector ARGS could be
3978    a user-defined function.  Errs on the side of pre-defined operators
3979    (i.e., result 0).  */
3980
3981 static int
3982 possible_user_operator_p (enum exp_opcode op, struct value *args[])
3983 {
3984   struct type *type0 =
3985     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
3986   struct type *type1 =
3987     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
3988
3989   if (type0 == NULL)
3990     return 0;
3991
3992   switch (op)
3993     {
3994     default:
3995       return 0;
3996
3997     case BINOP_ADD:
3998     case BINOP_SUB:
3999     case BINOP_MUL:
4000     case BINOP_DIV:
4001       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4002
4003     case BINOP_REM:
4004     case BINOP_MOD:
4005     case BINOP_BITWISE_AND:
4006     case BINOP_BITWISE_IOR:
4007     case BINOP_BITWISE_XOR:
4008       return (!(integer_type_p (type0) && integer_type_p (type1)));
4009
4010     case BINOP_EQUAL:
4011     case BINOP_NOTEQUAL:
4012     case BINOP_LESS:
4013     case BINOP_GTR:
4014     case BINOP_LEQ:
4015     case BINOP_GEQ:
4016       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4017
4018     case BINOP_CONCAT:
4019       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4020
4021     case BINOP_EXP:
4022       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4023
4024     case UNOP_NEG:
4025     case UNOP_PLUS:
4026     case UNOP_LOGICAL_NOT:
4027     case UNOP_ABS:
4028       return (!numeric_type_p (type0));
4029
4030     }
4031 }
4032 \f
4033                                 /* Renaming */
4034
4035 /* NOTES: 
4036
4037    1. In the following, we assume that a renaming type's name may
4038       have an ___XD suffix.  It would be nice if this went away at some
4039       point.
4040    2. We handle both the (old) purely type-based representation of 
4041       renamings and the (new) variable-based encoding.  At some point,
4042       it is devoutly to be hoped that the former goes away 
4043       (FIXME: hilfinger-2007-07-09).
4044    3. Subprogram renamings are not implemented, although the XRS
4045       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4046
4047 /* If SYM encodes a renaming, 
4048
4049        <renaming> renames <renamed entity>,
4050
4051    sets *LEN to the length of the renamed entity's name,
4052    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4053    the string describing the subcomponent selected from the renamed
4054    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4055    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4056    are undefined).  Otherwise, returns a value indicating the category
4057    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4058    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4059    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4060    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4061    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4062    may be NULL, in which case they are not assigned.
4063
4064    [Currently, however, GCC does not generate subprogram renamings.]  */
4065
4066 enum ada_renaming_category
4067 ada_parse_renaming (struct symbol *sym,
4068                     const char **renamed_entity, int *len, 
4069                     const char **renaming_expr)
4070 {
4071   enum ada_renaming_category kind;
4072   const char *info;
4073   const char *suffix;
4074
4075   if (sym == NULL)
4076     return ADA_NOT_RENAMING;
4077   switch (SYMBOL_CLASS (sym)) 
4078     {
4079     default:
4080       return ADA_NOT_RENAMING;
4081     case LOC_TYPEDEF:
4082       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4083                                        renamed_entity, len, renaming_expr);
4084     case LOC_LOCAL:
4085     case LOC_STATIC:
4086     case LOC_COMPUTED:
4087     case LOC_OPTIMIZED_OUT:
4088       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4089       if (info == NULL)
4090         return ADA_NOT_RENAMING;
4091       switch (info[5])
4092         {
4093         case '_':
4094           kind = ADA_OBJECT_RENAMING;
4095           info += 6;
4096           break;
4097         case 'E':
4098           kind = ADA_EXCEPTION_RENAMING;
4099           info += 7;
4100           break;
4101         case 'P':
4102           kind = ADA_PACKAGE_RENAMING;
4103           info += 7;
4104           break;
4105         case 'S':
4106           kind = ADA_SUBPROGRAM_RENAMING;
4107           info += 7;
4108           break;
4109         default:
4110           return ADA_NOT_RENAMING;
4111         }
4112     }
4113
4114   if (renamed_entity != NULL)
4115     *renamed_entity = info;
4116   suffix = strstr (info, "___XE");
4117   if (suffix == NULL || suffix == info)
4118     return ADA_NOT_RENAMING;
4119   if (len != NULL)
4120     *len = strlen (info) - strlen (suffix);
4121   suffix += 5;
4122   if (renaming_expr != NULL)
4123     *renaming_expr = suffix;
4124   return kind;
4125 }
4126
4127 /* Assuming TYPE encodes a renaming according to the old encoding in
4128    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4129    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4130    ADA_NOT_RENAMING otherwise.  */
4131 static enum ada_renaming_category
4132 parse_old_style_renaming (struct type *type,
4133                           const char **renamed_entity, int *len, 
4134                           const char **renaming_expr)
4135 {
4136   enum ada_renaming_category kind;
4137   const char *name;
4138   const char *info;
4139   const char *suffix;
4140
4141   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4142       || TYPE_NFIELDS (type) != 1)
4143     return ADA_NOT_RENAMING;
4144
4145   name = type_name_no_tag (type);
4146   if (name == NULL)
4147     return ADA_NOT_RENAMING;
4148   
4149   name = strstr (name, "___XR");
4150   if (name == NULL)
4151     return ADA_NOT_RENAMING;
4152   switch (name[5])
4153     {
4154     case '\0':
4155     case '_':
4156       kind = ADA_OBJECT_RENAMING;
4157       break;
4158     case 'E':
4159       kind = ADA_EXCEPTION_RENAMING;
4160       break;
4161     case 'P':
4162       kind = ADA_PACKAGE_RENAMING;
4163       break;
4164     case 'S':
4165       kind = ADA_SUBPROGRAM_RENAMING;
4166       break;
4167     default:
4168       return ADA_NOT_RENAMING;
4169     }
4170
4171   info = TYPE_FIELD_NAME (type, 0);
4172   if (info == NULL)
4173     return ADA_NOT_RENAMING;
4174   if (renamed_entity != NULL)
4175     *renamed_entity = info;
4176   suffix = strstr (info, "___XE");
4177   if (renaming_expr != NULL)
4178     *renaming_expr = suffix + 5;
4179   if (suffix == NULL || suffix == info)
4180     return ADA_NOT_RENAMING;
4181   if (len != NULL)
4182     *len = suffix - info;
4183   return kind;
4184 }
4185
4186 /* Compute the value of the given RENAMING_SYM, which is expected to
4187    be a symbol encoding a renaming expression.  BLOCK is the block
4188    used to evaluate the renaming.  */
4189
4190 static struct value *
4191 ada_read_renaming_var_value (struct symbol *renaming_sym,
4192                              const struct block *block)
4193 {
4194   const char *sym_name;
4195   struct expression *expr;
4196   struct value *value;
4197   struct cleanup *old_chain = NULL;
4198
4199   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4200   expr = parse_exp_1 (&sym_name, 0, block, 0);
4201   old_chain = make_cleanup (free_current_contents, &expr);
4202   value = evaluate_expression (expr);
4203
4204   do_cleanups (old_chain);
4205   return value;
4206 }
4207 \f
4208
4209                                 /* Evaluation: Function Calls */
4210
4211 /* Return an lvalue containing the value VAL.  This is the identity on
4212    lvalues, and otherwise has the side-effect of allocating memory
4213    in the inferior where a copy of the value contents is copied.  */
4214
4215 static struct value *
4216 ensure_lval (struct value *val)
4217 {
4218   if (VALUE_LVAL (val) == not_lval
4219       || VALUE_LVAL (val) == lval_internalvar)
4220     {
4221       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4222       const CORE_ADDR addr =
4223         value_as_long (value_allocate_space_in_inferior (len));
4224
4225       set_value_address (val, addr);
4226       VALUE_LVAL (val) = lval_memory;
4227       write_memory (addr, value_contents (val), len);
4228     }
4229
4230   return val;
4231 }
4232
4233 /* Return the value ACTUAL, converted to be an appropriate value for a
4234    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4235    allocating any necessary descriptors (fat pointers), or copies of
4236    values not residing in memory, updating it as needed.  */
4237
4238 struct value *
4239 ada_convert_actual (struct value *actual, struct type *formal_type0)
4240 {
4241   struct type *actual_type = ada_check_typedef (value_type (actual));
4242   struct type *formal_type = ada_check_typedef (formal_type0);
4243   struct type *formal_target =
4244     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4245     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4246   struct type *actual_target =
4247     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4248     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4249
4250   if (ada_is_array_descriptor_type (formal_target)
4251       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4252     return make_array_descriptor (formal_type, actual);
4253   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4254            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4255     {
4256       struct value *result;
4257
4258       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4259           && ada_is_array_descriptor_type (actual_target))
4260         result = desc_data (actual);
4261       else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR)
4262         {
4263           if (VALUE_LVAL (actual) != lval_memory)
4264             {
4265               struct value *val;
4266
4267               actual_type = ada_check_typedef (value_type (actual));
4268               val = allocate_value (actual_type);
4269               memcpy ((char *) value_contents_raw (val),
4270                       (char *) value_contents (actual),
4271                       TYPE_LENGTH (actual_type));
4272               actual = ensure_lval (val);
4273             }
4274           result = value_addr (actual);
4275         }
4276       else
4277         return actual;
4278       return value_cast_pointers (formal_type, result, 0);
4279     }
4280   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4281     return ada_value_ind (actual);
4282
4283   return actual;
4284 }
4285
4286 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4287    type TYPE.  This is usually an inefficient no-op except on some targets
4288    (such as AVR) where the representation of a pointer and an address
4289    differs.  */
4290
4291 static CORE_ADDR
4292 value_pointer (struct value *value, struct type *type)
4293 {
4294   struct gdbarch *gdbarch = get_type_arch (type);
4295   unsigned len = TYPE_LENGTH (type);
4296   gdb_byte *buf = alloca (len);
4297   CORE_ADDR addr;
4298
4299   addr = value_address (value);
4300   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4301   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4302   return addr;
4303 }
4304
4305
4306 /* Push a descriptor of type TYPE for array value ARR on the stack at
4307    *SP, updating *SP to reflect the new descriptor.  Return either
4308    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4309    to-descriptor type rather than a descriptor type), a struct value *
4310    representing a pointer to this descriptor.  */
4311
4312 static struct value *
4313 make_array_descriptor (struct type *type, struct value *arr)
4314 {
4315   struct type *bounds_type = desc_bounds_type (type);
4316   struct type *desc_type = desc_base_type (type);
4317   struct value *descriptor = allocate_value (desc_type);
4318   struct value *bounds = allocate_value (bounds_type);
4319   int i;
4320
4321   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4322        i > 0; i -= 1)
4323     {
4324       modify_field (value_type (bounds), value_contents_writeable (bounds),
4325                     ada_array_bound (arr, i, 0),
4326                     desc_bound_bitpos (bounds_type, i, 0),
4327                     desc_bound_bitsize (bounds_type, i, 0));
4328       modify_field (value_type (bounds), value_contents_writeable (bounds),
4329                     ada_array_bound (arr, i, 1),
4330                     desc_bound_bitpos (bounds_type, i, 1),
4331                     desc_bound_bitsize (bounds_type, i, 1));
4332     }
4333
4334   bounds = ensure_lval (bounds);
4335
4336   modify_field (value_type (descriptor),
4337                 value_contents_writeable (descriptor),
4338                 value_pointer (ensure_lval (arr),
4339                                TYPE_FIELD_TYPE (desc_type, 0)),
4340                 fat_pntr_data_bitpos (desc_type),
4341                 fat_pntr_data_bitsize (desc_type));
4342
4343   modify_field (value_type (descriptor),
4344                 value_contents_writeable (descriptor),
4345                 value_pointer (bounds,
4346                                TYPE_FIELD_TYPE (desc_type, 1)),
4347                 fat_pntr_bounds_bitpos (desc_type),
4348                 fat_pntr_bounds_bitsize (desc_type));
4349
4350   descriptor = ensure_lval (descriptor);
4351
4352   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4353     return value_addr (descriptor);
4354   else
4355     return descriptor;
4356 }
4357 \f
4358                                 /* Symbol Cache Module */
4359
4360 /* Performance measurements made as of 2010-01-15 indicate that
4361    this cache does bring some noticeable improvements.  Depending
4362    on the type of entity being printed, the cache can make it as much
4363    as an order of magnitude faster than without it.
4364
4365    The descriptive type DWARF extension has significantly reduced
4366    the need for this cache, at least when DWARF is being used.  However,
4367    even in this case, some expensive name-based symbol searches are still
4368    sometimes necessary - to find an XVZ variable, mostly.  */
4369
4370 /* Initialize the contents of SYM_CACHE.  */
4371
4372 static void
4373 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4374 {
4375   obstack_init (&sym_cache->cache_space);
4376   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4377 }
4378
4379 /* Free the memory used by SYM_CACHE.  */
4380
4381 static void
4382 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4383 {
4384   obstack_free (&sym_cache->cache_space, NULL);
4385   xfree (sym_cache);
4386 }
4387
4388 /* Return the symbol cache associated to the given program space PSPACE.
4389    If not allocated for this PSPACE yet, allocate and initialize one.  */
4390
4391 static struct ada_symbol_cache *
4392 ada_get_symbol_cache (struct program_space *pspace)
4393 {
4394   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4395   struct ada_symbol_cache *sym_cache = pspace_data->sym_cache;
4396
4397   if (sym_cache == NULL)
4398     {
4399       sym_cache = XCNEW (struct ada_symbol_cache);
4400       ada_init_symbol_cache (sym_cache);
4401     }
4402
4403   return sym_cache;
4404 }
4405
4406 /* Clear all entries from the symbol cache.  */
4407
4408 static void
4409 ada_clear_symbol_cache (void)
4410 {
4411   struct ada_symbol_cache *sym_cache
4412     = ada_get_symbol_cache (current_program_space);
4413
4414   obstack_free (&sym_cache->cache_space, NULL);
4415   ada_init_symbol_cache (sym_cache);
4416 }
4417
4418 /* Search our cache for an entry matching NAME and NAMESPACE.
4419    Return it if found, or NULL otherwise.  */
4420
4421 static struct cache_entry **
4422 find_entry (const char *name, domain_enum namespace)
4423 {
4424   struct ada_symbol_cache *sym_cache
4425     = ada_get_symbol_cache (current_program_space);
4426   int h = msymbol_hash (name) % HASH_SIZE;
4427   struct cache_entry **e;
4428
4429   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4430     {
4431       if (namespace == (*e)->namespace && strcmp (name, (*e)->name) == 0)
4432         return e;
4433     }
4434   return NULL;
4435 }
4436
4437 /* Search the symbol cache for an entry matching NAME and NAMESPACE.
4438    Return 1 if found, 0 otherwise.
4439
4440    If an entry was found and SYM is not NULL, set *SYM to the entry's
4441    SYM.  Same principle for BLOCK if not NULL.  */
4442
4443 static int
4444 lookup_cached_symbol (const char *name, domain_enum namespace,
4445                       struct symbol **sym, const struct block **block)
4446 {
4447   struct cache_entry **e = find_entry (name, namespace);
4448
4449   if (e == NULL)
4450     return 0;
4451   if (sym != NULL)
4452     *sym = (*e)->sym;
4453   if (block != NULL)
4454     *block = (*e)->block;
4455   return 1;
4456 }
4457
4458 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4459    in domain NAMESPACE, save this result in our symbol cache.  */
4460
4461 static void
4462 cache_symbol (const char *name, domain_enum namespace, struct symbol *sym,
4463               const struct block *block)
4464 {
4465   struct ada_symbol_cache *sym_cache
4466     = ada_get_symbol_cache (current_program_space);
4467   int h;
4468   char *copy;
4469   struct cache_entry *e;
4470
4471   /* If the symbol is a local symbol, then do not cache it, as a search
4472      for that symbol depends on the context.  To determine whether
4473      the symbol is local or not, we check the block where we found it
4474      against the global and static blocks of its associated symtab.  */
4475   if (sym
4476       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (sym->symtab),
4477                             GLOBAL_BLOCK) != block
4478       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (sym->symtab),
4479                             STATIC_BLOCK) != block)
4480     return;
4481
4482   h = msymbol_hash (name) % HASH_SIZE;
4483   e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space,
4484                                             sizeof (*e));
4485   e->next = sym_cache->root[h];
4486   sym_cache->root[h] = e;
4487   e->name = copy = obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4488   strcpy (copy, name);
4489   e->sym = sym;
4490   e->namespace = namespace;
4491   e->block = block;
4492 }
4493 \f
4494                                 /* Symbol Lookup */
4495
4496 /* Return nonzero if wild matching should be used when searching for
4497    all symbols matching LOOKUP_NAME.
4498
4499    LOOKUP_NAME is expected to be a symbol name after transformation
4500    for Ada lookups (see ada_name_for_lookup).  */
4501
4502 static int
4503 should_use_wild_match (const char *lookup_name)
4504 {
4505   return (strstr (lookup_name, "__") == NULL);
4506 }
4507
4508 /* Return the result of a standard (literal, C-like) lookup of NAME in
4509    given DOMAIN, visible from lexical block BLOCK.  */
4510
4511 static struct symbol *
4512 standard_lookup (const char *name, const struct block *block,
4513                  domain_enum domain)
4514 {
4515   /* Initialize it just to avoid a GCC false warning.  */
4516   struct symbol *sym = NULL;
4517
4518   if (lookup_cached_symbol (name, domain, &sym, NULL))
4519     return sym;
4520   sym = lookup_symbol_in_language (name, block, domain, language_c, 0);
4521   cache_symbol (name, domain, sym, block_found);
4522   return sym;
4523 }
4524
4525
4526 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4527    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4528    since they contend in overloading in the same way.  */
4529 static int
4530 is_nonfunction (struct ada_symbol_info syms[], int n)
4531 {
4532   int i;
4533
4534   for (i = 0; i < n; i += 1)
4535     if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_FUNC
4536         && (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM
4537             || SYMBOL_CLASS (syms[i].sym) != LOC_CONST))
4538       return 1;
4539
4540   return 0;
4541 }
4542
4543 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4544    struct types.  Otherwise, they may not.  */
4545
4546 static int
4547 equiv_types (struct type *type0, struct type *type1)
4548 {
4549   if (type0 == type1)
4550     return 1;
4551   if (type0 == NULL || type1 == NULL
4552       || TYPE_CODE (type0) != TYPE_CODE (type1))
4553     return 0;
4554   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4555        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4556       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4557       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4558     return 1;
4559
4560   return 0;
4561 }
4562
4563 /* True iff SYM0 represents the same entity as SYM1, or one that is
4564    no more defined than that of SYM1.  */
4565
4566 static int
4567 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4568 {
4569   if (sym0 == sym1)
4570     return 1;
4571   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4572       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4573     return 0;
4574
4575   switch (SYMBOL_CLASS (sym0))
4576     {
4577     case LOC_UNDEF:
4578       return 1;
4579     case LOC_TYPEDEF:
4580       {
4581         struct type *type0 = SYMBOL_TYPE (sym0);
4582         struct type *type1 = SYMBOL_TYPE (sym1);
4583         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4584         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4585         int len0 = strlen (name0);
4586
4587         return
4588           TYPE_CODE (type0) == TYPE_CODE (type1)
4589           && (equiv_types (type0, type1)
4590               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4591                   && strncmp (name1 + len0, "___XV", 5) == 0));
4592       }
4593     case LOC_CONST:
4594       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4595         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4596     default:
4597       return 0;
4598     }
4599 }
4600
4601 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct ada_symbol_info
4602    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4603
4604 static void
4605 add_defn_to_vec (struct obstack *obstackp,
4606                  struct symbol *sym,
4607                  const struct block *block)
4608 {
4609   int i;
4610   struct ada_symbol_info *prevDefns = defns_collected (obstackp, 0);
4611
4612   /* Do not try to complete stub types, as the debugger is probably
4613      already scanning all symbols matching a certain name at the
4614      time when this function is called.  Trying to replace the stub
4615      type by its associated full type will cause us to restart a scan
4616      which may lead to an infinite recursion.  Instead, the client
4617      collecting the matching symbols will end up collecting several
4618      matches, with at least one of them complete.  It can then filter
4619      out the stub ones if needed.  */
4620
4621   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4622     {
4623       if (lesseq_defined_than (sym, prevDefns[i].sym))
4624         return;
4625       else if (lesseq_defined_than (prevDefns[i].sym, sym))
4626         {
4627           prevDefns[i].sym = sym;
4628           prevDefns[i].block = block;
4629           return;
4630         }
4631     }
4632
4633   {
4634     struct ada_symbol_info info;
4635
4636     info.sym = sym;
4637     info.block = block;
4638     obstack_grow (obstackp, &info, sizeof (struct ada_symbol_info));
4639   }
4640 }
4641
4642 /* Number of ada_symbol_info structures currently collected in 
4643    current vector in *OBSTACKP.  */
4644
4645 static int
4646 num_defns_collected (struct obstack *obstackp)
4647 {
4648   return obstack_object_size (obstackp) / sizeof (struct ada_symbol_info);
4649 }
4650
4651 /* Vector of ada_symbol_info structures currently collected in current 
4652    vector in *OBSTACKP.  If FINISH, close off the vector and return
4653    its final address.  */
4654
4655 static struct ada_symbol_info *
4656 defns_collected (struct obstack *obstackp, int finish)
4657 {
4658   if (finish)
4659     return obstack_finish (obstackp);
4660   else
4661     return (struct ada_symbol_info *) obstack_base (obstackp);
4662 }
4663
4664 /* Return a bound minimal symbol matching NAME according to Ada
4665    decoding rules.  Returns an invalid symbol if there is no such
4666    minimal symbol.  Names prefixed with "standard__" are handled
4667    specially: "standard__" is first stripped off, and only static and
4668    global symbols are searched.  */
4669
4670 struct bound_minimal_symbol
4671 ada_lookup_simple_minsym (const char *name)
4672 {
4673   struct bound_minimal_symbol result;
4674   struct objfile *objfile;
4675   struct minimal_symbol *msymbol;
4676   const int wild_match_p = should_use_wild_match (name);
4677
4678   memset (&result, 0, sizeof (result));
4679
4680   /* Special case: If the user specifies a symbol name inside package
4681      Standard, do a non-wild matching of the symbol name without
4682      the "standard__" prefix.  This was primarily introduced in order
4683      to allow the user to specifically access the standard exceptions
4684      using, for instance, Standard.Constraint_Error when Constraint_Error
4685      is ambiguous (due to the user defining its own Constraint_Error
4686      entity inside its program).  */
4687   if (strncmp (name, "standard__", sizeof ("standard__") - 1) == 0)
4688     name += sizeof ("standard__") - 1;
4689
4690   ALL_MSYMBOLS (objfile, msymbol)
4691   {
4692     if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), name, wild_match_p)
4693         && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4694       {
4695         result.minsym = msymbol;
4696         result.objfile = objfile;
4697         break;
4698       }
4699   }
4700
4701   return result;
4702 }
4703
4704 /* For all subprograms that statically enclose the subprogram of the
4705    selected frame, add symbols matching identifier NAME in DOMAIN
4706    and their blocks to the list of data in OBSTACKP, as for
4707    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4708    with a wildcard prefix.  */
4709
4710 static void
4711 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4712                                   const char *name, domain_enum namespace,
4713                                   int wild_match_p)
4714 {
4715 }
4716
4717 /* True if TYPE is definitely an artificial type supplied to a symbol
4718    for which no debugging information was given in the symbol file.  */
4719
4720 static int
4721 is_nondebugging_type (struct type *type)
4722 {
4723   const char *name = ada_type_name (type);
4724
4725   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4726 }
4727
4728 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4729    that are deemed "identical" for practical purposes.
4730
4731    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4732    types and that their number of enumerals is identical (in other
4733    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4734
4735 static int
4736 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4737 {
4738   int i;
4739
4740   /* The heuristic we use here is fairly conservative.  We consider
4741      that 2 enumerate types are identical if they have the same
4742      number of enumerals and that all enumerals have the same
4743      underlying value and name.  */
4744
4745   /* All enums in the type should have an identical underlying value.  */
4746   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4747     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4748       return 0;
4749
4750   /* All enumerals should also have the same name (modulo any numerical
4751      suffix).  */
4752   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4753     {
4754       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4755       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4756       int len_1 = strlen (name_1);
4757       int len_2 = strlen (name_2);
4758
4759       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4760       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4761       if (len_1 != len_2
4762           || strncmp (TYPE_FIELD_NAME (type1, i),
4763                       TYPE_FIELD_NAME (type2, i),
4764                       len_1) != 0)
4765         return 0;
4766     }
4767
4768   return 1;
4769 }
4770
4771 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4772    that are deemed "identical" for practical purposes.  Sometimes,
4773    enumerals are not strictly identical, but their types are so similar
4774    that they can be considered identical.
4775
4776    For instance, consider the following code:
4777
4778       type Color is (Black, Red, Green, Blue, White);
4779       type RGB_Color is new Color range Red .. Blue;
4780
4781    Type RGB_Color is a subrange of an implicit type which is a copy
4782    of type Color. If we call that implicit type RGB_ColorB ("B" is
4783    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4784    As a result, when an expression references any of the enumeral
4785    by name (Eg. "print green"), the expression is technically
4786    ambiguous and the user should be asked to disambiguate. But
4787    doing so would only hinder the user, since it wouldn't matter
4788    what choice he makes, the outcome would always be the same.
4789    So, for practical purposes, we consider them as the same.  */
4790
4791 static int
4792 symbols_are_identical_enums (struct ada_symbol_info *syms, int nsyms)
4793 {
4794   int i;
4795
4796   /* Before performing a thorough comparison check of each type,
4797      we perform a series of inexpensive checks.  We expect that these
4798      checks will quickly fail in the vast majority of cases, and thus
4799      help prevent the unnecessary use of a more expensive comparison.
4800      Said comparison also expects us to make some of these checks
4801      (see ada_identical_enum_types_p).  */
4802
4803   /* Quick check: All symbols should have an enum type.  */
4804   for (i = 0; i < nsyms; i++)
4805     if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM)
4806       return 0;
4807
4808   /* Quick check: They should all have the same value.  */
4809   for (i = 1; i < nsyms; i++)
4810     if (SYMBOL_VALUE (syms[i].sym) != SYMBOL_VALUE (syms[0].sym))
4811       return 0;
4812
4813   /* Quick check: They should all have the same number of enumerals.  */
4814   for (i = 1; i < nsyms; i++)
4815     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].sym))
4816         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].sym)))
4817       return 0;
4818
4819   /* All the sanity checks passed, so we might have a set of
4820      identical enumeration types.  Perform a more complete
4821      comparison of the type of each symbol.  */
4822   for (i = 1; i < nsyms; i++)
4823     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].sym),
4824                                      SYMBOL_TYPE (syms[0].sym)))
4825       return 0;
4826
4827   return 1;
4828 }
4829
4830 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
4831    duplicate other symbols in the list (The only case I know of where
4832    this happens is when object files containing stabs-in-ecoff are
4833    linked with files containing ordinary ecoff debugging symbols (or no
4834    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
4835    Returns the number of items in the modified list.  */
4836
4837 static int
4838 remove_extra_symbols (struct ada_symbol_info *syms, int nsyms)
4839 {
4840   int i, j;
4841
4842   /* We should never be called with less than 2 symbols, as there
4843      cannot be any extra symbol in that case.  But it's easy to
4844      handle, since we have nothing to do in that case.  */
4845   if (nsyms < 2)
4846     return nsyms;
4847
4848   i = 0;
4849   while (i < nsyms)
4850     {
4851       int remove_p = 0;
4852
4853       /* If two symbols have the same name and one of them is a stub type,
4854          the get rid of the stub.  */
4855
4856       if (TYPE_STUB (SYMBOL_TYPE (syms[i].sym))
4857           && SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL)
4858         {
4859           for (j = 0; j < nsyms; j++)
4860             {
4861               if (j != i
4862                   && !TYPE_STUB (SYMBOL_TYPE (syms[j].sym))
4863                   && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL
4864                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym),
4865                              SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0)
4866                 remove_p = 1;
4867             }
4868         }
4869
4870       /* Two symbols with the same name, same class and same address
4871          should be identical.  */
4872
4873       else if (SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL
4874           && SYMBOL_CLASS (syms[i].sym) == LOC_STATIC
4875           && is_nondebugging_type (SYMBOL_TYPE (syms[i].sym)))
4876         {
4877           for (j = 0; j < nsyms; j += 1)
4878             {
4879               if (i != j
4880                   && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL
4881                   && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym),
4882                              SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0
4883                   && SYMBOL_CLASS (syms[i].sym) == SYMBOL_CLASS (syms[j].sym)
4884                   && SYMBOL_VALUE_ADDRESS (syms[i].sym)
4885                   == SYMBOL_VALUE_ADDRESS (syms[j].sym))
4886                 remove_p = 1;
4887             }
4888         }
4889       
4890       if (remove_p)
4891         {
4892           for (j = i + 1; j < nsyms; j += 1)
4893             syms[j - 1] = syms[j];
4894           nsyms -= 1;
4895         }
4896
4897       i += 1;
4898     }
4899
4900   /* If all the remaining symbols are identical enumerals, then
4901      just keep the first one and discard the rest.
4902
4903      Unlike what we did previously, we do not discard any entry
4904      unless they are ALL identical.  This is because the symbol
4905      comparison is not a strict comparison, but rather a practical
4906      comparison.  If all symbols are considered identical, then
4907      we can just go ahead and use the first one and discard the rest.
4908      But if we cannot reduce the list to a single element, we have
4909      to ask the user to disambiguate anyways.  And if we have to
4910      present a multiple-choice menu, it's less confusing if the list
4911      isn't missing some choices that were identical and yet distinct.  */
4912   if (symbols_are_identical_enums (syms, nsyms))
4913     nsyms = 1;
4914
4915   return nsyms;
4916 }
4917
4918 /* Given a type that corresponds to a renaming entity, use the type name
4919    to extract the scope (package name or function name, fully qualified,
4920    and following the GNAT encoding convention) where this renaming has been
4921    defined.  The string returned needs to be deallocated after use.  */
4922
4923 static char *
4924 xget_renaming_scope (struct type *renaming_type)
4925 {
4926   /* The renaming types adhere to the following convention:
4927      <scope>__<rename>___<XR extension>.
4928      So, to extract the scope, we search for the "___XR" extension,
4929      and then backtrack until we find the first "__".  */
4930
4931   const char *name = type_name_no_tag (renaming_type);
4932   char *suffix = strstr (name, "___XR");
4933   char *last;
4934   int scope_len;
4935   char *scope;
4936
4937   /* Now, backtrack a bit until we find the first "__".  Start looking
4938      at suffix - 3, as the <rename> part is at least one character long.  */
4939
4940   for (last = suffix - 3; last > name; last--)
4941     if (last[0] == '_' && last[1] == '_')
4942       break;
4943
4944   /* Make a copy of scope and return it.  */
4945
4946   scope_len = last - name;
4947   scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
4948
4949   strncpy (scope, name, scope_len);
4950   scope[scope_len] = '\0';
4951
4952   return scope;
4953 }
4954
4955 /* Return nonzero if NAME corresponds to a package name.  */
4956
4957 static int
4958 is_package_name (const char *name)
4959 {
4960   /* Here, We take advantage of the fact that no symbols are generated
4961      for packages, while symbols are generated for each function.
4962      So the condition for NAME represent a package becomes equivalent
4963      to NAME not existing in our list of symbols.  There is only one
4964      small complication with library-level functions (see below).  */
4965
4966   char *fun_name;
4967
4968   /* If it is a function that has not been defined at library level,
4969      then we should be able to look it up in the symbols.  */
4970   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
4971     return 0;
4972
4973   /* Library-level function names start with "_ada_".  See if function
4974      "_ada_" followed by NAME can be found.  */
4975
4976   /* Do a quick check that NAME does not contain "__", since library-level
4977      functions names cannot contain "__" in them.  */
4978   if (strstr (name, "__") != NULL)
4979     return 0;
4980
4981   fun_name = xstrprintf ("_ada_%s", name);
4982
4983   return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
4984 }
4985
4986 /* Return nonzero if SYM corresponds to a renaming entity that is
4987    not visible from FUNCTION_NAME.  */
4988
4989 static int
4990 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
4991 {
4992   char *scope;
4993   struct cleanup *old_chain;
4994
4995   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
4996     return 0;
4997
4998   scope = xget_renaming_scope (SYMBOL_TYPE (sym));
4999   old_chain = make_cleanup (xfree, scope);
5000
5001   /* If the rename has been defined in a package, then it is visible.  */
5002   if (is_package_name (scope))
5003     {
5004       do_cleanups (old_chain);
5005       return 0;
5006     }
5007
5008   /* Check that the rename is in the current function scope by checking
5009      that its name starts with SCOPE.  */
5010
5011   /* If the function name starts with "_ada_", it means that it is
5012      a library-level function.  Strip this prefix before doing the
5013      comparison, as the encoding for the renaming does not contain
5014      this prefix.  */
5015   if (strncmp (function_name, "_ada_", 5) == 0)
5016     function_name += 5;
5017
5018   {
5019     int is_invisible = strncmp (function_name, scope, strlen (scope)) != 0;
5020
5021     do_cleanups (old_chain);
5022     return is_invisible;
5023   }
5024 }
5025
5026 /* Remove entries from SYMS that corresponds to a renaming entity that
5027    is not visible from the function associated with CURRENT_BLOCK or
5028    that is superfluous due to the presence of more specific renaming
5029    information.  Places surviving symbols in the initial entries of
5030    SYMS and returns the number of surviving symbols.
5031    
5032    Rationale:
5033    First, in cases where an object renaming is implemented as a
5034    reference variable, GNAT may produce both the actual reference
5035    variable and the renaming encoding.  In this case, we discard the
5036    latter.
5037
5038    Second, GNAT emits a type following a specified encoding for each renaming
5039    entity.  Unfortunately, STABS currently does not support the definition
5040    of types that are local to a given lexical block, so all renamings types
5041    are emitted at library level.  As a consequence, if an application
5042    contains two renaming entities using the same name, and a user tries to
5043    print the value of one of these entities, the result of the ada symbol
5044    lookup will also contain the wrong renaming type.
5045
5046    This function partially covers for this limitation by attempting to
5047    remove from the SYMS list renaming symbols that should be visible
5048    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5049    method with the current information available.  The implementation
5050    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5051    
5052       - When the user tries to print a rename in a function while there
5053         is another rename entity defined in a package:  Normally, the
5054         rename in the function has precedence over the rename in the
5055         package, so the latter should be removed from the list.  This is
5056         currently not the case.
5057         
5058       - This function will incorrectly remove valid renames if
5059         the CURRENT_BLOCK corresponds to a function which symbol name
5060         has been changed by an "Export" pragma.  As a consequence,
5061         the user will be unable to print such rename entities.  */
5062
5063 static int
5064 remove_irrelevant_renamings (struct ada_symbol_info *syms,
5065                              int nsyms, const struct block *current_block)
5066 {
5067   struct symbol *current_function;
5068   const char *current_function_name;
5069   int i;
5070   int is_new_style_renaming;
5071
5072   /* If there is both a renaming foo___XR... encoded as a variable and
5073      a simple variable foo in the same block, discard the latter.
5074      First, zero out such symbols, then compress.  */
5075   is_new_style_renaming = 0;
5076   for (i = 0; i < nsyms; i += 1)
5077     {
5078       struct symbol *sym = syms[i].sym;
5079       const struct block *block = syms[i].block;
5080       const char *name;
5081       const char *suffix;
5082
5083       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5084         continue;
5085       name = SYMBOL_LINKAGE_NAME (sym);
5086       suffix = strstr (name, "___XR");
5087
5088       if (suffix != NULL)
5089         {
5090           int name_len = suffix - name;
5091           int j;
5092
5093           is_new_style_renaming = 1;
5094           for (j = 0; j < nsyms; j += 1)
5095             if (i != j && syms[j].sym != NULL
5096                 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].sym),
5097                             name_len) == 0
5098                 && block == syms[j].block)
5099               syms[j].sym = NULL;
5100         }
5101     }
5102   if (is_new_style_renaming)
5103     {
5104       int j, k;
5105
5106       for (j = k = 0; j < nsyms; j += 1)
5107         if (syms[j].sym != NULL)
5108             {
5109               syms[k] = syms[j];
5110               k += 1;
5111             }
5112       return k;
5113     }
5114
5115   /* Extract the function name associated to CURRENT_BLOCK.
5116      Abort if unable to do so.  */
5117
5118   if (current_block == NULL)
5119     return nsyms;
5120
5121   current_function = block_linkage_function (current_block);
5122   if (current_function == NULL)
5123     return nsyms;
5124
5125   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5126   if (current_function_name == NULL)
5127     return nsyms;
5128
5129   /* Check each of the symbols, and remove it from the list if it is
5130      a type corresponding to a renaming that is out of the scope of
5131      the current block.  */
5132
5133   i = 0;
5134   while (i < nsyms)
5135     {
5136       if (ada_parse_renaming (syms[i].sym, NULL, NULL, NULL)
5137           == ADA_OBJECT_RENAMING
5138           && old_renaming_is_invisible (syms[i].sym, current_function_name))
5139         {
5140           int j;
5141
5142           for (j = i + 1; j < nsyms; j += 1)
5143             syms[j - 1] = syms[j];
5144           nsyms -= 1;
5145         }
5146       else
5147         i += 1;
5148     }
5149
5150   return nsyms;
5151 }
5152
5153 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5154    whose name and domain match NAME and DOMAIN respectively.
5155    If no match was found, then extend the search to "enclosing"
5156    routines (in other words, if we're inside a nested function,
5157    search the symbols defined inside the enclosing functions).
5158    If WILD_MATCH_P is nonzero, perform the naming matching in
5159    "wild" mode (see function "wild_match" for more info).
5160
5161    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5162
5163 static void
5164 ada_add_local_symbols (struct obstack *obstackp, const char *name,
5165                        const struct block *block, domain_enum domain,
5166                        int wild_match_p)
5167 {
5168   int block_depth = 0;
5169
5170   while (block != NULL)
5171     {
5172       block_depth += 1;
5173       ada_add_block_symbols (obstackp, block, name, domain, NULL,
5174                              wild_match_p);
5175
5176       /* If we found a non-function match, assume that's the one.  */
5177       if (is_nonfunction (defns_collected (obstackp, 0),
5178                           num_defns_collected (obstackp)))
5179         return;
5180
5181       block = BLOCK_SUPERBLOCK (block);
5182     }
5183
5184   /* If no luck so far, try to find NAME as a local symbol in some lexically
5185      enclosing subprogram.  */
5186   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5187     add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match_p);
5188 }
5189
5190 /* An object of this type is used as the user_data argument when
5191    calling the map_matching_symbols method.  */
5192
5193 struct match_data
5194 {
5195   struct objfile *objfile;
5196   struct obstack *obstackp;
5197   struct symbol *arg_sym;
5198   int found_sym;
5199 };
5200
5201 /* A callback for add_matching_symbols that adds SYM, found in BLOCK,
5202    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5203    containing the obstack that collects the symbol list, the file that SYM
5204    must come from, a flag indicating whether a non-argument symbol has
5205    been found in the current block, and the last argument symbol
5206    passed in SYM within the current block (if any).  When SYM is null,
5207    marking the end of a block, the argument symbol is added if no
5208    other has been found.  */
5209
5210 static int
5211 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5212 {
5213   struct match_data *data = (struct match_data *) data0;
5214   
5215   if (sym == NULL)
5216     {
5217       if (!data->found_sym && data->arg_sym != NULL) 
5218         add_defn_to_vec (data->obstackp,
5219                          fixup_symbol_section (data->arg_sym, data->objfile),
5220                          block);
5221       data->found_sym = 0;
5222       data->arg_sym = NULL;
5223     }
5224   else 
5225     {
5226       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5227         return 0;
5228       else if (SYMBOL_IS_ARGUMENT (sym))
5229         data->arg_sym = sym;
5230       else
5231         {
5232           data->found_sym = 1;
5233           add_defn_to_vec (data->obstackp,
5234                            fixup_symbol_section (sym, data->objfile),
5235                            block);
5236         }
5237     }
5238   return 0;
5239 }
5240
5241 /* Implements compare_names, but only applying the comparision using
5242    the given CASING.  */
5243
5244 static int
5245 compare_names_with_case (const char *string1, const char *string2,
5246                          enum case_sensitivity casing)
5247 {
5248   while (*string1 != '\0' && *string2 != '\0')
5249     {
5250       char c1, c2;
5251
5252       if (isspace (*string1) || isspace (*string2))
5253         return strcmp_iw_ordered (string1, string2);
5254
5255       if (casing == case_sensitive_off)
5256         {
5257           c1 = tolower (*string1);
5258           c2 = tolower (*string2);
5259         }
5260       else
5261         {
5262           c1 = *string1;
5263           c2 = *string2;
5264         }
5265       if (c1 != c2)
5266         break;
5267
5268       string1 += 1;
5269       string2 += 1;
5270     }
5271
5272   switch (*string1)
5273     {
5274     case '(':
5275       return strcmp_iw_ordered (string1, string2);
5276     case '_':
5277       if (*string2 == '\0')
5278         {
5279           if (is_name_suffix (string1))
5280             return 0;
5281           else
5282             return 1;
5283         }
5284       /* FALLTHROUGH */
5285     default:
5286       if (*string2 == '(')
5287         return strcmp_iw_ordered (string1, string2);
5288       else
5289         {
5290           if (casing == case_sensitive_off)
5291             return tolower (*string1) - tolower (*string2);
5292           else
5293             return *string1 - *string2;
5294         }
5295     }
5296 }
5297
5298 /* Compare STRING1 to STRING2, with results as for strcmp.
5299    Compatible with strcmp_iw_ordered in that...
5300
5301        strcmp_iw_ordered (STRING1, STRING2) <= 0
5302
5303    ... implies...
5304
5305        compare_names (STRING1, STRING2) <= 0
5306
5307    (they may differ as to what symbols compare equal).  */
5308
5309 static int
5310 compare_names (const char *string1, const char *string2)
5311 {
5312   int result;
5313
5314   /* Similar to what strcmp_iw_ordered does, we need to perform
5315      a case-insensitive comparison first, and only resort to
5316      a second, case-sensitive, comparison if the first one was
5317      not sufficient to differentiate the two strings.  */
5318
5319   result = compare_names_with_case (string1, string2, case_sensitive_off);
5320   if (result == 0)
5321     result = compare_names_with_case (string1, string2, case_sensitive_on);
5322
5323   return result;
5324 }
5325
5326 /* Add to OBSTACKP all non-local symbols whose name and domain match
5327    NAME and DOMAIN respectively.  The search is performed on GLOBAL_BLOCK
5328    symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise.  */
5329
5330 static void
5331 add_nonlocal_symbols (struct obstack *obstackp, const char *name,
5332                       domain_enum domain, int global,
5333                       int is_wild_match)
5334 {
5335   struct objfile *objfile;
5336   struct match_data data;
5337
5338   memset (&data, 0, sizeof data);
5339   data.obstackp = obstackp;
5340
5341   ALL_OBJFILES (objfile)
5342     {
5343       data.objfile = objfile;
5344
5345       if (is_wild_match)
5346         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5347                                                aux_add_nonlocal_symbols, &data,
5348                                                wild_match, NULL);
5349       else
5350         objfile->sf->qf->map_matching_symbols (objfile, name, domain, global,
5351                                                aux_add_nonlocal_symbols, &data,
5352                                                full_match, compare_names);
5353     }
5354
5355   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5356     {
5357       ALL_OBJFILES (objfile)
5358         {
5359           char *name1 = alloca (strlen (name) + sizeof ("_ada_"));
5360           strcpy (name1, "_ada_");
5361           strcpy (name1 + sizeof ("_ada_") - 1, name);
5362           data.objfile = objfile;
5363           objfile->sf->qf->map_matching_symbols (objfile, name1, domain,
5364                                                  global,
5365                                                  aux_add_nonlocal_symbols,
5366                                                  &data,
5367                                                  full_match, compare_names);
5368         }
5369     }           
5370 }
5371
5372 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and, if full_search is
5373    non-zero, enclosing scope and in global scopes, returning the number of
5374    matches.
5375    Sets *RESULTS to point to a vector of (SYM,BLOCK) tuples,
5376    indicating the symbols found and the blocks and symbol tables (if
5377    any) in which they were found.  This vector is transient---good only to
5378    the next call of ada_lookup_symbol_list.
5379
5380    When full_search is non-zero, any non-function/non-enumeral
5381    symbol match within the nest of blocks whose innermost member is BLOCK0,
5382    is the one match returned (no other matches in that or
5383    enclosing blocks is returned).  If there are any matches in or
5384    surrounding BLOCK0, then these alone are returned.
5385
5386    Names prefixed with "standard__" are handled specially: "standard__"
5387    is first stripped off, and only static and global symbols are searched.  */
5388
5389 static int
5390 ada_lookup_symbol_list_worker (const char *name0, const struct block *block0,
5391                                domain_enum namespace,
5392                                struct ada_symbol_info **results,
5393                                int full_search)
5394 {
5395   struct symbol *sym;
5396   const struct block *block;
5397   const char *name;
5398   const int wild_match_p = should_use_wild_match (name0);
5399   int cacheIfUnique;
5400   int ndefns;
5401
5402   obstack_free (&symbol_list_obstack, NULL);
5403   obstack_init (&symbol_list_obstack);
5404
5405   cacheIfUnique = 0;
5406
5407   /* Search specified block and its superiors.  */
5408
5409   name = name0;
5410   block = block0;
5411
5412   /* Special case: If the user specifies a symbol name inside package
5413      Standard, do a non-wild matching of the symbol name without
5414      the "standard__" prefix.  This was primarily introduced in order
5415      to allow the user to specifically access the standard exceptions
5416      using, for instance, Standard.Constraint_Error when Constraint_Error
5417      is ambiguous (due to the user defining its own Constraint_Error
5418      entity inside its program).  */
5419   if (strncmp (name0, "standard__", sizeof ("standard__") - 1) == 0)
5420     {
5421       block = NULL;
5422       name = name0 + sizeof ("standard__") - 1;
5423     }
5424
5425   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5426
5427   if (block != NULL)
5428     {
5429       if (full_search)
5430         {
5431           ada_add_local_symbols (&symbol_list_obstack, name, block,
5432                                  namespace, wild_match_p);
5433         }
5434       else
5435         {
5436           /* In the !full_search case we're are being called by
5437              ada_iterate_over_symbols, and we don't want to search
5438              superblocks.  */
5439           ada_add_block_symbols (&symbol_list_obstack, block, name,
5440                                  namespace, NULL, wild_match_p);
5441         }
5442       if (num_defns_collected (&symbol_list_obstack) > 0 || !full_search)
5443         goto done;
5444     }
5445
5446   /* No non-global symbols found.  Check our cache to see if we have
5447      already performed this search before.  If we have, then return
5448      the same result.  */
5449
5450   cacheIfUnique = 1;
5451   if (lookup_cached_symbol (name0, namespace, &sym, &block))
5452     {
5453       if (sym != NULL)
5454         add_defn_to_vec (&symbol_list_obstack, sym, block);
5455       goto done;
5456     }
5457
5458   /* Search symbols from all global blocks.  */
5459  
5460   add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 1,
5461                         wild_match_p);
5462
5463   /* Now add symbols from all per-file blocks if we've gotten no hits
5464      (not strictly correct, but perhaps better than an error).  */
5465
5466   if (num_defns_collected (&symbol_list_obstack) == 0)
5467     add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 0,
5468                           wild_match_p);
5469
5470 done:
5471   ndefns = num_defns_collected (&symbol_list_obstack);
5472   *results = defns_collected (&symbol_list_obstack, 1);
5473
5474   ndefns = remove_extra_symbols (*results, ndefns);
5475
5476   if (ndefns == 0 && full_search)
5477     cache_symbol (name0, namespace, NULL, NULL);
5478
5479   if (ndefns == 1 && full_search && cacheIfUnique)
5480     cache_symbol (name0, namespace, (*results)[0].sym, (*results)[0].block);
5481
5482   ndefns = remove_irrelevant_renamings (*results, ndefns, block0);
5483
5484   return ndefns;
5485 }
5486
5487 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing scope and
5488    in global scopes, returning the number of matches, and setting *RESULTS
5489    to a vector of (SYM,BLOCK) tuples.
5490    See ada_lookup_symbol_list_worker for further details.  */
5491
5492 int
5493 ada_lookup_symbol_list (const char *name0, const struct block *block0,
5494                         domain_enum domain, struct ada_symbol_info **results)
5495 {
5496   return ada_lookup_symbol_list_worker (name0, block0, domain, results, 1);
5497 }
5498
5499 /* Implementation of the la_iterate_over_symbols method.  */
5500
5501 static void
5502 ada_iterate_over_symbols (const struct block *block,
5503                           const char *name, domain_enum domain,
5504                           symbol_found_callback_ftype *callback,
5505                           void *data)
5506 {
5507   int ndefs, i;
5508   struct ada_symbol_info *results;
5509
5510   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5511   for (i = 0; i < ndefs; ++i)
5512     {
5513       if (! (*callback) (results[i].sym, data))
5514         break;
5515     }
5516 }
5517
5518 /* If NAME is the name of an entity, return a string that should
5519    be used to look that entity up in Ada units.  This string should
5520    be deallocated after use using xfree.
5521
5522    NAME can have any form that the "break" or "print" commands might
5523    recognize.  In other words, it does not have to be the "natural"
5524    name, or the "encoded" name.  */
5525
5526 char *
5527 ada_name_for_lookup (const char *name)
5528 {
5529   char *canon;
5530   int nlen = strlen (name);
5531
5532   if (name[0] == '<' && name[nlen - 1] == '>')
5533     {
5534       canon = xmalloc (nlen - 1);
5535       memcpy (canon, name + 1, nlen - 2);
5536       canon[nlen - 2] = '\0';
5537     }
5538   else
5539     canon = xstrdup (ada_encode (ada_fold_name (name)));
5540   return canon;
5541 }
5542
5543 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5544    to 1, but choosing the first symbol found if there are multiple
5545    choices.
5546
5547    The result is stored in *INFO, which must be non-NULL.
5548    If no match is found, INFO->SYM is set to NULL.  */
5549
5550 void
5551 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5552                            domain_enum namespace,
5553                            struct ada_symbol_info *info)
5554 {
5555   struct ada_symbol_info *candidates;
5556   int n_candidates;
5557
5558   gdb_assert (info != NULL);
5559   memset (info, 0, sizeof (struct ada_symbol_info));
5560
5561   n_candidates = ada_lookup_symbol_list (name, block, namespace, &candidates);
5562   if (n_candidates == 0)
5563     return;
5564
5565   *info = candidates[0];
5566   info->sym = fixup_symbol_section (info->sym, NULL);
5567 }
5568
5569 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5570    scope and in global scopes, or NULL if none.  NAME is folded and
5571    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5572    choosing the first symbol if there are multiple choices.
5573    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5574
5575 struct symbol *
5576 ada_lookup_symbol (const char *name, const struct block *block0,
5577                    domain_enum namespace, int *is_a_field_of_this)
5578 {
5579   struct ada_symbol_info info;
5580
5581   if (is_a_field_of_this != NULL)
5582     *is_a_field_of_this = 0;
5583
5584   ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)),
5585                              block0, namespace, &info);
5586   return info.sym;
5587 }
5588
5589 static struct symbol *
5590 ada_lookup_symbol_nonlocal (const char *name,
5591                             const struct block *block,
5592                             const domain_enum domain)
5593 {
5594   return ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5595 }
5596
5597
5598 /* True iff STR is a possible encoded suffix of a normal Ada name
5599    that is to be ignored for matching purposes.  Suffixes of parallel
5600    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5601    are given by any of the regular expressions:
5602
5603    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5604    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5605    TKB              [subprogram suffix for task bodies]
5606    _E[0-9]+[bs]$    [protected object entry suffixes]
5607    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5608
5609    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5610    match is performed.  This sequence is used to differentiate homonyms,
5611    is an optional part of a valid name suffix.  */
5612
5613 static int
5614 is_name_suffix (const char *str)
5615 {
5616   int k;
5617   const char *matching;
5618   const int len = strlen (str);
5619
5620   /* Skip optional leading __[0-9]+.  */
5621
5622   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5623     {
5624       str += 3;
5625       while (isdigit (str[0]))
5626         str += 1;
5627     }
5628   
5629   /* [.$][0-9]+ */
5630
5631   if (str[0] == '.' || str[0] == '$')
5632     {
5633       matching = str + 1;
5634       while (isdigit (matching[0]))
5635         matching += 1;
5636       if (matching[0] == '\0')
5637         return 1;
5638     }
5639
5640   /* ___[0-9]+ */
5641
5642   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5643     {
5644       matching = str + 3;
5645       while (isdigit (matching[0]))
5646         matching += 1;
5647       if (matching[0] == '\0')
5648         return 1;
5649     }
5650
5651   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5652
5653   if (strcmp (str, "TKB") == 0)
5654     return 1;
5655
5656 #if 0
5657   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5658      with a N at the end.  Unfortunately, the compiler uses the same
5659      convention for other internal types it creates.  So treating
5660      all entity names that end with an "N" as a name suffix causes
5661      some regressions.  For instance, consider the case of an enumerated
5662      type.  To support the 'Image attribute, it creates an array whose
5663      name ends with N.
5664      Having a single character like this as a suffix carrying some
5665      information is a bit risky.  Perhaps we should change the encoding
5666      to be something like "_N" instead.  In the meantime, do not do
5667      the following check.  */
5668   /* Protected Object Subprograms */
5669   if (len == 1 && str [0] == 'N')
5670     return 1;
5671 #endif
5672
5673   /* _E[0-9]+[bs]$ */
5674   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5675     {
5676       matching = str + 3;
5677       while (isdigit (matching[0]))
5678         matching += 1;
5679       if ((matching[0] == 'b' || matching[0] == 's')
5680           && matching [1] == '\0')
5681         return 1;
5682     }
5683
5684   /* ??? We should not modify STR directly, as we are doing below.  This
5685      is fine in this case, but may become problematic later if we find
5686      that this alternative did not work, and want to try matching
5687      another one from the begining of STR.  Since we modified it, we
5688      won't be able to find the begining of the string anymore!  */
5689   if (str[0] == 'X')
5690     {
5691       str += 1;
5692       while (str[0] != '_' && str[0] != '\0')
5693         {
5694           if (str[0] != 'n' && str[0] != 'b')
5695             return 0;
5696           str += 1;
5697         }
5698     }
5699
5700   if (str[0] == '\000')
5701     return 1;
5702
5703   if (str[0] == '_')
5704     {
5705       if (str[1] != '_' || str[2] == '\000')
5706         return 0;
5707       if (str[2] == '_')
5708         {
5709           if (strcmp (str + 3, "JM") == 0)
5710             return 1;
5711           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5712              the LJM suffix in favor of the JM one.  But we will
5713              still accept LJM as a valid suffix for a reasonable
5714              amount of time, just to allow ourselves to debug programs
5715              compiled using an older version of GNAT.  */
5716           if (strcmp (str + 3, "LJM") == 0)
5717             return 1;
5718           if (str[3] != 'X')
5719             return 0;
5720           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5721               || str[4] == 'U' || str[4] == 'P')
5722             return 1;
5723           if (str[4] == 'R' && str[5] != 'T')
5724             return 1;
5725           return 0;
5726         }
5727       if (!isdigit (str[2]))
5728         return 0;
5729       for (k = 3; str[k] != '\0'; k += 1)
5730         if (!isdigit (str[k]) && str[k] != '_')
5731           return 0;
5732       return 1;
5733     }
5734   if (str[0] == '$' && isdigit (str[1]))
5735     {
5736       for (k = 2; str[k] != '\0'; k += 1)
5737         if (!isdigit (str[k]) && str[k] != '_')
5738           return 0;
5739       return 1;
5740     }
5741   return 0;
5742 }
5743
5744 /* Return non-zero if the string starting at NAME and ending before
5745    NAME_END contains no capital letters.  */
5746
5747 static int
5748 is_valid_name_for_wild_match (const char *name0)
5749 {
5750   const char *decoded_name = ada_decode (name0);
5751   int i;
5752
5753   /* If the decoded name starts with an angle bracket, it means that
5754      NAME0 does not follow the GNAT encoding format.  It should then
5755      not be allowed as a possible wild match.  */
5756   if (decoded_name[0] == '<')
5757     return 0;
5758
5759   for (i=0; decoded_name[i] != '\0'; i++)
5760     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5761       return 0;
5762
5763   return 1;
5764 }
5765
5766 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
5767    that could start a simple name.  Assumes that *NAMEP points into
5768    the string beginning at NAME0.  */
5769
5770 static int
5771 advance_wild_match (const char **namep, const char *name0, int target0)
5772 {
5773   const char *name = *namep;
5774
5775   while (1)
5776     {
5777       int t0, t1;
5778
5779       t0 = *name;
5780       if (t0 == '_')
5781         {
5782           t1 = name[1];
5783           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
5784             {
5785               name += 1;
5786               if (name == name0 + 5 && strncmp (name0, "_ada", 4) == 0)
5787                 break;
5788               else
5789                 name += 1;
5790             }
5791           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
5792                                  || name[2] == target0))
5793             {
5794               name += 2;
5795               break;
5796             }
5797           else
5798             return 0;
5799         }
5800       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
5801         name += 1;
5802       else
5803         return 0;
5804     }
5805
5806   *namep = name;
5807   return 1;
5808 }
5809
5810 /* Return 0 iff NAME encodes a name of the form prefix.PATN.  Ignores any
5811    informational suffixes of NAME (i.e., for which is_name_suffix is
5812    true).  Assumes that PATN is a lower-cased Ada simple name.  */
5813
5814 static int
5815 wild_match (const char *name, const char *patn)
5816 {
5817   const char *p;
5818   const char *name0 = name;
5819
5820   while (1)
5821     {
5822       const char *match = name;
5823
5824       if (*name == *patn)
5825         {
5826           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
5827             if (*p != *name)
5828               break;
5829           if (*p == '\0' && is_name_suffix (name))
5830             return match != name0 && !is_valid_name_for_wild_match (name0);
5831
5832           if (name[-1] == '_')
5833             name -= 1;
5834         }
5835       if (!advance_wild_match (&name, name0, *patn))
5836         return 1;
5837     }
5838 }
5839
5840 /* Returns 0 iff symbol name SYM_NAME matches SEARCH_NAME, apart from
5841    informational suffix.  */
5842
5843 static int
5844 full_match (const char *sym_name, const char *search_name)
5845 {
5846   return !match_name (sym_name, search_name, 0);
5847 }
5848
5849
5850 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to
5851    vector *defn_symbols, updating the list of symbols in OBSTACKP 
5852    (if necessary).  If WILD, treat as NAME with a wildcard prefix.
5853    OBJFILE is the section containing BLOCK.  */
5854
5855 static void
5856 ada_add_block_symbols (struct obstack *obstackp,
5857                        const struct block *block, const char *name,
5858                        domain_enum domain, struct objfile *objfile,
5859                        int wild)
5860 {
5861   struct block_iterator iter;
5862   int name_len = strlen (name);
5863   /* A matching argument symbol, if any.  */
5864   struct symbol *arg_sym;
5865   /* Set true when we find a matching non-argument symbol.  */
5866   int found_sym;
5867   struct symbol *sym;
5868
5869   arg_sym = NULL;
5870   found_sym = 0;
5871   if (wild)
5872     {
5873       for (sym = block_iter_match_first (block, name, wild_match, &iter);
5874            sym != NULL; sym = block_iter_match_next (name, wild_match, &iter))
5875       {
5876         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5877                                    SYMBOL_DOMAIN (sym), domain)
5878             && wild_match (SYMBOL_LINKAGE_NAME (sym), name) == 0)
5879           {
5880             if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5881               continue;
5882             else if (SYMBOL_IS_ARGUMENT (sym))
5883               arg_sym = sym;
5884             else
5885               {
5886                 found_sym = 1;
5887                 add_defn_to_vec (obstackp,
5888                                  fixup_symbol_section (sym, objfile),
5889                                  block);
5890               }
5891           }
5892       }
5893     }
5894   else
5895     {
5896      for (sym = block_iter_match_first (block, name, full_match, &iter);
5897           sym != NULL; sym = block_iter_match_next (name, full_match, &iter))
5898       {
5899         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5900                                    SYMBOL_DOMAIN (sym), domain))
5901           {
5902             if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5903               {
5904                 if (SYMBOL_IS_ARGUMENT (sym))
5905                   arg_sym = sym;
5906                 else
5907                   {
5908                     found_sym = 1;
5909                     add_defn_to_vec (obstackp,
5910                                      fixup_symbol_section (sym, objfile),
5911                                      block);
5912                   }
5913               }
5914           }
5915       }
5916     }
5917
5918   if (!found_sym && arg_sym != NULL)
5919     {
5920       add_defn_to_vec (obstackp,
5921                        fixup_symbol_section (arg_sym, objfile),
5922                        block);
5923     }
5924
5925   if (!wild)
5926     {
5927       arg_sym = NULL;
5928       found_sym = 0;
5929
5930       ALL_BLOCK_SYMBOLS (block, iter, sym)
5931       {
5932         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
5933                                    SYMBOL_DOMAIN (sym), domain))
5934           {
5935             int cmp;
5936
5937             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
5938             if (cmp == 0)
5939               {
5940                 cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (sym), 5);
5941                 if (cmp == 0)
5942                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
5943                                  name_len);
5944               }
5945
5946             if (cmp == 0
5947                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
5948               {
5949                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5950                   {
5951                     if (SYMBOL_IS_ARGUMENT (sym))
5952                       arg_sym = sym;
5953                     else
5954                       {
5955                         found_sym = 1;
5956                         add_defn_to_vec (obstackp,
5957                                          fixup_symbol_section (sym, objfile),
5958                                          block);
5959                       }
5960                   }
5961               }
5962           }
5963       }
5964
5965       /* NOTE: This really shouldn't be needed for _ada_ symbols.
5966          They aren't parameters, right?  */
5967       if (!found_sym && arg_sym != NULL)
5968         {
5969           add_defn_to_vec (obstackp,
5970                            fixup_symbol_section (arg_sym, objfile),
5971                            block);
5972         }
5973     }
5974 }
5975 \f
5976
5977                                 /* Symbol Completion */
5978
5979 /* If SYM_NAME is a completion candidate for TEXT, return this symbol
5980    name in a form that's appropriate for the completion.  The result
5981    does not need to be deallocated, but is only good until the next call.
5982
5983    TEXT_LEN is equal to the length of TEXT.
5984    Perform a wild match if WILD_MATCH_P is set.
5985    ENCODED_P should be set if TEXT represents the start of a symbol name
5986    in its encoded form.  */
5987
5988 static const char *
5989 symbol_completion_match (const char *sym_name,
5990                          const char *text, int text_len,
5991                          int wild_match_p, int encoded_p)
5992 {
5993   const int verbatim_match = (text[0] == '<');
5994   int match = 0;
5995
5996   if (verbatim_match)
5997     {
5998       /* Strip the leading angle bracket.  */
5999       text = text + 1;
6000       text_len--;
6001     }
6002
6003   /* First, test against the fully qualified name of the symbol.  */
6004
6005   if (strncmp (sym_name, text, text_len) == 0)
6006     match = 1;
6007
6008   if (match && !encoded_p)
6009     {
6010       /* One needed check before declaring a positive match is to verify
6011          that iff we are doing a verbatim match, the decoded version
6012          of the symbol name starts with '<'.  Otherwise, this symbol name
6013          is not a suitable completion.  */
6014       const char *sym_name_copy = sym_name;
6015       int has_angle_bracket;
6016
6017       sym_name = ada_decode (sym_name);
6018       has_angle_bracket = (sym_name[0] == '<');
6019       match = (has_angle_bracket == verbatim_match);
6020       sym_name = sym_name_copy;
6021     }
6022
6023   if (match && !verbatim_match)
6024     {
6025       /* When doing non-verbatim match, another check that needs to
6026          be done is to verify that the potentially matching symbol name
6027          does not include capital letters, because the ada-mode would
6028          not be able to understand these symbol names without the
6029          angle bracket notation.  */
6030       const char *tmp;
6031
6032       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6033       if (*tmp != '\0')
6034         match = 0;
6035     }
6036
6037   /* Second: Try wild matching...  */
6038
6039   if (!match && wild_match_p)
6040     {
6041       /* Since we are doing wild matching, this means that TEXT
6042          may represent an unqualified symbol name.  We therefore must
6043          also compare TEXT against the unqualified name of the symbol.  */
6044       sym_name = ada_unqualified_name (ada_decode (sym_name));
6045
6046       if (strncmp (sym_name, text, text_len) == 0)
6047         match = 1;
6048     }
6049
6050   /* Finally: If we found a mach, prepare the result to return.  */
6051
6052   if (!match)
6053     return NULL;
6054
6055   if (verbatim_match)
6056     sym_name = add_angle_brackets (sym_name);
6057
6058   if (!encoded_p)
6059     sym_name = ada_decode (sym_name);
6060
6061   return sym_name;
6062 }
6063
6064 /* A companion function to ada_make_symbol_completion_list().
6065    Check if SYM_NAME represents a symbol which name would be suitable
6066    to complete TEXT (TEXT_LEN is the length of TEXT), in which case
6067    it is appended at the end of the given string vector SV.
6068
6069    ORIG_TEXT is the string original string from the user command
6070    that needs to be completed.  WORD is the entire command on which
6071    completion should be performed.  These two parameters are used to
6072    determine which part of the symbol name should be added to the
6073    completion vector.
6074    if WILD_MATCH_P is set, then wild matching is performed.
6075    ENCODED_P should be set if TEXT represents a symbol name in its
6076    encoded formed (in which case the completion should also be
6077    encoded).  */
6078
6079 static void
6080 symbol_completion_add (VEC(char_ptr) **sv,
6081                        const char *sym_name,
6082                        const char *text, int text_len,
6083                        const char *orig_text, const char *word,
6084                        int wild_match_p, int encoded_p)
6085 {
6086   const char *match = symbol_completion_match (sym_name, text, text_len,
6087                                                wild_match_p, encoded_p);
6088   char *completion;
6089
6090   if (match == NULL)
6091     return;
6092
6093   /* We found a match, so add the appropriate completion to the given
6094      string vector.  */
6095
6096   if (word == orig_text)
6097     {
6098       completion = xmalloc (strlen (match) + 5);
6099       strcpy (completion, match);
6100     }
6101   else if (word > orig_text)
6102     {
6103       /* Return some portion of sym_name.  */
6104       completion = xmalloc (strlen (match) + 5);
6105       strcpy (completion, match + (word - orig_text));
6106     }
6107   else
6108     {
6109       /* Return some of ORIG_TEXT plus sym_name.  */
6110       completion = xmalloc (strlen (match) + (orig_text - word) + 5);
6111       strncpy (completion, word, orig_text - word);
6112       completion[orig_text - word] = '\0';
6113       strcat (completion, match);
6114     }
6115
6116   VEC_safe_push (char_ptr, *sv, completion);
6117 }
6118
6119 /* An object of this type is passed as the user_data argument to the
6120    expand_symtabs_matching method.  */
6121 struct add_partial_datum
6122 {
6123   VEC(char_ptr) **completions;
6124   const char *text;
6125   int text_len;
6126   const char *text0;
6127   const char *word;
6128   int wild_match;
6129   int encoded;
6130 };
6131
6132 /* A callback for expand_symtabs_matching.  */
6133
6134 static int
6135 ada_complete_symbol_matcher (const char *name, void *user_data)
6136 {
6137   struct add_partial_datum *data = user_data;
6138   
6139   return symbol_completion_match (name, data->text, data->text_len,
6140                                   data->wild_match, data->encoded) != NULL;
6141 }
6142
6143 /* Return a list of possible symbol names completing TEXT0.  WORD is
6144    the entire command on which completion is made.  */
6145
6146 static VEC (char_ptr) *
6147 ada_make_symbol_completion_list (const char *text0, const char *word,
6148                                  enum type_code code)
6149 {
6150   char *text;
6151   int text_len;
6152   int wild_match_p;
6153   int encoded_p;
6154   VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128);
6155   struct symbol *sym;
6156   struct compunit_symtab *s;
6157   struct minimal_symbol *msymbol;
6158   struct objfile *objfile;
6159   const struct block *b, *surrounding_static_block = 0;
6160   int i;
6161   struct block_iterator iter;
6162   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6163
6164   gdb_assert (code == TYPE_CODE_UNDEF);
6165
6166   if (text0[0] == '<')
6167     {
6168       text = xstrdup (text0);
6169       make_cleanup (xfree, text);
6170       text_len = strlen (text);
6171       wild_match_p = 0;
6172       encoded_p = 1;
6173     }
6174   else
6175     {
6176       text = xstrdup (ada_encode (text0));
6177       make_cleanup (xfree, text);
6178       text_len = strlen (text);
6179       for (i = 0; i < text_len; i++)
6180         text[i] = tolower (text[i]);
6181
6182       encoded_p = (strstr (text0, "__") != NULL);
6183       /* If the name contains a ".", then the user is entering a fully
6184          qualified entity name, and the match must not be done in wild
6185          mode.  Similarly, if the user wants to complete what looks like
6186          an encoded name, the match must not be done in wild mode.  */
6187       wild_match_p = (strchr (text0, '.') == NULL && !encoded_p);
6188     }
6189
6190   /* First, look at the partial symtab symbols.  */
6191   {
6192     struct add_partial_datum data;
6193
6194     data.completions = &completions;
6195     data.text = text;
6196     data.text_len = text_len;
6197     data.text0 = text0;
6198     data.word = word;
6199     data.wild_match = wild_match_p;
6200     data.encoded = encoded_p;
6201     expand_symtabs_matching (NULL, ada_complete_symbol_matcher, ALL_DOMAIN,
6202                              &data);
6203   }
6204
6205   /* At this point scan through the misc symbol vectors and add each
6206      symbol you find to the list.  Eventually we want to ignore
6207      anything that isn't a text symbol (everything else will be
6208      handled by the psymtab code above).  */
6209
6210   ALL_MSYMBOLS (objfile, msymbol)
6211   {
6212     QUIT;
6213     symbol_completion_add (&completions, MSYMBOL_LINKAGE_NAME (msymbol),
6214                            text, text_len, text0, word, wild_match_p,
6215                            encoded_p);
6216   }
6217
6218   /* Search upwards from currently selected frame (so that we can
6219      complete on local vars.  */
6220
6221   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6222     {
6223       if (!BLOCK_SUPERBLOCK (b))
6224         surrounding_static_block = b;   /* For elmin of dups */
6225
6226       ALL_BLOCK_SYMBOLS (b, iter, sym)
6227       {
6228         symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6229                                text, text_len, text0, word,
6230                                wild_match_p, encoded_p);
6231       }
6232     }
6233
6234   /* Go through the symtabs and check the externs and statics for
6235      symbols which match.  */
6236
6237   ALL_COMPUNITS (objfile, s)
6238   {
6239     QUIT;
6240     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6241     ALL_BLOCK_SYMBOLS (b, iter, sym)
6242     {
6243       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6244                              text, text_len, text0, word,
6245                              wild_match_p, encoded_p);
6246     }
6247   }
6248
6249   ALL_COMPUNITS (objfile, s)
6250   {
6251     QUIT;
6252     b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6253     /* Don't do this block twice.  */
6254     if (b == surrounding_static_block)
6255       continue;
6256     ALL_BLOCK_SYMBOLS (b, iter, sym)
6257     {
6258       symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym),
6259                              text, text_len, text0, word,
6260                              wild_match_p, encoded_p);
6261     }
6262   }
6263
6264   do_cleanups (old_chain);
6265   return completions;
6266 }
6267
6268                                 /* Field Access */
6269
6270 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6271    for tagged types.  */
6272
6273 static int
6274 ada_is_dispatch_table_ptr_type (struct type *type)
6275 {
6276   const char *name;
6277
6278   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6279     return 0;
6280
6281   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6282   if (name == NULL)
6283     return 0;
6284
6285   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6286 }
6287
6288 /* Return non-zero if TYPE is an interface tag.  */
6289
6290 static int
6291 ada_is_interface_tag (struct type *type)
6292 {
6293   const char *name = TYPE_NAME (type);
6294
6295   if (name == NULL)
6296     return 0;
6297
6298   return (strcmp (name, "ada__tags__interface_tag") == 0);
6299 }
6300
6301 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6302    to be invisible to users.  */
6303
6304 int
6305 ada_is_ignored_field (struct type *type, int field_num)
6306 {
6307   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6308     return 1;
6309
6310   /* Check the name of that field.  */
6311   {
6312     const char *name = TYPE_FIELD_NAME (type, field_num);
6313
6314     /* Anonymous field names should not be printed.
6315        brobecker/2007-02-20: I don't think this can actually happen
6316        but we don't want to print the value of annonymous fields anyway.  */
6317     if (name == NULL)
6318       return 1;
6319
6320     /* Normally, fields whose name start with an underscore ("_")
6321        are fields that have been internally generated by the compiler,
6322        and thus should not be printed.  The "_parent" field is special,
6323        however: This is a field internally generated by the compiler
6324        for tagged types, and it contains the components inherited from
6325        the parent type.  This field should not be printed as is, but
6326        should not be ignored either.  */
6327     if (name[0] == '_' && strncmp (name, "_parent", 7) != 0)
6328       return 1;
6329   }
6330
6331   /* If this is the dispatch table of a tagged type or an interface tag,
6332      then ignore.  */
6333   if (ada_is_tagged_type (type, 1)
6334       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6335           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6336     return 1;
6337
6338   /* Not a special field, so it should not be ignored.  */
6339   return 0;
6340 }
6341
6342 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6343    pointer or reference type whose ultimate target has a tag field.  */
6344
6345 int
6346 ada_is_tagged_type (struct type *type, int refok)
6347 {
6348   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL);
6349 }
6350
6351 /* True iff TYPE represents the type of X'Tag */
6352
6353 int
6354 ada_is_tag_type (struct type *type)
6355 {
6356   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6357     return 0;
6358   else
6359     {
6360       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6361
6362       return (name != NULL
6363               && strcmp (name, "ada__tags__dispatch_table") == 0);
6364     }
6365 }
6366
6367 /* The type of the tag on VAL.  */
6368
6369 struct type *
6370 ada_tag_type (struct value *val)
6371 {
6372   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0, NULL);
6373 }
6374
6375 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6376    retired at Ada 05).  */
6377
6378 static int
6379 is_ada95_tag (struct value *tag)
6380 {
6381   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6382 }
6383
6384 /* The value of the tag on VAL.  */
6385
6386 struct value *
6387 ada_value_tag (struct value *val)
6388 {
6389   return ada_value_struct_elt (val, "_tag", 0);
6390 }
6391
6392 /* The value of the tag on the object of type TYPE whose contents are
6393    saved at VALADDR, if it is non-null, or is at memory address
6394    ADDRESS.  */
6395
6396 static struct value *
6397 value_tag_from_contents_and_address (struct type *type,
6398                                      const gdb_byte *valaddr,
6399                                      CORE_ADDR address)
6400 {
6401   int tag_byte_offset;
6402   struct type *tag_type;
6403
6404   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6405                          NULL, NULL, NULL))
6406     {
6407       const gdb_byte *valaddr1 = ((valaddr == NULL)
6408                                   ? NULL
6409                                   : valaddr + tag_byte_offset);
6410       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6411
6412       return value_from_contents_and_address (tag_type, valaddr1, address1);
6413     }
6414   return NULL;
6415 }
6416
6417 static struct type *
6418 type_from_tag (struct value *tag)
6419 {
6420   const char *type_name = ada_tag_name (tag);
6421
6422   if (type_name != NULL)
6423     return ada_find_any_type (ada_encode (type_name));
6424   return NULL;
6425 }
6426
6427 /* Given a value OBJ of a tagged type, return a value of this
6428    type at the base address of the object.  The base address, as
6429    defined in Ada.Tags, it is the address of the primary tag of
6430    the object, and therefore where the field values of its full
6431    view can be fetched.  */
6432
6433 struct value *
6434 ada_tag_value_at_base_address (struct value *obj)
6435 {
6436   volatile struct gdb_exception e;
6437   struct value *val;
6438   LONGEST offset_to_top = 0;
6439   struct type *ptr_type, *obj_type;
6440   struct value *tag;
6441   CORE_ADDR base_address;
6442
6443   obj_type = value_type (obj);
6444
6445   /* It is the responsability of the caller to deref pointers.  */
6446
6447   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6448       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6449     return obj;
6450
6451   tag = ada_value_tag (obj);
6452   if (!tag)
6453     return obj;
6454
6455   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6456
6457   if (is_ada95_tag (tag))
6458     return obj;
6459
6460   ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
6461   ptr_type = lookup_pointer_type (ptr_type);
6462   val = value_cast (ptr_type, tag);
6463   if (!val)
6464     return obj;
6465
6466   /* It is perfectly possible that an exception be raised while
6467      trying to determine the base address, just like for the tag;
6468      see ada_tag_name for more details.  We do not print the error
6469      message for the same reason.  */
6470
6471   TRY_CATCH (e, RETURN_MASK_ERROR)
6472     {
6473       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6474     }
6475
6476   if (e.reason < 0)
6477     return obj;
6478
6479   /* If offset is null, nothing to do.  */
6480
6481   if (offset_to_top == 0)
6482     return obj;
6483
6484   /* -1 is a special case in Ada.Tags; however, what should be done
6485      is not quite clear from the documentation.  So do nothing for
6486      now.  */
6487
6488   if (offset_to_top == -1)
6489     return obj;
6490
6491   base_address = value_address (obj) - offset_to_top;
6492   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6493
6494   /* Make sure that we have a proper tag at the new address.
6495      Otherwise, offset_to_top is bogus (which can happen when
6496      the object is not initialized yet).  */
6497
6498   if (!tag)
6499     return obj;
6500
6501   obj_type = type_from_tag (tag);
6502
6503   if (!obj_type)
6504     return obj;
6505
6506   return value_from_contents_and_address (obj_type, NULL, base_address);
6507 }
6508
6509 /* Return the "ada__tags__type_specific_data" type.  */
6510
6511 static struct type *
6512 ada_get_tsd_type (struct inferior *inf)
6513 {
6514   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6515
6516   if (data->tsd_type == 0)
6517     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6518   return data->tsd_type;
6519 }
6520
6521 /* Return the TSD (type-specific data) associated to the given TAG.
6522    TAG is assumed to be the tag of a tagged-type entity.
6523
6524    May return NULL if we are unable to get the TSD.  */
6525
6526 static struct value *
6527 ada_get_tsd_from_tag (struct value *tag)
6528 {
6529   struct value *val;
6530   struct type *type;
6531
6532   /* First option: The TSD is simply stored as a field of our TAG.
6533      Only older versions of GNAT would use this format, but we have
6534      to test it first, because there are no visible markers for
6535      the current approach except the absence of that field.  */
6536
6537   val = ada_value_struct_elt (tag, "tsd", 1);
6538   if (val)
6539     return val;
6540
6541   /* Try the second representation for the dispatch table (in which
6542      there is no explicit 'tsd' field in the referent of the tag pointer,
6543      and instead the tsd pointer is stored just before the dispatch
6544      table.  */
6545
6546   type = ada_get_tsd_type (current_inferior());
6547   if (type == NULL)
6548     return NULL;
6549   type = lookup_pointer_type (lookup_pointer_type (type));
6550   val = value_cast (type, tag);
6551   if (val == NULL)
6552     return NULL;
6553   return value_ind (value_ptradd (val, -1));
6554 }
6555
6556 /* Given the TSD of a tag (type-specific data), return a string
6557    containing the name of the associated type.
6558
6559    The returned value is good until the next call.  May return NULL
6560    if we are unable to determine the tag name.  */
6561
6562 static char *
6563 ada_tag_name_from_tsd (struct value *tsd)
6564 {
6565   static char name[1024];
6566   char *p;
6567   struct value *val;
6568
6569   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6570   if (val == NULL)
6571     return NULL;
6572   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6573   for (p = name; *p != '\0'; p += 1)
6574     if (isalpha (*p))
6575       *p = tolower (*p);
6576   return name;
6577 }
6578
6579 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6580    a C string.
6581
6582    Return NULL if the TAG is not an Ada tag, or if we were unable to
6583    determine the name of that tag.  The result is good until the next
6584    call.  */
6585
6586 const char *
6587 ada_tag_name (struct value *tag)
6588 {
6589   volatile struct gdb_exception e;
6590   char *name = NULL;
6591
6592   if (!ada_is_tag_type (value_type (tag)))
6593     return NULL;
6594
6595   /* It is perfectly possible that an exception be raised while trying
6596      to determine the TAG's name, even under normal circumstances:
6597      The associated variable may be uninitialized or corrupted, for
6598      instance. We do not let any exception propagate past this point.
6599      instead we return NULL.
6600
6601      We also do not print the error message either (which often is very
6602      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6603      the caller print a more meaningful message if necessary.  */
6604   TRY_CATCH (e, RETURN_MASK_ERROR)
6605     {
6606       struct value *tsd = ada_get_tsd_from_tag (tag);
6607
6608       if (tsd != NULL)
6609         name = ada_tag_name_from_tsd (tsd);
6610     }
6611
6612   return name;
6613 }
6614
6615 /* The parent type of TYPE, or NULL if none.  */
6616
6617 struct type *
6618 ada_parent_type (struct type *type)
6619 {
6620   int i;
6621
6622   type = ada_check_typedef (type);
6623
6624   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6625     return NULL;
6626
6627   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6628     if (ada_is_parent_field (type, i))
6629       {
6630         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6631
6632         /* If the _parent field is a pointer, then dereference it.  */
6633         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6634           parent_type = TYPE_TARGET_TYPE (parent_type);
6635         /* If there is a parallel XVS type, get the actual base type.  */
6636         parent_type = ada_get_base_type (parent_type);
6637
6638         return ada_check_typedef (parent_type);
6639       }
6640
6641   return NULL;
6642 }
6643
6644 /* True iff field number FIELD_NUM of structure type TYPE contains the
6645    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6646    a structure type with at least FIELD_NUM+1 fields.  */
6647
6648 int
6649 ada_is_parent_field (struct type *type, int field_num)
6650 {
6651   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6652
6653   return (name != NULL
6654           && (strncmp (name, "PARENT", 6) == 0
6655               || strncmp (name, "_parent", 7) == 0));
6656 }
6657
6658 /* True iff field number FIELD_NUM of structure type TYPE is a
6659    transparent wrapper field (which should be silently traversed when doing
6660    field selection and flattened when printing).  Assumes TYPE is a
6661    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6662    structures.  */
6663
6664 int
6665 ada_is_wrapper_field (struct type *type, int field_num)
6666 {
6667   const char *name = TYPE_FIELD_NAME (type, field_num);
6668
6669   return (name != NULL
6670           && (strncmp (name, "PARENT", 6) == 0
6671               || strcmp (name, "REP") == 0
6672               || strncmp (name, "_parent", 7) == 0
6673               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6674 }
6675
6676 /* True iff field number FIELD_NUM of structure or union type TYPE
6677    is a variant wrapper.  Assumes TYPE is a structure type with at least
6678    FIELD_NUM+1 fields.  */
6679
6680 int
6681 ada_is_variant_part (struct type *type, int field_num)
6682 {
6683   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6684
6685   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6686           || (is_dynamic_field (type, field_num)
6687               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6688                   == TYPE_CODE_UNION)));
6689 }
6690
6691 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6692    whose discriminants are contained in the record type OUTER_TYPE,
6693    returns the type of the controlling discriminant for the variant.
6694    May return NULL if the type could not be found.  */
6695
6696 struct type *
6697 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6698 {
6699   char *name = ada_variant_discrim_name (var_type);
6700
6701   return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL);
6702 }
6703
6704 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6705    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6706    represents a 'when others' clause; otherwise 0.  */
6707
6708 int
6709 ada_is_others_clause (struct type *type, int field_num)
6710 {
6711   const char *name = TYPE_FIELD_NAME (type, field_num);
6712
6713   return (name != NULL && name[0] == 'O');
6714 }
6715
6716 /* Assuming that TYPE0 is the type of the variant part of a record,
6717    returns the name of the discriminant controlling the variant.
6718    The value is valid until the next call to ada_variant_discrim_name.  */
6719
6720 char *
6721 ada_variant_discrim_name (struct type *type0)
6722 {
6723   static char *result = NULL;
6724   static size_t result_len = 0;
6725   struct type *type;
6726   const char *name;
6727   const char *discrim_end;
6728   const char *discrim_start;
6729
6730   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
6731     type = TYPE_TARGET_TYPE (type0);
6732   else
6733     type = type0;
6734
6735   name = ada_type_name (type);
6736
6737   if (name == NULL || name[0] == '\000')
6738     return "";
6739
6740   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6741        discrim_end -= 1)
6742     {
6743       if (strncmp (discrim_end, "___XVN", 6) == 0)
6744         break;
6745     }
6746   if (discrim_end == name)
6747     return "";
6748
6749   for (discrim_start = discrim_end; discrim_start != name + 3;
6750        discrim_start -= 1)
6751     {
6752       if (discrim_start == name + 1)
6753         return "";
6754       if ((discrim_start > name + 3
6755            && strncmp (discrim_start - 3, "___", 3) == 0)
6756           || discrim_start[-1] == '.')
6757         break;
6758     }
6759
6760   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6761   strncpy (result, discrim_start, discrim_end - discrim_start);
6762   result[discrim_end - discrim_start] = '\0';
6763   return result;
6764 }
6765
6766 /* Scan STR for a subtype-encoded number, beginning at position K.
6767    Put the position of the character just past the number scanned in
6768    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6769    Return 1 if there was a valid number at the given position, and 0
6770    otherwise.  A "subtype-encoded" number consists of the absolute value
6771    in decimal, followed by the letter 'm' to indicate a negative number.
6772    Assumes 0m does not occur.  */
6773
6774 int
6775 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6776 {
6777   ULONGEST RU;
6778
6779   if (!isdigit (str[k]))
6780     return 0;
6781
6782   /* Do it the hard way so as not to make any assumption about
6783      the relationship of unsigned long (%lu scan format code) and
6784      LONGEST.  */
6785   RU = 0;
6786   while (isdigit (str[k]))
6787     {
6788       RU = RU * 10 + (str[k] - '0');
6789       k += 1;
6790     }
6791
6792   if (str[k] == 'm')
6793     {
6794       if (R != NULL)
6795         *R = (-(LONGEST) (RU - 1)) - 1;
6796       k += 1;
6797     }
6798   else if (R != NULL)
6799     *R = (LONGEST) RU;
6800
6801   /* NOTE on the above: Technically, C does not say what the results of
6802      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6803      number representable as a LONGEST (although either would probably work
6804      in most implementations).  When RU>0, the locution in the then branch
6805      above is always equivalent to the negative of RU.  */
6806
6807   if (new_k != NULL)
6808     *new_k = k;
6809   return 1;
6810 }
6811
6812 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6813    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6814    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6815
6816 int
6817 ada_in_variant (LONGEST val, struct type *type, int field_num)
6818 {
6819   const char *name = TYPE_FIELD_NAME (type, field_num);
6820   int p;
6821
6822   p = 0;
6823   while (1)
6824     {
6825       switch (name[p])
6826         {
6827         case '\0':
6828           return 0;
6829         case 'S':
6830           {
6831             LONGEST W;
6832
6833             if (!ada_scan_number (name, p + 1, &W, &p))
6834               return 0;
6835             if (val == W)
6836               return 1;
6837             break;
6838           }
6839         case 'R':
6840           {
6841             LONGEST L, U;
6842
6843             if (!ada_scan_number (name, p + 1, &L, &p)
6844                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6845               return 0;
6846             if (val >= L && val <= U)
6847               return 1;
6848             break;
6849           }
6850         case 'O':
6851           return 1;
6852         default:
6853           return 0;
6854         }
6855     }
6856 }
6857
6858 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
6859
6860 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6861    ARG_TYPE, extract and return the value of one of its (non-static)
6862    fields.  FIELDNO says which field.   Differs from value_primitive_field
6863    only in that it can handle packed values of arbitrary type.  */
6864
6865 static struct value *
6866 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6867                            struct type *arg_type)
6868 {
6869   struct type *type;
6870
6871   arg_type = ada_check_typedef (arg_type);
6872   type = TYPE_FIELD_TYPE (arg_type, fieldno);
6873
6874   /* Handle packed fields.  */
6875
6876   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
6877     {
6878       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6879       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6880
6881       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6882                                              offset + bit_pos / 8,
6883                                              bit_pos % 8, bit_size, type);
6884     }
6885   else
6886     return value_primitive_field (arg1, offset, fieldno, arg_type);
6887 }
6888
6889 /* Find field with name NAME in object of type TYPE.  If found, 
6890    set the following for each argument that is non-null:
6891     - *FIELD_TYPE_P to the field's type; 
6892     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
6893       an object of that type;
6894     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
6895     - *BIT_SIZE_P to its size in bits if the field is packed, and 
6896       0 otherwise;
6897    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6898    fields up to but not including the desired field, or by the total
6899    number of fields if not found.   A NULL value of NAME never
6900    matches; the function just counts visible fields in this case.
6901    
6902    Returns 1 if found, 0 otherwise.  */
6903
6904 static int
6905 find_struct_field (const char *name, struct type *type, int offset,
6906                    struct type **field_type_p,
6907                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
6908                    int *index_p)
6909 {
6910   int i;
6911
6912   type = ada_check_typedef (type);
6913
6914   if (field_type_p != NULL)
6915     *field_type_p = NULL;
6916   if (byte_offset_p != NULL)
6917     *byte_offset_p = 0;
6918   if (bit_offset_p != NULL)
6919     *bit_offset_p = 0;
6920   if (bit_size_p != NULL)
6921     *bit_size_p = 0;
6922
6923   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6924     {
6925       int bit_pos = TYPE_FIELD_BITPOS (type, i);
6926       int fld_offset = offset + bit_pos / 8;
6927       const char *t_field_name = TYPE_FIELD_NAME (type, i);
6928
6929       if (t_field_name == NULL)
6930         continue;
6931
6932       else if (name != NULL && field_name_match (t_field_name, name))
6933         {
6934           int bit_size = TYPE_FIELD_BITSIZE (type, i);
6935
6936           if (field_type_p != NULL)
6937             *field_type_p = TYPE_FIELD_TYPE (type, i);
6938           if (byte_offset_p != NULL)
6939             *byte_offset_p = fld_offset;
6940           if (bit_offset_p != NULL)
6941             *bit_offset_p = bit_pos % 8;
6942           if (bit_size_p != NULL)
6943             *bit_size_p = bit_size;
6944           return 1;
6945         }
6946       else if (ada_is_wrapper_field (type, i))
6947         {
6948           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
6949                                  field_type_p, byte_offset_p, bit_offset_p,
6950                                  bit_size_p, index_p))
6951             return 1;
6952         }
6953       else if (ada_is_variant_part (type, i))
6954         {
6955           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
6956              fixed type?? */
6957           int j;
6958           struct type *field_type
6959             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
6960
6961           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
6962             {
6963               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
6964                                      fld_offset
6965                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
6966                                      field_type_p, byte_offset_p,
6967                                      bit_offset_p, bit_size_p, index_p))
6968                 return 1;
6969             }
6970         }
6971       else if (index_p != NULL)
6972         *index_p += 1;
6973     }
6974   return 0;
6975 }
6976
6977 /* Number of user-visible fields in record type TYPE.  */
6978
6979 static int
6980 num_visible_fields (struct type *type)
6981 {
6982   int n;
6983
6984   n = 0;
6985   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
6986   return n;
6987 }
6988
6989 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
6990    and search in it assuming it has (class) type TYPE.
6991    If found, return value, else return NULL.
6992
6993    Searches recursively through wrapper fields (e.g., '_parent').  */
6994
6995 static struct value *
6996 ada_search_struct_field (char *name, struct value *arg, int offset,
6997                          struct type *type)
6998 {
6999   int i;
7000
7001   type = ada_check_typedef (type);
7002   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7003     {
7004       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7005
7006       if (t_field_name == NULL)
7007         continue;
7008
7009       else if (field_name_match (t_field_name, name))
7010         return ada_value_primitive_field (arg, offset, i, type);
7011
7012       else if (ada_is_wrapper_field (type, i))
7013         {
7014           struct value *v =     /* Do not let indent join lines here.  */
7015             ada_search_struct_field (name, arg,
7016                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7017                                      TYPE_FIELD_TYPE (type, i));
7018
7019           if (v != NULL)
7020             return v;
7021         }
7022
7023       else if (ada_is_variant_part (type, i))
7024         {
7025           /* PNH: Do we ever get here?  See find_struct_field.  */
7026           int j;
7027           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7028                                                                         i));
7029           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7030
7031           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7032             {
7033               struct value *v = ada_search_struct_field /* Force line
7034                                                            break.  */
7035                 (name, arg,
7036                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7037                  TYPE_FIELD_TYPE (field_type, j));
7038
7039               if (v != NULL)
7040                 return v;
7041             }
7042         }
7043     }
7044   return NULL;
7045 }
7046
7047 static struct value *ada_index_struct_field_1 (int *, struct value *,
7048                                                int, struct type *);
7049
7050
7051 /* Return field #INDEX in ARG, where the index is that returned by
7052  * find_struct_field through its INDEX_P argument.  Adjust the address
7053  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7054  * If found, return value, else return NULL.  */
7055
7056 static struct value *
7057 ada_index_struct_field (int index, struct value *arg, int offset,
7058                         struct type *type)
7059 {
7060   return ada_index_struct_field_1 (&index, arg, offset, type);
7061 }
7062
7063
7064 /* Auxiliary function for ada_index_struct_field.  Like
7065  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7066  * *INDEX_P.  */
7067
7068 static struct value *
7069 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7070                           struct type *type)
7071 {
7072   int i;
7073   type = ada_check_typedef (type);
7074
7075   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7076     {
7077       if (TYPE_FIELD_NAME (type, i) == NULL)
7078         continue;
7079       else if (ada_is_wrapper_field (type, i))
7080         {
7081           struct value *v =     /* Do not let indent join lines here.  */
7082             ada_index_struct_field_1 (index_p, arg,
7083                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7084                                       TYPE_FIELD_TYPE (type, i));
7085
7086           if (v != NULL)
7087             return v;
7088         }
7089
7090       else if (ada_is_variant_part (type, i))
7091         {
7092           /* PNH: Do we ever get here?  See ada_search_struct_field,
7093              find_struct_field.  */
7094           error (_("Cannot assign this kind of variant record"));
7095         }
7096       else if (*index_p == 0)
7097         return ada_value_primitive_field (arg, offset, i, type);
7098       else
7099         *index_p -= 1;
7100     }
7101   return NULL;
7102 }
7103
7104 /* Given ARG, a value of type (pointer or reference to a)*
7105    structure/union, extract the component named NAME from the ultimate
7106    target structure/union and return it as a value with its
7107    appropriate type.
7108
7109    The routine searches for NAME among all members of the structure itself
7110    and (recursively) among all members of any wrapper members
7111    (e.g., '_parent').
7112
7113    If NO_ERR, then simply return NULL in case of error, rather than 
7114    calling error.  */
7115
7116 struct value *
7117 ada_value_struct_elt (struct value *arg, char *name, int no_err)
7118 {
7119   struct type *t, *t1;
7120   struct value *v;
7121
7122   v = NULL;
7123   t1 = t = ada_check_typedef (value_type (arg));
7124   if (TYPE_CODE (t) == TYPE_CODE_REF)
7125     {
7126       t1 = TYPE_TARGET_TYPE (t);
7127       if (t1 == NULL)
7128         goto BadValue;
7129       t1 = ada_check_typedef (t1);
7130       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7131         {
7132           arg = coerce_ref (arg);
7133           t = t1;
7134         }
7135     }
7136
7137   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7138     {
7139       t1 = TYPE_TARGET_TYPE (t);
7140       if (t1 == NULL)
7141         goto BadValue;
7142       t1 = ada_check_typedef (t1);
7143       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7144         {
7145           arg = value_ind (arg);
7146           t = t1;
7147         }
7148       else
7149         break;
7150     }
7151
7152   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7153     goto BadValue;
7154
7155   if (t1 == t)
7156     v = ada_search_struct_field (name, arg, 0, t);
7157   else
7158     {
7159       int bit_offset, bit_size, byte_offset;
7160       struct type *field_type;
7161       CORE_ADDR address;
7162
7163       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7164         address = value_address (ada_value_ind (arg));
7165       else
7166         address = value_address (ada_coerce_ref (arg));
7167
7168       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL, 1);
7169       if (find_struct_field (name, t1, 0,
7170                              &field_type, &byte_offset, &bit_offset,
7171                              &bit_size, NULL))
7172         {
7173           if (bit_size != 0)
7174             {
7175               if (TYPE_CODE (t) == TYPE_CODE_REF)
7176                 arg = ada_coerce_ref (arg);
7177               else
7178                 arg = ada_value_ind (arg);
7179               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7180                                                   bit_offset, bit_size,
7181                                                   field_type);
7182             }
7183           else
7184             v = value_at_lazy (field_type, address + byte_offset);
7185         }
7186     }
7187
7188   if (v != NULL || no_err)
7189     return v;
7190   else
7191     error (_("There is no member named %s."), name);
7192
7193  BadValue:
7194   if (no_err)
7195     return NULL;
7196   else
7197     error (_("Attempt to extract a component of "
7198              "a value that is not a record."));
7199 }
7200
7201 /* Given a type TYPE, look up the type of the component of type named NAME.
7202    If DISPP is non-null, add its byte displacement from the beginning of a
7203    structure (pointed to by a value) of type TYPE to *DISPP (does not
7204    work for packed fields).
7205
7206    Matches any field whose name has NAME as a prefix, possibly
7207    followed by "___".
7208
7209    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7210    be a (pointer or reference)+ to a struct or union, and the
7211    ultimate target type will be searched.
7212
7213    Looks recursively into variant clauses and parent types.
7214
7215    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7216    TYPE is not a type of the right kind.  */
7217
7218 static struct type *
7219 ada_lookup_struct_elt_type (struct type *type, char *name, int refok,
7220                             int noerr, int *dispp)
7221 {
7222   int i;
7223
7224   if (name == NULL)
7225     goto BadName;
7226
7227   if (refok && type != NULL)
7228     while (1)
7229       {
7230         type = ada_check_typedef (type);
7231         if (TYPE_CODE (type) != TYPE_CODE_PTR
7232             && TYPE_CODE (type) != TYPE_CODE_REF)
7233           break;
7234         type = TYPE_TARGET_TYPE (type);
7235       }
7236
7237   if (type == NULL
7238       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7239           && TYPE_CODE (type) != TYPE_CODE_UNION))
7240     {
7241       if (noerr)
7242         return NULL;
7243       else
7244         {
7245           target_terminal_ours ();
7246           gdb_flush (gdb_stdout);
7247           if (type == NULL)
7248             error (_("Type (null) is not a structure or union type"));
7249           else
7250             {
7251               /* XXX: type_sprint */
7252               fprintf_unfiltered (gdb_stderr, _("Type "));
7253               type_print (type, "", gdb_stderr, -1);
7254               error (_(" is not a structure or union type"));
7255             }
7256         }
7257     }
7258
7259   type = to_static_fixed_type (type);
7260
7261   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7262     {
7263       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7264       struct type *t;
7265       int disp;
7266
7267       if (t_field_name == NULL)
7268         continue;
7269
7270       else if (field_name_match (t_field_name, name))
7271         {
7272           if (dispp != NULL)
7273             *dispp += TYPE_FIELD_BITPOS (type, i) / 8;
7274           return ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7275         }
7276
7277       else if (ada_is_wrapper_field (type, i))
7278         {
7279           disp = 0;
7280           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7281                                           0, 1, &disp);
7282           if (t != NULL)
7283             {
7284               if (dispp != NULL)
7285                 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7286               return t;
7287             }
7288         }
7289
7290       else if (ada_is_variant_part (type, i))
7291         {
7292           int j;
7293           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7294                                                                         i));
7295
7296           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7297             {
7298               /* FIXME pnh 2008/01/26: We check for a field that is
7299                  NOT wrapped in a struct, since the compiler sometimes
7300                  generates these for unchecked variant types.  Revisit
7301                  if the compiler changes this practice.  */
7302               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7303               disp = 0;
7304               if (v_field_name != NULL 
7305                   && field_name_match (v_field_name, name))
7306                 t = ada_check_typedef (TYPE_FIELD_TYPE (field_type, j));
7307               else
7308                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7309                                                                  j),
7310                                                 name, 0, 1, &disp);
7311
7312               if (t != NULL)
7313                 {
7314                   if (dispp != NULL)
7315                     *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7316                   return t;
7317                 }
7318             }
7319         }
7320
7321     }
7322
7323 BadName:
7324   if (!noerr)
7325     {
7326       target_terminal_ours ();
7327       gdb_flush (gdb_stdout);
7328       if (name == NULL)
7329         {
7330           /* XXX: type_sprint */
7331           fprintf_unfiltered (gdb_stderr, _("Type "));
7332           type_print (type, "", gdb_stderr, -1);
7333           error (_(" has no component named <null>"));
7334         }
7335       else
7336         {
7337           /* XXX: type_sprint */
7338           fprintf_unfiltered (gdb_stderr, _("Type "));
7339           type_print (type, "", gdb_stderr, -1);
7340           error (_(" has no component named %s"), name);
7341         }
7342     }
7343
7344   return NULL;
7345 }
7346
7347 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7348    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7349    represents an unchecked union (that is, the variant part of a
7350    record that is named in an Unchecked_Union pragma).  */
7351
7352 static int
7353 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7354 {
7355   char *discrim_name = ada_variant_discrim_name (var_type);
7356
7357   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) 
7358           == NULL);
7359 }
7360
7361
7362 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7363    within a value of type OUTER_TYPE that is stored in GDB at
7364    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7365    numbering from 0) is applicable.  Returns -1 if none are.  */
7366
7367 int
7368 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7369                            const gdb_byte *outer_valaddr)
7370 {
7371   int others_clause;
7372   int i;
7373   char *discrim_name = ada_variant_discrim_name (var_type);
7374   struct value *outer;
7375   struct value *discrim;
7376   LONGEST discrim_val;
7377
7378   /* Using plain value_from_contents_and_address here causes problems
7379      because we will end up trying to resolve a type that is currently
7380      being constructed.  */
7381   outer = value_from_contents_and_address_unresolved (outer_type,
7382                                                       outer_valaddr, 0);
7383   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7384   if (discrim == NULL)
7385     return -1;
7386   discrim_val = value_as_long (discrim);
7387
7388   others_clause = -1;
7389   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7390     {
7391       if (ada_is_others_clause (var_type, i))
7392         others_clause = i;
7393       else if (ada_in_variant (discrim_val, var_type, i))
7394         return i;
7395     }
7396
7397   return others_clause;
7398 }
7399 \f
7400
7401
7402                                 /* Dynamic-Sized Records */
7403
7404 /* Strategy: The type ostensibly attached to a value with dynamic size
7405    (i.e., a size that is not statically recorded in the debugging
7406    data) does not accurately reflect the size or layout of the value.
7407    Our strategy is to convert these values to values with accurate,
7408    conventional types that are constructed on the fly.  */
7409
7410 /* There is a subtle and tricky problem here.  In general, we cannot
7411    determine the size of dynamic records without its data.  However,
7412    the 'struct value' data structure, which GDB uses to represent
7413    quantities in the inferior process (the target), requires the size
7414    of the type at the time of its allocation in order to reserve space
7415    for GDB's internal copy of the data.  That's why the
7416    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7417    rather than struct value*s.
7418
7419    However, GDB's internal history variables ($1, $2, etc.) are
7420    struct value*s containing internal copies of the data that are not, in
7421    general, the same as the data at their corresponding addresses in
7422    the target.  Fortunately, the types we give to these values are all
7423    conventional, fixed-size types (as per the strategy described
7424    above), so that we don't usually have to perform the
7425    'to_fixed_xxx_type' conversions to look at their values.
7426    Unfortunately, there is one exception: if one of the internal
7427    history variables is an array whose elements are unconstrained
7428    records, then we will need to create distinct fixed types for each
7429    element selected.  */
7430
7431 /* The upshot of all of this is that many routines take a (type, host
7432    address, target address) triple as arguments to represent a value.
7433    The host address, if non-null, is supposed to contain an internal
7434    copy of the relevant data; otherwise, the program is to consult the
7435    target at the target address.  */
7436
7437 /* Assuming that VAL0 represents a pointer value, the result of
7438    dereferencing it.  Differs from value_ind in its treatment of
7439    dynamic-sized types.  */
7440
7441 struct value *
7442 ada_value_ind (struct value *val0)
7443 {
7444   struct value *val = value_ind (val0);
7445
7446   if (ada_is_tagged_type (value_type (val), 0))
7447     val = ada_tag_value_at_base_address (val);
7448
7449   return ada_to_fixed_value (val);
7450 }
7451
7452 /* The value resulting from dereferencing any "reference to"
7453    qualifiers on VAL0.  */
7454
7455 static struct value *
7456 ada_coerce_ref (struct value *val0)
7457 {
7458   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7459     {
7460       struct value *val = val0;
7461
7462       val = coerce_ref (val);
7463
7464       if (ada_is_tagged_type (value_type (val), 0))
7465         val = ada_tag_value_at_base_address (val);
7466
7467       return ada_to_fixed_value (val);
7468     }
7469   else
7470     return val0;
7471 }
7472
7473 /* Return OFF rounded upward if necessary to a multiple of
7474    ALIGNMENT (a power of 2).  */
7475
7476 static unsigned int
7477 align_value (unsigned int off, unsigned int alignment)
7478 {
7479   return (off + alignment - 1) & ~(alignment - 1);
7480 }
7481
7482 /* Return the bit alignment required for field #F of template type TYPE.  */
7483
7484 static unsigned int
7485 field_alignment (struct type *type, int f)
7486 {
7487   const char *name = TYPE_FIELD_NAME (type, f);
7488   int len;
7489   int align_offset;
7490
7491   /* The field name should never be null, unless the debugging information
7492      is somehow malformed.  In this case, we assume the field does not
7493      require any alignment.  */
7494   if (name == NULL)
7495     return 1;
7496
7497   len = strlen (name);
7498
7499   if (!isdigit (name[len - 1]))
7500     return 1;
7501
7502   if (isdigit (name[len - 2]))
7503     align_offset = len - 2;
7504   else
7505     align_offset = len - 1;
7506
7507   if (align_offset < 7 || strncmp ("___XV", name + align_offset - 6, 5) != 0)
7508     return TARGET_CHAR_BIT;
7509
7510   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7511 }
7512
7513 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7514
7515 static struct symbol *
7516 ada_find_any_type_symbol (const char *name)
7517 {
7518   struct symbol *sym;
7519
7520   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7521   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7522     return sym;
7523
7524   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7525   return sym;
7526 }
7527
7528 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7529    solely for types defined by debug info, it will not search the GDB
7530    primitive types.  */
7531
7532 static struct type *
7533 ada_find_any_type (const char *name)
7534 {
7535   struct symbol *sym = ada_find_any_type_symbol (name);
7536
7537   if (sym != NULL)
7538     return SYMBOL_TYPE (sym);
7539
7540   return NULL;
7541 }
7542
7543 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7544    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7545    symbol, in which case it is returned.  Otherwise, this looks for
7546    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7547    Return symbol if found, and NULL otherwise.  */
7548
7549 struct symbol *
7550 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7551 {
7552   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7553   struct symbol *sym;
7554
7555   if (strstr (name, "___XR") != NULL)
7556      return name_sym;
7557
7558   sym = find_old_style_renaming_symbol (name, block);
7559
7560   if (sym != NULL)
7561     return sym;
7562
7563   /* Not right yet.  FIXME pnh 7/20/2007.  */
7564   sym = ada_find_any_type_symbol (name);
7565   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7566     return sym;
7567   else
7568     return NULL;
7569 }
7570
7571 static struct symbol *
7572 find_old_style_renaming_symbol (const char *name, const struct block *block)
7573 {
7574   const struct symbol *function_sym = block_linkage_function (block);
7575   char *rename;
7576
7577   if (function_sym != NULL)
7578     {
7579       /* If the symbol is defined inside a function, NAME is not fully
7580          qualified.  This means we need to prepend the function name
7581          as well as adding the ``___XR'' suffix to build the name of
7582          the associated renaming symbol.  */
7583       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
7584       /* Function names sometimes contain suffixes used
7585          for instance to qualify nested subprograms.  When building
7586          the XR type name, we need to make sure that this suffix is
7587          not included.  So do not include any suffix in the function
7588          name length below.  */
7589       int function_name_len = ada_name_prefix_len (function_name);
7590       const int rename_len = function_name_len + 2      /*  "__" */
7591         + strlen (name) + 6 /* "___XR\0" */ ;
7592
7593       /* Strip the suffix if necessary.  */
7594       ada_remove_trailing_digits (function_name, &function_name_len);
7595       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
7596       ada_remove_Xbn_suffix (function_name, &function_name_len);
7597
7598       /* Library-level functions are a special case, as GNAT adds
7599          a ``_ada_'' prefix to the function name to avoid namespace
7600          pollution.  However, the renaming symbols themselves do not
7601          have this prefix, so we need to skip this prefix if present.  */
7602       if (function_name_len > 5 /* "_ada_" */
7603           && strstr (function_name, "_ada_") == function_name)
7604         {
7605           function_name += 5;
7606           function_name_len -= 5;
7607         }
7608
7609       rename = (char *) alloca (rename_len * sizeof (char));
7610       strncpy (rename, function_name, function_name_len);
7611       xsnprintf (rename + function_name_len, rename_len - function_name_len,
7612                  "__%s___XR", name);
7613     }
7614   else
7615     {
7616       const int rename_len = strlen (name) + 6;
7617
7618       rename = (char *) alloca (rename_len * sizeof (char));
7619       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
7620     }
7621
7622   return ada_find_any_type_symbol (rename);
7623 }
7624
7625 /* Because of GNAT encoding conventions, several GDB symbols may match a
7626    given type name.  If the type denoted by TYPE0 is to be preferred to
7627    that of TYPE1 for purposes of type printing, return non-zero;
7628    otherwise return 0.  */
7629
7630 int
7631 ada_prefer_type (struct type *type0, struct type *type1)
7632 {
7633   if (type1 == NULL)
7634     return 1;
7635   else if (type0 == NULL)
7636     return 0;
7637   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
7638     return 1;
7639   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
7640     return 0;
7641   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7642     return 1;
7643   else if (ada_is_constrained_packed_array_type (type0))
7644     return 1;
7645   else if (ada_is_array_descriptor_type (type0)
7646            && !ada_is_array_descriptor_type (type1))
7647     return 1;
7648   else
7649     {
7650       const char *type0_name = type_name_no_tag (type0);
7651       const char *type1_name = type_name_no_tag (type1);
7652
7653       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7654           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7655         return 1;
7656     }
7657   return 0;
7658 }
7659
7660 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
7661    null, its TYPE_TAG_NAME.  Null if TYPE is null.  */
7662
7663 const char *
7664 ada_type_name (struct type *type)
7665 {
7666   if (type == NULL)
7667     return NULL;
7668   else if (TYPE_NAME (type) != NULL)
7669     return TYPE_NAME (type);
7670   else
7671     return TYPE_TAG_NAME (type);
7672 }
7673
7674 /* Search the list of "descriptive" types associated to TYPE for a type
7675    whose name is NAME.  */
7676
7677 static struct type *
7678 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7679 {
7680   struct type *result;
7681
7682   if (ada_ignore_descriptive_types_p)
7683     return NULL;
7684
7685   /* If there no descriptive-type info, then there is no parallel type
7686      to be found.  */
7687   if (!HAVE_GNAT_AUX_INFO (type))
7688     return NULL;
7689
7690   result = TYPE_DESCRIPTIVE_TYPE (type);
7691   while (result != NULL)
7692     {
7693       const char *result_name = ada_type_name (result);
7694
7695       if (result_name == NULL)
7696         {
7697           warning (_("unexpected null name on descriptive type"));
7698           return NULL;
7699         }
7700
7701       /* If the names match, stop.  */
7702       if (strcmp (result_name, name) == 0)
7703         break;
7704
7705       /* Otherwise, look at the next item on the list, if any.  */
7706       if (HAVE_GNAT_AUX_INFO (result))
7707         result = TYPE_DESCRIPTIVE_TYPE (result);
7708       else
7709         result = NULL;
7710     }
7711
7712   /* If we didn't find a match, see whether this is a packed array.  With
7713      older compilers, the descriptive type information is either absent or
7714      irrelevant when it comes to packed arrays so the above lookup fails.
7715      Fall back to using a parallel lookup by name in this case.  */
7716   if (result == NULL && ada_is_constrained_packed_array_type (type))
7717     return ada_find_any_type (name);
7718
7719   return result;
7720 }
7721
7722 /* Find a parallel type to TYPE with the specified NAME, using the
7723    descriptive type taken from the debugging information, if available,
7724    and otherwise using the (slower) name-based method.  */
7725
7726 static struct type *
7727 ada_find_parallel_type_with_name (struct type *type, const char *name)
7728 {
7729   struct type *result = NULL;
7730
7731   if (HAVE_GNAT_AUX_INFO (type))
7732     result = find_parallel_type_by_descriptive_type (type, name);
7733   else
7734     result = ada_find_any_type (name);
7735
7736   return result;
7737 }
7738
7739 /* Same as above, but specify the name of the parallel type by appending
7740    SUFFIX to the name of TYPE.  */
7741
7742 struct type *
7743 ada_find_parallel_type (struct type *type, const char *suffix)
7744 {
7745   char *name;
7746   const char *typename = ada_type_name (type);
7747   int len;
7748
7749   if (typename == NULL)
7750     return NULL;
7751
7752   len = strlen (typename);
7753
7754   name = (char *) alloca (len + strlen (suffix) + 1);
7755
7756   strcpy (name, typename);
7757   strcpy (name + len, suffix);
7758
7759   return ada_find_parallel_type_with_name (type, name);
7760 }
7761
7762 /* If TYPE is a variable-size record type, return the corresponding template
7763    type describing its fields.  Otherwise, return NULL.  */
7764
7765 static struct type *
7766 dynamic_template_type (struct type *type)
7767 {
7768   type = ada_check_typedef (type);
7769
7770   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
7771       || ada_type_name (type) == NULL)
7772     return NULL;
7773   else
7774     {
7775       int len = strlen (ada_type_name (type));
7776
7777       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7778         return type;
7779       else
7780         return ada_find_parallel_type (type, "___XVE");
7781     }
7782 }
7783
7784 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7785    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7786
7787 static int
7788 is_dynamic_field (struct type *templ_type, int field_num)
7789 {
7790   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7791
7792   return name != NULL
7793     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
7794     && strstr (name, "___XVL") != NULL;
7795 }
7796
7797 /* The index of the variant field of TYPE, or -1 if TYPE does not
7798    represent a variant record type.  */
7799
7800 static int
7801 variant_field_index (struct type *type)
7802 {
7803   int f;
7804
7805   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
7806     return -1;
7807
7808   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
7809     {
7810       if (ada_is_variant_part (type, f))
7811         return f;
7812     }
7813   return -1;
7814 }
7815
7816 /* A record type with no fields.  */
7817
7818 static struct type *
7819 empty_record (struct type *template)
7820 {
7821   struct type *type = alloc_type_copy (template);
7822
7823   TYPE_CODE (type) = TYPE_CODE_STRUCT;
7824   TYPE_NFIELDS (type) = 0;
7825   TYPE_FIELDS (type) = NULL;
7826   INIT_CPLUS_SPECIFIC (type);
7827   TYPE_NAME (type) = "<empty>";
7828   TYPE_TAG_NAME (type) = NULL;
7829   TYPE_LENGTH (type) = 0;
7830   return type;
7831 }
7832
7833 /* An ordinary record type (with fixed-length fields) that describes
7834    the value of type TYPE at VALADDR or ADDRESS (see comments at
7835    the beginning of this section) VAL according to GNAT conventions.
7836    DVAL0 should describe the (portion of a) record that contains any
7837    necessary discriminants.  It should be NULL if value_type (VAL) is
7838    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7839    variant field (unless unchecked) is replaced by a particular branch
7840    of the variant.
7841
7842    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7843    length are not statically known are discarded.  As a consequence,
7844    VALADDR, ADDRESS and DVAL0 are ignored.
7845
7846    NOTE: Limitations: For now, we assume that dynamic fields and
7847    variants occupy whole numbers of bytes.  However, they need not be
7848    byte-aligned.  */
7849
7850 struct type *
7851 ada_template_to_fixed_record_type_1 (struct type *type,
7852                                      const gdb_byte *valaddr,
7853                                      CORE_ADDR address, struct value *dval0,
7854                                      int keep_dynamic_fields)
7855 {
7856   struct value *mark = value_mark ();
7857   struct value *dval;
7858   struct type *rtype;
7859   int nfields, bit_len;
7860   int variant_field;
7861   long off;
7862   int fld_bit_len;
7863   int f;
7864
7865   /* Compute the number of fields in this record type that are going
7866      to be processed: unless keep_dynamic_fields, this includes only
7867      fields whose position and length are static will be processed.  */
7868   if (keep_dynamic_fields)
7869     nfields = TYPE_NFIELDS (type);
7870   else
7871     {
7872       nfields = 0;
7873       while (nfields < TYPE_NFIELDS (type)
7874              && !ada_is_variant_part (type, nfields)
7875              && !is_dynamic_field (type, nfields))
7876         nfields++;
7877     }
7878
7879   rtype = alloc_type_copy (type);
7880   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
7881   INIT_CPLUS_SPECIFIC (rtype);
7882   TYPE_NFIELDS (rtype) = nfields;
7883   TYPE_FIELDS (rtype) = (struct field *)
7884     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
7885   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
7886   TYPE_NAME (rtype) = ada_type_name (type);
7887   TYPE_TAG_NAME (rtype) = NULL;
7888   TYPE_FIXED_INSTANCE (rtype) = 1;
7889
7890   off = 0;
7891   bit_len = 0;
7892   variant_field = -1;
7893
7894   for (f = 0; f < nfields; f += 1)
7895     {
7896       off = align_value (off, field_alignment (type, f))
7897         + TYPE_FIELD_BITPOS (type, f);
7898       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
7899       TYPE_FIELD_BITSIZE (rtype, f) = 0;
7900
7901       if (ada_is_variant_part (type, f))
7902         {
7903           variant_field = f;
7904           fld_bit_len = 0;
7905         }
7906       else if (is_dynamic_field (type, f))
7907         {
7908           const gdb_byte *field_valaddr = valaddr;
7909           CORE_ADDR field_address = address;
7910           struct type *field_type =
7911             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
7912
7913           if (dval0 == NULL)
7914             {
7915               /* rtype's length is computed based on the run-time
7916                  value of discriminants.  If the discriminants are not
7917                  initialized, the type size may be completely bogus and
7918                  GDB may fail to allocate a value for it.  So check the
7919                  size first before creating the value.  */
7920               check_size (rtype);
7921               /* Using plain value_from_contents_and_address here
7922                  causes problems because we will end up trying to
7923                  resolve a type that is currently being
7924                  constructed.  */
7925               dval = value_from_contents_and_address_unresolved (rtype,
7926                                                                  valaddr,
7927                                                                  address);
7928               rtype = value_type (dval);
7929             }
7930           else
7931             dval = dval0;
7932
7933           /* If the type referenced by this field is an aligner type, we need
7934              to unwrap that aligner type, because its size might not be set.
7935              Keeping the aligner type would cause us to compute the wrong
7936              size for this field, impacting the offset of the all the fields
7937              that follow this one.  */
7938           if (ada_is_aligner_type (field_type))
7939             {
7940               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7941
7942               field_valaddr = cond_offset_host (field_valaddr, field_offset);
7943               field_address = cond_offset_target (field_address, field_offset);
7944               field_type = ada_aligned_type (field_type);
7945             }
7946
7947           field_valaddr = cond_offset_host (field_valaddr,
7948                                             off / TARGET_CHAR_BIT);
7949           field_address = cond_offset_target (field_address,
7950                                               off / TARGET_CHAR_BIT);
7951
7952           /* Get the fixed type of the field.  Note that, in this case,
7953              we do not want to get the real type out of the tag: if
7954              the current field is the parent part of a tagged record,
7955              we will get the tag of the object.  Clearly wrong: the real
7956              type of the parent is not the real type of the child.  We
7957              would end up in an infinite loop.  */
7958           field_type = ada_get_base_type (field_type);
7959           field_type = ada_to_fixed_type (field_type, field_valaddr,
7960                                           field_address, dval, 0);
7961           /* If the field size is already larger than the maximum
7962              object size, then the record itself will necessarily
7963              be larger than the maximum object size.  We need to make
7964              this check now, because the size might be so ridiculously
7965              large (due to an uninitialized variable in the inferior)
7966              that it would cause an overflow when adding it to the
7967              record size.  */
7968           check_size (field_type);
7969
7970           TYPE_FIELD_TYPE (rtype, f) = field_type;
7971           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7972           /* The multiplication can potentially overflow.  But because
7973              the field length has been size-checked just above, and
7974              assuming that the maximum size is a reasonable value,
7975              an overflow should not happen in practice.  So rather than
7976              adding overflow recovery code to this already complex code,
7977              we just assume that it's not going to happen.  */
7978           fld_bit_len =
7979             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
7980         }
7981       else
7982         {
7983           /* Note: If this field's type is a typedef, it is important
7984              to preserve the typedef layer.
7985
7986              Otherwise, we might be transforming a typedef to a fat
7987              pointer (encoding a pointer to an unconstrained array),
7988              into a basic fat pointer (encoding an unconstrained
7989              array).  As both types are implemented using the same
7990              structure, the typedef is the only clue which allows us
7991              to distinguish between the two options.  Stripping it
7992              would prevent us from printing this field appropriately.  */
7993           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
7994           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7995           if (TYPE_FIELD_BITSIZE (type, f) > 0)
7996             fld_bit_len =
7997               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7998           else
7999             {
8000               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8001
8002               /* We need to be careful of typedefs when computing
8003                  the length of our field.  If this is a typedef,
8004                  get the length of the target type, not the length
8005                  of the typedef.  */
8006               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8007                 field_type = ada_typedef_target_type (field_type);
8008
8009               fld_bit_len =
8010                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8011             }
8012         }
8013       if (off + fld_bit_len > bit_len)
8014         bit_len = off + fld_bit_len;
8015       off += fld_bit_len;
8016       TYPE_LENGTH (rtype) =
8017         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8018     }
8019
8020   /* We handle the variant part, if any, at the end because of certain
8021      odd cases in which it is re-ordered so as NOT to be the last field of
8022      the record.  This can happen in the presence of representation
8023      clauses.  */
8024   if (variant_field >= 0)
8025     {
8026       struct type *branch_type;
8027
8028       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8029
8030       if (dval0 == NULL)
8031         {
8032           /* Using plain value_from_contents_and_address here causes
8033              problems because we will end up trying to resolve a type
8034              that is currently being constructed.  */
8035           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8036                                                              address);
8037           rtype = value_type (dval);
8038         }
8039       else
8040         dval = dval0;
8041
8042       branch_type =
8043         to_fixed_variant_branch_type
8044         (TYPE_FIELD_TYPE (type, variant_field),
8045          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8046          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8047       if (branch_type == NULL)
8048         {
8049           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8050             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8051           TYPE_NFIELDS (rtype) -= 1;
8052         }
8053       else
8054         {
8055           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8056           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8057           fld_bit_len =
8058             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8059             TARGET_CHAR_BIT;
8060           if (off + fld_bit_len > bit_len)
8061             bit_len = off + fld_bit_len;
8062           TYPE_LENGTH (rtype) =
8063             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8064         }
8065     }
8066
8067   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8068      should contain the alignment of that record, which should be a strictly
8069      positive value.  If null or negative, then something is wrong, most
8070      probably in the debug info.  In that case, we don't round up the size
8071      of the resulting type.  If this record is not part of another structure,
8072      the current RTYPE length might be good enough for our purposes.  */
8073   if (TYPE_LENGTH (type) <= 0)
8074     {
8075       if (TYPE_NAME (rtype))
8076         warning (_("Invalid type size for `%s' detected: %d."),
8077                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8078       else
8079         warning (_("Invalid type size for <unnamed> detected: %d."),
8080                  TYPE_LENGTH (type));
8081     }
8082   else
8083     {
8084       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8085                                          TYPE_LENGTH (type));
8086     }
8087
8088   value_free_to_mark (mark);
8089   if (TYPE_LENGTH (rtype) > varsize_limit)
8090     error (_("record type with dynamic size is larger than varsize-limit"));
8091   return rtype;
8092 }
8093
8094 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8095    of 1.  */
8096
8097 static struct type *
8098 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8099                                CORE_ADDR address, struct value *dval0)
8100 {
8101   return ada_template_to_fixed_record_type_1 (type, valaddr,
8102                                               address, dval0, 1);
8103 }
8104
8105 /* An ordinary record type in which ___XVL-convention fields and
8106    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8107    static approximations, containing all possible fields.  Uses
8108    no runtime values.  Useless for use in values, but that's OK,
8109    since the results are used only for type determinations.   Works on both
8110    structs and unions.  Representation note: to save space, we memorize
8111    the result of this function in the TYPE_TARGET_TYPE of the
8112    template type.  */
8113
8114 static struct type *
8115 template_to_static_fixed_type (struct type *type0)
8116 {
8117   struct type *type;
8118   int nfields;
8119   int f;
8120
8121   if (TYPE_TARGET_TYPE (type0) != NULL)
8122     return TYPE_TARGET_TYPE (type0);
8123
8124   nfields = TYPE_NFIELDS (type0);
8125   type = type0;
8126
8127   for (f = 0; f < nfields; f += 1)
8128     {
8129       struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type0, f));
8130       struct type *new_type;
8131
8132       if (is_dynamic_field (type0, f))
8133         new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8134       else
8135         new_type = static_unwrap_type (field_type);
8136       if (type == type0 && new_type != field_type)
8137         {
8138           TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8139           TYPE_CODE (type) = TYPE_CODE (type0);
8140           INIT_CPLUS_SPECIFIC (type);
8141           TYPE_NFIELDS (type) = nfields;
8142           TYPE_FIELDS (type) = (struct field *)
8143             TYPE_ALLOC (type, nfields * sizeof (struct field));
8144           memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8145                   sizeof (struct field) * nfields);
8146           TYPE_NAME (type) = ada_type_name (type0);
8147           TYPE_TAG_NAME (type) = NULL;
8148           TYPE_FIXED_INSTANCE (type) = 1;
8149           TYPE_LENGTH (type) = 0;
8150         }
8151       TYPE_FIELD_TYPE (type, f) = new_type;
8152       TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8153     }
8154   return type;
8155 }
8156
8157 /* Given an object of type TYPE whose contents are at VALADDR and
8158    whose address in memory is ADDRESS, returns a revision of TYPE,
8159    which should be a non-dynamic-sized record, in which the variant
8160    part, if any, is replaced with the appropriate branch.  Looks
8161    for discriminant values in DVAL0, which can be NULL if the record
8162    contains the necessary discriminant values.  */
8163
8164 static struct type *
8165 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8166                                    CORE_ADDR address, struct value *dval0)
8167 {
8168   struct value *mark = value_mark ();
8169   struct value *dval;
8170   struct type *rtype;
8171   struct type *branch_type;
8172   int nfields = TYPE_NFIELDS (type);
8173   int variant_field = variant_field_index (type);
8174
8175   if (variant_field == -1)
8176     return type;
8177
8178   if (dval0 == NULL)
8179     {
8180       dval = value_from_contents_and_address (type, valaddr, address);
8181       type = value_type (dval);
8182     }
8183   else
8184     dval = dval0;
8185
8186   rtype = alloc_type_copy (type);
8187   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8188   INIT_CPLUS_SPECIFIC (rtype);
8189   TYPE_NFIELDS (rtype) = nfields;
8190   TYPE_FIELDS (rtype) =
8191     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8192   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8193           sizeof (struct field) * nfields);
8194   TYPE_NAME (rtype) = ada_type_name (type);
8195   TYPE_TAG_NAME (rtype) = NULL;
8196   TYPE_FIXED_INSTANCE (rtype) = 1;
8197   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8198
8199   branch_type = to_fixed_variant_branch_type
8200     (TYPE_FIELD_TYPE (type, variant_field),
8201      cond_offset_host (valaddr,
8202                        TYPE_FIELD_BITPOS (type, variant_field)
8203                        / TARGET_CHAR_BIT),
8204      cond_offset_target (address,
8205                          TYPE_FIELD_BITPOS (type, variant_field)
8206                          / TARGET_CHAR_BIT), dval);
8207   if (branch_type == NULL)
8208     {
8209       int f;
8210
8211       for (f = variant_field + 1; f < nfields; f += 1)
8212         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8213       TYPE_NFIELDS (rtype) -= 1;
8214     }
8215   else
8216     {
8217       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8218       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8219       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8220       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8221     }
8222   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8223
8224   value_free_to_mark (mark);
8225   return rtype;
8226 }
8227
8228 /* An ordinary record type (with fixed-length fields) that describes
8229    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8230    beginning of this section].   Any necessary discriminants' values
8231    should be in DVAL, a record value; it may be NULL if the object
8232    at ADDR itself contains any necessary discriminant values.
8233    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8234    values from the record are needed.  Except in the case that DVAL,
8235    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8236    unchecked) is replaced by a particular branch of the variant.
8237
8238    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8239    is questionable and may be removed.  It can arise during the
8240    processing of an unconstrained-array-of-record type where all the
8241    variant branches have exactly the same size.  This is because in
8242    such cases, the compiler does not bother to use the XVS convention
8243    when encoding the record.  I am currently dubious of this
8244    shortcut and suspect the compiler should be altered.  FIXME.  */
8245
8246 static struct type *
8247 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8248                       CORE_ADDR address, struct value *dval)
8249 {
8250   struct type *templ_type;
8251
8252   if (TYPE_FIXED_INSTANCE (type0))
8253     return type0;
8254
8255   templ_type = dynamic_template_type (type0);
8256
8257   if (templ_type != NULL)
8258     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8259   else if (variant_field_index (type0) >= 0)
8260     {
8261       if (dval == NULL && valaddr == NULL && address == 0)
8262         return type0;
8263       return to_record_with_fixed_variant_part (type0, valaddr, address,
8264                                                 dval);
8265     }
8266   else
8267     {
8268       TYPE_FIXED_INSTANCE (type0) = 1;
8269       return type0;
8270     }
8271
8272 }
8273
8274 /* An ordinary record type (with fixed-length fields) that describes
8275    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8276    union type.  Any necessary discriminants' values should be in DVAL,
8277    a record value.  That is, this routine selects the appropriate
8278    branch of the union at ADDR according to the discriminant value
8279    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8280    it represents a variant subject to a pragma Unchecked_Union.  */
8281
8282 static struct type *
8283 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8284                               CORE_ADDR address, struct value *dval)
8285 {
8286   int which;
8287   struct type *templ_type;
8288   struct type *var_type;
8289
8290   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8291     var_type = TYPE_TARGET_TYPE (var_type0);
8292   else
8293     var_type = var_type0;
8294
8295   templ_type = ada_find_parallel_type (var_type, "___XVU");
8296
8297   if (templ_type != NULL)
8298     var_type = templ_type;
8299
8300   if (is_unchecked_variant (var_type, value_type (dval)))
8301       return var_type0;
8302   which =
8303     ada_which_variant_applies (var_type,
8304                                value_type (dval), value_contents (dval));
8305
8306   if (which < 0)
8307     return empty_record (var_type);
8308   else if (is_dynamic_field (var_type, which))
8309     return to_fixed_record_type
8310       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8311        valaddr, address, dval);
8312   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8313     return
8314       to_fixed_record_type
8315       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8316   else
8317     return TYPE_FIELD_TYPE (var_type, which);
8318 }
8319
8320 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8321    ENCODING_TYPE, a type following the GNAT conventions for discrete
8322    type encodings, only carries redundant information.  */
8323
8324 static int
8325 ada_is_redundant_range_encoding (struct type *range_type,
8326                                  struct type *encoding_type)
8327 {
8328   struct type *fixed_range_type;
8329   char *bounds_str;
8330   int n;
8331   LONGEST lo, hi;
8332
8333   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8334
8335   if (TYPE_CODE (get_base_type (range_type))
8336       != TYPE_CODE (get_base_type (encoding_type)))
8337     {
8338       /* The compiler probably used a simple base type to describe
8339          the range type instead of the range's actual base type,
8340          expecting us to get the real base type from the encoding
8341          anyway.  In this situation, the encoding cannot be ignored
8342          as redundant.  */
8343       return 0;
8344     }
8345
8346   if (is_dynamic_type (range_type))
8347     return 0;
8348
8349   if (TYPE_NAME (encoding_type) == NULL)
8350     return 0;
8351
8352   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8353   if (bounds_str == NULL)
8354     return 0;
8355
8356   n = 8; /* Skip "___XDLU_".  */
8357   if (!ada_scan_number (bounds_str, n, &lo, &n))
8358     return 0;
8359   if (TYPE_LOW_BOUND (range_type) != lo)
8360     return 0;
8361
8362   n += 2; /* Skip the "__" separator between the two bounds.  */
8363   if (!ada_scan_number (bounds_str, n, &hi, &n))
8364     return 0;
8365   if (TYPE_HIGH_BOUND (range_type) != hi)
8366     return 0;
8367
8368   return 1;
8369 }
8370
8371 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8372    a type following the GNAT encoding for describing array type
8373    indices, only carries redundant information.  */
8374
8375 static int
8376 ada_is_redundant_index_type_desc (struct type *array_type,
8377                                   struct type *desc_type)
8378 {
8379   struct type *this_layer = check_typedef (array_type);
8380   int i;
8381
8382   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8383     {
8384       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8385                                             TYPE_FIELD_TYPE (desc_type, i)))
8386         return 0;
8387       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8388     }
8389
8390   return 1;
8391 }
8392
8393 /* Assuming that TYPE0 is an array type describing the type of a value
8394    at ADDR, and that DVAL describes a record containing any
8395    discriminants used in TYPE0, returns a type for the value that
8396    contains no dynamic components (that is, no components whose sizes
8397    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8398    true, gives an error message if the resulting type's size is over
8399    varsize_limit.  */
8400
8401 static struct type *
8402 to_fixed_array_type (struct type *type0, struct value *dval,
8403                      int ignore_too_big)
8404 {
8405   struct type *index_type_desc;
8406   struct type *result;
8407   int constrained_packed_array_p;
8408
8409   type0 = ada_check_typedef (type0);
8410   if (TYPE_FIXED_INSTANCE (type0))
8411     return type0;
8412
8413   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8414   if (constrained_packed_array_p)
8415     type0 = decode_constrained_packed_array_type (type0);
8416
8417   index_type_desc = ada_find_parallel_type (type0, "___XA");
8418   ada_fixup_array_indexes_type (index_type_desc);
8419   if (index_type_desc != NULL
8420       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8421     {
8422       /* Ignore this ___XA parallel type, as it does not bring any
8423          useful information.  This allows us to avoid creating fixed
8424          versions of the array's index types, which would be identical
8425          to the original ones.  This, in turn, can also help avoid
8426          the creation of fixed versions of the array itself.  */
8427       index_type_desc = NULL;
8428     }
8429
8430   if (index_type_desc == NULL)
8431     {
8432       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8433
8434       /* NOTE: elt_type---the fixed version of elt_type0---should never
8435          depend on the contents of the array in properly constructed
8436          debugging data.  */
8437       /* Create a fixed version of the array element type.
8438          We're not providing the address of an element here,
8439          and thus the actual object value cannot be inspected to do
8440          the conversion.  This should not be a problem, since arrays of
8441          unconstrained objects are not allowed.  In particular, all
8442          the elements of an array of a tagged type should all be of
8443          the same type specified in the debugging info.  No need to
8444          consult the object tag.  */
8445       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8446
8447       /* Make sure we always create a new array type when dealing with
8448          packed array types, since we're going to fix-up the array
8449          type length and element bitsize a little further down.  */
8450       if (elt_type0 == elt_type && !constrained_packed_array_p)
8451         result = type0;
8452       else
8453         result = create_array_type (alloc_type_copy (type0),
8454                                     elt_type, TYPE_INDEX_TYPE (type0));
8455     }
8456   else
8457     {
8458       int i;
8459       struct type *elt_type0;
8460
8461       elt_type0 = type0;
8462       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8463         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8464
8465       /* NOTE: result---the fixed version of elt_type0---should never
8466          depend on the contents of the array in properly constructed
8467          debugging data.  */
8468       /* Create a fixed version of the array element type.
8469          We're not providing the address of an element here,
8470          and thus the actual object value cannot be inspected to do
8471          the conversion.  This should not be a problem, since arrays of
8472          unconstrained objects are not allowed.  In particular, all
8473          the elements of an array of a tagged type should all be of
8474          the same type specified in the debugging info.  No need to
8475          consult the object tag.  */
8476       result =
8477         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8478
8479       elt_type0 = type0;
8480       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8481         {
8482           struct type *range_type =
8483             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8484
8485           result = create_array_type (alloc_type_copy (elt_type0),
8486                                       result, range_type);
8487           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8488         }
8489       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8490         error (_("array type with dynamic size is larger than varsize-limit"));
8491     }
8492
8493   /* We want to preserve the type name.  This can be useful when
8494      trying to get the type name of a value that has already been
8495      printed (for instance, if the user did "print VAR; whatis $".  */
8496   TYPE_NAME (result) = TYPE_NAME (type0);
8497
8498   if (constrained_packed_array_p)
8499     {
8500       /* So far, the resulting type has been created as if the original
8501          type was a regular (non-packed) array type.  As a result, the
8502          bitsize of the array elements needs to be set again, and the array
8503          length needs to be recomputed based on that bitsize.  */
8504       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8505       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8506
8507       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8508       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8509       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8510         TYPE_LENGTH (result)++;
8511     }
8512
8513   TYPE_FIXED_INSTANCE (result) = 1;
8514   return result;
8515 }
8516
8517
8518 /* A standard type (containing no dynamically sized components)
8519    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8520    DVAL describes a record containing any discriminants used in TYPE0,
8521    and may be NULL if there are none, or if the object of type TYPE at
8522    ADDRESS or in VALADDR contains these discriminants.
8523    
8524    If CHECK_TAG is not null, in the case of tagged types, this function
8525    attempts to locate the object's tag and use it to compute the actual
8526    type.  However, when ADDRESS is null, we cannot use it to determine the
8527    location of the tag, and therefore compute the tagged type's actual type.
8528    So we return the tagged type without consulting the tag.  */
8529    
8530 static struct type *
8531 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8532                    CORE_ADDR address, struct value *dval, int check_tag)
8533 {
8534   type = ada_check_typedef (type);
8535   switch (TYPE_CODE (type))
8536     {
8537     default:
8538       return type;
8539     case TYPE_CODE_STRUCT:
8540       {
8541         struct type *static_type = to_static_fixed_type (type);
8542         struct type *fixed_record_type =
8543           to_fixed_record_type (type, valaddr, address, NULL);
8544
8545         /* If STATIC_TYPE is a tagged type and we know the object's address,
8546            then we can determine its tag, and compute the object's actual
8547            type from there.  Note that we have to use the fixed record
8548            type (the parent part of the record may have dynamic fields
8549            and the way the location of _tag is expressed may depend on
8550            them).  */
8551
8552         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8553           {
8554             struct value *tag =
8555               value_tag_from_contents_and_address
8556               (fixed_record_type,
8557                valaddr,
8558                address);
8559             struct type *real_type = type_from_tag (tag);
8560             struct value *obj =
8561               value_from_contents_and_address (fixed_record_type,
8562                                                valaddr,
8563                                                address);
8564             fixed_record_type = value_type (obj);
8565             if (real_type != NULL)
8566               return to_fixed_record_type
8567                 (real_type, NULL,
8568                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8569           }
8570
8571         /* Check to see if there is a parallel ___XVZ variable.
8572            If there is, then it provides the actual size of our type.  */
8573         else if (ada_type_name (fixed_record_type) != NULL)
8574           {
8575             const char *name = ada_type_name (fixed_record_type);
8576             char *xvz_name = alloca (strlen (name) + 7 /* "___XVZ\0" */);
8577             int xvz_found = 0;
8578             LONGEST size;
8579
8580             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8581             size = get_int_var_value (xvz_name, &xvz_found);
8582             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8583               {
8584                 fixed_record_type = copy_type (fixed_record_type);
8585                 TYPE_LENGTH (fixed_record_type) = size;
8586
8587                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8588                    observed this when the debugging info is STABS, and
8589                    apparently it is something that is hard to fix.
8590
8591                    In practice, we don't need the actual type definition
8592                    at all, because the presence of the XVZ variable allows us
8593                    to assume that there must be a XVS type as well, which we
8594                    should be able to use later, when we need the actual type
8595                    definition.
8596
8597                    In the meantime, pretend that the "fixed" type we are
8598                    returning is NOT a stub, because this can cause trouble
8599                    when using this type to create new types targeting it.
8600                    Indeed, the associated creation routines often check
8601                    whether the target type is a stub and will try to replace
8602                    it, thus using a type with the wrong size.  This, in turn,
8603                    might cause the new type to have the wrong size too.
8604                    Consider the case of an array, for instance, where the size
8605                    of the array is computed from the number of elements in
8606                    our array multiplied by the size of its element.  */
8607                 TYPE_STUB (fixed_record_type) = 0;
8608               }
8609           }
8610         return fixed_record_type;
8611       }
8612     case TYPE_CODE_ARRAY:
8613       return to_fixed_array_type (type, dval, 1);
8614     case TYPE_CODE_UNION:
8615       if (dval == NULL)
8616         return type;
8617       else
8618         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8619     }
8620 }
8621
8622 /* The same as ada_to_fixed_type_1, except that it preserves the type
8623    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8624
8625    The typedef layer needs be preserved in order to differentiate between
8626    arrays and array pointers when both types are implemented using the same
8627    fat pointer.  In the array pointer case, the pointer is encoded as
8628    a typedef of the pointer type.  For instance, considering:
8629
8630           type String_Access is access String;
8631           S1 : String_Access := null;
8632
8633    To the debugger, S1 is defined as a typedef of type String.  But
8634    to the user, it is a pointer.  So if the user tries to print S1,
8635    we should not dereference the array, but print the array address
8636    instead.
8637
8638    If we didn't preserve the typedef layer, we would lose the fact that
8639    the type is to be presented as a pointer (needs de-reference before
8640    being printed).  And we would also use the source-level type name.  */
8641
8642 struct type *
8643 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8644                    CORE_ADDR address, struct value *dval, int check_tag)
8645
8646 {
8647   struct type *fixed_type =
8648     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8649
8650   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8651       then preserve the typedef layer.
8652
8653       Implementation note: We can only check the main-type portion of
8654       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8655       from TYPE now returns a type that has the same instance flags
8656       as TYPE.  For instance, if TYPE is a "typedef const", and its
8657       target type is a "struct", then the typedef elimination will return
8658       a "const" version of the target type.  See check_typedef for more
8659       details about how the typedef layer elimination is done.
8660
8661       brobecker/2010-11-19: It seems to me that the only case where it is
8662       useful to preserve the typedef layer is when dealing with fat pointers.
8663       Perhaps, we could add a check for that and preserve the typedef layer
8664       only in that situation.  But this seems unecessary so far, probably
8665       because we call check_typedef/ada_check_typedef pretty much everywhere.
8666       */
8667   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
8668       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8669           == TYPE_MAIN_TYPE (fixed_type)))
8670     return type;
8671
8672   return fixed_type;
8673 }
8674
8675 /* A standard (static-sized) type corresponding as well as possible to
8676    TYPE0, but based on no runtime data.  */
8677
8678 static struct type *
8679 to_static_fixed_type (struct type *type0)
8680 {
8681   struct type *type;
8682
8683   if (type0 == NULL)
8684     return NULL;
8685
8686   if (TYPE_FIXED_INSTANCE (type0))
8687     return type0;
8688
8689   type0 = ada_check_typedef (type0);
8690
8691   switch (TYPE_CODE (type0))
8692     {
8693     default:
8694       return type0;
8695     case TYPE_CODE_STRUCT:
8696       type = dynamic_template_type (type0);
8697       if (type != NULL)
8698         return template_to_static_fixed_type (type);
8699       else
8700         return template_to_static_fixed_type (type0);
8701     case TYPE_CODE_UNION:
8702       type = ada_find_parallel_type (type0, "___XVU");
8703       if (type != NULL)
8704         return template_to_static_fixed_type (type);
8705       else
8706         return template_to_static_fixed_type (type0);
8707     }
8708 }
8709
8710 /* A static approximation of TYPE with all type wrappers removed.  */
8711
8712 static struct type *
8713 static_unwrap_type (struct type *type)
8714 {
8715   if (ada_is_aligner_type (type))
8716     {
8717       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8718       if (ada_type_name (type1) == NULL)
8719         TYPE_NAME (type1) = ada_type_name (type);
8720
8721       return static_unwrap_type (type1);
8722     }
8723   else
8724     {
8725       struct type *raw_real_type = ada_get_base_type (type);
8726
8727       if (raw_real_type == type)
8728         return type;
8729       else
8730         return to_static_fixed_type (raw_real_type);
8731     }
8732 }
8733
8734 /* In some cases, incomplete and private types require
8735    cross-references that are not resolved as records (for example,
8736       type Foo;
8737       type FooP is access Foo;
8738       V: FooP;
8739       type Foo is array ...;
8740    ).  In these cases, since there is no mechanism for producing
8741    cross-references to such types, we instead substitute for FooP a
8742    stub enumeration type that is nowhere resolved, and whose tag is
8743    the name of the actual type.  Call these types "non-record stubs".  */
8744
8745 /* A type equivalent to TYPE that is not a non-record stub, if one
8746    exists, otherwise TYPE.  */
8747
8748 struct type *
8749 ada_check_typedef (struct type *type)
8750 {
8751   if (type == NULL)
8752     return NULL;
8753
8754   /* If our type is a typedef type of a fat pointer, then we're done.
8755      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8756      what allows us to distinguish between fat pointers that represent
8757      array types, and fat pointers that represent array access types
8758      (in both cases, the compiler implements them as fat pointers).  */
8759   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
8760       && is_thick_pntr (ada_typedef_target_type (type)))
8761     return type;
8762
8763   CHECK_TYPEDEF (type);
8764   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
8765       || !TYPE_STUB (type)
8766       || TYPE_TAG_NAME (type) == NULL)
8767     return type;
8768   else
8769     {
8770       const char *name = TYPE_TAG_NAME (type);
8771       struct type *type1 = ada_find_any_type (name);
8772
8773       if (type1 == NULL)
8774         return type;
8775
8776       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8777          stubs pointing to arrays, as we don't create symbols for array
8778          types, only for the typedef-to-array types).  If that's the case,
8779          strip the typedef layer.  */
8780       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
8781         type1 = ada_check_typedef (type1);
8782
8783       return type1;
8784     }
8785 }
8786
8787 /* A value representing the data at VALADDR/ADDRESS as described by
8788    type TYPE0, but with a standard (static-sized) type that correctly
8789    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8790    type, then return VAL0 [this feature is simply to avoid redundant
8791    creation of struct values].  */
8792
8793 static struct value *
8794 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8795                            struct value *val0)
8796 {
8797   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8798
8799   if (type == type0 && val0 != NULL)
8800     return val0;
8801   else
8802     return value_from_contents_and_address (type, 0, address);
8803 }
8804
8805 /* A value representing VAL, but with a standard (static-sized) type
8806    that correctly describes it.  Does not necessarily create a new
8807    value.  */
8808
8809 struct value *
8810 ada_to_fixed_value (struct value *val)
8811 {
8812   val = unwrap_value (val);
8813   val = ada_to_fixed_value_create (value_type (val),
8814                                       value_address (val),
8815                                       val);
8816   return val;
8817 }
8818 \f
8819
8820 /* Attributes */
8821
8822 /* Table mapping attribute numbers to names.
8823    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
8824
8825 static const char *attribute_names[] = {
8826   "<?>",
8827
8828   "first",
8829   "last",
8830   "length",
8831   "image",
8832   "max",
8833   "min",
8834   "modulus",
8835   "pos",
8836   "size",
8837   "tag",
8838   "val",
8839   0
8840 };
8841
8842 const char *
8843 ada_attribute_name (enum exp_opcode n)
8844 {
8845   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8846     return attribute_names[n - OP_ATR_FIRST + 1];
8847   else
8848     return attribute_names[0];
8849 }
8850
8851 /* Evaluate the 'POS attribute applied to ARG.  */
8852
8853 static LONGEST
8854 pos_atr (struct value *arg)
8855 {
8856   struct value *val = coerce_ref (arg);
8857   struct type *type = value_type (val);
8858
8859   if (!discrete_type_p (type))
8860     error (_("'POS only defined on discrete types"));
8861
8862   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8863     {
8864       int i;
8865       LONGEST v = value_as_long (val);
8866
8867       for (i = 0; i < TYPE_NFIELDS (type); i += 1)
8868         {
8869           if (v == TYPE_FIELD_ENUMVAL (type, i))
8870             return i;
8871         }
8872       error (_("enumeration value is invalid: can't find 'POS"));
8873     }
8874   else
8875     return value_as_long (val);
8876 }
8877
8878 static struct value *
8879 value_pos_atr (struct type *type, struct value *arg)
8880 {
8881   return value_from_longest (type, pos_atr (arg));
8882 }
8883
8884 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
8885
8886 static struct value *
8887 value_val_atr (struct type *type, struct value *arg)
8888 {
8889   if (!discrete_type_p (type))
8890     error (_("'VAL only defined on discrete types"));
8891   if (!integer_type_p (value_type (arg)))
8892     error (_("'VAL requires integral argument"));
8893
8894   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8895     {
8896       long pos = value_as_long (arg);
8897
8898       if (pos < 0 || pos >= TYPE_NFIELDS (type))
8899         error (_("argument to 'VAL out of range"));
8900       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
8901     }
8902   else
8903     return value_from_longest (type, value_as_long (arg));
8904 }
8905 \f
8906
8907                                 /* Evaluation */
8908
8909 /* True if TYPE appears to be an Ada character type.
8910    [At the moment, this is true only for Character and Wide_Character;
8911    It is a heuristic test that could stand improvement].  */
8912
8913 int
8914 ada_is_character_type (struct type *type)
8915 {
8916   const char *name;
8917
8918   /* If the type code says it's a character, then assume it really is,
8919      and don't check any further.  */
8920   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
8921     return 1;
8922   
8923   /* Otherwise, assume it's a character type iff it is a discrete type
8924      with a known character type name.  */
8925   name = ada_type_name (type);
8926   return (name != NULL
8927           && (TYPE_CODE (type) == TYPE_CODE_INT
8928               || TYPE_CODE (type) == TYPE_CODE_RANGE)
8929           && (strcmp (name, "character") == 0
8930               || strcmp (name, "wide_character") == 0
8931               || strcmp (name, "wide_wide_character") == 0
8932               || strcmp (name, "unsigned char") == 0));
8933 }
8934
8935 /* True if TYPE appears to be an Ada string type.  */
8936
8937 int
8938 ada_is_string_type (struct type *type)
8939 {
8940   type = ada_check_typedef (type);
8941   if (type != NULL
8942       && TYPE_CODE (type) != TYPE_CODE_PTR
8943       && (ada_is_simple_array_type (type)
8944           || ada_is_array_descriptor_type (type))
8945       && ada_array_arity (type) == 1)
8946     {
8947       struct type *elttype = ada_array_element_type (type, 1);
8948
8949       return ada_is_character_type (elttype);
8950     }
8951   else
8952     return 0;
8953 }
8954
8955 /* The compiler sometimes provides a parallel XVS type for a given
8956    PAD type.  Normally, it is safe to follow the PAD type directly,
8957    but older versions of the compiler have a bug that causes the offset
8958    of its "F" field to be wrong.  Following that field in that case
8959    would lead to incorrect results, but this can be worked around
8960    by ignoring the PAD type and using the associated XVS type instead.
8961
8962    Set to True if the debugger should trust the contents of PAD types.
8963    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
8964 static int trust_pad_over_xvs = 1;
8965
8966 /* True if TYPE is a struct type introduced by the compiler to force the
8967    alignment of a value.  Such types have a single field with a
8968    distinctive name.  */
8969
8970 int
8971 ada_is_aligner_type (struct type *type)
8972 {
8973   type = ada_check_typedef (type);
8974
8975   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
8976     return 0;
8977
8978   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
8979           && TYPE_NFIELDS (type) == 1
8980           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
8981 }
8982
8983 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8984    the parallel type.  */
8985
8986 struct type *
8987 ada_get_base_type (struct type *raw_type)
8988 {
8989   struct type *real_type_namer;
8990   struct type *raw_real_type;
8991
8992   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
8993     return raw_type;
8994
8995   if (ada_is_aligner_type (raw_type))
8996     /* The encoding specifies that we should always use the aligner type.
8997        So, even if this aligner type has an associated XVS type, we should
8998        simply ignore it.
8999
9000        According to the compiler gurus, an XVS type parallel to an aligner
9001        type may exist because of a stabs limitation.  In stabs, aligner
9002        types are empty because the field has a variable-sized type, and
9003        thus cannot actually be used as an aligner type.  As a result,
9004        we need the associated parallel XVS type to decode the type.
9005        Since the policy in the compiler is to not change the internal
9006        representation based on the debugging info format, we sometimes
9007        end up having a redundant XVS type parallel to the aligner type.  */
9008     return raw_type;
9009
9010   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9011   if (real_type_namer == NULL
9012       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9013       || TYPE_NFIELDS (real_type_namer) != 1)
9014     return raw_type;
9015
9016   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9017     {
9018       /* This is an older encoding form where the base type needs to be
9019          looked up by name.  We prefer the newer enconding because it is
9020          more efficient.  */
9021       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9022       if (raw_real_type == NULL)
9023         return raw_type;
9024       else
9025         return raw_real_type;
9026     }
9027
9028   /* The field in our XVS type is a reference to the base type.  */
9029   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9030 }
9031
9032 /* The type of value designated by TYPE, with all aligners removed.  */
9033
9034 struct type *
9035 ada_aligned_type (struct type *type)
9036 {
9037   if (ada_is_aligner_type (type))
9038     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9039   else
9040     return ada_get_base_type (type);
9041 }
9042
9043
9044 /* The address of the aligned value in an object at address VALADDR
9045    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9046
9047 const gdb_byte *
9048 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9049 {
9050   if (ada_is_aligner_type (type))
9051     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9052                                    valaddr +
9053                                    TYPE_FIELD_BITPOS (type,
9054                                                       0) / TARGET_CHAR_BIT);
9055   else
9056     return valaddr;
9057 }
9058
9059
9060
9061 /* The printed representation of an enumeration literal with encoded
9062    name NAME.  The value is good to the next call of ada_enum_name.  */
9063 const char *
9064 ada_enum_name (const char *name)
9065 {
9066   static char *result;
9067   static size_t result_len = 0;
9068   char *tmp;
9069
9070   /* First, unqualify the enumeration name:
9071      1. Search for the last '.' character.  If we find one, then skip
9072      all the preceding characters, the unqualified name starts
9073      right after that dot.
9074      2. Otherwise, we may be debugging on a target where the compiler
9075      translates dots into "__".  Search forward for double underscores,
9076      but stop searching when we hit an overloading suffix, which is
9077      of the form "__" followed by digits.  */
9078
9079   tmp = strrchr (name, '.');
9080   if (tmp != NULL)
9081     name = tmp + 1;
9082   else
9083     {
9084       while ((tmp = strstr (name, "__")) != NULL)
9085         {
9086           if (isdigit (tmp[2]))
9087             break;
9088           else
9089             name = tmp + 2;
9090         }
9091     }
9092
9093   if (name[0] == 'Q')
9094     {
9095       int v;
9096
9097       if (name[1] == 'U' || name[1] == 'W')
9098         {
9099           if (sscanf (name + 2, "%x", &v) != 1)
9100             return name;
9101         }
9102       else
9103         return name;
9104
9105       GROW_VECT (result, result_len, 16);
9106       if (isascii (v) && isprint (v))
9107         xsnprintf (result, result_len, "'%c'", v);
9108       else if (name[1] == 'U')
9109         xsnprintf (result, result_len, "[\"%02x\"]", v);
9110       else
9111         xsnprintf (result, result_len, "[\"%04x\"]", v);
9112
9113       return result;
9114     }
9115   else
9116     {
9117       tmp = strstr (name, "__");
9118       if (tmp == NULL)
9119         tmp = strstr (name, "$");
9120       if (tmp != NULL)
9121         {
9122           GROW_VECT (result, result_len, tmp - name + 1);
9123           strncpy (result, name, tmp - name);
9124           result[tmp - name] = '\0';
9125           return result;
9126         }
9127
9128       return name;
9129     }
9130 }
9131
9132 /* Evaluate the subexpression of EXP starting at *POS as for
9133    evaluate_type, updating *POS to point just past the evaluated
9134    expression.  */
9135
9136 static struct value *
9137 evaluate_subexp_type (struct expression *exp, int *pos)
9138 {
9139   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9140 }
9141
9142 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9143    value it wraps.  */
9144
9145 static struct value *
9146 unwrap_value (struct value *val)
9147 {
9148   struct type *type = ada_check_typedef (value_type (val));
9149
9150   if (ada_is_aligner_type (type))
9151     {
9152       struct value *v = ada_value_struct_elt (val, "F", 0);
9153       struct type *val_type = ada_check_typedef (value_type (v));
9154
9155       if (ada_type_name (val_type) == NULL)
9156         TYPE_NAME (val_type) = ada_type_name (type);
9157
9158       return unwrap_value (v);
9159     }
9160   else
9161     {
9162       struct type *raw_real_type =
9163         ada_check_typedef (ada_get_base_type (type));
9164
9165       /* If there is no parallel XVS or XVE type, then the value is
9166          already unwrapped.  Return it without further modification.  */
9167       if ((type == raw_real_type)
9168           && ada_find_parallel_type (type, "___XVE") == NULL)
9169         return val;
9170
9171       return
9172         coerce_unspec_val_to_type
9173         (val, ada_to_fixed_type (raw_real_type, 0,
9174                                  value_address (val),
9175                                  NULL, 1));
9176     }
9177 }
9178
9179 static struct value *
9180 cast_to_fixed (struct type *type, struct value *arg)
9181 {
9182   LONGEST val;
9183
9184   if (type == value_type (arg))
9185     return arg;
9186   else if (ada_is_fixed_point_type (value_type (arg)))
9187     val = ada_float_to_fixed (type,
9188                               ada_fixed_to_float (value_type (arg),
9189                                                   value_as_long (arg)));
9190   else
9191     {
9192       DOUBLEST argd = value_as_double (arg);
9193
9194       val = ada_float_to_fixed (type, argd);
9195     }
9196
9197   return value_from_longest (type, val);
9198 }
9199
9200 static struct value *
9201 cast_from_fixed (struct type *type, struct value *arg)
9202 {
9203   DOUBLEST val = ada_fixed_to_float (value_type (arg),
9204                                      value_as_long (arg));
9205
9206   return value_from_double (type, val);
9207 }
9208
9209 /* Given two array types T1 and T2, return nonzero iff both arrays
9210    contain the same number of elements.  */
9211
9212 static int
9213 ada_same_array_size_p (struct type *t1, struct type *t2)
9214 {
9215   LONGEST lo1, hi1, lo2, hi2;
9216
9217   /* Get the array bounds in order to verify that the size of
9218      the two arrays match.  */
9219   if (!get_array_bounds (t1, &lo1, &hi1)
9220       || !get_array_bounds (t2, &lo2, &hi2))
9221     error (_("unable to determine array bounds"));
9222
9223   /* To make things easier for size comparison, normalize a bit
9224      the case of empty arrays by making sure that the difference
9225      between upper bound and lower bound is always -1.  */
9226   if (lo1 > hi1)
9227     hi1 = lo1 - 1;
9228   if (lo2 > hi2)
9229     hi2 = lo2 - 1;
9230
9231   return (hi1 - lo1 == hi2 - lo2);
9232 }
9233
9234 /* Assuming that VAL is an array of integrals, and TYPE represents
9235    an array with the same number of elements, but with wider integral
9236    elements, return an array "casted" to TYPE.  In practice, this
9237    means that the returned array is built by casting each element
9238    of the original array into TYPE's (wider) element type.  */
9239
9240 static struct value *
9241 ada_promote_array_of_integrals (struct type *type, struct value *val)
9242 {
9243   struct type *elt_type = TYPE_TARGET_TYPE (type);
9244   LONGEST lo, hi;
9245   struct value *res;
9246   LONGEST i;
9247
9248   /* Verify that both val and type are arrays of scalars, and
9249      that the size of val's elements is smaller than the size
9250      of type's element.  */
9251   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9252   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9253   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9254   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9255   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9256               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9257
9258   if (!get_array_bounds (type, &lo, &hi))
9259     error (_("unable to determine array bounds"));
9260
9261   res = allocate_value (type);
9262
9263   /* Promote each array element.  */
9264   for (i = 0; i < hi - lo + 1; i++)
9265     {
9266       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9267
9268       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9269               value_contents_all (elt), TYPE_LENGTH (elt_type));
9270     }
9271
9272   return res;
9273 }
9274
9275 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9276    return the converted value.  */
9277
9278 static struct value *
9279 coerce_for_assign (struct type *type, struct value *val)
9280 {
9281   struct type *type2 = value_type (val);
9282
9283   if (type == type2)
9284     return val;
9285
9286   type2 = ada_check_typedef (type2);
9287   type = ada_check_typedef (type);
9288
9289   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9290       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9291     {
9292       val = ada_value_ind (val);
9293       type2 = value_type (val);
9294     }
9295
9296   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9297       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9298     {
9299       if (!ada_same_array_size_p (type, type2))
9300         error (_("cannot assign arrays of different length"));
9301
9302       if (is_integral_type (TYPE_TARGET_TYPE (type))
9303           && is_integral_type (TYPE_TARGET_TYPE (type2))
9304           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9305                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9306         {
9307           /* Allow implicit promotion of the array elements to
9308              a wider type.  */
9309           return ada_promote_array_of_integrals (type, val);
9310         }
9311
9312       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9313           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9314         error (_("Incompatible types in assignment"));
9315       deprecated_set_value_type (val, type);
9316     }
9317   return val;
9318 }
9319
9320 static struct value *
9321 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9322 {
9323   struct value *val;
9324   struct type *type1, *type2;
9325   LONGEST v, v1, v2;
9326
9327   arg1 = coerce_ref (arg1);
9328   arg2 = coerce_ref (arg2);
9329   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9330   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9331
9332   if (TYPE_CODE (type1) != TYPE_CODE_INT
9333       || TYPE_CODE (type2) != TYPE_CODE_INT)
9334     return value_binop (arg1, arg2, op);
9335
9336   switch (op)
9337     {
9338     case BINOP_MOD:
9339     case BINOP_DIV:
9340     case BINOP_REM:
9341       break;
9342     default:
9343       return value_binop (arg1, arg2, op);
9344     }
9345
9346   v2 = value_as_long (arg2);
9347   if (v2 == 0)
9348     error (_("second operand of %s must not be zero."), op_string (op));
9349
9350   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9351     return value_binop (arg1, arg2, op);
9352
9353   v1 = value_as_long (arg1);
9354   switch (op)
9355     {
9356     case BINOP_DIV:
9357       v = v1 / v2;
9358       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9359         v += v > 0 ? -1 : 1;
9360       break;
9361     case BINOP_REM:
9362       v = v1 % v2;
9363       if (v * v1 < 0)
9364         v -= v2;
9365       break;
9366     default:
9367       /* Should not reach this point.  */
9368       v = 0;
9369     }
9370
9371   val = allocate_value (type1);
9372   store_unsigned_integer (value_contents_raw (val),
9373                           TYPE_LENGTH (value_type (val)),
9374                           gdbarch_byte_order (get_type_arch (type1)), v);
9375   return val;
9376 }
9377
9378 static int
9379 ada_value_equal (struct value *arg1, struct value *arg2)
9380 {
9381   if (ada_is_direct_array_type (value_type (arg1))
9382       || ada_is_direct_array_type (value_type (arg2)))
9383     {
9384       /* Automatically dereference any array reference before
9385          we attempt to perform the comparison.  */
9386       arg1 = ada_coerce_ref (arg1);
9387       arg2 = ada_coerce_ref (arg2);
9388       
9389       arg1 = ada_coerce_to_simple_array (arg1);
9390       arg2 = ada_coerce_to_simple_array (arg2);
9391       if (TYPE_CODE (value_type (arg1)) != TYPE_CODE_ARRAY
9392           || TYPE_CODE (value_type (arg2)) != TYPE_CODE_ARRAY)
9393         error (_("Attempt to compare array with non-array"));
9394       /* FIXME: The following works only for types whose
9395          representations use all bits (no padding or undefined bits)
9396          and do not have user-defined equality.  */
9397       return
9398         TYPE_LENGTH (value_type (arg1)) == TYPE_LENGTH (value_type (arg2))
9399         && memcmp (value_contents (arg1), value_contents (arg2),
9400                    TYPE_LENGTH (value_type (arg1))) == 0;
9401     }
9402   return value_equal (arg1, arg2);
9403 }
9404
9405 /* Total number of component associations in the aggregate starting at
9406    index PC in EXP.  Assumes that index PC is the start of an
9407    OP_AGGREGATE.  */
9408
9409 static int
9410 num_component_specs (struct expression *exp, int pc)
9411 {
9412   int n, m, i;
9413
9414   m = exp->elts[pc + 1].longconst;
9415   pc += 3;
9416   n = 0;
9417   for (i = 0; i < m; i += 1)
9418     {
9419       switch (exp->elts[pc].opcode) 
9420         {
9421         default:
9422           n += 1;
9423           break;
9424         case OP_CHOICES:
9425           n += exp->elts[pc + 1].longconst;
9426           break;
9427         }
9428       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9429     }
9430   return n;
9431 }
9432
9433 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9434    component of LHS (a simple array or a record), updating *POS past
9435    the expression, assuming that LHS is contained in CONTAINER.  Does
9436    not modify the inferior's memory, nor does it modify LHS (unless
9437    LHS == CONTAINER).  */
9438
9439 static void
9440 assign_component (struct value *container, struct value *lhs, LONGEST index,
9441                   struct expression *exp, int *pos)
9442 {
9443   struct value *mark = value_mark ();
9444   struct value *elt;
9445
9446   if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY)
9447     {
9448       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9449       struct value *index_val = value_from_longest (index_type, index);
9450
9451       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9452     }
9453   else
9454     {
9455       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9456       elt = ada_to_fixed_value (elt);
9457     }
9458
9459   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9460     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9461   else
9462     value_assign_to_component (container, elt, 
9463                                ada_evaluate_subexp (NULL, exp, pos, 
9464                                                     EVAL_NORMAL));
9465
9466   value_free_to_mark (mark);
9467 }
9468
9469 /* Assuming that LHS represents an lvalue having a record or array
9470    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9471    of that aggregate's value to LHS, advancing *POS past the
9472    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9473    lvalue containing LHS (possibly LHS itself).  Does not modify
9474    the inferior's memory, nor does it modify the contents of 
9475    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9476
9477 static struct value *
9478 assign_aggregate (struct value *container, 
9479                   struct value *lhs, struct expression *exp, 
9480                   int *pos, enum noside noside)
9481 {
9482   struct type *lhs_type;
9483   int n = exp->elts[*pos+1].longconst;
9484   LONGEST low_index, high_index;
9485   int num_specs;
9486   LONGEST *indices;
9487   int max_indices, num_indices;
9488   int i;
9489
9490   *pos += 3;
9491   if (noside != EVAL_NORMAL)
9492     {
9493       for (i = 0; i < n; i += 1)
9494         ada_evaluate_subexp (NULL, exp, pos, noside);
9495       return container;
9496     }
9497
9498   container = ada_coerce_ref (container);
9499   if (ada_is_direct_array_type (value_type (container)))
9500     container = ada_coerce_to_simple_array (container);
9501   lhs = ada_coerce_ref (lhs);
9502   if (!deprecated_value_modifiable (lhs))
9503     error (_("Left operand of assignment is not a modifiable lvalue."));
9504
9505   lhs_type = value_type (lhs);
9506   if (ada_is_direct_array_type (lhs_type))
9507     {
9508       lhs = ada_coerce_to_simple_array (lhs);
9509       lhs_type = value_type (lhs);
9510       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9511       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9512     }
9513   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9514     {
9515       low_index = 0;
9516       high_index = num_visible_fields (lhs_type) - 1;
9517     }
9518   else
9519     error (_("Left-hand side must be array or record."));
9520
9521   num_specs = num_component_specs (exp, *pos - 3);
9522   max_indices = 4 * num_specs + 4;
9523   indices = alloca (max_indices * sizeof (indices[0]));
9524   indices[0] = indices[1] = low_index - 1;
9525   indices[2] = indices[3] = high_index + 1;
9526   num_indices = 4;
9527
9528   for (i = 0; i < n; i += 1)
9529     {
9530       switch (exp->elts[*pos].opcode)
9531         {
9532           case OP_CHOICES:
9533             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9534                                            &num_indices, max_indices,
9535                                            low_index, high_index);
9536             break;
9537           case OP_POSITIONAL:
9538             aggregate_assign_positional (container, lhs, exp, pos, indices,
9539                                          &num_indices, max_indices,
9540                                          low_index, high_index);
9541             break;
9542           case OP_OTHERS:
9543             if (i != n-1)
9544               error (_("Misplaced 'others' clause"));
9545             aggregate_assign_others (container, lhs, exp, pos, indices, 
9546                                      num_indices, low_index, high_index);
9547             break;
9548           default:
9549             error (_("Internal error: bad aggregate clause"));
9550         }
9551     }
9552
9553   return container;
9554 }
9555               
9556 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9557    construct at *POS, updating *POS past the construct, given that
9558    the positions are relative to lower bound LOW, where HIGH is the 
9559    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9560    updating *NUM_INDICES as needed.  CONTAINER is as for
9561    assign_aggregate.  */
9562 static void
9563 aggregate_assign_positional (struct value *container,
9564                              struct value *lhs, struct expression *exp,
9565                              int *pos, LONGEST *indices, int *num_indices,
9566                              int max_indices, LONGEST low, LONGEST high) 
9567 {
9568   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9569   
9570   if (ind - 1 == high)
9571     warning (_("Extra components in aggregate ignored."));
9572   if (ind <= high)
9573     {
9574       add_component_interval (ind, ind, indices, num_indices, max_indices);
9575       *pos += 3;
9576       assign_component (container, lhs, ind, exp, pos);
9577     }
9578   else
9579     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9580 }
9581
9582 /* Assign into the components of LHS indexed by the OP_CHOICES
9583    construct at *POS, updating *POS past the construct, given that
9584    the allowable indices are LOW..HIGH.  Record the indices assigned
9585    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9586    needed.  CONTAINER is as for assign_aggregate.  */
9587 static void
9588 aggregate_assign_from_choices (struct value *container,
9589                                struct value *lhs, struct expression *exp,
9590                                int *pos, LONGEST *indices, int *num_indices,
9591                                int max_indices, LONGEST low, LONGEST high) 
9592 {
9593   int j;
9594   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9595   int choice_pos, expr_pc;
9596   int is_array = ada_is_direct_array_type (value_type (lhs));
9597
9598   choice_pos = *pos += 3;
9599
9600   for (j = 0; j < n_choices; j += 1)
9601     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9602   expr_pc = *pos;
9603   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9604   
9605   for (j = 0; j < n_choices; j += 1)
9606     {
9607       LONGEST lower, upper;
9608       enum exp_opcode op = exp->elts[choice_pos].opcode;
9609
9610       if (op == OP_DISCRETE_RANGE)
9611         {
9612           choice_pos += 1;
9613           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9614                                                       EVAL_NORMAL));
9615           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9616                                                       EVAL_NORMAL));
9617         }
9618       else if (is_array)
9619         {
9620           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9621                                                       EVAL_NORMAL));
9622           upper = lower;
9623         }
9624       else
9625         {
9626           int ind;
9627           const char *name;
9628
9629           switch (op)
9630             {
9631             case OP_NAME:
9632               name = &exp->elts[choice_pos + 2].string;
9633               break;
9634             case OP_VAR_VALUE:
9635               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
9636               break;
9637             default:
9638               error (_("Invalid record component association."));
9639             }
9640           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9641           ind = 0;
9642           if (! find_struct_field (name, value_type (lhs), 0, 
9643                                    NULL, NULL, NULL, NULL, &ind))
9644             error (_("Unknown component name: %s."), name);
9645           lower = upper = ind;
9646         }
9647
9648       if (lower <= upper && (lower < low || upper > high))
9649         error (_("Index in component association out of bounds."));
9650
9651       add_component_interval (lower, upper, indices, num_indices,
9652                               max_indices);
9653       while (lower <= upper)
9654         {
9655           int pos1;
9656
9657           pos1 = expr_pc;
9658           assign_component (container, lhs, lower, exp, &pos1);
9659           lower += 1;
9660         }
9661     }
9662 }
9663
9664 /* Assign the value of the expression in the OP_OTHERS construct in
9665    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9666    have not been previously assigned.  The index intervals already assigned
9667    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9668    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9669 static void
9670 aggregate_assign_others (struct value *container,
9671                          struct value *lhs, struct expression *exp,
9672                          int *pos, LONGEST *indices, int num_indices,
9673                          LONGEST low, LONGEST high) 
9674 {
9675   int i;
9676   int expr_pc = *pos + 1;
9677   
9678   for (i = 0; i < num_indices - 2; i += 2)
9679     {
9680       LONGEST ind;
9681
9682       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9683         {
9684           int localpos;
9685
9686           localpos = expr_pc;
9687           assign_component (container, lhs, ind, exp, &localpos);
9688         }
9689     }
9690   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9691 }
9692
9693 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9694    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9695    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9696    MAX_SIZE.  The resulting intervals do not overlap.  */
9697 static void
9698 add_component_interval (LONGEST low, LONGEST high, 
9699                         LONGEST* indices, int *size, int max_size)
9700 {
9701   int i, j;
9702
9703   for (i = 0; i < *size; i += 2) {
9704     if (high >= indices[i] && low <= indices[i + 1])
9705       {
9706         int kh;
9707
9708         for (kh = i + 2; kh < *size; kh += 2)
9709           if (high < indices[kh])
9710             break;
9711         if (low < indices[i])
9712           indices[i] = low;
9713         indices[i + 1] = indices[kh - 1];
9714         if (high > indices[i + 1])
9715           indices[i + 1] = high;
9716         memcpy (indices + i + 2, indices + kh, *size - kh);
9717         *size -= kh - i - 2;
9718         return;
9719       }
9720     else if (high < indices[i])
9721       break;
9722   }
9723         
9724   if (*size == max_size)
9725     error (_("Internal error: miscounted aggregate components."));
9726   *size += 2;
9727   for (j = *size-1; j >= i+2; j -= 1)
9728     indices[j] = indices[j - 2];
9729   indices[i] = low;
9730   indices[i + 1] = high;
9731 }
9732
9733 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9734    is different.  */
9735
9736 static struct value *
9737 ada_value_cast (struct type *type, struct value *arg2, enum noside noside)
9738 {
9739   if (type == ada_check_typedef (value_type (arg2)))
9740     return arg2;
9741
9742   if (ada_is_fixed_point_type (type))
9743     return (cast_to_fixed (type, arg2));
9744
9745   if (ada_is_fixed_point_type (value_type (arg2)))
9746     return cast_from_fixed (type, arg2);
9747
9748   return value_cast (type, arg2);
9749 }
9750
9751 /*  Evaluating Ada expressions, and printing their result.
9752     ------------------------------------------------------
9753
9754     1. Introduction:
9755     ----------------
9756
9757     We usually evaluate an Ada expression in order to print its value.
9758     We also evaluate an expression in order to print its type, which
9759     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9760     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9761     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9762     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9763     similar.
9764
9765     Evaluating expressions is a little more complicated for Ada entities
9766     than it is for entities in languages such as C.  The main reason for
9767     this is that Ada provides types whose definition might be dynamic.
9768     One example of such types is variant records.  Or another example
9769     would be an array whose bounds can only be known at run time.
9770
9771     The following description is a general guide as to what should be
9772     done (and what should NOT be done) in order to evaluate an expression
9773     involving such types, and when.  This does not cover how the semantic
9774     information is encoded by GNAT as this is covered separatly.  For the
9775     document used as the reference for the GNAT encoding, see exp_dbug.ads
9776     in the GNAT sources.
9777
9778     Ideally, we should embed each part of this description next to its
9779     associated code.  Unfortunately, the amount of code is so vast right
9780     now that it's hard to see whether the code handling a particular
9781     situation might be duplicated or not.  One day, when the code is
9782     cleaned up, this guide might become redundant with the comments
9783     inserted in the code, and we might want to remove it.
9784
9785     2. ``Fixing'' an Entity, the Simple Case:
9786     -----------------------------------------
9787
9788     When evaluating Ada expressions, the tricky issue is that they may
9789     reference entities whose type contents and size are not statically
9790     known.  Consider for instance a variant record:
9791
9792        type Rec (Empty : Boolean := True) is record
9793           case Empty is
9794              when True => null;
9795              when False => Value : Integer;
9796           end case;
9797        end record;
9798        Yes : Rec := (Empty => False, Value => 1);
9799        No  : Rec := (empty => True);
9800
9801     The size and contents of that record depends on the value of the
9802     descriminant (Rec.Empty).  At this point, neither the debugging
9803     information nor the associated type structure in GDB are able to
9804     express such dynamic types.  So what the debugger does is to create
9805     "fixed" versions of the type that applies to the specific object.
9806     We also informally refer to this opperation as "fixing" an object,
9807     which means creating its associated fixed type.
9808
9809     Example: when printing the value of variable "Yes" above, its fixed
9810     type would look like this:
9811
9812        type Rec is record
9813           Empty : Boolean;
9814           Value : Integer;
9815        end record;
9816
9817     On the other hand, if we printed the value of "No", its fixed type
9818     would become:
9819
9820        type Rec is record
9821           Empty : Boolean;
9822        end record;
9823
9824     Things become a little more complicated when trying to fix an entity
9825     with a dynamic type that directly contains another dynamic type,
9826     such as an array of variant records, for instance.  There are
9827     two possible cases: Arrays, and records.
9828
9829     3. ``Fixing'' Arrays:
9830     ---------------------
9831
9832     The type structure in GDB describes an array in terms of its bounds,
9833     and the type of its elements.  By design, all elements in the array
9834     have the same type and we cannot represent an array of variant elements
9835     using the current type structure in GDB.  When fixing an array,
9836     we cannot fix the array element, as we would potentially need one
9837     fixed type per element of the array.  As a result, the best we can do
9838     when fixing an array is to produce an array whose bounds and size
9839     are correct (allowing us to read it from memory), but without having
9840     touched its element type.  Fixing each element will be done later,
9841     when (if) necessary.
9842
9843     Arrays are a little simpler to handle than records, because the same
9844     amount of memory is allocated for each element of the array, even if
9845     the amount of space actually used by each element differs from element
9846     to element.  Consider for instance the following array of type Rec:
9847
9848        type Rec_Array is array (1 .. 2) of Rec;
9849
9850     The actual amount of memory occupied by each element might be different
9851     from element to element, depending on the value of their discriminant.
9852     But the amount of space reserved for each element in the array remains
9853     fixed regardless.  So we simply need to compute that size using
9854     the debugging information available, from which we can then determine
9855     the array size (we multiply the number of elements of the array by
9856     the size of each element).
9857
9858     The simplest case is when we have an array of a constrained element
9859     type. For instance, consider the following type declarations:
9860
9861         type Bounded_String (Max_Size : Integer) is
9862            Length : Integer;
9863            Buffer : String (1 .. Max_Size);
9864         end record;
9865         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9866
9867     In this case, the compiler describes the array as an array of
9868     variable-size elements (identified by its XVS suffix) for which
9869     the size can be read in the parallel XVZ variable.
9870
9871     In the case of an array of an unconstrained element type, the compiler
9872     wraps the array element inside a private PAD type.  This type should not
9873     be shown to the user, and must be "unwrap"'ed before printing.  Note
9874     that we also use the adjective "aligner" in our code to designate
9875     these wrapper types.
9876
9877     In some cases, the size allocated for each element is statically
9878     known.  In that case, the PAD type already has the correct size,
9879     and the array element should remain unfixed.
9880
9881     But there are cases when this size is not statically known.
9882     For instance, assuming that "Five" is an integer variable:
9883
9884         type Dynamic is array (1 .. Five) of Integer;
9885         type Wrapper (Has_Length : Boolean := False) is record
9886            Data : Dynamic;
9887            case Has_Length is
9888               when True => Length : Integer;
9889               when False => null;
9890            end case;
9891         end record;
9892         type Wrapper_Array is array (1 .. 2) of Wrapper;
9893
9894         Hello : Wrapper_Array := (others => (Has_Length => True,
9895                                              Data => (others => 17),
9896                                              Length => 1));
9897
9898
9899     The debugging info would describe variable Hello as being an
9900     array of a PAD type.  The size of that PAD type is not statically
9901     known, but can be determined using a parallel XVZ variable.
9902     In that case, a copy of the PAD type with the correct size should
9903     be used for the fixed array.
9904
9905     3. ``Fixing'' record type objects:
9906     ----------------------------------
9907
9908     Things are slightly different from arrays in the case of dynamic
9909     record types.  In this case, in order to compute the associated
9910     fixed type, we need to determine the size and offset of each of
9911     its components.  This, in turn, requires us to compute the fixed
9912     type of each of these components.
9913
9914     Consider for instance the example:
9915
9916         type Bounded_String (Max_Size : Natural) is record
9917            Str : String (1 .. Max_Size);
9918            Length : Natural;
9919         end record;
9920         My_String : Bounded_String (Max_Size => 10);
9921
9922     In that case, the position of field "Length" depends on the size
9923     of field Str, which itself depends on the value of the Max_Size
9924     discriminant.  In order to fix the type of variable My_String,
9925     we need to fix the type of field Str.  Therefore, fixing a variant
9926     record requires us to fix each of its components.
9927
9928     However, if a component does not have a dynamic size, the component
9929     should not be fixed.  In particular, fields that use a PAD type
9930     should not fixed.  Here is an example where this might happen
9931     (assuming type Rec above):
9932
9933        type Container (Big : Boolean) is record
9934           First : Rec;
9935           After : Integer;
9936           case Big is
9937              when True => Another : Integer;
9938              when False => null;
9939           end case;
9940        end record;
9941        My_Container : Container := (Big => False,
9942                                     First => (Empty => True),
9943                                     After => 42);
9944
9945     In that example, the compiler creates a PAD type for component First,
9946     whose size is constant, and then positions the component After just
9947     right after it.  The offset of component After is therefore constant
9948     in this case.
9949
9950     The debugger computes the position of each field based on an algorithm
9951     that uses, among other things, the actual position and size of the field
9952     preceding it.  Let's now imagine that the user is trying to print
9953     the value of My_Container.  If the type fixing was recursive, we would
9954     end up computing the offset of field After based on the size of the
9955     fixed version of field First.  And since in our example First has
9956     only one actual field, the size of the fixed type is actually smaller
9957     than the amount of space allocated to that field, and thus we would
9958     compute the wrong offset of field After.
9959
9960     To make things more complicated, we need to watch out for dynamic
9961     components of variant records (identified by the ___XVL suffix in
9962     the component name).  Even if the target type is a PAD type, the size
9963     of that type might not be statically known.  So the PAD type needs
9964     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
9965     we might end up with the wrong size for our component.  This can be
9966     observed with the following type declarations:
9967
9968         type Octal is new Integer range 0 .. 7;
9969         type Octal_Array is array (Positive range <>) of Octal;
9970         pragma Pack (Octal_Array);
9971
9972         type Octal_Buffer (Size : Positive) is record
9973            Buffer : Octal_Array (1 .. Size);
9974            Length : Integer;
9975         end record;
9976
9977     In that case, Buffer is a PAD type whose size is unset and needs
9978     to be computed by fixing the unwrapped type.
9979
9980     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
9981     ----------------------------------------------------------
9982
9983     Lastly, when should the sub-elements of an entity that remained unfixed
9984     thus far, be actually fixed?
9985
9986     The answer is: Only when referencing that element.  For instance
9987     when selecting one component of a record, this specific component
9988     should be fixed at that point in time.  Or when printing the value
9989     of a record, each component should be fixed before its value gets
9990     printed.  Similarly for arrays, the element of the array should be
9991     fixed when printing each element of the array, or when extracting
9992     one element out of that array.  On the other hand, fixing should
9993     not be performed on the elements when taking a slice of an array!
9994
9995     Note that one of the side-effects of miscomputing the offset and
9996     size of each field is that we end up also miscomputing the size
9997     of the containing type.  This can have adverse results when computing
9998     the value of an entity.  GDB fetches the value of an entity based
9999     on the size of its type, and thus a wrong size causes GDB to fetch
10000     the wrong amount of memory.  In the case where the computed size is
10001     too small, GDB fetches too little data to print the value of our
10002     entiry.  Results in this case as unpredicatble, as we usually read
10003     past the buffer containing the data =:-o.  */
10004
10005 /* Implement the evaluate_exp routine in the exp_descriptor structure
10006    for the Ada language.  */
10007
10008 static struct value *
10009 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10010                      int *pos, enum noside noside)
10011 {
10012   enum exp_opcode op;
10013   int tem;
10014   int pc;
10015   int preeval_pos;
10016   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10017   struct type *type;
10018   int nargs, oplen;
10019   struct value **argvec;
10020
10021   pc = *pos;
10022   *pos += 1;
10023   op = exp->elts[pc].opcode;
10024
10025   switch (op)
10026     {
10027     default:
10028       *pos -= 1;
10029       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10030
10031       if (noside == EVAL_NORMAL)
10032         arg1 = unwrap_value (arg1);
10033
10034       /* If evaluating an OP_DOUBLE and an EXPECT_TYPE was provided,
10035          then we need to perform the conversion manually, because
10036          evaluate_subexp_standard doesn't do it.  This conversion is
10037          necessary in Ada because the different kinds of float/fixed
10038          types in Ada have different representations.
10039
10040          Similarly, we need to perform the conversion from OP_LONG
10041          ourselves.  */
10042       if ((op == OP_DOUBLE || op == OP_LONG) && expect_type != NULL)
10043         arg1 = ada_value_cast (expect_type, arg1, noside);
10044
10045       return arg1;
10046
10047     case OP_STRING:
10048       {
10049         struct value *result;
10050
10051         *pos -= 1;
10052         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10053         /* The result type will have code OP_STRING, bashed there from 
10054            OP_ARRAY.  Bash it back.  */
10055         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10056           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10057         return result;
10058       }
10059
10060     case UNOP_CAST:
10061       (*pos) += 2;
10062       type = exp->elts[pc + 1].type;
10063       arg1 = evaluate_subexp (type, exp, pos, noside);
10064       if (noside == EVAL_SKIP)
10065         goto nosideret;
10066       arg1 = ada_value_cast (type, arg1, noside);
10067       return arg1;
10068
10069     case UNOP_QUAL:
10070       (*pos) += 2;
10071       type = exp->elts[pc + 1].type;
10072       return ada_evaluate_subexp (type, exp, pos, noside);
10073
10074     case BINOP_ASSIGN:
10075       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10076       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10077         {
10078           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10079           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10080             return arg1;
10081           return ada_value_assign (arg1, arg1);
10082         }
10083       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10084          except if the lhs of our assignment is a convenience variable.
10085          In the case of assigning to a convenience variable, the lhs
10086          should be exactly the result of the evaluation of the rhs.  */
10087       type = value_type (arg1);
10088       if (VALUE_LVAL (arg1) == lval_internalvar)
10089          type = NULL;
10090       arg2 = evaluate_subexp (type, exp, pos, noside);
10091       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10092         return arg1;
10093       if (ada_is_fixed_point_type (value_type (arg1)))
10094         arg2 = cast_to_fixed (value_type (arg1), arg2);
10095       else if (ada_is_fixed_point_type (value_type (arg2)))
10096         error
10097           (_("Fixed-point values must be assigned to fixed-point variables"));
10098       else
10099         arg2 = coerce_for_assign (value_type (arg1), arg2);
10100       return ada_value_assign (arg1, arg2);
10101
10102     case BINOP_ADD:
10103       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10104       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10105       if (noside == EVAL_SKIP)
10106         goto nosideret;
10107       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10108         return (value_from_longest
10109                  (value_type (arg1),
10110                   value_as_long (arg1) + value_as_long (arg2)));
10111       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10112         return (value_from_longest
10113                  (value_type (arg2),
10114                   value_as_long (arg1) + value_as_long (arg2)));
10115       if ((ada_is_fixed_point_type (value_type (arg1))
10116            || ada_is_fixed_point_type (value_type (arg2)))
10117           && value_type (arg1) != value_type (arg2))
10118         error (_("Operands of fixed-point addition must have the same type"));
10119       /* Do the addition, and cast the result to the type of the first
10120          argument.  We cannot cast the result to a reference type, so if
10121          ARG1 is a reference type, find its underlying type.  */
10122       type = value_type (arg1);
10123       while (TYPE_CODE (type) == TYPE_CODE_REF)
10124         type = TYPE_TARGET_TYPE (type);
10125       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10126       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10127
10128     case BINOP_SUB:
10129       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10130       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10131       if (noside == EVAL_SKIP)
10132         goto nosideret;
10133       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10134         return (value_from_longest
10135                  (value_type (arg1),
10136                   value_as_long (arg1) - value_as_long (arg2)));
10137       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10138         return (value_from_longest
10139                  (value_type (arg2),
10140                   value_as_long (arg1) - value_as_long (arg2)));
10141       if ((ada_is_fixed_point_type (value_type (arg1))
10142            || ada_is_fixed_point_type (value_type (arg2)))
10143           && value_type (arg1) != value_type (arg2))
10144         error (_("Operands of fixed-point subtraction "
10145                  "must have the same type"));
10146       /* Do the substraction, and cast the result to the type of the first
10147          argument.  We cannot cast the result to a reference type, so if
10148          ARG1 is a reference type, find its underlying type.  */
10149       type = value_type (arg1);
10150       while (TYPE_CODE (type) == TYPE_CODE_REF)
10151         type = TYPE_TARGET_TYPE (type);
10152       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10153       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10154
10155     case BINOP_MUL:
10156     case BINOP_DIV:
10157     case BINOP_REM:
10158     case BINOP_MOD:
10159       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10160       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10161       if (noside == EVAL_SKIP)
10162         goto nosideret;
10163       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10164         {
10165           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10166           return value_zero (value_type (arg1), not_lval);
10167         }
10168       else
10169         {
10170           type = builtin_type (exp->gdbarch)->builtin_double;
10171           if (ada_is_fixed_point_type (value_type (arg1)))
10172             arg1 = cast_from_fixed (type, arg1);
10173           if (ada_is_fixed_point_type (value_type (arg2)))
10174             arg2 = cast_from_fixed (type, arg2);
10175           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10176           return ada_value_binop (arg1, arg2, op);
10177         }
10178
10179     case BINOP_EQUAL:
10180     case BINOP_NOTEQUAL:
10181       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10182       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10183       if (noside == EVAL_SKIP)
10184         goto nosideret;
10185       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10186         tem = 0;
10187       else
10188         {
10189           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10190           tem = ada_value_equal (arg1, arg2);
10191         }
10192       if (op == BINOP_NOTEQUAL)
10193         tem = !tem;
10194       type = language_bool_type (exp->language_defn, exp->gdbarch);
10195       return value_from_longest (type, (LONGEST) tem);
10196
10197     case UNOP_NEG:
10198       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10199       if (noside == EVAL_SKIP)
10200         goto nosideret;
10201       else if (ada_is_fixed_point_type (value_type (arg1)))
10202         return value_cast (value_type (arg1), value_neg (arg1));
10203       else
10204         {
10205           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10206           return value_neg (arg1);
10207         }
10208
10209     case BINOP_LOGICAL_AND:
10210     case BINOP_LOGICAL_OR:
10211     case UNOP_LOGICAL_NOT:
10212       {
10213         struct value *val;
10214
10215         *pos -= 1;
10216         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10217         type = language_bool_type (exp->language_defn, exp->gdbarch);
10218         return value_cast (type, val);
10219       }
10220
10221     case BINOP_BITWISE_AND:
10222     case BINOP_BITWISE_IOR:
10223     case BINOP_BITWISE_XOR:
10224       {
10225         struct value *val;
10226
10227         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10228         *pos = pc;
10229         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10230
10231         return value_cast (value_type (arg1), val);
10232       }
10233
10234     case OP_VAR_VALUE:
10235       *pos -= 1;
10236
10237       if (noside == EVAL_SKIP)
10238         {
10239           *pos += 4;
10240           goto nosideret;
10241         }
10242
10243       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10244         /* Only encountered when an unresolved symbol occurs in a
10245            context other than a function call, in which case, it is
10246            invalid.  */
10247         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10248                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10249
10250       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10251         {
10252           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10253           /* Check to see if this is a tagged type.  We also need to handle
10254              the case where the type is a reference to a tagged type, but
10255              we have to be careful to exclude pointers to tagged types.
10256              The latter should be shown as usual (as a pointer), whereas
10257              a reference should mostly be transparent to the user.  */
10258           if (ada_is_tagged_type (type, 0)
10259               || (TYPE_CODE (type) == TYPE_CODE_REF
10260                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10261             {
10262               /* Tagged types are a little special in the fact that the real
10263                  type is dynamic and can only be determined by inspecting the
10264                  object's tag.  This means that we need to get the object's
10265                  value first (EVAL_NORMAL) and then extract the actual object
10266                  type from its tag.
10267
10268                  Note that we cannot skip the final step where we extract
10269                  the object type from its tag, because the EVAL_NORMAL phase
10270                  results in dynamic components being resolved into fixed ones.
10271                  This can cause problems when trying to print the type
10272                  description of tagged types whose parent has a dynamic size:
10273                  We use the type name of the "_parent" component in order
10274                  to print the name of the ancestor type in the type description.
10275                  If that component had a dynamic size, the resolution into
10276                  a fixed type would result in the loss of that type name,
10277                  thus preventing us from printing the name of the ancestor
10278                  type in the type description.  */
10279               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10280
10281               if (TYPE_CODE (type) != TYPE_CODE_REF)
10282                 {
10283                   struct type *actual_type;
10284
10285                   actual_type = type_from_tag (ada_value_tag (arg1));
10286                   if (actual_type == NULL)
10287                     /* If, for some reason, we were unable to determine
10288                        the actual type from the tag, then use the static
10289                        approximation that we just computed as a fallback.
10290                        This can happen if the debugging information is
10291                        incomplete, for instance.  */
10292                     actual_type = type;
10293                   return value_zero (actual_type, not_lval);
10294                 }
10295               else
10296                 {
10297                   /* In the case of a ref, ada_coerce_ref takes care
10298                      of determining the actual type.  But the evaluation
10299                      should return a ref as it should be valid to ask
10300                      for its address; so rebuild a ref after coerce.  */
10301                   arg1 = ada_coerce_ref (arg1);
10302                   return value_ref (arg1);
10303                 }
10304             }
10305
10306           /* Records and unions for which GNAT encodings have been
10307              generated need to be statically fixed as well.
10308              Otherwise, non-static fixing produces a type where
10309              all dynamic properties are removed, which prevents "ptype"
10310              from being able to completely describe the type.
10311              For instance, a case statement in a variant record would be
10312              replaced by the relevant components based on the actual
10313              value of the discriminants.  */
10314           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10315                && dynamic_template_type (type) != NULL)
10316               || (TYPE_CODE (type) == TYPE_CODE_UNION
10317                   && ada_find_parallel_type (type, "___XVU") != NULL))
10318             {
10319               *pos += 4;
10320               return value_zero (to_static_fixed_type (type), not_lval);
10321             }
10322         }
10323
10324       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10325       return ada_to_fixed_value (arg1);
10326
10327     case OP_FUNCALL:
10328       (*pos) += 2;
10329
10330       /* Allocate arg vector, including space for the function to be
10331          called in argvec[0] and a terminating NULL.  */
10332       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10333       argvec =
10334         (struct value **) alloca (sizeof (struct value *) * (nargs + 2));
10335
10336       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10337           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10338         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10339                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10340       else
10341         {
10342           for (tem = 0; tem <= nargs; tem += 1)
10343             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10344           argvec[tem] = 0;
10345
10346           if (noside == EVAL_SKIP)
10347             goto nosideret;
10348         }
10349
10350       if (ada_is_constrained_packed_array_type
10351           (desc_base_type (value_type (argvec[0]))))
10352         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10353       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10354                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10355         /* This is a packed array that has already been fixed, and
10356            therefore already coerced to a simple array.  Nothing further
10357            to do.  */
10358         ;
10359       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF
10360                || (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10361                    && VALUE_LVAL (argvec[0]) == lval_memory))
10362         argvec[0] = value_addr (argvec[0]);
10363
10364       type = ada_check_typedef (value_type (argvec[0]));
10365
10366       /* Ada allows us to implicitly dereference arrays when subscripting
10367          them.  So, if this is an array typedef (encoding use for array
10368          access types encoded as fat pointers), strip it now.  */
10369       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10370         type = ada_typedef_target_type (type);
10371
10372       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10373         {
10374           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10375             {
10376             case TYPE_CODE_FUNC:
10377               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10378               break;
10379             case TYPE_CODE_ARRAY:
10380               break;
10381             case TYPE_CODE_STRUCT:
10382               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10383                 argvec[0] = ada_value_ind (argvec[0]);
10384               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10385               break;
10386             default:
10387               error (_("cannot subscript or call something of type `%s'"),
10388                      ada_type_name (value_type (argvec[0])));
10389               break;
10390             }
10391         }
10392
10393       switch (TYPE_CODE (type))
10394         {
10395         case TYPE_CODE_FUNC:
10396           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10397             {
10398               struct type *rtype = TYPE_TARGET_TYPE (type);
10399
10400               if (TYPE_GNU_IFUNC (type))
10401                 return allocate_value (TYPE_TARGET_TYPE (rtype));
10402               return allocate_value (rtype);
10403             }
10404           return call_function_by_hand (argvec[0], nargs, argvec + 1);
10405         case TYPE_CODE_INTERNAL_FUNCTION:
10406           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10407             /* We don't know anything about what the internal
10408                function might return, but we have to return
10409                something.  */
10410             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10411                                not_lval);
10412           else
10413             return call_internal_function (exp->gdbarch, exp->language_defn,
10414                                            argvec[0], nargs, argvec + 1);
10415
10416         case TYPE_CODE_STRUCT:
10417           {
10418             int arity;
10419
10420             arity = ada_array_arity (type);
10421             type = ada_array_element_type (type, nargs);
10422             if (type == NULL)
10423               error (_("cannot subscript or call a record"));
10424             if (arity != nargs)
10425               error (_("wrong number of subscripts; expecting %d"), arity);
10426             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10427               return value_zero (ada_aligned_type (type), lval_memory);
10428             return
10429               unwrap_value (ada_value_subscript
10430                             (argvec[0], nargs, argvec + 1));
10431           }
10432         case TYPE_CODE_ARRAY:
10433           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10434             {
10435               type = ada_array_element_type (type, nargs);
10436               if (type == NULL)
10437                 error (_("element type of array unknown"));
10438               else
10439                 return value_zero (ada_aligned_type (type), lval_memory);
10440             }
10441           return
10442             unwrap_value (ada_value_subscript
10443                           (ada_coerce_to_simple_array (argvec[0]),
10444                            nargs, argvec + 1));
10445         case TYPE_CODE_PTR:     /* Pointer to array */
10446           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10447             {
10448               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10449               type = ada_array_element_type (type, nargs);
10450               if (type == NULL)
10451                 error (_("element type of array unknown"));
10452               else
10453                 return value_zero (ada_aligned_type (type), lval_memory);
10454             }
10455           return
10456             unwrap_value (ada_value_ptr_subscript (argvec[0],
10457                                                    nargs, argvec + 1));
10458
10459         default:
10460           error (_("Attempt to index or call something other than an "
10461                    "array or function"));
10462         }
10463
10464     case TERNOP_SLICE:
10465       {
10466         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10467         struct value *low_bound_val =
10468           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10469         struct value *high_bound_val =
10470           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10471         LONGEST low_bound;
10472         LONGEST high_bound;
10473
10474         low_bound_val = coerce_ref (low_bound_val);
10475         high_bound_val = coerce_ref (high_bound_val);
10476         low_bound = pos_atr (low_bound_val);
10477         high_bound = pos_atr (high_bound_val);
10478
10479         if (noside == EVAL_SKIP)
10480           goto nosideret;
10481
10482         /* If this is a reference to an aligner type, then remove all
10483            the aligners.  */
10484         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10485             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10486           TYPE_TARGET_TYPE (value_type (array)) =
10487             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10488
10489         if (ada_is_constrained_packed_array_type (value_type (array)))
10490           error (_("cannot slice a packed array"));
10491
10492         /* If this is a reference to an array or an array lvalue,
10493            convert to a pointer.  */
10494         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10495             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
10496                 && VALUE_LVAL (array) == lval_memory))
10497           array = value_addr (array);
10498
10499         if (noside == EVAL_AVOID_SIDE_EFFECTS
10500             && ada_is_array_descriptor_type (ada_check_typedef
10501                                              (value_type (array))))
10502           return empty_array (ada_type_of_array (array, 0), low_bound);
10503
10504         array = ada_coerce_to_simple_array_ptr (array);
10505
10506         /* If we have more than one level of pointer indirection,
10507            dereference the value until we get only one level.  */
10508         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
10509                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
10510                      == TYPE_CODE_PTR))
10511           array = value_ind (array);
10512
10513         /* Make sure we really do have an array type before going further,
10514            to avoid a SEGV when trying to get the index type or the target
10515            type later down the road if the debug info generated by
10516            the compiler is incorrect or incomplete.  */
10517         if (!ada_is_simple_array_type (value_type (array)))
10518           error (_("cannot take slice of non-array"));
10519
10520         if (TYPE_CODE (ada_check_typedef (value_type (array)))
10521             == TYPE_CODE_PTR)
10522           {
10523             struct type *type0 = ada_check_typedef (value_type (array));
10524
10525             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10526               return empty_array (TYPE_TARGET_TYPE (type0), low_bound);
10527             else
10528               {
10529                 struct type *arr_type0 =
10530                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10531
10532                 return ada_value_slice_from_ptr (array, arr_type0,
10533                                                  longest_to_int (low_bound),
10534                                                  longest_to_int (high_bound));
10535               }
10536           }
10537         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10538           return array;
10539         else if (high_bound < low_bound)
10540           return empty_array (value_type (array), low_bound);
10541         else
10542           return ada_value_slice (array, longest_to_int (low_bound),
10543                                   longest_to_int (high_bound));
10544       }
10545
10546     case UNOP_IN_RANGE:
10547       (*pos) += 2;
10548       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10549       type = check_typedef (exp->elts[pc + 1].type);
10550
10551       if (noside == EVAL_SKIP)
10552         goto nosideret;
10553
10554       switch (TYPE_CODE (type))
10555         {
10556         default:
10557           lim_warning (_("Membership test incompletely implemented; "
10558                          "always returns true"));
10559           type = language_bool_type (exp->language_defn, exp->gdbarch);
10560           return value_from_longest (type, (LONGEST) 1);
10561
10562         case TYPE_CODE_RANGE:
10563           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10564           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10565           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10566           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10567           type = language_bool_type (exp->language_defn, exp->gdbarch);
10568           return
10569             value_from_longest (type,
10570                                 (value_less (arg1, arg3)
10571                                  || value_equal (arg1, arg3))
10572                                 && (value_less (arg2, arg1)
10573                                     || value_equal (arg2, arg1)));
10574         }
10575
10576     case BINOP_IN_BOUNDS:
10577       (*pos) += 2;
10578       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10579       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10580
10581       if (noside == EVAL_SKIP)
10582         goto nosideret;
10583
10584       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10585         {
10586           type = language_bool_type (exp->language_defn, exp->gdbarch);
10587           return value_zero (type, not_lval);
10588         }
10589
10590       tem = longest_to_int (exp->elts[pc + 1].longconst);
10591
10592       type = ada_index_type (value_type (arg2), tem, "range");
10593       if (!type)
10594         type = value_type (arg1);
10595
10596       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10597       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10598
10599       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10600       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10601       type = language_bool_type (exp->language_defn, exp->gdbarch);
10602       return
10603         value_from_longest (type,
10604                             (value_less (arg1, arg3)
10605                              || value_equal (arg1, arg3))
10606                             && (value_less (arg2, arg1)
10607                                 || value_equal (arg2, arg1)));
10608
10609     case TERNOP_IN_RANGE:
10610       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10611       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10612       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10613
10614       if (noside == EVAL_SKIP)
10615         goto nosideret;
10616
10617       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10618       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10619       type = language_bool_type (exp->language_defn, exp->gdbarch);
10620       return
10621         value_from_longest (type,
10622                             (value_less (arg1, arg3)
10623                              || value_equal (arg1, arg3))
10624                             && (value_less (arg2, arg1)
10625                                 || value_equal (arg2, arg1)));
10626
10627     case OP_ATR_FIRST:
10628     case OP_ATR_LAST:
10629     case OP_ATR_LENGTH:
10630       {
10631         struct type *type_arg;
10632
10633         if (exp->elts[*pos].opcode == OP_TYPE)
10634           {
10635             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10636             arg1 = NULL;
10637             type_arg = check_typedef (exp->elts[pc + 2].type);
10638           }
10639         else
10640           {
10641             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10642             type_arg = NULL;
10643           }
10644
10645         if (exp->elts[*pos].opcode != OP_LONG)
10646           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10647         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10648         *pos += 4;
10649
10650         if (noside == EVAL_SKIP)
10651           goto nosideret;
10652
10653         if (type_arg == NULL)
10654           {
10655             arg1 = ada_coerce_ref (arg1);
10656
10657             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10658               arg1 = ada_coerce_to_simple_array (arg1);
10659
10660             if (op == OP_ATR_LENGTH)
10661               type = builtin_type (exp->gdbarch)->builtin_int;
10662             else
10663               {
10664                 type = ada_index_type (value_type (arg1), tem,
10665                                        ada_attribute_name (op));
10666                 if (type == NULL)
10667                   type = builtin_type (exp->gdbarch)->builtin_int;
10668               }
10669
10670             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10671               return allocate_value (type);
10672
10673             switch (op)
10674               {
10675               default:          /* Should never happen.  */
10676                 error (_("unexpected attribute encountered"));
10677               case OP_ATR_FIRST:
10678                 return value_from_longest
10679                         (type, ada_array_bound (arg1, tem, 0));
10680               case OP_ATR_LAST:
10681                 return value_from_longest
10682                         (type, ada_array_bound (arg1, tem, 1));
10683               case OP_ATR_LENGTH:
10684                 return value_from_longest
10685                         (type, ada_array_length (arg1, tem));
10686               }
10687           }
10688         else if (discrete_type_p (type_arg))
10689           {
10690             struct type *range_type;
10691             const char *name = ada_type_name (type_arg);
10692
10693             range_type = NULL;
10694             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
10695               range_type = to_fixed_range_type (type_arg, NULL);
10696             if (range_type == NULL)
10697               range_type = type_arg;
10698             switch (op)
10699               {
10700               default:
10701                 error (_("unexpected attribute encountered"));
10702               case OP_ATR_FIRST:
10703                 return value_from_longest 
10704                   (range_type, ada_discrete_type_low_bound (range_type));
10705               case OP_ATR_LAST:
10706                 return value_from_longest
10707                   (range_type, ada_discrete_type_high_bound (range_type));
10708               case OP_ATR_LENGTH:
10709                 error (_("the 'length attribute applies only to array types"));
10710               }
10711           }
10712         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
10713           error (_("unimplemented type attribute"));
10714         else
10715           {
10716             LONGEST low, high;
10717
10718             if (ada_is_constrained_packed_array_type (type_arg))
10719               type_arg = decode_constrained_packed_array_type (type_arg);
10720
10721             if (op == OP_ATR_LENGTH)
10722               type = builtin_type (exp->gdbarch)->builtin_int;
10723             else
10724               {
10725                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10726                 if (type == NULL)
10727                   type = builtin_type (exp->gdbarch)->builtin_int;
10728               }
10729
10730             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10731               return allocate_value (type);
10732
10733             switch (op)
10734               {
10735               default:
10736                 error (_("unexpected attribute encountered"));
10737               case OP_ATR_FIRST:
10738                 low = ada_array_bound_from_type (type_arg, tem, 0);
10739                 return value_from_longest (type, low);
10740               case OP_ATR_LAST:
10741                 high = ada_array_bound_from_type (type_arg, tem, 1);
10742                 return value_from_longest (type, high);
10743               case OP_ATR_LENGTH:
10744                 low = ada_array_bound_from_type (type_arg, tem, 0);
10745                 high = ada_array_bound_from_type (type_arg, tem, 1);
10746                 return value_from_longest (type, high - low + 1);
10747               }
10748           }
10749       }
10750
10751     case OP_ATR_TAG:
10752       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10753       if (noside == EVAL_SKIP)
10754         goto nosideret;
10755
10756       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10757         return value_zero (ada_tag_type (arg1), not_lval);
10758
10759       return ada_value_tag (arg1);
10760
10761     case OP_ATR_MIN:
10762     case OP_ATR_MAX:
10763       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10764       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10765       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10766       if (noside == EVAL_SKIP)
10767         goto nosideret;
10768       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10769         return value_zero (value_type (arg1), not_lval);
10770       else
10771         {
10772           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10773           return value_binop (arg1, arg2,
10774                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
10775         }
10776
10777     case OP_ATR_MODULUS:
10778       {
10779         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
10780
10781         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10782         if (noside == EVAL_SKIP)
10783           goto nosideret;
10784
10785         if (!ada_is_modular_type (type_arg))
10786           error (_("'modulus must be applied to modular type"));
10787
10788         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
10789                                    ada_modulus (type_arg));
10790       }
10791
10792
10793     case OP_ATR_POS:
10794       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10795       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10796       if (noside == EVAL_SKIP)
10797         goto nosideret;
10798       type = builtin_type (exp->gdbarch)->builtin_int;
10799       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10800         return value_zero (type, not_lval);
10801       else
10802         return value_pos_atr (type, arg1);
10803
10804     case OP_ATR_SIZE:
10805       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10806       type = value_type (arg1);
10807
10808       /* If the argument is a reference, then dereference its type, since
10809          the user is really asking for the size of the actual object,
10810          not the size of the pointer.  */
10811       if (TYPE_CODE (type) == TYPE_CODE_REF)
10812         type = TYPE_TARGET_TYPE (type);
10813
10814       if (noside == EVAL_SKIP)
10815         goto nosideret;
10816       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10817         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
10818       else
10819         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
10820                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
10821
10822     case OP_ATR_VAL:
10823       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10824       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10825       type = exp->elts[pc + 2].type;
10826       if (noside == EVAL_SKIP)
10827         goto nosideret;
10828       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10829         return value_zero (type, not_lval);
10830       else
10831         return value_val_atr (type, arg1);
10832
10833     case BINOP_EXP:
10834       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10835       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10836       if (noside == EVAL_SKIP)
10837         goto nosideret;
10838       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10839         return value_zero (value_type (arg1), not_lval);
10840       else
10841         {
10842           /* For integer exponentiation operations,
10843              only promote the first argument.  */
10844           if (is_integral_type (value_type (arg2)))
10845             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10846           else
10847             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10848
10849           return value_binop (arg1, arg2, op);
10850         }
10851
10852     case UNOP_PLUS:
10853       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10854       if (noside == EVAL_SKIP)
10855         goto nosideret;
10856       else
10857         return arg1;
10858
10859     case UNOP_ABS:
10860       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10861       if (noside == EVAL_SKIP)
10862         goto nosideret;
10863       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10864       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
10865         return value_neg (arg1);
10866       else
10867         return arg1;
10868
10869     case UNOP_IND:
10870       preeval_pos = *pos;
10871       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10872       if (noside == EVAL_SKIP)
10873         goto nosideret;
10874       type = ada_check_typedef (value_type (arg1));
10875       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10876         {
10877           if (ada_is_array_descriptor_type (type))
10878             /* GDB allows dereferencing GNAT array descriptors.  */
10879             {
10880               struct type *arrType = ada_type_of_array (arg1, 0);
10881
10882               if (arrType == NULL)
10883                 error (_("Attempt to dereference null array pointer."));
10884               return value_at_lazy (arrType, 0);
10885             }
10886           else if (TYPE_CODE (type) == TYPE_CODE_PTR
10887                    || TYPE_CODE (type) == TYPE_CODE_REF
10888                    /* In C you can dereference an array to get the 1st elt.  */
10889                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
10890             {
10891             /* As mentioned in the OP_VAR_VALUE case, tagged types can
10892                only be determined by inspecting the object's tag.
10893                This means that we need to evaluate completely the
10894                expression in order to get its type.  */
10895
10896               if ((TYPE_CODE (type) == TYPE_CODE_REF
10897                    || TYPE_CODE (type) == TYPE_CODE_PTR)
10898                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
10899                 {
10900                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
10901                                           EVAL_NORMAL);
10902                   type = value_type (ada_value_ind (arg1));
10903                 }
10904               else
10905                 {
10906                   type = to_static_fixed_type
10907                     (ada_aligned_type
10908                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
10909                 }
10910               check_size (type);
10911               return value_zero (type, lval_memory);
10912             }
10913           else if (TYPE_CODE (type) == TYPE_CODE_INT)
10914             {
10915               /* GDB allows dereferencing an int.  */
10916               if (expect_type == NULL)
10917                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10918                                    lval_memory);
10919               else
10920                 {
10921                   expect_type = 
10922                     to_static_fixed_type (ada_aligned_type (expect_type));
10923                   return value_zero (expect_type, lval_memory);
10924                 }
10925             }
10926           else
10927             error (_("Attempt to take contents of a non-pointer value."));
10928         }
10929       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
10930       type = ada_check_typedef (value_type (arg1));
10931
10932       if (TYPE_CODE (type) == TYPE_CODE_INT)
10933           /* GDB allows dereferencing an int.  If we were given
10934              the expect_type, then use that as the target type.
10935              Otherwise, assume that the target type is an int.  */
10936         {
10937           if (expect_type != NULL)
10938             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
10939                                               arg1));
10940           else
10941             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
10942                                   (CORE_ADDR) value_as_address (arg1));
10943         }
10944
10945       if (ada_is_array_descriptor_type (type))
10946         /* GDB allows dereferencing GNAT array descriptors.  */
10947         return ada_coerce_to_simple_array (arg1);
10948       else
10949         return ada_value_ind (arg1);
10950
10951     case STRUCTOP_STRUCT:
10952       tem = longest_to_int (exp->elts[pc + 1].longconst);
10953       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
10954       preeval_pos = *pos;
10955       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10956       if (noside == EVAL_SKIP)
10957         goto nosideret;
10958       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10959         {
10960           struct type *type1 = value_type (arg1);
10961
10962           if (ada_is_tagged_type (type1, 1))
10963             {
10964               type = ada_lookup_struct_elt_type (type1,
10965                                                  &exp->elts[pc + 2].string,
10966                                                  1, 1, NULL);
10967
10968               /* If the field is not found, check if it exists in the
10969                  extension of this object's type. This means that we
10970                  need to evaluate completely the expression.  */
10971
10972               if (type == NULL)
10973                 {
10974                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
10975                                           EVAL_NORMAL);
10976                   arg1 = ada_value_struct_elt (arg1,
10977                                                &exp->elts[pc + 2].string,
10978                                                0);
10979                   arg1 = unwrap_value (arg1);
10980                   type = value_type (ada_to_fixed_value (arg1));
10981                 }
10982             }
10983           else
10984             type =
10985               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
10986                                           0, NULL);
10987
10988           return value_zero (ada_aligned_type (type), lval_memory);
10989         }
10990       else
10991         arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
10992         arg1 = unwrap_value (arg1);
10993         return ada_to_fixed_value (arg1);
10994
10995     case OP_TYPE:
10996       /* The value is not supposed to be used.  This is here to make it
10997          easier to accommodate expressions that contain types.  */
10998       (*pos) += 2;
10999       if (noside == EVAL_SKIP)
11000         goto nosideret;
11001       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11002         return allocate_value (exp->elts[pc + 1].type);
11003       else
11004         error (_("Attempt to use a type name as an expression"));
11005
11006     case OP_AGGREGATE:
11007     case OP_CHOICES:
11008     case OP_OTHERS:
11009     case OP_DISCRETE_RANGE:
11010     case OP_POSITIONAL:
11011     case OP_NAME:
11012       if (noside == EVAL_NORMAL)
11013         switch (op) 
11014           {
11015           case OP_NAME:
11016             error (_("Undefined name, ambiguous name, or renaming used in "
11017                      "component association: %s."), &exp->elts[pc+2].string);
11018           case OP_AGGREGATE:
11019             error (_("Aggregates only allowed on the right of an assignment"));
11020           default:
11021             internal_error (__FILE__, __LINE__,
11022                             _("aggregate apparently mangled"));
11023           }
11024
11025       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11026       *pos += oplen - 1;
11027       for (tem = 0; tem < nargs; tem += 1) 
11028         ada_evaluate_subexp (NULL, exp, pos, noside);
11029       goto nosideret;
11030     }
11031
11032 nosideret:
11033   return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
11034 }
11035 \f
11036
11037                                 /* Fixed point */
11038
11039 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11040    type name that encodes the 'small and 'delta information.
11041    Otherwise, return NULL.  */
11042
11043 static const char *
11044 fixed_type_info (struct type *type)
11045 {
11046   const char *name = ada_type_name (type);
11047   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11048
11049   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11050     {
11051       const char *tail = strstr (name, "___XF_");
11052
11053       if (tail == NULL)
11054         return NULL;
11055       else
11056         return tail + 5;
11057     }
11058   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11059     return fixed_type_info (TYPE_TARGET_TYPE (type));
11060   else
11061     return NULL;
11062 }
11063
11064 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11065
11066 int
11067 ada_is_fixed_point_type (struct type *type)
11068 {
11069   return fixed_type_info (type) != NULL;
11070 }
11071
11072 /* Return non-zero iff TYPE represents a System.Address type.  */
11073
11074 int
11075 ada_is_system_address_type (struct type *type)
11076 {
11077   return (TYPE_NAME (type)
11078           && strcmp (TYPE_NAME (type), "system__address") == 0);
11079 }
11080
11081 /* Assuming that TYPE is the representation of an Ada fixed-point
11082    type, return its delta, or -1 if the type is malformed and the
11083    delta cannot be determined.  */
11084
11085 DOUBLEST
11086 ada_delta (struct type *type)
11087 {
11088   const char *encoding = fixed_type_info (type);
11089   DOUBLEST num, den;
11090
11091   /* Strictly speaking, num and den are encoded as integer.  However,
11092      they may not fit into a long, and they will have to be converted
11093      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11094   if (sscanf (encoding, "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11095               &num, &den) < 2)
11096     return -1.0;
11097   else
11098     return num / den;
11099 }
11100
11101 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11102    factor ('SMALL value) associated with the type.  */
11103
11104 static DOUBLEST
11105 scaling_factor (struct type *type)
11106 {
11107   const char *encoding = fixed_type_info (type);
11108   DOUBLEST num0, den0, num1, den1;
11109   int n;
11110
11111   /* Strictly speaking, num's and den's are encoded as integer.  However,
11112      they may not fit into a long, and they will have to be converted
11113      to DOUBLEST anyway.  So scan them as DOUBLEST.  */
11114   n = sscanf (encoding,
11115               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT
11116               "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT,
11117               &num0, &den0, &num1, &den1);
11118
11119   if (n < 2)
11120     return 1.0;
11121   else if (n == 4)
11122     return num1 / den1;
11123   else
11124     return num0 / den0;
11125 }
11126
11127
11128 /* Assuming that X is the representation of a value of fixed-point
11129    type TYPE, return its floating-point equivalent.  */
11130
11131 DOUBLEST
11132 ada_fixed_to_float (struct type *type, LONGEST x)
11133 {
11134   return (DOUBLEST) x *scaling_factor (type);
11135 }
11136
11137 /* The representation of a fixed-point value of type TYPE
11138    corresponding to the value X.  */
11139
11140 LONGEST
11141 ada_float_to_fixed (struct type *type, DOUBLEST x)
11142 {
11143   return (LONGEST) (x / scaling_factor (type) + 0.5);
11144 }
11145
11146 \f
11147
11148                                 /* Range types */
11149
11150 /* Scan STR beginning at position K for a discriminant name, and
11151    return the value of that discriminant field of DVAL in *PX.  If
11152    PNEW_K is not null, put the position of the character beyond the
11153    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11154    not alter *PX and *PNEW_K if unsuccessful.  */
11155
11156 static int
11157 scan_discrim_bound (char *str, int k, struct value *dval, LONGEST * px,
11158                     int *pnew_k)
11159 {
11160   static char *bound_buffer = NULL;
11161   static size_t bound_buffer_len = 0;
11162   char *bound;
11163   char *pend;
11164   struct value *bound_val;
11165
11166   if (dval == NULL || str == NULL || str[k] == '\0')
11167     return 0;
11168
11169   pend = strstr (str + k, "__");
11170   if (pend == NULL)
11171     {
11172       bound = str + k;
11173       k += strlen (bound);
11174     }
11175   else
11176     {
11177       GROW_VECT (bound_buffer, bound_buffer_len, pend - (str + k) + 1);
11178       bound = bound_buffer;
11179       strncpy (bound_buffer, str + k, pend - (str + k));
11180       bound[pend - (str + k)] = '\0';
11181       k = pend - str;
11182     }
11183
11184   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11185   if (bound_val == NULL)
11186     return 0;
11187
11188   *px = value_as_long (bound_val);
11189   if (pnew_k != NULL)
11190     *pnew_k = k;
11191   return 1;
11192 }
11193
11194 /* Value of variable named NAME in the current environment.  If
11195    no such variable found, then if ERR_MSG is null, returns 0, and
11196    otherwise causes an error with message ERR_MSG.  */
11197
11198 static struct value *
11199 get_var_value (char *name, char *err_msg)
11200 {
11201   struct ada_symbol_info *syms;
11202   int nsyms;
11203
11204   nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN,
11205                                   &syms);
11206
11207   if (nsyms != 1)
11208     {
11209       if (err_msg == NULL)
11210         return 0;
11211       else
11212         error (("%s"), err_msg);
11213     }
11214
11215   return value_of_variable (syms[0].sym, syms[0].block);
11216 }
11217
11218 /* Value of integer variable named NAME in the current environment.  If
11219    no such variable found, returns 0, and sets *FLAG to 0.  If
11220    successful, sets *FLAG to 1.  */
11221
11222 LONGEST
11223 get_int_var_value (char *name, int *flag)
11224 {
11225   struct value *var_val = get_var_value (name, 0);
11226
11227   if (var_val == 0)
11228     {
11229       if (flag != NULL)
11230         *flag = 0;
11231       return 0;
11232     }
11233   else
11234     {
11235       if (flag != NULL)
11236         *flag = 1;
11237       return value_as_long (var_val);
11238     }
11239 }
11240
11241
11242 /* Return a range type whose base type is that of the range type named
11243    NAME in the current environment, and whose bounds are calculated
11244    from NAME according to the GNAT range encoding conventions.
11245    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11246    corresponding range type from debug information; fall back to using it
11247    if symbol lookup fails.  If a new type must be created, allocate it
11248    like ORIG_TYPE was.  The bounds information, in general, is encoded
11249    in NAME, the base type given in the named range type.  */
11250
11251 static struct type *
11252 to_fixed_range_type (struct type *raw_type, struct value *dval)
11253 {
11254   const char *name;
11255   struct type *base_type;
11256   char *subtype_info;
11257
11258   gdb_assert (raw_type != NULL);
11259   gdb_assert (TYPE_NAME (raw_type) != NULL);
11260
11261   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11262     base_type = TYPE_TARGET_TYPE (raw_type);
11263   else
11264     base_type = raw_type;
11265
11266   name = TYPE_NAME (raw_type);
11267   subtype_info = strstr (name, "___XD");
11268   if (subtype_info == NULL)
11269     {
11270       LONGEST L = ada_discrete_type_low_bound (raw_type);
11271       LONGEST U = ada_discrete_type_high_bound (raw_type);
11272
11273       if (L < INT_MIN || U > INT_MAX)
11274         return raw_type;
11275       else
11276         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11277                                          L, U);
11278     }
11279   else
11280     {
11281       static char *name_buf = NULL;
11282       static size_t name_len = 0;
11283       int prefix_len = subtype_info - name;
11284       LONGEST L, U;
11285       struct type *type;
11286       char *bounds_str;
11287       int n;
11288
11289       GROW_VECT (name_buf, name_len, prefix_len + 5);
11290       strncpy (name_buf, name, prefix_len);
11291       name_buf[prefix_len] = '\0';
11292
11293       subtype_info += 5;
11294       bounds_str = strchr (subtype_info, '_');
11295       n = 1;
11296
11297       if (*subtype_info == 'L')
11298         {
11299           if (!ada_scan_number (bounds_str, n, &L, &n)
11300               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11301             return raw_type;
11302           if (bounds_str[n] == '_')
11303             n += 2;
11304           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11305             n += 1;
11306           subtype_info += 1;
11307         }
11308       else
11309         {
11310           int ok;
11311
11312           strcpy (name_buf + prefix_len, "___L");
11313           L = get_int_var_value (name_buf, &ok);
11314           if (!ok)
11315             {
11316               lim_warning (_("Unknown lower bound, using 1."));
11317               L = 1;
11318             }
11319         }
11320
11321       if (*subtype_info == 'U')
11322         {
11323           if (!ada_scan_number (bounds_str, n, &U, &n)
11324               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11325             return raw_type;
11326         }
11327       else
11328         {
11329           int ok;
11330
11331           strcpy (name_buf + prefix_len, "___U");
11332           U = get_int_var_value (name_buf, &ok);
11333           if (!ok)
11334             {
11335               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11336               U = L;
11337             }
11338         }
11339
11340       type = create_static_range_type (alloc_type_copy (raw_type),
11341                                        base_type, L, U);
11342       TYPE_NAME (type) = name;
11343       return type;
11344     }
11345 }
11346
11347 /* True iff NAME is the name of a range type.  */
11348
11349 int
11350 ada_is_range_type_name (const char *name)
11351 {
11352   return (name != NULL && strstr (name, "___XD"));
11353 }
11354 \f
11355
11356                                 /* Modular types */
11357
11358 /* True iff TYPE is an Ada modular type.  */
11359
11360 int
11361 ada_is_modular_type (struct type *type)
11362 {
11363   struct type *subranged_type = get_base_type (type);
11364
11365   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11366           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11367           && TYPE_UNSIGNED (subranged_type));
11368 }
11369
11370 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11371
11372 ULONGEST
11373 ada_modulus (struct type *type)
11374 {
11375   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11376 }
11377 \f
11378
11379 /* Ada exception catchpoint support:
11380    ---------------------------------
11381
11382    We support 3 kinds of exception catchpoints:
11383      . catchpoints on Ada exceptions
11384      . catchpoints on unhandled Ada exceptions
11385      . catchpoints on failed assertions
11386
11387    Exceptions raised during failed assertions, or unhandled exceptions
11388    could perfectly be caught with the general catchpoint on Ada exceptions.
11389    However, we can easily differentiate these two special cases, and having
11390    the option to distinguish these two cases from the rest can be useful
11391    to zero-in on certain situations.
11392
11393    Exception catchpoints are a specialized form of breakpoint,
11394    since they rely on inserting breakpoints inside known routines
11395    of the GNAT runtime.  The implementation therefore uses a standard
11396    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11397    of breakpoint_ops.
11398
11399    Support in the runtime for exception catchpoints have been changed
11400    a few times already, and these changes affect the implementation
11401    of these catchpoints.  In order to be able to support several
11402    variants of the runtime, we use a sniffer that will determine
11403    the runtime variant used by the program being debugged.  */
11404
11405 /* Ada's standard exceptions.
11406
11407    The Ada 83 standard also defined Numeric_Error.  But there so many
11408    situations where it was unclear from the Ada 83 Reference Manual
11409    (RM) whether Constraint_Error or Numeric_Error should be raised,
11410    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11411    Interpretation saying that anytime the RM says that Numeric_Error
11412    should be raised, the implementation may raise Constraint_Error.
11413    Ada 95 went one step further and pretty much removed Numeric_Error
11414    from the list of standard exceptions (it made it a renaming of
11415    Constraint_Error, to help preserve compatibility when compiling
11416    an Ada83 compiler). As such, we do not include Numeric_Error from
11417    this list of standard exceptions.  */
11418
11419 static char *standard_exc[] = {
11420   "constraint_error",
11421   "program_error",
11422   "storage_error",
11423   "tasking_error"
11424 };
11425
11426 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11427
11428 /* A structure that describes how to support exception catchpoints
11429    for a given executable.  */
11430
11431 struct exception_support_info
11432 {
11433    /* The name of the symbol to break on in order to insert
11434       a catchpoint on exceptions.  */
11435    const char *catch_exception_sym;
11436
11437    /* The name of the symbol to break on in order to insert
11438       a catchpoint on unhandled exceptions.  */
11439    const char *catch_exception_unhandled_sym;
11440
11441    /* The name of the symbol to break on in order to insert
11442       a catchpoint on failed assertions.  */
11443    const char *catch_assert_sym;
11444
11445    /* Assuming that the inferior just triggered an unhandled exception
11446       catchpoint, this function is responsible for returning the address
11447       in inferior memory where the name of that exception is stored.
11448       Return zero if the address could not be computed.  */
11449    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11450 };
11451
11452 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11453 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11454
11455 /* The following exception support info structure describes how to
11456    implement exception catchpoints with the latest version of the
11457    Ada runtime (as of 2007-03-06).  */
11458
11459 static const struct exception_support_info default_exception_support_info =
11460 {
11461   "__gnat_debug_raise_exception", /* catch_exception_sym */
11462   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11463   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11464   ada_unhandled_exception_name_addr
11465 };
11466
11467 /* The following exception support info structure describes how to
11468    implement exception catchpoints with a slightly older version
11469    of the Ada runtime.  */
11470
11471 static const struct exception_support_info exception_support_info_fallback =
11472 {
11473   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11474   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11475   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11476   ada_unhandled_exception_name_addr_from_raise
11477 };
11478
11479 /* Return nonzero if we can detect the exception support routines
11480    described in EINFO.
11481
11482    This function errors out if an abnormal situation is detected
11483    (for instance, if we find the exception support routines, but
11484    that support is found to be incomplete).  */
11485
11486 static int
11487 ada_has_this_exception_support (const struct exception_support_info *einfo)
11488 {
11489   struct symbol *sym;
11490
11491   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11492      that should be compiled with debugging information.  As a result, we
11493      expect to find that symbol in the symtabs.  */
11494
11495   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11496   if (sym == NULL)
11497     {
11498       /* Perhaps we did not find our symbol because the Ada runtime was
11499          compiled without debugging info, or simply stripped of it.
11500          It happens on some GNU/Linux distributions for instance, where
11501          users have to install a separate debug package in order to get
11502          the runtime's debugging info.  In that situation, let the user
11503          know why we cannot insert an Ada exception catchpoint.
11504
11505          Note: Just for the purpose of inserting our Ada exception
11506          catchpoint, we could rely purely on the associated minimal symbol.
11507          But we would be operating in degraded mode anyway, since we are
11508          still lacking the debugging info needed later on to extract
11509          the name of the exception being raised (this name is printed in
11510          the catchpoint message, and is also used when trying to catch
11511          a specific exception).  We do not handle this case for now.  */
11512       struct bound_minimal_symbol msym
11513         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11514
11515       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11516         error (_("Your Ada runtime appears to be missing some debugging "
11517                  "information.\nCannot insert Ada exception catchpoint "
11518                  "in this configuration."));
11519
11520       return 0;
11521     }
11522
11523   /* Make sure that the symbol we found corresponds to a function.  */
11524
11525   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11526     error (_("Symbol \"%s\" is not a function (class = %d)"),
11527            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
11528
11529   return 1;
11530 }
11531
11532 /* Inspect the Ada runtime and determine which exception info structure
11533    should be used to provide support for exception catchpoints.
11534
11535    This function will always set the per-inferior exception_info,
11536    or raise an error.  */
11537
11538 static void
11539 ada_exception_support_info_sniffer (void)
11540 {
11541   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11542
11543   /* If the exception info is already known, then no need to recompute it.  */
11544   if (data->exception_info != NULL)
11545     return;
11546
11547   /* Check the latest (default) exception support info.  */
11548   if (ada_has_this_exception_support (&default_exception_support_info))
11549     {
11550       data->exception_info = &default_exception_support_info;
11551       return;
11552     }
11553
11554   /* Try our fallback exception suport info.  */
11555   if (ada_has_this_exception_support (&exception_support_info_fallback))
11556     {
11557       data->exception_info = &exception_support_info_fallback;
11558       return;
11559     }
11560
11561   /* Sometimes, it is normal for us to not be able to find the routine
11562      we are looking for.  This happens when the program is linked with
11563      the shared version of the GNAT runtime, and the program has not been
11564      started yet.  Inform the user of these two possible causes if
11565      applicable.  */
11566
11567   if (ada_update_initial_language (language_unknown) != language_ada)
11568     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11569
11570   /* If the symbol does not exist, then check that the program is
11571      already started, to make sure that shared libraries have been
11572      loaded.  If it is not started, this may mean that the symbol is
11573      in a shared library.  */
11574
11575   if (ptid_get_pid (inferior_ptid) == 0)
11576     error (_("Unable to insert catchpoint. Try to start the program first."));
11577
11578   /* At this point, we know that we are debugging an Ada program and
11579      that the inferior has been started, but we still are not able to
11580      find the run-time symbols.  That can mean that we are in
11581      configurable run time mode, or that a-except as been optimized
11582      out by the linker...  In any case, at this point it is not worth
11583      supporting this feature.  */
11584
11585   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11586 }
11587
11588 /* True iff FRAME is very likely to be that of a function that is
11589    part of the runtime system.  This is all very heuristic, but is
11590    intended to be used as advice as to what frames are uninteresting
11591    to most users.  */
11592
11593 static int
11594 is_known_support_routine (struct frame_info *frame)
11595 {
11596   struct symtab_and_line sal;
11597   char *func_name;
11598   enum language func_lang;
11599   int i;
11600   const char *fullname;
11601
11602   /* If this code does not have any debugging information (no symtab),
11603      This cannot be any user code.  */
11604
11605   find_frame_sal (frame, &sal);
11606   if (sal.symtab == NULL)
11607     return 1;
11608
11609   /* If there is a symtab, but the associated source file cannot be
11610      located, then assume this is not user code:  Selecting a frame
11611      for which we cannot display the code would not be very helpful
11612      for the user.  This should also take care of case such as VxWorks
11613      where the kernel has some debugging info provided for a few units.  */
11614
11615   fullname = symtab_to_fullname (sal.symtab);
11616   if (access (fullname, R_OK) != 0)
11617     return 1;
11618
11619   /* Check the unit filename againt the Ada runtime file naming.
11620      We also check the name of the objfile against the name of some
11621      known system libraries that sometimes come with debugging info
11622      too.  */
11623
11624   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11625     {
11626       re_comp (known_runtime_file_name_patterns[i]);
11627       if (re_exec (lbasename (sal.symtab->filename)))
11628         return 1;
11629       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11630           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11631         return 1;
11632     }
11633
11634   /* Check whether the function is a GNAT-generated entity.  */
11635
11636   find_frame_funname (frame, &func_name, &func_lang, NULL);
11637   if (func_name == NULL)
11638     return 1;
11639
11640   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11641     {
11642       re_comp (known_auxiliary_function_name_patterns[i]);
11643       if (re_exec (func_name))
11644         {
11645           xfree (func_name);
11646           return 1;
11647         }
11648     }
11649
11650   xfree (func_name);
11651   return 0;
11652 }
11653
11654 /* Find the first frame that contains debugging information and that is not
11655    part of the Ada run-time, starting from FI and moving upward.  */
11656
11657 void
11658 ada_find_printable_frame (struct frame_info *fi)
11659 {
11660   for (; fi != NULL; fi = get_prev_frame (fi))
11661     {
11662       if (!is_known_support_routine (fi))
11663         {
11664           select_frame (fi);
11665           break;
11666         }
11667     }
11668
11669 }
11670
11671 /* Assuming that the inferior just triggered an unhandled exception
11672    catchpoint, return the address in inferior memory where the name
11673    of the exception is stored.
11674    
11675    Return zero if the address could not be computed.  */
11676
11677 static CORE_ADDR
11678 ada_unhandled_exception_name_addr (void)
11679 {
11680   return parse_and_eval_address ("e.full_name");
11681 }
11682
11683 /* Same as ada_unhandled_exception_name_addr, except that this function
11684    should be used when the inferior uses an older version of the runtime,
11685    where the exception name needs to be extracted from a specific frame
11686    several frames up in the callstack.  */
11687
11688 static CORE_ADDR
11689 ada_unhandled_exception_name_addr_from_raise (void)
11690 {
11691   int frame_level;
11692   struct frame_info *fi;
11693   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11694   struct cleanup *old_chain;
11695
11696   /* To determine the name of this exception, we need to select
11697      the frame corresponding to RAISE_SYM_NAME.  This frame is
11698      at least 3 levels up, so we simply skip the first 3 frames
11699      without checking the name of their associated function.  */
11700   fi = get_current_frame ();
11701   for (frame_level = 0; frame_level < 3; frame_level += 1)
11702     if (fi != NULL)
11703       fi = get_prev_frame (fi); 
11704
11705   old_chain = make_cleanup (null_cleanup, NULL);
11706   while (fi != NULL)
11707     {
11708       char *func_name;
11709       enum language func_lang;
11710
11711       find_frame_funname (fi, &func_name, &func_lang, NULL);
11712       if (func_name != NULL)
11713         {
11714           make_cleanup (xfree, func_name);
11715
11716           if (strcmp (func_name,
11717                       data->exception_info->catch_exception_sym) == 0)
11718             break; /* We found the frame we were looking for...  */
11719           fi = get_prev_frame (fi);
11720         }
11721     }
11722   do_cleanups (old_chain);
11723
11724   if (fi == NULL)
11725     return 0;
11726
11727   select_frame (fi);
11728   return parse_and_eval_address ("id.full_name");
11729 }
11730
11731 /* Assuming the inferior just triggered an Ada exception catchpoint
11732    (of any type), return the address in inferior memory where the name
11733    of the exception is stored, if applicable.
11734
11735    Return zero if the address could not be computed, or if not relevant.  */
11736
11737 static CORE_ADDR
11738 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11739                            struct breakpoint *b)
11740 {
11741   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11742
11743   switch (ex)
11744     {
11745       case ada_catch_exception:
11746         return (parse_and_eval_address ("e.full_name"));
11747         break;
11748
11749       case ada_catch_exception_unhandled:
11750         return data->exception_info->unhandled_exception_name_addr ();
11751         break;
11752       
11753       case ada_catch_assert:
11754         return 0;  /* Exception name is not relevant in this case.  */
11755         break;
11756
11757       default:
11758         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11759         break;
11760     }
11761
11762   return 0; /* Should never be reached.  */
11763 }
11764
11765 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
11766    any error that ada_exception_name_addr_1 might cause to be thrown.
11767    When an error is intercepted, a warning with the error message is printed,
11768    and zero is returned.  */
11769
11770 static CORE_ADDR
11771 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
11772                          struct breakpoint *b)
11773 {
11774   volatile struct gdb_exception e;
11775   CORE_ADDR result = 0;
11776
11777   TRY_CATCH (e, RETURN_MASK_ERROR)
11778     {
11779       result = ada_exception_name_addr_1 (ex, b);
11780     }
11781
11782   if (e.reason < 0)
11783     {
11784       warning (_("failed to get exception name: %s"), e.message);
11785       return 0;
11786     }
11787
11788   return result;
11789 }
11790
11791 static char *ada_exception_catchpoint_cond_string (const char *excep_string);
11792
11793 /* Ada catchpoints.
11794
11795    In the case of catchpoints on Ada exceptions, the catchpoint will
11796    stop the target on every exception the program throws.  When a user
11797    specifies the name of a specific exception, we translate this
11798    request into a condition expression (in text form), and then parse
11799    it into an expression stored in each of the catchpoint's locations.
11800    We then use this condition to check whether the exception that was
11801    raised is the one the user is interested in.  If not, then the
11802    target is resumed again.  We store the name of the requested
11803    exception, in order to be able to re-set the condition expression
11804    when symbols change.  */
11805
11806 /* An instance of this type is used to represent an Ada catchpoint
11807    breakpoint location.  It includes a "struct bp_location" as a kind
11808    of base class; users downcast to "struct bp_location *" when
11809    needed.  */
11810
11811 struct ada_catchpoint_location
11812 {
11813   /* The base class.  */
11814   struct bp_location base;
11815
11816   /* The condition that checks whether the exception that was raised
11817      is the specific exception the user specified on catchpoint
11818      creation.  */
11819   struct expression *excep_cond_expr;
11820 };
11821
11822 /* Implement the DTOR method in the bp_location_ops structure for all
11823    Ada exception catchpoint kinds.  */
11824
11825 static void
11826 ada_catchpoint_location_dtor (struct bp_location *bl)
11827 {
11828   struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl;
11829
11830   xfree (al->excep_cond_expr);
11831 }
11832
11833 /* The vtable to be used in Ada catchpoint locations.  */
11834
11835 static const struct bp_location_ops ada_catchpoint_location_ops =
11836 {
11837   ada_catchpoint_location_dtor
11838 };
11839
11840 /* An instance of this type is used to represent an Ada catchpoint.
11841    It includes a "struct breakpoint" as a kind of base class; users
11842    downcast to "struct breakpoint *" when needed.  */
11843
11844 struct ada_catchpoint
11845 {
11846   /* The base class.  */
11847   struct breakpoint base;
11848
11849   /* The name of the specific exception the user specified.  */
11850   char *excep_string;
11851 };
11852
11853 /* Parse the exception condition string in the context of each of the
11854    catchpoint's locations, and store them for later evaluation.  */
11855
11856 static void
11857 create_excep_cond_exprs (struct ada_catchpoint *c)
11858 {
11859   struct cleanup *old_chain;
11860   struct bp_location *bl;
11861   char *cond_string;
11862
11863   /* Nothing to do if there's no specific exception to catch.  */
11864   if (c->excep_string == NULL)
11865     return;
11866
11867   /* Same if there are no locations... */
11868   if (c->base.loc == NULL)
11869     return;
11870
11871   /* Compute the condition expression in text form, from the specific
11872      expection we want to catch.  */
11873   cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
11874   old_chain = make_cleanup (xfree, cond_string);
11875
11876   /* Iterate over all the catchpoint's locations, and parse an
11877      expression for each.  */
11878   for (bl = c->base.loc; bl != NULL; bl = bl->next)
11879     {
11880       struct ada_catchpoint_location *ada_loc
11881         = (struct ada_catchpoint_location *) bl;
11882       struct expression *exp = NULL;
11883
11884       if (!bl->shlib_disabled)
11885         {
11886           volatile struct gdb_exception e;
11887           const char *s;
11888
11889           s = cond_string;
11890           TRY_CATCH (e, RETURN_MASK_ERROR)
11891             {
11892               exp = parse_exp_1 (&s, bl->address,
11893                                  block_for_pc (bl->address), 0);
11894             }
11895           if (e.reason < 0)
11896             {
11897               warning (_("failed to reevaluate internal exception condition "
11898                          "for catchpoint %d: %s"),
11899                        c->base.number, e.message);
11900               /* There is a bug in GCC on sparc-solaris when building with
11901                  optimization which causes EXP to change unexpectedly
11902                  (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56982).
11903                  The problem should be fixed starting with GCC 4.9.
11904                  In the meantime, work around it by forcing EXP back
11905                  to NULL.  */
11906               exp = NULL;
11907             }
11908         }
11909
11910       ada_loc->excep_cond_expr = exp;
11911     }
11912
11913   do_cleanups (old_chain);
11914 }
11915
11916 /* Implement the DTOR method in the breakpoint_ops structure for all
11917    exception catchpoint kinds.  */
11918
11919 static void
11920 dtor_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
11921 {
11922   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11923
11924   xfree (c->excep_string);
11925
11926   bkpt_breakpoint_ops.dtor (b);
11927 }
11928
11929 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
11930    structure for all exception catchpoint kinds.  */
11931
11932 static struct bp_location *
11933 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
11934                              struct breakpoint *self)
11935 {
11936   struct ada_catchpoint_location *loc;
11937
11938   loc = XNEW (struct ada_catchpoint_location);
11939   init_bp_location (&loc->base, &ada_catchpoint_location_ops, self);
11940   loc->excep_cond_expr = NULL;
11941   return &loc->base;
11942 }
11943
11944 /* Implement the RE_SET method in the breakpoint_ops structure for all
11945    exception catchpoint kinds.  */
11946
11947 static void
11948 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
11949 {
11950   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11951
11952   /* Call the base class's method.  This updates the catchpoint's
11953      locations.  */
11954   bkpt_breakpoint_ops.re_set (b);
11955
11956   /* Reparse the exception conditional expressions.  One for each
11957      location.  */
11958   create_excep_cond_exprs (c);
11959 }
11960
11961 /* Returns true if we should stop for this breakpoint hit.  If the
11962    user specified a specific exception, we only want to cause a stop
11963    if the program thrown that exception.  */
11964
11965 static int
11966 should_stop_exception (const struct bp_location *bl)
11967 {
11968   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
11969   const struct ada_catchpoint_location *ada_loc
11970     = (const struct ada_catchpoint_location *) bl;
11971   volatile struct gdb_exception ex;
11972   int stop;
11973
11974   /* With no specific exception, should always stop.  */
11975   if (c->excep_string == NULL)
11976     return 1;
11977
11978   if (ada_loc->excep_cond_expr == NULL)
11979     {
11980       /* We will have a NULL expression if back when we were creating
11981          the expressions, this location's had failed to parse.  */
11982       return 1;
11983     }
11984
11985   stop = 1;
11986   TRY_CATCH (ex, RETURN_MASK_ALL)
11987     {
11988       struct value *mark;
11989
11990       mark = value_mark ();
11991       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr));
11992       value_free_to_mark (mark);
11993     }
11994   if (ex.reason < 0)
11995     exception_fprintf (gdb_stderr, ex,
11996                        _("Error in testing exception condition:\n"));
11997   return stop;
11998 }
11999
12000 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12001    for all exception catchpoint kinds.  */
12002
12003 static void
12004 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12005 {
12006   bs->stop = should_stop_exception (bs->bp_location_at);
12007 }
12008
12009 /* Implement the PRINT_IT method in the breakpoint_ops structure
12010    for all exception catchpoint kinds.  */
12011
12012 static enum print_stop_action
12013 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12014 {
12015   struct ui_out *uiout = current_uiout;
12016   struct breakpoint *b = bs->breakpoint_at;
12017
12018   annotate_catchpoint (b->number);
12019
12020   if (ui_out_is_mi_like_p (uiout))
12021     {
12022       ui_out_field_string (uiout, "reason",
12023                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12024       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12025     }
12026
12027   ui_out_text (uiout,
12028                b->disposition == disp_del ? "\nTemporary catchpoint "
12029                                           : "\nCatchpoint ");
12030   ui_out_field_int (uiout, "bkptno", b->number);
12031   ui_out_text (uiout, ", ");
12032
12033   switch (ex)
12034     {
12035       case ada_catch_exception:
12036       case ada_catch_exception_unhandled:
12037         {
12038           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12039           char exception_name[256];
12040
12041           if (addr != 0)
12042             {
12043               read_memory (addr, (gdb_byte *) exception_name,
12044                            sizeof (exception_name) - 1);
12045               exception_name [sizeof (exception_name) - 1] = '\0';
12046             }
12047           else
12048             {
12049               /* For some reason, we were unable to read the exception
12050                  name.  This could happen if the Runtime was compiled
12051                  without debugging info, for instance.  In that case,
12052                  just replace the exception name by the generic string
12053                  "exception" - it will read as "an exception" in the
12054                  notification we are about to print.  */
12055               memcpy (exception_name, "exception", sizeof ("exception"));
12056             }
12057           /* In the case of unhandled exception breakpoints, we print
12058              the exception name as "unhandled EXCEPTION_NAME", to make
12059              it clearer to the user which kind of catchpoint just got
12060              hit.  We used ui_out_text to make sure that this extra
12061              info does not pollute the exception name in the MI case.  */
12062           if (ex == ada_catch_exception_unhandled)
12063             ui_out_text (uiout, "unhandled ");
12064           ui_out_field_string (uiout, "exception-name", exception_name);
12065         }
12066         break;
12067       case ada_catch_assert:
12068         /* In this case, the name of the exception is not really
12069            important.  Just print "failed assertion" to make it clearer
12070            that his program just hit an assertion-failure catchpoint.
12071            We used ui_out_text because this info does not belong in
12072            the MI output.  */
12073         ui_out_text (uiout, "failed assertion");
12074         break;
12075     }
12076   ui_out_text (uiout, " at ");
12077   ada_find_printable_frame (get_current_frame ());
12078
12079   return PRINT_SRC_AND_LOC;
12080 }
12081
12082 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12083    for all exception catchpoint kinds.  */
12084
12085 static void
12086 print_one_exception (enum ada_exception_catchpoint_kind ex,
12087                      struct breakpoint *b, struct bp_location **last_loc)
12088
12089   struct ui_out *uiout = current_uiout;
12090   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12091   struct value_print_options opts;
12092
12093   get_user_print_options (&opts);
12094   if (opts.addressprint)
12095     {
12096       annotate_field (4);
12097       ui_out_field_core_addr (uiout, "addr", b->loc->gdbarch, b->loc->address);
12098     }
12099
12100   annotate_field (5);
12101   *last_loc = b->loc;
12102   switch (ex)
12103     {
12104       case ada_catch_exception:
12105         if (c->excep_string != NULL)
12106           {
12107             char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12108
12109             ui_out_field_string (uiout, "what", msg);
12110             xfree (msg);
12111           }
12112         else
12113           ui_out_field_string (uiout, "what", "all Ada exceptions");
12114         
12115         break;
12116
12117       case ada_catch_exception_unhandled:
12118         ui_out_field_string (uiout, "what", "unhandled Ada exceptions");
12119         break;
12120       
12121       case ada_catch_assert:
12122         ui_out_field_string (uiout, "what", "failed Ada assertions");
12123         break;
12124
12125       default:
12126         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12127         break;
12128     }
12129 }
12130
12131 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12132    for all exception catchpoint kinds.  */
12133
12134 static void
12135 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12136                          struct breakpoint *b)
12137 {
12138   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12139   struct ui_out *uiout = current_uiout;
12140
12141   ui_out_text (uiout, b->disposition == disp_del ? _("Temporary catchpoint ")
12142                                                  : _("Catchpoint "));
12143   ui_out_field_int (uiout, "bkptno", b->number);
12144   ui_out_text (uiout, ": ");
12145
12146   switch (ex)
12147     {
12148       case ada_catch_exception:
12149         if (c->excep_string != NULL)
12150           {
12151             char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string);
12152             struct cleanup *old_chain = make_cleanup (xfree, info);
12153
12154             ui_out_text (uiout, info);
12155             do_cleanups (old_chain);
12156           }
12157         else
12158           ui_out_text (uiout, _("all Ada exceptions"));
12159         break;
12160
12161       case ada_catch_exception_unhandled:
12162         ui_out_text (uiout, _("unhandled Ada exceptions"));
12163         break;
12164       
12165       case ada_catch_assert:
12166         ui_out_text (uiout, _("failed Ada assertions"));
12167         break;
12168
12169       default:
12170         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12171         break;
12172     }
12173 }
12174
12175 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12176    for all exception catchpoint kinds.  */
12177
12178 static void
12179 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12180                           struct breakpoint *b, struct ui_file *fp)
12181 {
12182   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12183
12184   switch (ex)
12185     {
12186       case ada_catch_exception:
12187         fprintf_filtered (fp, "catch exception");
12188         if (c->excep_string != NULL)
12189           fprintf_filtered (fp, " %s", c->excep_string);
12190         break;
12191
12192       case ada_catch_exception_unhandled:
12193         fprintf_filtered (fp, "catch exception unhandled");
12194         break;
12195
12196       case ada_catch_assert:
12197         fprintf_filtered (fp, "catch assert");
12198         break;
12199
12200       default:
12201         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12202     }
12203   print_recreate_thread (b, fp);
12204 }
12205
12206 /* Virtual table for "catch exception" breakpoints.  */
12207
12208 static void
12209 dtor_catch_exception (struct breakpoint *b)
12210 {
12211   dtor_exception (ada_catch_exception, b);
12212 }
12213
12214 static struct bp_location *
12215 allocate_location_catch_exception (struct breakpoint *self)
12216 {
12217   return allocate_location_exception (ada_catch_exception, self);
12218 }
12219
12220 static void
12221 re_set_catch_exception (struct breakpoint *b)
12222 {
12223   re_set_exception (ada_catch_exception, b);
12224 }
12225
12226 static void
12227 check_status_catch_exception (bpstat bs)
12228 {
12229   check_status_exception (ada_catch_exception, bs);
12230 }
12231
12232 static enum print_stop_action
12233 print_it_catch_exception (bpstat bs)
12234 {
12235   return print_it_exception (ada_catch_exception, bs);
12236 }
12237
12238 static void
12239 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12240 {
12241   print_one_exception (ada_catch_exception, b, last_loc);
12242 }
12243
12244 static void
12245 print_mention_catch_exception (struct breakpoint *b)
12246 {
12247   print_mention_exception (ada_catch_exception, b);
12248 }
12249
12250 static void
12251 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12252 {
12253   print_recreate_exception (ada_catch_exception, b, fp);
12254 }
12255
12256 static struct breakpoint_ops catch_exception_breakpoint_ops;
12257
12258 /* Virtual table for "catch exception unhandled" breakpoints.  */
12259
12260 static void
12261 dtor_catch_exception_unhandled (struct breakpoint *b)
12262 {
12263   dtor_exception (ada_catch_exception_unhandled, b);
12264 }
12265
12266 static struct bp_location *
12267 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12268 {
12269   return allocate_location_exception (ada_catch_exception_unhandled, self);
12270 }
12271
12272 static void
12273 re_set_catch_exception_unhandled (struct breakpoint *b)
12274 {
12275   re_set_exception (ada_catch_exception_unhandled, b);
12276 }
12277
12278 static void
12279 check_status_catch_exception_unhandled (bpstat bs)
12280 {
12281   check_status_exception (ada_catch_exception_unhandled, bs);
12282 }
12283
12284 static enum print_stop_action
12285 print_it_catch_exception_unhandled (bpstat bs)
12286 {
12287   return print_it_exception (ada_catch_exception_unhandled, bs);
12288 }
12289
12290 static void
12291 print_one_catch_exception_unhandled (struct breakpoint *b,
12292                                      struct bp_location **last_loc)
12293 {
12294   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12295 }
12296
12297 static void
12298 print_mention_catch_exception_unhandled (struct breakpoint *b)
12299 {
12300   print_mention_exception (ada_catch_exception_unhandled, b);
12301 }
12302
12303 static void
12304 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12305                                           struct ui_file *fp)
12306 {
12307   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12308 }
12309
12310 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12311
12312 /* Virtual table for "catch assert" breakpoints.  */
12313
12314 static void
12315 dtor_catch_assert (struct breakpoint *b)
12316 {
12317   dtor_exception (ada_catch_assert, b);
12318 }
12319
12320 static struct bp_location *
12321 allocate_location_catch_assert (struct breakpoint *self)
12322 {
12323   return allocate_location_exception (ada_catch_assert, self);
12324 }
12325
12326 static void
12327 re_set_catch_assert (struct breakpoint *b)
12328 {
12329   re_set_exception (ada_catch_assert, b);
12330 }
12331
12332 static void
12333 check_status_catch_assert (bpstat bs)
12334 {
12335   check_status_exception (ada_catch_assert, bs);
12336 }
12337
12338 static enum print_stop_action
12339 print_it_catch_assert (bpstat bs)
12340 {
12341   return print_it_exception (ada_catch_assert, bs);
12342 }
12343
12344 static void
12345 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12346 {
12347   print_one_exception (ada_catch_assert, b, last_loc);
12348 }
12349
12350 static void
12351 print_mention_catch_assert (struct breakpoint *b)
12352 {
12353   print_mention_exception (ada_catch_assert, b);
12354 }
12355
12356 static void
12357 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12358 {
12359   print_recreate_exception (ada_catch_assert, b, fp);
12360 }
12361
12362 static struct breakpoint_ops catch_assert_breakpoint_ops;
12363
12364 /* Return a newly allocated copy of the first space-separated token
12365    in ARGSP, and then adjust ARGSP to point immediately after that
12366    token.
12367
12368    Return NULL if ARGPS does not contain any more tokens.  */
12369
12370 static char *
12371 ada_get_next_arg (char **argsp)
12372 {
12373   char *args = *argsp;
12374   char *end;
12375   char *result;
12376
12377   args = skip_spaces (args);
12378   if (args[0] == '\0')
12379     return NULL; /* No more arguments.  */
12380   
12381   /* Find the end of the current argument.  */
12382
12383   end = skip_to_space (args);
12384
12385   /* Adjust ARGSP to point to the start of the next argument.  */
12386
12387   *argsp = end;
12388
12389   /* Make a copy of the current argument and return it.  */
12390
12391   result = xmalloc (end - args + 1);
12392   strncpy (result, args, end - args);
12393   result[end - args] = '\0';
12394   
12395   return result;
12396 }
12397
12398 /* Split the arguments specified in a "catch exception" command.  
12399    Set EX to the appropriate catchpoint type.
12400    Set EXCEP_STRING to the name of the specific exception if
12401    specified by the user.
12402    If a condition is found at the end of the arguments, the condition
12403    expression is stored in COND_STRING (memory must be deallocated
12404    after use).  Otherwise COND_STRING is set to NULL.  */
12405
12406 static void
12407 catch_ada_exception_command_split (char *args,
12408                                    enum ada_exception_catchpoint_kind *ex,
12409                                    char **excep_string,
12410                                    char **cond_string)
12411 {
12412   struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
12413   char *exception_name;
12414   char *cond = NULL;
12415
12416   exception_name = ada_get_next_arg (&args);
12417   if (exception_name != NULL && strcmp (exception_name, "if") == 0)
12418     {
12419       /* This is not an exception name; this is the start of a condition
12420          expression for a catchpoint on all exceptions.  So, "un-get"
12421          this token, and set exception_name to NULL.  */
12422       xfree (exception_name);
12423       exception_name = NULL;
12424       args -= 2;
12425     }
12426   make_cleanup (xfree, exception_name);
12427
12428   /* Check to see if we have a condition.  */
12429
12430   args = skip_spaces (args);
12431   if (strncmp (args, "if", 2) == 0
12432       && (isspace (args[2]) || args[2] == '\0'))
12433     {
12434       args += 2;
12435       args = skip_spaces (args);
12436
12437       if (args[0] == '\0')
12438         error (_("Condition missing after `if' keyword"));
12439       cond = xstrdup (args);
12440       make_cleanup (xfree, cond);
12441
12442       args += strlen (args);
12443     }
12444
12445   /* Check that we do not have any more arguments.  Anything else
12446      is unexpected.  */
12447
12448   if (args[0] != '\0')
12449     error (_("Junk at end of expression"));
12450
12451   discard_cleanups (old_chain);
12452
12453   if (exception_name == NULL)
12454     {
12455       /* Catch all exceptions.  */
12456       *ex = ada_catch_exception;
12457       *excep_string = NULL;
12458     }
12459   else if (strcmp (exception_name, "unhandled") == 0)
12460     {
12461       /* Catch unhandled exceptions.  */
12462       *ex = ada_catch_exception_unhandled;
12463       *excep_string = NULL;
12464     }
12465   else
12466     {
12467       /* Catch a specific exception.  */
12468       *ex = ada_catch_exception;
12469       *excep_string = exception_name;
12470     }
12471   *cond_string = cond;
12472 }
12473
12474 /* Return the name of the symbol on which we should break in order to
12475    implement a catchpoint of the EX kind.  */
12476
12477 static const char *
12478 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12479 {
12480   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12481
12482   gdb_assert (data->exception_info != NULL);
12483
12484   switch (ex)
12485     {
12486       case ada_catch_exception:
12487         return (data->exception_info->catch_exception_sym);
12488         break;
12489       case ada_catch_exception_unhandled:
12490         return (data->exception_info->catch_exception_unhandled_sym);
12491         break;
12492       case ada_catch_assert:
12493         return (data->exception_info->catch_assert_sym);
12494         break;
12495       default:
12496         internal_error (__FILE__, __LINE__,
12497                         _("unexpected catchpoint kind (%d)"), ex);
12498     }
12499 }
12500
12501 /* Return the breakpoint ops "virtual table" used for catchpoints
12502    of the EX kind.  */
12503
12504 static const struct breakpoint_ops *
12505 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12506 {
12507   switch (ex)
12508     {
12509       case ada_catch_exception:
12510         return (&catch_exception_breakpoint_ops);
12511         break;
12512       case ada_catch_exception_unhandled:
12513         return (&catch_exception_unhandled_breakpoint_ops);
12514         break;
12515       case ada_catch_assert:
12516         return (&catch_assert_breakpoint_ops);
12517         break;
12518       default:
12519         internal_error (__FILE__, __LINE__,
12520                         _("unexpected catchpoint kind (%d)"), ex);
12521     }
12522 }
12523
12524 /* Return the condition that will be used to match the current exception
12525    being raised with the exception that the user wants to catch.  This
12526    assumes that this condition is used when the inferior just triggered
12527    an exception catchpoint.
12528    
12529    The string returned is a newly allocated string that needs to be
12530    deallocated later.  */
12531
12532 static char *
12533 ada_exception_catchpoint_cond_string (const char *excep_string)
12534 {
12535   int i;
12536
12537   /* The standard exceptions are a special case.  They are defined in
12538      runtime units that have been compiled without debugging info; if
12539      EXCEP_STRING is the not-fully-qualified name of a standard
12540      exception (e.g. "constraint_error") then, during the evaluation
12541      of the condition expression, the symbol lookup on this name would
12542      *not* return this standard exception.  The catchpoint condition
12543      may then be set only on user-defined exceptions which have the
12544      same not-fully-qualified name (e.g. my_package.constraint_error).
12545
12546      To avoid this unexcepted behavior, these standard exceptions are
12547      systematically prefixed by "standard".  This means that "catch
12548      exception constraint_error" is rewritten into "catch exception
12549      standard.constraint_error".
12550
12551      If an exception named contraint_error is defined in another package of
12552      the inferior program, then the only way to specify this exception as a
12553      breakpoint condition is to use its fully-qualified named:
12554      e.g. my_package.constraint_error.  */
12555
12556   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12557     {
12558       if (strcmp (standard_exc [i], excep_string) == 0)
12559         {
12560           return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
12561                              excep_string);
12562         }
12563     }
12564   return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
12565 }
12566
12567 /* Return the symtab_and_line that should be used to insert an exception
12568    catchpoint of the TYPE kind.
12569
12570    EXCEP_STRING should contain the name of a specific exception that
12571    the catchpoint should catch, or NULL otherwise.
12572
12573    ADDR_STRING returns the name of the function where the real
12574    breakpoint that implements the catchpoints is set, depending on the
12575    type of catchpoint we need to create.  */
12576
12577 static struct symtab_and_line
12578 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string,
12579                    char **addr_string, const struct breakpoint_ops **ops)
12580 {
12581   const char *sym_name;
12582   struct symbol *sym;
12583
12584   /* First, find out which exception support info to use.  */
12585   ada_exception_support_info_sniffer ();
12586
12587   /* Then lookup the function on which we will break in order to catch
12588      the Ada exceptions requested by the user.  */
12589   sym_name = ada_exception_sym_name (ex);
12590   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12591
12592   /* We can assume that SYM is not NULL at this stage.  If the symbol
12593      did not exist, ada_exception_support_info_sniffer would have
12594      raised an exception.
12595
12596      Also, ada_exception_support_info_sniffer should have already
12597      verified that SYM is a function symbol.  */
12598   gdb_assert (sym != NULL);
12599   gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK);
12600
12601   /* Set ADDR_STRING.  */
12602   *addr_string = xstrdup (sym_name);
12603
12604   /* Set OPS.  */
12605   *ops = ada_exception_breakpoint_ops (ex);
12606
12607   return find_function_start_sal (sym, 1);
12608 }
12609
12610 /* Create an Ada exception catchpoint.
12611
12612    EX_KIND is the kind of exception catchpoint to be created.
12613
12614    If EXCEPT_STRING is NULL, this catchpoint is expected to trigger
12615    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12616    of the exception to which this catchpoint applies.  When not NULL,
12617    the string must be allocated on the heap, and its deallocation
12618    is no longer the responsibility of the caller.
12619
12620    COND_STRING, if not NULL, is the catchpoint condition.  This string
12621    must be allocated on the heap, and its deallocation is no longer
12622    the responsibility of the caller.
12623
12624    TEMPFLAG, if nonzero, means that the underlying breakpoint
12625    should be temporary.
12626
12627    FROM_TTY is the usual argument passed to all commands implementations.  */
12628
12629 void
12630 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12631                                  enum ada_exception_catchpoint_kind ex_kind,
12632                                  char *excep_string,
12633                                  char *cond_string,
12634                                  int tempflag,
12635                                  int disabled,
12636                                  int from_tty)
12637 {
12638   struct ada_catchpoint *c;
12639   char *addr_string = NULL;
12640   const struct breakpoint_ops *ops = NULL;
12641   struct symtab_and_line sal
12642     = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops);
12643
12644   c = XNEW (struct ada_catchpoint);
12645   init_ada_exception_breakpoint (&c->base, gdbarch, sal, addr_string,
12646                                  ops, tempflag, disabled, from_tty);
12647   c->excep_string = excep_string;
12648   create_excep_cond_exprs (c);
12649   if (cond_string != NULL)
12650     set_breakpoint_condition (&c->base, cond_string, from_tty);
12651   install_breakpoint (0, &c->base, 1);
12652 }
12653
12654 /* Implement the "catch exception" command.  */
12655
12656 static void
12657 catch_ada_exception_command (char *arg, int from_tty,
12658                              struct cmd_list_element *command)
12659 {
12660   struct gdbarch *gdbarch = get_current_arch ();
12661   int tempflag;
12662   enum ada_exception_catchpoint_kind ex_kind;
12663   char *excep_string = NULL;
12664   char *cond_string = NULL;
12665
12666   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12667
12668   if (!arg)
12669     arg = "";
12670   catch_ada_exception_command_split (arg, &ex_kind, &excep_string,
12671                                      &cond_string);
12672   create_ada_exception_catchpoint (gdbarch, ex_kind,
12673                                    excep_string, cond_string,
12674                                    tempflag, 1 /* enabled */,
12675                                    from_tty);
12676 }
12677
12678 /* Split the arguments specified in a "catch assert" command.
12679
12680    ARGS contains the command's arguments (or the empty string if
12681    no arguments were passed).
12682
12683    If ARGS contains a condition, set COND_STRING to that condition
12684    (the memory needs to be deallocated after use).  */
12685
12686 static void
12687 catch_ada_assert_command_split (char *args, char **cond_string)
12688 {
12689   args = skip_spaces (args);
12690
12691   /* Check whether a condition was provided.  */
12692   if (strncmp (args, "if", 2) == 0
12693       && (isspace (args[2]) || args[2] == '\0'))
12694     {
12695       args += 2;
12696       args = skip_spaces (args);
12697       if (args[0] == '\0')
12698         error (_("condition missing after `if' keyword"));
12699       *cond_string = xstrdup (args);
12700     }
12701
12702   /* Otherwise, there should be no other argument at the end of
12703      the command.  */
12704   else if (args[0] != '\0')
12705     error (_("Junk at end of arguments."));
12706 }
12707
12708 /* Implement the "catch assert" command.  */
12709
12710 static void
12711 catch_assert_command (char *arg, int from_tty,
12712                       struct cmd_list_element *command)
12713 {
12714   struct gdbarch *gdbarch = get_current_arch ();
12715   int tempflag;
12716   char *cond_string = NULL;
12717
12718   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12719
12720   if (!arg)
12721     arg = "";
12722   catch_ada_assert_command_split (arg, &cond_string);
12723   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12724                                    NULL, cond_string,
12725                                    tempflag, 1 /* enabled */,
12726                                    from_tty);
12727 }
12728
12729 /* Return non-zero if the symbol SYM is an Ada exception object.  */
12730
12731 static int
12732 ada_is_exception_sym (struct symbol *sym)
12733 {
12734   const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
12735
12736   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12737           && SYMBOL_CLASS (sym) != LOC_BLOCK
12738           && SYMBOL_CLASS (sym) != LOC_CONST
12739           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12740           && type_name != NULL && strcmp (type_name, "exception") == 0);
12741 }
12742
12743 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12744    Ada exception object.  This matches all exceptions except the ones
12745    defined by the Ada language.  */
12746
12747 static int
12748 ada_is_non_standard_exception_sym (struct symbol *sym)
12749 {
12750   int i;
12751
12752   if (!ada_is_exception_sym (sym))
12753     return 0;
12754
12755   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12756     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
12757       return 0;  /* A standard exception.  */
12758
12759   /* Numeric_Error is also a standard exception, so exclude it.
12760      See the STANDARD_EXC description for more details as to why
12761      this exception is not listed in that array.  */
12762   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
12763     return 0;
12764
12765   return 1;
12766 }
12767
12768 /* A helper function for qsort, comparing two struct ada_exc_info
12769    objects.
12770
12771    The comparison is determined first by exception name, and then
12772    by exception address.  */
12773
12774 static int
12775 compare_ada_exception_info (const void *a, const void *b)
12776 {
12777   const struct ada_exc_info *exc_a = (struct ada_exc_info *) a;
12778   const struct ada_exc_info *exc_b = (struct ada_exc_info *) b;
12779   int result;
12780
12781   result = strcmp (exc_a->name, exc_b->name);
12782   if (result != 0)
12783     return result;
12784
12785   if (exc_a->addr < exc_b->addr)
12786     return -1;
12787   if (exc_a->addr > exc_b->addr)
12788     return 1;
12789
12790   return 0;
12791 }
12792
12793 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12794    routine, but keeping the first SKIP elements untouched.
12795
12796    All duplicates are also removed.  */
12797
12798 static void
12799 sort_remove_dups_ada_exceptions_list (VEC(ada_exc_info) **exceptions,
12800                                       int skip)
12801 {
12802   struct ada_exc_info *to_sort
12803     = VEC_address (ada_exc_info, *exceptions) + skip;
12804   int to_sort_len
12805     = VEC_length (ada_exc_info, *exceptions) - skip;
12806   int i, j;
12807
12808   qsort (to_sort, to_sort_len, sizeof (struct ada_exc_info),
12809          compare_ada_exception_info);
12810
12811   for (i = 1, j = 1; i < to_sort_len; i++)
12812     if (compare_ada_exception_info (&to_sort[i], &to_sort[j - 1]) != 0)
12813       to_sort[j++] = to_sort[i];
12814   to_sort_len = j;
12815   VEC_truncate(ada_exc_info, *exceptions, skip + to_sort_len);
12816 }
12817
12818 /* A function intended as the "name_matcher" callback in the struct
12819    quick_symbol_functions' expand_symtabs_matching method.
12820
12821    SEARCH_NAME is the symbol's search name.
12822
12823    If USER_DATA is not NULL, it is a pointer to a regext_t object
12824    used to match the symbol (by natural name).  Otherwise, when USER_DATA
12825    is null, no filtering is performed, and all symbols are a positive
12826    match.  */
12827
12828 static int
12829 ada_exc_search_name_matches (const char *search_name, void *user_data)
12830 {
12831   regex_t *preg = user_data;
12832
12833   if (preg == NULL)
12834     return 1;
12835
12836   /* In Ada, the symbol "search name" is a linkage name, whereas
12837      the regular expression used to do the matching refers to
12838      the natural name.  So match against the decoded name.  */
12839   return (regexec (preg, ada_decode (search_name), 0, NULL, 0) == 0);
12840 }
12841
12842 /* Add all exceptions defined by the Ada standard whose name match
12843    a regular expression.
12844
12845    If PREG is not NULL, then this regexp_t object is used to
12846    perform the symbol name matching.  Otherwise, no name-based
12847    filtering is performed.
12848
12849    EXCEPTIONS is a vector of exceptions to which matching exceptions
12850    gets pushed.  */
12851
12852 static void
12853 ada_add_standard_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
12854 {
12855   int i;
12856
12857   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12858     {
12859       if (preg == NULL
12860           || regexec (preg, standard_exc[i], 0, NULL, 0) == 0)
12861         {
12862           struct bound_minimal_symbol msymbol
12863             = ada_lookup_simple_minsym (standard_exc[i]);
12864
12865           if (msymbol.minsym != NULL)
12866             {
12867               struct ada_exc_info info
12868                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12869
12870               VEC_safe_push (ada_exc_info, *exceptions, &info);
12871             }
12872         }
12873     }
12874 }
12875
12876 /* Add all Ada exceptions defined locally and accessible from the given
12877    FRAME.
12878
12879    If PREG is not NULL, then this regexp_t object is used to
12880    perform the symbol name matching.  Otherwise, no name-based
12881    filtering is performed.
12882
12883    EXCEPTIONS is a vector of exceptions to which matching exceptions
12884    gets pushed.  */
12885
12886 static void
12887 ada_add_exceptions_from_frame (regex_t *preg, struct frame_info *frame,
12888                                VEC(ada_exc_info) **exceptions)
12889 {
12890   const struct block *block = get_frame_block (frame, 0);
12891
12892   while (block != 0)
12893     {
12894       struct block_iterator iter;
12895       struct symbol *sym;
12896
12897       ALL_BLOCK_SYMBOLS (block, iter, sym)
12898         {
12899           switch (SYMBOL_CLASS (sym))
12900             {
12901             case LOC_TYPEDEF:
12902             case LOC_BLOCK:
12903             case LOC_CONST:
12904               break;
12905             default:
12906               if (ada_is_exception_sym (sym))
12907                 {
12908                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
12909                                               SYMBOL_VALUE_ADDRESS (sym)};
12910
12911                   VEC_safe_push (ada_exc_info, *exceptions, &info);
12912                 }
12913             }
12914         }
12915       if (BLOCK_FUNCTION (block) != NULL)
12916         break;
12917       block = BLOCK_SUPERBLOCK (block);
12918     }
12919 }
12920
12921 /* Add all exceptions defined globally whose name name match
12922    a regular expression, excluding standard exceptions.
12923
12924    The reason we exclude standard exceptions is that they need
12925    to be handled separately: Standard exceptions are defined inside
12926    a runtime unit which is normally not compiled with debugging info,
12927    and thus usually do not show up in our symbol search.  However,
12928    if the unit was in fact built with debugging info, we need to
12929    exclude them because they would duplicate the entry we found
12930    during the special loop that specifically searches for those
12931    standard exceptions.
12932
12933    If PREG is not NULL, then this regexp_t object is used to
12934    perform the symbol name matching.  Otherwise, no name-based
12935    filtering is performed.
12936
12937    EXCEPTIONS is a vector of exceptions to which matching exceptions
12938    gets pushed.  */
12939
12940 static void
12941 ada_add_global_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions)
12942 {
12943   struct objfile *objfile;
12944   struct compunit_symtab *s;
12945
12946   expand_symtabs_matching (NULL, ada_exc_search_name_matches,
12947                            VARIABLES_DOMAIN, preg);
12948
12949   ALL_COMPUNITS (objfile, s)
12950     {
12951       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
12952       int i;
12953
12954       for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
12955         {
12956           struct block *b = BLOCKVECTOR_BLOCK (bv, i);
12957           struct block_iterator iter;
12958           struct symbol *sym;
12959
12960           ALL_BLOCK_SYMBOLS (b, iter, sym)
12961             if (ada_is_non_standard_exception_sym (sym)
12962                 && (preg == NULL
12963                     || regexec (preg, SYMBOL_NATURAL_NAME (sym),
12964                                 0, NULL, 0) == 0))
12965               {
12966                 struct ada_exc_info info
12967                   = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
12968
12969                 VEC_safe_push (ada_exc_info, *exceptions, &info);
12970               }
12971         }
12972     }
12973 }
12974
12975 /* Implements ada_exceptions_list with the regular expression passed
12976    as a regex_t, rather than a string.
12977
12978    If not NULL, PREG is used to filter out exceptions whose names
12979    do not match.  Otherwise, all exceptions are listed.  */
12980
12981 static VEC(ada_exc_info) *
12982 ada_exceptions_list_1 (regex_t *preg)
12983 {
12984   VEC(ada_exc_info) *result = NULL;
12985   struct cleanup *old_chain
12986     = make_cleanup (VEC_cleanup (ada_exc_info), &result);
12987   int prev_len;
12988
12989   /* First, list the known standard exceptions.  These exceptions
12990      need to be handled separately, as they are usually defined in
12991      runtime units that have been compiled without debugging info.  */
12992
12993   ada_add_standard_exceptions (preg, &result);
12994
12995   /* Next, find all exceptions whose scope is local and accessible
12996      from the currently selected frame.  */
12997
12998   if (has_stack_frames ())
12999     {
13000       prev_len = VEC_length (ada_exc_info, result);
13001       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13002                                      &result);
13003       if (VEC_length (ada_exc_info, result) > prev_len)
13004         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13005     }
13006
13007   /* Add all exceptions whose scope is global.  */
13008
13009   prev_len = VEC_length (ada_exc_info, result);
13010   ada_add_global_exceptions (preg, &result);
13011   if (VEC_length (ada_exc_info, result) > prev_len)
13012     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13013
13014   discard_cleanups (old_chain);
13015   return result;
13016 }
13017
13018 /* Return a vector of ada_exc_info.
13019
13020    If REGEXP is NULL, all exceptions are included in the result.
13021    Otherwise, it should contain a valid regular expression,
13022    and only the exceptions whose names match that regular expression
13023    are included in the result.
13024
13025    The exceptions are sorted in the following order:
13026      - Standard exceptions (defined by the Ada language), in
13027        alphabetical order;
13028      - Exceptions only visible from the current frame, in
13029        alphabetical order;
13030      - Exceptions whose scope is global, in alphabetical order.  */
13031
13032 VEC(ada_exc_info) *
13033 ada_exceptions_list (const char *regexp)
13034 {
13035   VEC(ada_exc_info) *result = NULL;
13036   struct cleanup *old_chain = NULL;
13037   regex_t reg;
13038
13039   if (regexp != NULL)
13040     old_chain = compile_rx_or_error (&reg, regexp,
13041                                      _("invalid regular expression"));
13042
13043   result = ada_exceptions_list_1 (regexp != NULL ? &reg : NULL);
13044
13045   if (old_chain != NULL)
13046     do_cleanups (old_chain);
13047   return result;
13048 }
13049
13050 /* Implement the "info exceptions" command.  */
13051
13052 static void
13053 info_exceptions_command (char *regexp, int from_tty)
13054 {
13055   VEC(ada_exc_info) *exceptions;
13056   struct cleanup *cleanup;
13057   struct gdbarch *gdbarch = get_current_arch ();
13058   int ix;
13059   struct ada_exc_info *info;
13060
13061   exceptions = ada_exceptions_list (regexp);
13062   cleanup = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions);
13063
13064   if (regexp != NULL)
13065     printf_filtered
13066       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13067   else
13068     printf_filtered (_("All defined Ada exceptions:\n"));
13069
13070   for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++)
13071     printf_filtered ("%s: %s\n", info->name, paddress (gdbarch, info->addr));
13072
13073   do_cleanups (cleanup);
13074 }
13075
13076                                 /* Operators */
13077 /* Information about operators given special treatment in functions
13078    below.  */
13079 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13080
13081 #define ADA_OPERATORS \
13082     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13083     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13084     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13085     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13086     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13087     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13088     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13089     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13090     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13091     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13092     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13093     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13094     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13095     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13096     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13097     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13098     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13099     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13100     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13101
13102 static void
13103 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13104                      int *argsp)
13105 {
13106   switch (exp->elts[pc - 1].opcode)
13107     {
13108     default:
13109       operator_length_standard (exp, pc, oplenp, argsp);
13110       break;
13111
13112 #define OP_DEFN(op, len, args, binop) \
13113     case op: *oplenp = len; *argsp = args; break;
13114       ADA_OPERATORS;
13115 #undef OP_DEFN
13116
13117     case OP_AGGREGATE:
13118       *oplenp = 3;
13119       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13120       break;
13121
13122     case OP_CHOICES:
13123       *oplenp = 3;
13124       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13125       break;
13126     }
13127 }
13128
13129 /* Implementation of the exp_descriptor method operator_check.  */
13130
13131 static int
13132 ada_operator_check (struct expression *exp, int pos,
13133                     int (*objfile_func) (struct objfile *objfile, void *data),
13134                     void *data)
13135 {
13136   const union exp_element *const elts = exp->elts;
13137   struct type *type = NULL;
13138
13139   switch (elts[pos].opcode)
13140     {
13141       case UNOP_IN_RANGE:
13142       case UNOP_QUAL:
13143         type = elts[pos + 1].type;
13144         break;
13145
13146       default:
13147         return operator_check_standard (exp, pos, objfile_func, data);
13148     }
13149
13150   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13151
13152   if (type && TYPE_OBJFILE (type)
13153       && (*objfile_func) (TYPE_OBJFILE (type), data))
13154     return 1;
13155
13156   return 0;
13157 }
13158
13159 static char *
13160 ada_op_name (enum exp_opcode opcode)
13161 {
13162   switch (opcode)
13163     {
13164     default:
13165       return op_name_standard (opcode);
13166
13167 #define OP_DEFN(op, len, args, binop) case op: return #op;
13168       ADA_OPERATORS;
13169 #undef OP_DEFN
13170
13171     case OP_AGGREGATE:
13172       return "OP_AGGREGATE";
13173     case OP_CHOICES:
13174       return "OP_CHOICES";
13175     case OP_NAME:
13176       return "OP_NAME";
13177     }
13178 }
13179
13180 /* As for operator_length, but assumes PC is pointing at the first
13181    element of the operator, and gives meaningful results only for the 
13182    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13183
13184 static void
13185 ada_forward_operator_length (struct expression *exp, int pc,
13186                              int *oplenp, int *argsp)
13187 {
13188   switch (exp->elts[pc].opcode)
13189     {
13190     default:
13191       *oplenp = *argsp = 0;
13192       break;
13193
13194 #define OP_DEFN(op, len, args, binop) \
13195     case op: *oplenp = len; *argsp = args; break;
13196       ADA_OPERATORS;
13197 #undef OP_DEFN
13198
13199     case OP_AGGREGATE:
13200       *oplenp = 3;
13201       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13202       break;
13203
13204     case OP_CHOICES:
13205       *oplenp = 3;
13206       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13207       break;
13208
13209     case OP_STRING:
13210     case OP_NAME:
13211       {
13212         int len = longest_to_int (exp->elts[pc + 1].longconst);
13213
13214         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13215         *argsp = 0;
13216         break;
13217       }
13218     }
13219 }
13220
13221 static int
13222 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13223 {
13224   enum exp_opcode op = exp->elts[elt].opcode;
13225   int oplen, nargs;
13226   int pc = elt;
13227   int i;
13228
13229   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13230
13231   switch (op)
13232     {
13233       /* Ada attributes ('Foo).  */
13234     case OP_ATR_FIRST:
13235     case OP_ATR_LAST:
13236     case OP_ATR_LENGTH:
13237     case OP_ATR_IMAGE:
13238     case OP_ATR_MAX:
13239     case OP_ATR_MIN:
13240     case OP_ATR_MODULUS:
13241     case OP_ATR_POS:
13242     case OP_ATR_SIZE:
13243     case OP_ATR_TAG:
13244     case OP_ATR_VAL:
13245       break;
13246
13247     case UNOP_IN_RANGE:
13248     case UNOP_QUAL:
13249       /* XXX: gdb_sprint_host_address, type_sprint */
13250       fprintf_filtered (stream, _("Type @"));
13251       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13252       fprintf_filtered (stream, " (");
13253       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13254       fprintf_filtered (stream, ")");
13255       break;
13256     case BINOP_IN_BOUNDS:
13257       fprintf_filtered (stream, " (%d)",
13258                         longest_to_int (exp->elts[pc + 2].longconst));
13259       break;
13260     case TERNOP_IN_RANGE:
13261       break;
13262
13263     case OP_AGGREGATE:
13264     case OP_OTHERS:
13265     case OP_DISCRETE_RANGE:
13266     case OP_POSITIONAL:
13267     case OP_CHOICES:
13268       break;
13269
13270     case OP_NAME:
13271     case OP_STRING:
13272       {
13273         char *name = &exp->elts[elt + 2].string;
13274         int len = longest_to_int (exp->elts[elt + 1].longconst);
13275
13276         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13277         break;
13278       }
13279
13280     default:
13281       return dump_subexp_body_standard (exp, stream, elt);
13282     }
13283
13284   elt += oplen;
13285   for (i = 0; i < nargs; i += 1)
13286     elt = dump_subexp (exp, stream, elt);
13287
13288   return elt;
13289 }
13290
13291 /* The Ada extension of print_subexp (q.v.).  */
13292
13293 static void
13294 ada_print_subexp (struct expression *exp, int *pos,
13295                   struct ui_file *stream, enum precedence prec)
13296 {
13297   int oplen, nargs, i;
13298   int pc = *pos;
13299   enum exp_opcode op = exp->elts[pc].opcode;
13300
13301   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13302
13303   *pos += oplen;
13304   switch (op)
13305     {
13306     default:
13307       *pos -= oplen;
13308       print_subexp_standard (exp, pos, stream, prec);
13309       return;
13310
13311     case OP_VAR_VALUE:
13312       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13313       return;
13314
13315     case BINOP_IN_BOUNDS:
13316       /* XXX: sprint_subexp */
13317       print_subexp (exp, pos, stream, PREC_SUFFIX);
13318       fputs_filtered (" in ", stream);
13319       print_subexp (exp, pos, stream, PREC_SUFFIX);
13320       fputs_filtered ("'range", stream);
13321       if (exp->elts[pc + 1].longconst > 1)
13322         fprintf_filtered (stream, "(%ld)",
13323                           (long) exp->elts[pc + 1].longconst);
13324       return;
13325
13326     case TERNOP_IN_RANGE:
13327       if (prec >= PREC_EQUAL)
13328         fputs_filtered ("(", stream);
13329       /* XXX: sprint_subexp */
13330       print_subexp (exp, pos, stream, PREC_SUFFIX);
13331       fputs_filtered (" in ", stream);
13332       print_subexp (exp, pos, stream, PREC_EQUAL);
13333       fputs_filtered (" .. ", stream);
13334       print_subexp (exp, pos, stream, PREC_EQUAL);
13335       if (prec >= PREC_EQUAL)
13336         fputs_filtered (")", stream);
13337       return;
13338
13339     case OP_ATR_FIRST:
13340     case OP_ATR_LAST:
13341     case OP_ATR_LENGTH:
13342     case OP_ATR_IMAGE:
13343     case OP_ATR_MAX:
13344     case OP_ATR_MIN:
13345     case OP_ATR_MODULUS:
13346     case OP_ATR_POS:
13347     case OP_ATR_SIZE:
13348     case OP_ATR_TAG:
13349     case OP_ATR_VAL:
13350       if (exp->elts[*pos].opcode == OP_TYPE)
13351         {
13352           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13353             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13354                            &type_print_raw_options);
13355           *pos += 3;
13356         }
13357       else
13358         print_subexp (exp, pos, stream, PREC_SUFFIX);
13359       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13360       if (nargs > 1)
13361         {
13362           int tem;
13363
13364           for (tem = 1; tem < nargs; tem += 1)
13365             {
13366               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13367               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13368             }
13369           fputs_filtered (")", stream);
13370         }
13371       return;
13372
13373     case UNOP_QUAL:
13374       type_print (exp->elts[pc + 1].type, "", stream, 0);
13375       fputs_filtered ("'(", stream);
13376       print_subexp (exp, pos, stream, PREC_PREFIX);
13377       fputs_filtered (")", stream);
13378       return;
13379
13380     case UNOP_IN_RANGE:
13381       /* XXX: sprint_subexp */
13382       print_subexp (exp, pos, stream, PREC_SUFFIX);
13383       fputs_filtered (" in ", stream);
13384       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13385                      &type_print_raw_options);
13386       return;
13387
13388     case OP_DISCRETE_RANGE:
13389       print_subexp (exp, pos, stream, PREC_SUFFIX);
13390       fputs_filtered ("..", stream);
13391       print_subexp (exp, pos, stream, PREC_SUFFIX);
13392       return;
13393
13394     case OP_OTHERS:
13395       fputs_filtered ("others => ", stream);
13396       print_subexp (exp, pos, stream, PREC_SUFFIX);
13397       return;
13398
13399     case OP_CHOICES:
13400       for (i = 0; i < nargs-1; i += 1)
13401         {
13402           if (i > 0)
13403             fputs_filtered ("|", stream);
13404           print_subexp (exp, pos, stream, PREC_SUFFIX);
13405         }
13406       fputs_filtered (" => ", stream);
13407       print_subexp (exp, pos, stream, PREC_SUFFIX);
13408       return;
13409       
13410     case OP_POSITIONAL:
13411       print_subexp (exp, pos, stream, PREC_SUFFIX);
13412       return;
13413
13414     case OP_AGGREGATE:
13415       fputs_filtered ("(", stream);
13416       for (i = 0; i < nargs; i += 1)
13417         {
13418           if (i > 0)
13419             fputs_filtered (", ", stream);
13420           print_subexp (exp, pos, stream, PREC_SUFFIX);
13421         }
13422       fputs_filtered (")", stream);
13423       return;
13424     }
13425 }
13426
13427 /* Table mapping opcodes into strings for printing operators
13428    and precedences of the operators.  */
13429
13430 static const struct op_print ada_op_print_tab[] = {
13431   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13432   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13433   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13434   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13435   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13436   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13437   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13438   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13439   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13440   {">=", BINOP_GEQ, PREC_ORDER, 0},
13441   {">", BINOP_GTR, PREC_ORDER, 0},
13442   {"<", BINOP_LESS, PREC_ORDER, 0},
13443   {">>", BINOP_RSH, PREC_SHIFT, 0},
13444   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13445   {"+", BINOP_ADD, PREC_ADD, 0},
13446   {"-", BINOP_SUB, PREC_ADD, 0},
13447   {"&", BINOP_CONCAT, PREC_ADD, 0},
13448   {"*", BINOP_MUL, PREC_MUL, 0},
13449   {"/", BINOP_DIV, PREC_MUL, 0},
13450   {"rem", BINOP_REM, PREC_MUL, 0},
13451   {"mod", BINOP_MOD, PREC_MUL, 0},
13452   {"**", BINOP_EXP, PREC_REPEAT, 0},
13453   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13454   {"-", UNOP_NEG, PREC_PREFIX, 0},
13455   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13456   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13457   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13458   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13459   {".all", UNOP_IND, PREC_SUFFIX, 1},
13460   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13461   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13462   {NULL, 0, 0, 0}
13463 };
13464 \f
13465 enum ada_primitive_types {
13466   ada_primitive_type_int,
13467   ada_primitive_type_long,
13468   ada_primitive_type_short,
13469   ada_primitive_type_char,
13470   ada_primitive_type_float,
13471   ada_primitive_type_double,
13472   ada_primitive_type_void,
13473   ada_primitive_type_long_long,
13474   ada_primitive_type_long_double,
13475   ada_primitive_type_natural,
13476   ada_primitive_type_positive,
13477   ada_primitive_type_system_address,
13478   nr_ada_primitive_types
13479 };
13480
13481 static void
13482 ada_language_arch_info (struct gdbarch *gdbarch,
13483                         struct language_arch_info *lai)
13484 {
13485   const struct builtin_type *builtin = builtin_type (gdbarch);
13486
13487   lai->primitive_type_vector
13488     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13489                               struct type *);
13490
13491   lai->primitive_type_vector [ada_primitive_type_int]
13492     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13493                          0, "integer");
13494   lai->primitive_type_vector [ada_primitive_type_long]
13495     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13496                          0, "long_integer");
13497   lai->primitive_type_vector [ada_primitive_type_short]
13498     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13499                          0, "short_integer");
13500   lai->string_char_type
13501     = lai->primitive_type_vector [ada_primitive_type_char]
13502     = arch_integer_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13503   lai->primitive_type_vector [ada_primitive_type_float]
13504     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13505                        "float", NULL);
13506   lai->primitive_type_vector [ada_primitive_type_double]
13507     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13508                        "long_float", NULL);
13509   lai->primitive_type_vector [ada_primitive_type_long_long]
13510     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13511                          0, "long_long_integer");
13512   lai->primitive_type_vector [ada_primitive_type_long_double]
13513     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13514                        "long_long_float", NULL);
13515   lai->primitive_type_vector [ada_primitive_type_natural]
13516     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13517                          0, "natural");
13518   lai->primitive_type_vector [ada_primitive_type_positive]
13519     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13520                          0, "positive");
13521   lai->primitive_type_vector [ada_primitive_type_void]
13522     = builtin->builtin_void;
13523
13524   lai->primitive_type_vector [ada_primitive_type_system_address]
13525     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, 1, "void"));
13526   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
13527     = "system__address";
13528
13529   lai->bool_type_symbol = NULL;
13530   lai->bool_type_default = builtin->builtin_bool;
13531 }
13532 \f
13533                                 /* Language vector */
13534
13535 /* Not really used, but needed in the ada_language_defn.  */
13536
13537 static void
13538 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13539 {
13540   ada_emit_char (c, type, stream, quoter, 1);
13541 }
13542
13543 static int
13544 parse (struct parser_state *ps)
13545 {
13546   warnings_issued = 0;
13547   return ada_parse (ps);
13548 }
13549
13550 static const struct exp_descriptor ada_exp_descriptor = {
13551   ada_print_subexp,
13552   ada_operator_length,
13553   ada_operator_check,
13554   ada_op_name,
13555   ada_dump_subexp_body,
13556   ada_evaluate_subexp
13557 };
13558
13559 /* Implement the "la_get_symbol_name_cmp" language_defn method
13560    for Ada.  */
13561
13562 static symbol_name_cmp_ftype
13563 ada_get_symbol_name_cmp (const char *lookup_name)
13564 {
13565   if (should_use_wild_match (lookup_name))
13566     return wild_match;
13567   else
13568     return compare_names;
13569 }
13570
13571 /* Implement the "la_read_var_value" language_defn method for Ada.  */
13572
13573 static struct value *
13574 ada_read_var_value (struct symbol *var, struct frame_info *frame)
13575 {
13576   const struct block *frame_block = NULL;
13577   struct symbol *renaming_sym = NULL;
13578
13579   /* The only case where default_read_var_value is not sufficient
13580      is when VAR is a renaming...  */
13581   if (frame)
13582     frame_block = get_frame_block (frame, NULL);
13583   if (frame_block)
13584     renaming_sym = ada_find_renaming_symbol (var, frame_block);
13585   if (renaming_sym != NULL)
13586     return ada_read_renaming_var_value (renaming_sym, frame_block);
13587
13588   /* This is a typical case where we expect the default_read_var_value
13589      function to work.  */
13590   return default_read_var_value (var, frame);
13591 }
13592
13593 const struct language_defn ada_language_defn = {
13594   "ada",                        /* Language name */
13595   "Ada",
13596   language_ada,
13597   range_check_off,
13598   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13599                                    that's not quite what this means.  */
13600   array_row_major,
13601   macro_expansion_no,
13602   &ada_exp_descriptor,
13603   parse,
13604   ada_error,
13605   resolve,
13606   ada_printchar,                /* Print a character constant */
13607   ada_printstr,                 /* Function to print string constant */
13608   emit_char,                    /* Function to print single char (not used) */
13609   ada_print_type,               /* Print a type using appropriate syntax */
13610   ada_print_typedef,            /* Print a typedef using appropriate syntax */
13611   ada_val_print,                /* Print a value using appropriate syntax */
13612   ada_value_print,              /* Print a top-level value */
13613   ada_read_var_value,           /* la_read_var_value */
13614   NULL,                         /* Language specific skip_trampoline */
13615   NULL,                         /* name_of_this */
13616   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
13617   basic_lookup_transparent_type,        /* lookup_transparent_type */
13618   ada_la_decode,                /* Language specific symbol demangler */
13619   NULL,                         /* Language specific
13620                                    class_name_from_physname */
13621   ada_op_print_tab,             /* expression operators for printing */
13622   0,                            /* c-style arrays */
13623   1,                            /* String lower bound */
13624   ada_get_gdb_completer_word_break_characters,
13625   ada_make_symbol_completion_list,
13626   ada_language_arch_info,
13627   ada_print_array_index,
13628   default_pass_by_reference,
13629   c_get_string,
13630   ada_get_symbol_name_cmp,      /* la_get_symbol_name_cmp */
13631   ada_iterate_over_symbols,
13632   &ada_varobj_ops,
13633   LANG_MAGIC
13634 };
13635
13636 /* Provide a prototype to silence -Wmissing-prototypes.  */
13637 extern initialize_file_ftype _initialize_ada_language;
13638
13639 /* Command-list for the "set/show ada" prefix command.  */
13640 static struct cmd_list_element *set_ada_list;
13641 static struct cmd_list_element *show_ada_list;
13642
13643 /* Implement the "set ada" prefix command.  */
13644
13645 static void
13646 set_ada_command (char *arg, int from_tty)
13647 {
13648   printf_unfiltered (_(\
13649 "\"set ada\" must be followed by the name of a setting.\n"));
13650   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
13651 }
13652
13653 /* Implement the "show ada" prefix command.  */
13654
13655 static void
13656 show_ada_command (char *args, int from_tty)
13657 {
13658   cmd_show_list (show_ada_list, from_tty, "");
13659 }
13660
13661 static void
13662 initialize_ada_catchpoint_ops (void)
13663 {
13664   struct breakpoint_ops *ops;
13665
13666   initialize_breakpoint_ops ();
13667
13668   ops = &catch_exception_breakpoint_ops;
13669   *ops = bkpt_breakpoint_ops;
13670   ops->dtor = dtor_catch_exception;
13671   ops->allocate_location = allocate_location_catch_exception;
13672   ops->re_set = re_set_catch_exception;
13673   ops->check_status = check_status_catch_exception;
13674   ops->print_it = print_it_catch_exception;
13675   ops->print_one = print_one_catch_exception;
13676   ops->print_mention = print_mention_catch_exception;
13677   ops->print_recreate = print_recreate_catch_exception;
13678
13679   ops = &catch_exception_unhandled_breakpoint_ops;
13680   *ops = bkpt_breakpoint_ops;
13681   ops->dtor = dtor_catch_exception_unhandled;
13682   ops->allocate_location = allocate_location_catch_exception_unhandled;
13683   ops->re_set = re_set_catch_exception_unhandled;
13684   ops->check_status = check_status_catch_exception_unhandled;
13685   ops->print_it = print_it_catch_exception_unhandled;
13686   ops->print_one = print_one_catch_exception_unhandled;
13687   ops->print_mention = print_mention_catch_exception_unhandled;
13688   ops->print_recreate = print_recreate_catch_exception_unhandled;
13689
13690   ops = &catch_assert_breakpoint_ops;
13691   *ops = bkpt_breakpoint_ops;
13692   ops->dtor = dtor_catch_assert;
13693   ops->allocate_location = allocate_location_catch_assert;
13694   ops->re_set = re_set_catch_assert;
13695   ops->check_status = check_status_catch_assert;
13696   ops->print_it = print_it_catch_assert;
13697   ops->print_one = print_one_catch_assert;
13698   ops->print_mention = print_mention_catch_assert;
13699   ops->print_recreate = print_recreate_catch_assert;
13700 }
13701
13702 /* This module's 'new_objfile' observer.  */
13703
13704 static void
13705 ada_new_objfile_observer (struct objfile *objfile)
13706 {
13707   ada_clear_symbol_cache ();
13708 }
13709
13710 /* This module's 'free_objfile' observer.  */
13711
13712 static void
13713 ada_free_objfile_observer (struct objfile *objfile)
13714 {
13715   ada_clear_symbol_cache ();
13716 }
13717
13718 void
13719 _initialize_ada_language (void)
13720 {
13721   add_language (&ada_language_defn);
13722
13723   initialize_ada_catchpoint_ops ();
13724
13725   add_prefix_cmd ("ada", no_class, set_ada_command,
13726                   _("Prefix command for changing Ada-specfic settings"),
13727                   &set_ada_list, "set ada ", 0, &setlist);
13728
13729   add_prefix_cmd ("ada", no_class, show_ada_command,
13730                   _("Generic command for showing Ada-specific settings."),
13731                   &show_ada_list, "show ada ", 0, &showlist);
13732
13733   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
13734                            &trust_pad_over_xvs, _("\
13735 Enable or disable an optimization trusting PAD types over XVS types"), _("\
13736 Show whether an optimization trusting PAD types over XVS types is activated"),
13737                            _("\
13738 This is related to the encoding used by the GNAT compiler.  The debugger\n\
13739 should normally trust the contents of PAD types, but certain older versions\n\
13740 of GNAT have a bug that sometimes causes the information in the PAD type\n\
13741 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
13742 work around this bug.  It is always safe to turn this option \"off\", but\n\
13743 this incurs a slight performance penalty, so it is recommended to NOT change\n\
13744 this option to \"off\" unless necessary."),
13745                             NULL, NULL, &set_ada_list, &show_ada_list);
13746
13747   add_catch_command ("exception", _("\
13748 Catch Ada exceptions, when raised.\n\
13749 With an argument, catch only exceptions with the given name."),
13750                      catch_ada_exception_command,
13751                      NULL,
13752                      CATCH_PERMANENT,
13753                      CATCH_TEMPORARY);
13754   add_catch_command ("assert", _("\
13755 Catch failed Ada assertions, when raised.\n\
13756 With an argument, catch only exceptions with the given name."),
13757                      catch_assert_command,
13758                      NULL,
13759                      CATCH_PERMANENT,
13760                      CATCH_TEMPORARY);
13761
13762   varsize_limit = 65536;
13763
13764   add_info ("exceptions", info_exceptions_command,
13765             _("\
13766 List all Ada exception names.\n\
13767 If a regular expression is passed as an argument, only those matching\n\
13768 the regular expression are listed."));
13769
13770   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
13771                   _("Set Ada maintenance-related variables."),
13772                   &maint_set_ada_cmdlist, "maintenance set ada ",
13773                   0/*allow-unknown*/, &maintenance_set_cmdlist);
13774
13775   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
13776                   _("Show Ada maintenance-related variables"),
13777                   &maint_show_ada_cmdlist, "maintenance show ada ",
13778                   0/*allow-unknown*/, &maintenance_show_cmdlist);
13779
13780   add_setshow_boolean_cmd
13781     ("ignore-descriptive-types", class_maintenance,
13782      &ada_ignore_descriptive_types_p,
13783      _("Set whether descriptive types generated by GNAT should be ignored."),
13784      _("Show whether descriptive types generated by GNAT should be ignored."),
13785      _("\
13786 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
13787 DWARF attribute."),
13788      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
13789
13790   obstack_init (&symbol_list_obstack);
13791
13792   decoded_names_store = htab_create_alloc
13793     (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
13794      NULL, xcalloc, xfree);
13795
13796   /* The ada-lang observers.  */
13797   observer_attach_new_objfile (ada_new_objfile_observer);
13798   observer_attach_free_objfile (ada_free_objfile_observer);
13799   observer_attach_inferior_exit (ada_inferior_exit);
13800
13801   /* Setup various context-specific data.  */
13802   ada_inferior_data
13803     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
13804   ada_pspace_data_handle
13805     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
13806 }