]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/ada-lang.c
Resolve dynamic type in ada_value_struct_elt
[thirdparty/binutils-gdb.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3 Copyright (C) 1992-2020 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 "gdb_regex.h"
24 #include "frame.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "gdbcmd.h"
28 #include "expression.h"
29 #include "parser-defs.h"
30 #include "language.h"
31 #include "varobj.h"
32 #include "inferior.h"
33 #include "symfile.h"
34 #include "objfiles.h"
35 #include "breakpoint.h"
36 #include "gdbcore.h"
37 #include "hashtab.h"
38 #include "gdb_obstack.h"
39 #include "ada-lang.h"
40 #include "completer.h"
41 #include "ui-out.h"
42 #include "block.h"
43 #include "infcall.h"
44 #include "annotate.h"
45 #include "valprint.h"
46 #include "source.h"
47 #include "observable.h"
48 #include "stack.h"
49 #include "typeprint.h"
50 #include "namespace.h"
51 #include "cli/cli-style.h"
52
53 #include "value.h"
54 #include "mi/mi-common.h"
55 #include "arch-utils.h"
56 #include "cli/cli-utils.h"
57 #include "gdbsupport/function-view.h"
58 #include "gdbsupport/byte-vector.h"
59 #include <algorithm>
60
61 /* Define whether or not the C operator '/' truncates towards zero for
62 differently signed operands (truncation direction is undefined in C).
63 Copied from valarith.c. */
64
65 #ifndef TRUNCATION_TOWARDS_ZERO
66 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
67 #endif
68
69 static struct type *desc_base_type (struct type *);
70
71 static struct type *desc_bounds_type (struct type *);
72
73 static struct value *desc_bounds (struct value *);
74
75 static int fat_pntr_bounds_bitpos (struct type *);
76
77 static int fat_pntr_bounds_bitsize (struct type *);
78
79 static struct type *desc_data_target_type (struct type *);
80
81 static struct value *desc_data (struct value *);
82
83 static int fat_pntr_data_bitpos (struct type *);
84
85 static int fat_pntr_data_bitsize (struct type *);
86
87 static struct value *desc_one_bound (struct value *, int, int);
88
89 static int desc_bound_bitpos (struct type *, int, int);
90
91 static int desc_bound_bitsize (struct type *, int, int);
92
93 static struct type *desc_index_type (struct type *, int);
94
95 static int desc_arity (struct type *);
96
97 static int ada_type_match (struct type *, struct type *, int);
98
99 static int ada_args_match (struct symbol *, struct value **, int);
100
101 static struct value *make_array_descriptor (struct type *, struct value *);
102
103 static void ada_add_block_symbols (struct obstack *,
104 const struct block *,
105 const lookup_name_info &lookup_name,
106 domain_enum, struct objfile *);
107
108 static void ada_add_all_symbols (struct obstack *, const struct block *,
109 const lookup_name_info &lookup_name,
110 domain_enum, int, int *);
111
112 static int is_nonfunction (struct block_symbol *, int);
113
114 static void add_defn_to_vec (struct obstack *, struct symbol *,
115 const struct block *);
116
117 static int num_defns_collected (struct obstack *);
118
119 static struct block_symbol *defns_collected (struct obstack *, int);
120
121 static struct value *resolve_subexp (expression_up *, int *, int,
122 struct type *, int,
123 innermost_block_tracker *);
124
125 static void replace_operator_with_call (expression_up *, int, int, int,
126 struct symbol *, const struct block *);
127
128 static int possible_user_operator_p (enum exp_opcode, struct value **);
129
130 static const char *ada_op_name (enum exp_opcode);
131
132 static const char *ada_decoded_op_name (enum exp_opcode);
133
134 static int numeric_type_p (struct type *);
135
136 static int integer_type_p (struct type *);
137
138 static int scalar_type_p (struct type *);
139
140 static int discrete_type_p (struct type *);
141
142 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
143 int, int);
144
145 static struct value *evaluate_subexp_type (struct expression *, int *);
146
147 static struct type *ada_find_parallel_type_with_name (struct type *,
148 const char *);
149
150 static int is_dynamic_field (struct type *, int);
151
152 static struct type *to_fixed_variant_branch_type (struct type *,
153 const gdb_byte *,
154 CORE_ADDR, struct value *);
155
156 static struct type *to_fixed_array_type (struct type *, struct value *, int);
157
158 static struct type *to_fixed_range_type (struct type *, struct value *);
159
160 static struct type *to_static_fixed_type (struct type *);
161 static struct type *static_unwrap_type (struct type *type);
162
163 static struct value *unwrap_value (struct value *);
164
165 static struct type *constrained_packed_array_type (struct type *, long *);
166
167 static struct type *decode_constrained_packed_array_type (struct type *);
168
169 static long decode_packed_array_bitsize (struct type *);
170
171 static struct value *decode_constrained_packed_array (struct value *);
172
173 static int ada_is_unconstrained_packed_array_type (struct type *);
174
175 static struct value *value_subscript_packed (struct value *, int,
176 struct value **);
177
178 static struct value *coerce_unspec_val_to_type (struct value *,
179 struct type *);
180
181 static int lesseq_defined_than (struct symbol *, struct symbol *);
182
183 static int equiv_types (struct type *, struct type *);
184
185 static int is_name_suffix (const char *);
186
187 static int advance_wild_match (const char **, const char *, char);
188
189 static bool wild_match (const char *name, const char *patn);
190
191 static struct value *ada_coerce_ref (struct value *);
192
193 static LONGEST pos_atr (struct value *);
194
195 static struct value *value_pos_atr (struct type *, struct value *);
196
197 static struct value *val_atr (struct type *, LONGEST);
198
199 static struct value *value_val_atr (struct type *, struct value *);
200
201 static struct symbol *standard_lookup (const char *, const struct block *,
202 domain_enum);
203
204 static struct value *ada_search_struct_field (const char *, struct value *, int,
205 struct type *);
206
207 static int find_struct_field (const char *, struct type *, int,
208 struct type **, int *, int *, int *, int *);
209
210 static int ada_resolve_function (struct block_symbol *, int,
211 struct value **, int, const char *,
212 struct type *, int);
213
214 static int ada_is_direct_array_type (struct type *);
215
216 static struct value *ada_index_struct_field (int, struct value *, int,
217 struct type *);
218
219 static struct value *assign_aggregate (struct value *, struct value *,
220 struct expression *,
221 int *, enum noside);
222
223 static void aggregate_assign_from_choices (struct value *, struct value *,
224 struct expression *,
225 int *, LONGEST *, int *,
226 int, LONGEST, LONGEST);
227
228 static void aggregate_assign_positional (struct value *, struct value *,
229 struct expression *,
230 int *, LONGEST *, int *, int,
231 LONGEST, LONGEST);
232
233
234 static void aggregate_assign_others (struct value *, struct value *,
235 struct expression *,
236 int *, LONGEST *, int, LONGEST, LONGEST);
237
238
239 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
240
241
242 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
243 int *, enum noside);
244
245 static void ada_forward_operator_length (struct expression *, int, int *,
246 int *);
247
248 static struct type *ada_find_any_type (const char *name);
249
250 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
251 (const lookup_name_info &lookup_name);
252
253 \f
254
255 /* The result of a symbol lookup to be stored in our symbol cache. */
256
257 struct cache_entry
258 {
259 /* The name used to perform the lookup. */
260 const char *name;
261 /* The namespace used during the lookup. */
262 domain_enum domain;
263 /* The symbol returned by the lookup, or NULL if no matching symbol
264 was found. */
265 struct symbol *sym;
266 /* The block where the symbol was found, or NULL if no matching
267 symbol was found. */
268 const struct block *block;
269 /* A pointer to the next entry with the same hash. */
270 struct cache_entry *next;
271 };
272
273 /* The Ada symbol cache, used to store the result of Ada-mode symbol
274 lookups in the course of executing the user's commands.
275
276 The cache is implemented using a simple, fixed-sized hash.
277 The size is fixed on the grounds that there are not likely to be
278 all that many symbols looked up during any given session, regardless
279 of the size of the symbol table. If we decide to go to a resizable
280 table, let's just use the stuff from libiberty instead. */
281
282 #define HASH_SIZE 1009
283
284 struct ada_symbol_cache
285 {
286 /* An obstack used to store the entries in our cache. */
287 struct obstack cache_space;
288
289 /* The root of the hash table used to implement our symbol cache. */
290 struct cache_entry *root[HASH_SIZE];
291 };
292
293 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
294
295 /* Maximum-sized dynamic type. */
296 static unsigned int varsize_limit;
297
298 static const char ada_completer_word_break_characters[] =
299 #ifdef VMS
300 " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
301 #else
302 " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
303 #endif
304
305 /* The name of the symbol to use to get the name of the main subprogram. */
306 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
307 = "__gnat_ada_main_program_name";
308
309 /* Limit on the number of warnings to raise per expression evaluation. */
310 static int warning_limit = 2;
311
312 /* Number of warning messages issued; reset to 0 by cleanups after
313 expression evaluation. */
314 static int warnings_issued = 0;
315
316 static const char * const known_runtime_file_name_patterns[] = {
317 ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
318 };
319
320 static const char * const known_auxiliary_function_name_patterns[] = {
321 ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
322 };
323
324 /* Maintenance-related settings for this module. */
325
326 static struct cmd_list_element *maint_set_ada_cmdlist;
327 static struct cmd_list_element *maint_show_ada_cmdlist;
328
329 /* The "maintenance ada set/show ignore-descriptive-type" value. */
330
331 static bool ada_ignore_descriptive_types_p = false;
332
333 /* Inferior-specific data. */
334
335 /* Per-inferior data for this module. */
336
337 struct ada_inferior_data
338 {
339 /* The ada__tags__type_specific_data type, which is used when decoding
340 tagged types. With older versions of GNAT, this type was directly
341 accessible through a component ("tsd") in the object tag. But this
342 is no longer the case, so we cache it for each inferior. */
343 struct type *tsd_type = nullptr;
344
345 /* The exception_support_info data. This data is used to determine
346 how to implement support for Ada exception catchpoints in a given
347 inferior. */
348 const struct exception_support_info *exception_info = nullptr;
349 };
350
351 /* Our key to this module's inferior data. */
352 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
353
354 /* Return our inferior data for the given inferior (INF).
355
356 This function always returns a valid pointer to an allocated
357 ada_inferior_data structure. If INF's inferior data has not
358 been previously set, this functions creates a new one with all
359 fields set to zero, sets INF's inferior to it, and then returns
360 a pointer to that newly allocated ada_inferior_data. */
361
362 static struct ada_inferior_data *
363 get_ada_inferior_data (struct inferior *inf)
364 {
365 struct ada_inferior_data *data;
366
367 data = ada_inferior_data.get (inf);
368 if (data == NULL)
369 data = ada_inferior_data.emplace (inf);
370
371 return data;
372 }
373
374 /* Perform all necessary cleanups regarding our module's inferior data
375 that is required after the inferior INF just exited. */
376
377 static void
378 ada_inferior_exit (struct inferior *inf)
379 {
380 ada_inferior_data.clear (inf);
381 }
382
383
384 /* program-space-specific data. */
385
386 /* This module's per-program-space data. */
387 struct ada_pspace_data
388 {
389 ~ada_pspace_data ()
390 {
391 if (sym_cache != NULL)
392 ada_free_symbol_cache (sym_cache);
393 }
394
395 /* The Ada symbol cache. */
396 struct ada_symbol_cache *sym_cache = nullptr;
397 };
398
399 /* Key to our per-program-space data. */
400 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
401
402 /* Return this module's data for the given program space (PSPACE).
403 If not is found, add a zero'ed one now.
404
405 This function always returns a valid object. */
406
407 static struct ada_pspace_data *
408 get_ada_pspace_data (struct program_space *pspace)
409 {
410 struct ada_pspace_data *data;
411
412 data = ada_pspace_data_handle.get (pspace);
413 if (data == NULL)
414 data = ada_pspace_data_handle.emplace (pspace);
415
416 return data;
417 }
418
419 /* Utilities */
420
421 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
422 all typedef layers have been peeled. Otherwise, return TYPE.
423
424 Normally, we really expect a typedef type to only have 1 typedef layer.
425 In other words, we really expect the target type of a typedef type to be
426 a non-typedef type. This is particularly true for Ada units, because
427 the language does not have a typedef vs not-typedef distinction.
428 In that respect, the Ada compiler has been trying to eliminate as many
429 typedef definitions in the debugging information, since they generally
430 do not bring any extra information (we still use typedef under certain
431 circumstances related mostly to the GNAT encoding).
432
433 Unfortunately, we have seen situations where the debugging information
434 generated by the compiler leads to such multiple typedef layers. For
435 instance, consider the following example with stabs:
436
437 .stabs "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
438 .stabs "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
439
440 This is an error in the debugging information which causes type
441 pck__float_array___XUP to be defined twice, and the second time,
442 it is defined as a typedef of a typedef.
443
444 This is on the fringe of legality as far as debugging information is
445 concerned, and certainly unexpected. But it is easy to handle these
446 situations correctly, so we can afford to be lenient in this case. */
447
448 static struct type *
449 ada_typedef_target_type (struct type *type)
450 {
451 while (type->code () == TYPE_CODE_TYPEDEF)
452 type = TYPE_TARGET_TYPE (type);
453 return type;
454 }
455
456 /* Given DECODED_NAME a string holding a symbol name in its
457 decoded form (ie using the Ada dotted notation), returns
458 its unqualified name. */
459
460 static const char *
461 ada_unqualified_name (const char *decoded_name)
462 {
463 const char *result;
464
465 /* If the decoded name starts with '<', it means that the encoded
466 name does not follow standard naming conventions, and thus that
467 it is not your typical Ada symbol name. Trying to unqualify it
468 is therefore pointless and possibly erroneous. */
469 if (decoded_name[0] == '<')
470 return decoded_name;
471
472 result = strrchr (decoded_name, '.');
473 if (result != NULL)
474 result++; /* Skip the dot... */
475 else
476 result = decoded_name;
477
478 return result;
479 }
480
481 /* Return a string starting with '<', followed by STR, and '>'. */
482
483 static std::string
484 add_angle_brackets (const char *str)
485 {
486 return string_printf ("<%s>", str);
487 }
488
489 /* Assuming V points to an array of S objects, make sure that it contains at
490 least M objects, updating V and S as necessary. */
491
492 #define GROW_VECT(v, s, m) \
493 if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
494
495 /* Assuming VECT points to an array of *SIZE objects of size
496 ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
497 updating *SIZE as necessary and returning the (new) array. */
498
499 static void *
500 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
501 {
502 if (*size < min_size)
503 {
504 *size *= 2;
505 if (*size < min_size)
506 *size = min_size;
507 vect = xrealloc (vect, *size * element_size);
508 }
509 return vect;
510 }
511
512 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
513 suffix of FIELD_NAME beginning "___". */
514
515 static int
516 field_name_match (const char *field_name, const char *target)
517 {
518 int len = strlen (target);
519
520 return
521 (strncmp (field_name, target, len) == 0
522 && (field_name[len] == '\0'
523 || (startswith (field_name + len, "___")
524 && strcmp (field_name + strlen (field_name) - 6,
525 "___XVN") != 0)));
526 }
527
528
529 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
530 a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
531 and return its index. This function also handles fields whose name
532 have ___ suffixes because the compiler sometimes alters their name
533 by adding such a suffix to represent fields with certain constraints.
534 If the field could not be found, return a negative number if
535 MAYBE_MISSING is set. Otherwise raise an error. */
536
537 int
538 ada_get_field_index (const struct type *type, const char *field_name,
539 int maybe_missing)
540 {
541 int fieldno;
542 struct type *struct_type = check_typedef ((struct type *) type);
543
544 for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
545 if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
546 return fieldno;
547
548 if (!maybe_missing)
549 error (_("Unable to find field %s in struct %s. Aborting"),
550 field_name, struct_type->name ());
551
552 return -1;
553 }
554
555 /* The length of the prefix of NAME prior to any "___" suffix. */
556
557 int
558 ada_name_prefix_len (const char *name)
559 {
560 if (name == NULL)
561 return 0;
562 else
563 {
564 const char *p = strstr (name, "___");
565
566 if (p == NULL)
567 return strlen (name);
568 else
569 return p - name;
570 }
571 }
572
573 /* Return non-zero if SUFFIX is a suffix of STR.
574 Return zero if STR is null. */
575
576 static int
577 is_suffix (const char *str, const char *suffix)
578 {
579 int len1, len2;
580
581 if (str == NULL)
582 return 0;
583 len1 = strlen (str);
584 len2 = strlen (suffix);
585 return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
586 }
587
588 /* The contents of value VAL, treated as a value of type TYPE. The
589 result is an lval in memory if VAL is. */
590
591 static struct value *
592 coerce_unspec_val_to_type (struct value *val, struct type *type)
593 {
594 type = ada_check_typedef (type);
595 if (value_type (val) == type)
596 return val;
597 else
598 {
599 struct value *result;
600
601 /* Make sure that the object size is not unreasonable before
602 trying to allocate some memory for it. */
603 ada_ensure_varsize_limit (type);
604
605 if (value_lazy (val)
606 || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
607 result = allocate_value_lazy (type);
608 else
609 {
610 result = allocate_value (type);
611 value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
612 }
613 set_value_component_location (result, val);
614 set_value_bitsize (result, value_bitsize (val));
615 set_value_bitpos (result, value_bitpos (val));
616 if (VALUE_LVAL (result) == lval_memory)
617 set_value_address (result, value_address (val));
618 return result;
619 }
620 }
621
622 static const gdb_byte *
623 cond_offset_host (const gdb_byte *valaddr, long offset)
624 {
625 if (valaddr == NULL)
626 return NULL;
627 else
628 return valaddr + offset;
629 }
630
631 static CORE_ADDR
632 cond_offset_target (CORE_ADDR address, long offset)
633 {
634 if (address == 0)
635 return 0;
636 else
637 return address + offset;
638 }
639
640 /* Issue a warning (as for the definition of warning in utils.c, but
641 with exactly one argument rather than ...), unless the limit on the
642 number of warnings has passed during the evaluation of the current
643 expression. */
644
645 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
646 provided by "complaint". */
647 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
648
649 static void
650 lim_warning (const char *format, ...)
651 {
652 va_list args;
653
654 va_start (args, format);
655 warnings_issued += 1;
656 if (warnings_issued <= warning_limit)
657 vwarning (format, args);
658
659 va_end (args);
660 }
661
662 /* Issue an error if the size of an object of type T is unreasonable,
663 i.e. if it would be a bad idea to allocate a value of this type in
664 GDB. */
665
666 void
667 ada_ensure_varsize_limit (const struct type *type)
668 {
669 if (TYPE_LENGTH (type) > varsize_limit)
670 error (_("object size is larger than varsize-limit"));
671 }
672
673 /* Maximum value of a SIZE-byte signed integer type. */
674 static LONGEST
675 max_of_size (int size)
676 {
677 LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
678
679 return top_bit | (top_bit - 1);
680 }
681
682 /* Minimum value of a SIZE-byte signed integer type. */
683 static LONGEST
684 min_of_size (int size)
685 {
686 return -max_of_size (size) - 1;
687 }
688
689 /* Maximum value of a SIZE-byte unsigned integer type. */
690 static ULONGEST
691 umax_of_size (int size)
692 {
693 ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
694
695 return top_bit | (top_bit - 1);
696 }
697
698 /* Maximum value of integral type T, as a signed quantity. */
699 static LONGEST
700 max_of_type (struct type *t)
701 {
702 if (t->is_unsigned ())
703 return (LONGEST) umax_of_size (TYPE_LENGTH (t));
704 else
705 return max_of_size (TYPE_LENGTH (t));
706 }
707
708 /* Minimum value of integral type T, as a signed quantity. */
709 static LONGEST
710 min_of_type (struct type *t)
711 {
712 if (t->is_unsigned ())
713 return 0;
714 else
715 return min_of_size (TYPE_LENGTH (t));
716 }
717
718 /* The largest value in the domain of TYPE, a discrete type, as an integer. */
719 LONGEST
720 ada_discrete_type_high_bound (struct type *type)
721 {
722 type = resolve_dynamic_type (type, {}, 0);
723 switch (type->code ())
724 {
725 case TYPE_CODE_RANGE:
726 {
727 const dynamic_prop &high = type->bounds ()->high;
728
729 if (high.kind () == PROP_CONST)
730 return high.const_val ();
731 else
732 {
733 gdb_assert (high.kind () == PROP_UNDEFINED);
734
735 /* This happens when trying to evaluate a type's dynamic bound
736 without a live target. There is nothing relevant for us to
737 return here, so return 0. */
738 return 0;
739 }
740 }
741 case TYPE_CODE_ENUM:
742 return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
743 case TYPE_CODE_BOOL:
744 return 1;
745 case TYPE_CODE_CHAR:
746 case TYPE_CODE_INT:
747 return max_of_type (type);
748 default:
749 error (_("Unexpected type in ada_discrete_type_high_bound."));
750 }
751 }
752
753 /* The smallest value in the domain of TYPE, a discrete type, as an integer. */
754 LONGEST
755 ada_discrete_type_low_bound (struct type *type)
756 {
757 type = resolve_dynamic_type (type, {}, 0);
758 switch (type->code ())
759 {
760 case TYPE_CODE_RANGE:
761 {
762 const dynamic_prop &low = type->bounds ()->low;
763
764 if (low.kind () == PROP_CONST)
765 return low.const_val ();
766 else
767 {
768 gdb_assert (low.kind () == PROP_UNDEFINED);
769
770 /* This happens when trying to evaluate a type's dynamic bound
771 without a live target. There is nothing relevant for us to
772 return here, so return 0. */
773 return 0;
774 }
775 }
776 case TYPE_CODE_ENUM:
777 return TYPE_FIELD_ENUMVAL (type, 0);
778 case TYPE_CODE_BOOL:
779 return 0;
780 case TYPE_CODE_CHAR:
781 case TYPE_CODE_INT:
782 return min_of_type (type);
783 default:
784 error (_("Unexpected type in ada_discrete_type_low_bound."));
785 }
786 }
787
788 /* The identity on non-range types. For range types, the underlying
789 non-range scalar type. */
790
791 static struct type *
792 get_base_type (struct type *type)
793 {
794 while (type != NULL && type->code () == TYPE_CODE_RANGE)
795 {
796 if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
797 return type;
798 type = TYPE_TARGET_TYPE (type);
799 }
800 return type;
801 }
802
803 /* Return a decoded version of the given VALUE. This means returning
804 a value whose type is obtained by applying all the GNAT-specific
805 encodings, making the resulting type a static but standard description
806 of the initial type. */
807
808 struct value *
809 ada_get_decoded_value (struct value *value)
810 {
811 struct type *type = ada_check_typedef (value_type (value));
812
813 if (ada_is_array_descriptor_type (type)
814 || (ada_is_constrained_packed_array_type (type)
815 && type->code () != TYPE_CODE_PTR))
816 {
817 if (type->code () == TYPE_CODE_TYPEDEF) /* array access type. */
818 value = ada_coerce_to_simple_array_ptr (value);
819 else
820 value = ada_coerce_to_simple_array (value);
821 }
822 else
823 value = ada_to_fixed_value (value);
824
825 return value;
826 }
827
828 /* Same as ada_get_decoded_value, but with the given TYPE.
829 Because there is no associated actual value for this type,
830 the resulting type might be a best-effort approximation in
831 the case of dynamic types. */
832
833 struct type *
834 ada_get_decoded_type (struct type *type)
835 {
836 type = to_static_fixed_type (type);
837 if (ada_is_constrained_packed_array_type (type))
838 type = ada_coerce_to_simple_array_type (type);
839 return type;
840 }
841
842 \f
843
844 /* Language Selection */
845
846 /* If the main program is in Ada, return language_ada, otherwise return LANG
847 (the main program is in Ada iif the adainit symbol is found). */
848
849 static enum language
850 ada_update_initial_language (enum language lang)
851 {
852 if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
853 return language_ada;
854
855 return lang;
856 }
857
858 /* If the main procedure is written in Ada, then return its name.
859 The result is good until the next call. Return NULL if the main
860 procedure doesn't appear to be in Ada. */
861
862 char *
863 ada_main_name (void)
864 {
865 struct bound_minimal_symbol msym;
866 static gdb::unique_xmalloc_ptr<char> main_program_name;
867
868 /* For Ada, the name of the main procedure is stored in a specific
869 string constant, generated by the binder. Look for that symbol,
870 extract its address, and then read that string. If we didn't find
871 that string, then most probably the main procedure is not written
872 in Ada. */
873 msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
874
875 if (msym.minsym != NULL)
876 {
877 CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
878 if (main_program_name_addr == 0)
879 error (_("Invalid address for Ada main program name."));
880
881 main_program_name = target_read_string (main_program_name_addr, 1024);
882 return main_program_name.get ();
883 }
884
885 /* The main procedure doesn't seem to be in Ada. */
886 return NULL;
887 }
888 \f
889 /* Symbols */
890
891 /* Table of Ada operators and their GNAT-encoded names. Last entry is pair
892 of NULLs. */
893
894 const struct ada_opname_map ada_opname_table[] = {
895 {"Oadd", "\"+\"", BINOP_ADD},
896 {"Osubtract", "\"-\"", BINOP_SUB},
897 {"Omultiply", "\"*\"", BINOP_MUL},
898 {"Odivide", "\"/\"", BINOP_DIV},
899 {"Omod", "\"mod\"", BINOP_MOD},
900 {"Orem", "\"rem\"", BINOP_REM},
901 {"Oexpon", "\"**\"", BINOP_EXP},
902 {"Olt", "\"<\"", BINOP_LESS},
903 {"Ole", "\"<=\"", BINOP_LEQ},
904 {"Ogt", "\">\"", BINOP_GTR},
905 {"Oge", "\">=\"", BINOP_GEQ},
906 {"Oeq", "\"=\"", BINOP_EQUAL},
907 {"One", "\"/=\"", BINOP_NOTEQUAL},
908 {"Oand", "\"and\"", BINOP_BITWISE_AND},
909 {"Oor", "\"or\"", BINOP_BITWISE_IOR},
910 {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
911 {"Oconcat", "\"&\"", BINOP_CONCAT},
912 {"Oabs", "\"abs\"", UNOP_ABS},
913 {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
914 {"Oadd", "\"+\"", UNOP_PLUS},
915 {"Osubtract", "\"-\"", UNOP_NEG},
916 {NULL, NULL}
917 };
918
919 /* The "encoded" form of DECODED, according to GNAT conventions. If
920 THROW_ERRORS, throw an error if invalid operator name is found.
921 Otherwise, return the empty string in that case. */
922
923 static std::string
924 ada_encode_1 (const char *decoded, bool throw_errors)
925 {
926 if (decoded == NULL)
927 return {};
928
929 std::string encoding_buffer;
930 for (const char *p = decoded; *p != '\0'; p += 1)
931 {
932 if (*p == '.')
933 encoding_buffer.append ("__");
934 else if (*p == '"')
935 {
936 const struct ada_opname_map *mapping;
937
938 for (mapping = ada_opname_table;
939 mapping->encoded != NULL
940 && !startswith (p, mapping->decoded); mapping += 1)
941 ;
942 if (mapping->encoded == NULL)
943 {
944 if (throw_errors)
945 error (_("invalid Ada operator name: %s"), p);
946 else
947 return {};
948 }
949 encoding_buffer.append (mapping->encoded);
950 break;
951 }
952 else
953 encoding_buffer.push_back (*p);
954 }
955
956 return encoding_buffer;
957 }
958
959 /* The "encoded" form of DECODED, according to GNAT conventions. */
960
961 std::string
962 ada_encode (const char *decoded)
963 {
964 return ada_encode_1 (decoded, true);
965 }
966
967 /* Return NAME folded to lower case, or, if surrounded by single
968 quotes, unfolded, but with the quotes stripped away. Result good
969 to next call. */
970
971 static char *
972 ada_fold_name (gdb::string_view name)
973 {
974 static char *fold_buffer = NULL;
975 static size_t fold_buffer_size = 0;
976
977 int len = name.size ();
978 GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
979
980 if (name[0] == '\'')
981 {
982 strncpy (fold_buffer, name.data () + 1, len - 2);
983 fold_buffer[len - 2] = '\000';
984 }
985 else
986 {
987 int i;
988
989 for (i = 0; i <= len; i += 1)
990 fold_buffer[i] = tolower (name[i]);
991 }
992
993 return fold_buffer;
994 }
995
996 /* Return nonzero if C is either a digit or a lowercase alphabet character. */
997
998 static int
999 is_lower_alphanum (const char c)
1000 {
1001 return (isdigit (c) || (isalpha (c) && islower (c)));
1002 }
1003
1004 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1005 This function saves in LEN the length of that same symbol name but
1006 without either of these suffixes:
1007 . .{DIGIT}+
1008 . ${DIGIT}+
1009 . ___{DIGIT}+
1010 . __{DIGIT}+.
1011
1012 These are suffixes introduced by the compiler for entities such as
1013 nested subprogram for instance, in order to avoid name clashes.
1014 They do not serve any purpose for the debugger. */
1015
1016 static void
1017 ada_remove_trailing_digits (const char *encoded, int *len)
1018 {
1019 if (*len > 1 && isdigit (encoded[*len - 1]))
1020 {
1021 int i = *len - 2;
1022
1023 while (i > 0 && isdigit (encoded[i]))
1024 i--;
1025 if (i >= 0 && encoded[i] == '.')
1026 *len = i;
1027 else if (i >= 0 && encoded[i] == '$')
1028 *len = i;
1029 else if (i >= 2 && startswith (encoded + i - 2, "___"))
1030 *len = i - 2;
1031 else if (i >= 1 && startswith (encoded + i - 1, "__"))
1032 *len = i - 1;
1033 }
1034 }
1035
1036 /* Remove the suffix introduced by the compiler for protected object
1037 subprograms. */
1038
1039 static void
1040 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1041 {
1042 /* Remove trailing N. */
1043
1044 /* Protected entry subprograms are broken into two
1045 separate subprograms: The first one is unprotected, and has
1046 a 'N' suffix; the second is the protected version, and has
1047 the 'P' suffix. The second calls the first one after handling
1048 the protection. Since the P subprograms are internally generated,
1049 we leave these names undecoded, giving the user a clue that this
1050 entity is internal. */
1051
1052 if (*len > 1
1053 && encoded[*len - 1] == 'N'
1054 && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1055 *len = *len - 1;
1056 }
1057
1058 /* If ENCODED follows the GNAT entity encoding conventions, then return
1059 the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is
1060 replaced by ENCODED. */
1061
1062 std::string
1063 ada_decode (const char *encoded)
1064 {
1065 int i, j;
1066 int len0;
1067 const char *p;
1068 int at_start_name;
1069 std::string decoded;
1070
1071 /* With function descriptors on PPC64, the value of a symbol named
1072 ".FN", if it exists, is the entry point of the function "FN". */
1073 if (encoded[0] == '.')
1074 encoded += 1;
1075
1076 /* The name of the Ada main procedure starts with "_ada_".
1077 This prefix is not part of the decoded name, so skip this part
1078 if we see this prefix. */
1079 if (startswith (encoded, "_ada_"))
1080 encoded += 5;
1081
1082 /* If the name starts with '_', then it is not a properly encoded
1083 name, so do not attempt to decode it. Similarly, if the name
1084 starts with '<', the name should not be decoded. */
1085 if (encoded[0] == '_' || encoded[0] == '<')
1086 goto Suppress;
1087
1088 len0 = strlen (encoded);
1089
1090 ada_remove_trailing_digits (encoded, &len0);
1091 ada_remove_po_subprogram_suffix (encoded, &len0);
1092
1093 /* Remove the ___X.* suffix if present. Do not forget to verify that
1094 the suffix is located before the current "end" of ENCODED. We want
1095 to avoid re-matching parts of ENCODED that have previously been
1096 marked as discarded (by decrementing LEN0). */
1097 p = strstr (encoded, "___");
1098 if (p != NULL && p - encoded < len0 - 3)
1099 {
1100 if (p[3] == 'X')
1101 len0 = p - encoded;
1102 else
1103 goto Suppress;
1104 }
1105
1106 /* Remove any trailing TKB suffix. It tells us that this symbol
1107 is for the body of a task, but that information does not actually
1108 appear in the decoded name. */
1109
1110 if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1111 len0 -= 3;
1112
1113 /* Remove any trailing TB suffix. The TB suffix is slightly different
1114 from the TKB suffix because it is used for non-anonymous task
1115 bodies. */
1116
1117 if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1118 len0 -= 2;
1119
1120 /* Remove trailing "B" suffixes. */
1121 /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */
1122
1123 if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1124 len0 -= 1;
1125
1126 /* Make decoded big enough for possible expansion by operator name. */
1127
1128 decoded.resize (2 * len0 + 1, 'X');
1129
1130 /* Remove trailing __{digit}+ or trailing ${digit}+. */
1131
1132 if (len0 > 1 && isdigit (encoded[len0 - 1]))
1133 {
1134 i = len0 - 2;
1135 while ((i >= 0 && isdigit (encoded[i]))
1136 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1137 i -= 1;
1138 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1139 len0 = i - 1;
1140 else if (encoded[i] == '$')
1141 len0 = i;
1142 }
1143
1144 /* The first few characters that are not alphabetic are not part
1145 of any encoding we use, so we can copy them over verbatim. */
1146
1147 for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1148 decoded[j] = encoded[i];
1149
1150 at_start_name = 1;
1151 while (i < len0)
1152 {
1153 /* Is this a symbol function? */
1154 if (at_start_name && encoded[i] == 'O')
1155 {
1156 int k;
1157
1158 for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1159 {
1160 int op_len = strlen (ada_opname_table[k].encoded);
1161 if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1162 op_len - 1) == 0)
1163 && !isalnum (encoded[i + op_len]))
1164 {
1165 strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1166 at_start_name = 0;
1167 i += op_len;
1168 j += strlen (ada_opname_table[k].decoded);
1169 break;
1170 }
1171 }
1172 if (ada_opname_table[k].encoded != NULL)
1173 continue;
1174 }
1175 at_start_name = 0;
1176
1177 /* Replace "TK__" with "__", which will eventually be translated
1178 into "." (just below). */
1179
1180 if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1181 i += 2;
1182
1183 /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1184 be translated into "." (just below). These are internal names
1185 generated for anonymous blocks inside which our symbol is nested. */
1186
1187 if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1188 && encoded [i+2] == 'B' && encoded [i+3] == '_'
1189 && isdigit (encoded [i+4]))
1190 {
1191 int k = i + 5;
1192
1193 while (k < len0 && isdigit (encoded[k]))
1194 k++; /* Skip any extra digit. */
1195
1196 /* Double-check that the "__B_{DIGITS}+" sequence we found
1197 is indeed followed by "__". */
1198 if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1199 i = k;
1200 }
1201
1202 /* Remove _E{DIGITS}+[sb] */
1203
1204 /* Just as for protected object subprograms, there are 2 categories
1205 of subprograms created by the compiler for each entry. The first
1206 one implements the actual entry code, and has a suffix following
1207 the convention above; the second one implements the barrier and
1208 uses the same convention as above, except that the 'E' is replaced
1209 by a 'B'.
1210
1211 Just as above, we do not decode the name of barrier functions
1212 to give the user a clue that the code he is debugging has been
1213 internally generated. */
1214
1215 if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1216 && isdigit (encoded[i+2]))
1217 {
1218 int k = i + 3;
1219
1220 while (k < len0 && isdigit (encoded[k]))
1221 k++;
1222
1223 if (k < len0
1224 && (encoded[k] == 'b' || encoded[k] == 's'))
1225 {
1226 k++;
1227 /* Just as an extra precaution, make sure that if this
1228 suffix is followed by anything else, it is a '_'.
1229 Otherwise, we matched this sequence by accident. */
1230 if (k == len0
1231 || (k < len0 && encoded[k] == '_'))
1232 i = k;
1233 }
1234 }
1235
1236 /* Remove trailing "N" in [a-z0-9]+N__. The N is added by
1237 the GNAT front-end in protected object subprograms. */
1238
1239 if (i < len0 + 3
1240 && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1241 {
1242 /* Backtrack a bit up until we reach either the begining of
1243 the encoded name, or "__". Make sure that we only find
1244 digits or lowercase characters. */
1245 const char *ptr = encoded + i - 1;
1246
1247 while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1248 ptr--;
1249 if (ptr < encoded
1250 || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1251 i++;
1252 }
1253
1254 if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1255 {
1256 /* This is a X[bn]* sequence not separated from the previous
1257 part of the name with a non-alpha-numeric character (in other
1258 words, immediately following an alpha-numeric character), then
1259 verify that it is placed at the end of the encoded name. If
1260 not, then the encoding is not valid and we should abort the
1261 decoding. Otherwise, just skip it, it is used in body-nested
1262 package names. */
1263 do
1264 i += 1;
1265 while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1266 if (i < len0)
1267 goto Suppress;
1268 }
1269 else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1270 {
1271 /* Replace '__' by '.'. */
1272 decoded[j] = '.';
1273 at_start_name = 1;
1274 i += 2;
1275 j += 1;
1276 }
1277 else
1278 {
1279 /* It's a character part of the decoded name, so just copy it
1280 over. */
1281 decoded[j] = encoded[i];
1282 i += 1;
1283 j += 1;
1284 }
1285 }
1286 decoded.resize (j);
1287
1288 /* Decoded names should never contain any uppercase character.
1289 Double-check this, and abort the decoding if we find one. */
1290
1291 for (i = 0; i < decoded.length(); ++i)
1292 if (isupper (decoded[i]) || decoded[i] == ' ')
1293 goto Suppress;
1294
1295 return decoded;
1296
1297 Suppress:
1298 if (encoded[0] == '<')
1299 decoded = encoded;
1300 else
1301 decoded = '<' + std::string(encoded) + '>';
1302 return decoded;
1303
1304 }
1305
1306 /* Table for keeping permanent unique copies of decoded names. Once
1307 allocated, names in this table are never released. While this is a
1308 storage leak, it should not be significant unless there are massive
1309 changes in the set of decoded names in successive versions of a
1310 symbol table loaded during a single session. */
1311 static struct htab *decoded_names_store;
1312
1313 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1314 in the language-specific part of GSYMBOL, if it has not been
1315 previously computed. Tries to save the decoded name in the same
1316 obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1317 in any case, the decoded symbol has a lifetime at least that of
1318 GSYMBOL).
1319 The GSYMBOL parameter is "mutable" in the C++ sense: logically
1320 const, but nevertheless modified to a semantically equivalent form
1321 when a decoded name is cached in it. */
1322
1323 const char *
1324 ada_decode_symbol (const struct general_symbol_info *arg)
1325 {
1326 struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1327 const char **resultp =
1328 &gsymbol->language_specific.demangled_name;
1329
1330 if (!gsymbol->ada_mangled)
1331 {
1332 std::string decoded = ada_decode (gsymbol->linkage_name ());
1333 struct obstack *obstack = gsymbol->language_specific.obstack;
1334
1335 gsymbol->ada_mangled = 1;
1336
1337 if (obstack != NULL)
1338 *resultp = obstack_strdup (obstack, decoded.c_str ());
1339 else
1340 {
1341 /* Sometimes, we can't find a corresponding objfile, in
1342 which case, we put the result on the heap. Since we only
1343 decode when needed, we hope this usually does not cause a
1344 significant memory leak (FIXME). */
1345
1346 char **slot = (char **) htab_find_slot (decoded_names_store,
1347 decoded.c_str (), INSERT);
1348
1349 if (*slot == NULL)
1350 *slot = xstrdup (decoded.c_str ());
1351 *resultp = *slot;
1352 }
1353 }
1354
1355 return *resultp;
1356 }
1357
1358 static char *
1359 ada_la_decode (const char *encoded, int options)
1360 {
1361 return xstrdup (ada_decode (encoded).c_str ());
1362 }
1363
1364 \f
1365
1366 /* Arrays */
1367
1368 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1369 generated by the GNAT compiler to describe the index type used
1370 for each dimension of an array, check whether it follows the latest
1371 known encoding. If not, fix it up to conform to the latest encoding.
1372 Otherwise, do nothing. This function also does nothing if
1373 INDEX_DESC_TYPE is NULL.
1374
1375 The GNAT encoding used to describe the array index type evolved a bit.
1376 Initially, the information would be provided through the name of each
1377 field of the structure type only, while the type of these fields was
1378 described as unspecified and irrelevant. The debugger was then expected
1379 to perform a global type lookup using the name of that field in order
1380 to get access to the full index type description. Because these global
1381 lookups can be very expensive, the encoding was later enhanced to make
1382 the global lookup unnecessary by defining the field type as being
1383 the full index type description.
1384
1385 The purpose of this routine is to allow us to support older versions
1386 of the compiler by detecting the use of the older encoding, and by
1387 fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1388 we essentially replace each field's meaningless type by the associated
1389 index subtype). */
1390
1391 void
1392 ada_fixup_array_indexes_type (struct type *index_desc_type)
1393 {
1394 int i;
1395
1396 if (index_desc_type == NULL)
1397 return;
1398 gdb_assert (index_desc_type->num_fields () > 0);
1399
1400 /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1401 to check one field only, no need to check them all). If not, return
1402 now.
1403
1404 If our INDEX_DESC_TYPE was generated using the older encoding,
1405 the field type should be a meaningless integer type whose name
1406 is not equal to the field name. */
1407 if (index_desc_type->field (0).type ()->name () != NULL
1408 && strcmp (index_desc_type->field (0).type ()->name (),
1409 TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1410 return;
1411
1412 /* Fixup each field of INDEX_DESC_TYPE. */
1413 for (i = 0; i < index_desc_type->num_fields (); i++)
1414 {
1415 const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1416 struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1417
1418 if (raw_type)
1419 index_desc_type->field (i).set_type (raw_type);
1420 }
1421 }
1422
1423 /* The desc_* routines return primitive portions of array descriptors
1424 (fat pointers). */
1425
1426 /* The descriptor or array type, if any, indicated by TYPE; removes
1427 level of indirection, if needed. */
1428
1429 static struct type *
1430 desc_base_type (struct type *type)
1431 {
1432 if (type == NULL)
1433 return NULL;
1434 type = ada_check_typedef (type);
1435 if (type->code () == TYPE_CODE_TYPEDEF)
1436 type = ada_typedef_target_type (type);
1437
1438 if (type != NULL
1439 && (type->code () == TYPE_CODE_PTR
1440 || type->code () == TYPE_CODE_REF))
1441 return ada_check_typedef (TYPE_TARGET_TYPE (type));
1442 else
1443 return type;
1444 }
1445
1446 /* True iff TYPE indicates a "thin" array pointer type. */
1447
1448 static int
1449 is_thin_pntr (struct type *type)
1450 {
1451 return
1452 is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1453 || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1454 }
1455
1456 /* The descriptor type for thin pointer type TYPE. */
1457
1458 static struct type *
1459 thin_descriptor_type (struct type *type)
1460 {
1461 struct type *base_type = desc_base_type (type);
1462
1463 if (base_type == NULL)
1464 return NULL;
1465 if (is_suffix (ada_type_name (base_type), "___XVE"))
1466 return base_type;
1467 else
1468 {
1469 struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1470
1471 if (alt_type == NULL)
1472 return base_type;
1473 else
1474 return alt_type;
1475 }
1476 }
1477
1478 /* A pointer to the array data for thin-pointer value VAL. */
1479
1480 static struct value *
1481 thin_data_pntr (struct value *val)
1482 {
1483 struct type *type = ada_check_typedef (value_type (val));
1484 struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1485
1486 data_type = lookup_pointer_type (data_type);
1487
1488 if (type->code () == TYPE_CODE_PTR)
1489 return value_cast (data_type, value_copy (val));
1490 else
1491 return value_from_longest (data_type, value_address (val));
1492 }
1493
1494 /* True iff TYPE indicates a "thick" array pointer type. */
1495
1496 static int
1497 is_thick_pntr (struct type *type)
1498 {
1499 type = desc_base_type (type);
1500 return (type != NULL && type->code () == TYPE_CODE_STRUCT
1501 && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1502 }
1503
1504 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1505 pointer to one, the type of its bounds data; otherwise, NULL. */
1506
1507 static struct type *
1508 desc_bounds_type (struct type *type)
1509 {
1510 struct type *r;
1511
1512 type = desc_base_type (type);
1513
1514 if (type == NULL)
1515 return NULL;
1516 else if (is_thin_pntr (type))
1517 {
1518 type = thin_descriptor_type (type);
1519 if (type == NULL)
1520 return NULL;
1521 r = lookup_struct_elt_type (type, "BOUNDS", 1);
1522 if (r != NULL)
1523 return ada_check_typedef (r);
1524 }
1525 else if (type->code () == TYPE_CODE_STRUCT)
1526 {
1527 r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1528 if (r != NULL)
1529 return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1530 }
1531 return NULL;
1532 }
1533
1534 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1535 one, a pointer to its bounds data. Otherwise NULL. */
1536
1537 static struct value *
1538 desc_bounds (struct value *arr)
1539 {
1540 struct type *type = ada_check_typedef (value_type (arr));
1541
1542 if (is_thin_pntr (type))
1543 {
1544 struct type *bounds_type =
1545 desc_bounds_type (thin_descriptor_type (type));
1546 LONGEST addr;
1547
1548 if (bounds_type == NULL)
1549 error (_("Bad GNAT array descriptor"));
1550
1551 /* NOTE: The following calculation is not really kosher, but
1552 since desc_type is an XVE-encoded type (and shouldn't be),
1553 the correct calculation is a real pain. FIXME (and fix GCC). */
1554 if (type->code () == TYPE_CODE_PTR)
1555 addr = value_as_long (arr);
1556 else
1557 addr = value_address (arr);
1558
1559 return
1560 value_from_longest (lookup_pointer_type (bounds_type),
1561 addr - TYPE_LENGTH (bounds_type));
1562 }
1563
1564 else if (is_thick_pntr (type))
1565 {
1566 struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1567 _("Bad GNAT array descriptor"));
1568 struct type *p_bounds_type = value_type (p_bounds);
1569
1570 if (p_bounds_type
1571 && p_bounds_type->code () == TYPE_CODE_PTR)
1572 {
1573 struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1574
1575 if (target_type->is_stub ())
1576 p_bounds = value_cast (lookup_pointer_type
1577 (ada_check_typedef (target_type)),
1578 p_bounds);
1579 }
1580 else
1581 error (_("Bad GNAT array descriptor"));
1582
1583 return p_bounds;
1584 }
1585 else
1586 return NULL;
1587 }
1588
1589 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1590 position of the field containing the address of the bounds data. */
1591
1592 static int
1593 fat_pntr_bounds_bitpos (struct type *type)
1594 {
1595 return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1596 }
1597
1598 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1599 size of the field containing the address of the bounds data. */
1600
1601 static int
1602 fat_pntr_bounds_bitsize (struct type *type)
1603 {
1604 type = desc_base_type (type);
1605
1606 if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1607 return TYPE_FIELD_BITSIZE (type, 1);
1608 else
1609 return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
1610 }
1611
1612 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1613 pointer to one, the type of its array data (a array-with-no-bounds type);
1614 otherwise, NULL. Use ada_type_of_array to get an array type with bounds
1615 data. */
1616
1617 static struct type *
1618 desc_data_target_type (struct type *type)
1619 {
1620 type = desc_base_type (type);
1621
1622 /* NOTE: The following is bogus; see comment in desc_bounds. */
1623 if (is_thin_pntr (type))
1624 return desc_base_type (thin_descriptor_type (type)->field (1).type ());
1625 else if (is_thick_pntr (type))
1626 {
1627 struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1628
1629 if (data_type
1630 && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1631 return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1632 }
1633
1634 return NULL;
1635 }
1636
1637 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1638 its array data. */
1639
1640 static struct value *
1641 desc_data (struct value *arr)
1642 {
1643 struct type *type = value_type (arr);
1644
1645 if (is_thin_pntr (type))
1646 return thin_data_pntr (arr);
1647 else if (is_thick_pntr (type))
1648 return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1649 _("Bad GNAT array descriptor"));
1650 else
1651 return NULL;
1652 }
1653
1654
1655 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1656 position of the field containing the address of the data. */
1657
1658 static int
1659 fat_pntr_data_bitpos (struct type *type)
1660 {
1661 return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1662 }
1663
1664 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1665 size of the field containing the address of the data. */
1666
1667 static int
1668 fat_pntr_data_bitsize (struct type *type)
1669 {
1670 type = desc_base_type (type);
1671
1672 if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1673 return TYPE_FIELD_BITSIZE (type, 0);
1674 else
1675 return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
1676 }
1677
1678 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1679 the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1680 bound, if WHICH is 1. The first bound is I=1. */
1681
1682 static struct value *
1683 desc_one_bound (struct value *bounds, int i, int which)
1684 {
1685 char bound_name[20];
1686 xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1687 which ? 'U' : 'L', i - 1);
1688 return value_struct_elt (&bounds, NULL, bound_name, NULL,
1689 _("Bad GNAT array descriptor bounds"));
1690 }
1691
1692 /* If BOUNDS is an array-bounds structure type, return the bit position
1693 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1694 bound, if WHICH is 1. The first bound is I=1. */
1695
1696 static int
1697 desc_bound_bitpos (struct type *type, int i, int which)
1698 {
1699 return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1700 }
1701
1702 /* If BOUNDS is an array-bounds structure type, return the bit field size
1703 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1704 bound, if WHICH is 1. The first bound is I=1. */
1705
1706 static int
1707 desc_bound_bitsize (struct type *type, int i, int which)
1708 {
1709 type = desc_base_type (type);
1710
1711 if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1712 return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1713 else
1714 return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
1715 }
1716
1717 /* If TYPE is the type of an array-bounds structure, the type of its
1718 Ith bound (numbering from 1). Otherwise, NULL. */
1719
1720 static struct type *
1721 desc_index_type (struct type *type, int i)
1722 {
1723 type = desc_base_type (type);
1724
1725 if (type->code () == TYPE_CODE_STRUCT)
1726 {
1727 char bound_name[20];
1728 xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1729 return lookup_struct_elt_type (type, bound_name, 1);
1730 }
1731 else
1732 return NULL;
1733 }
1734
1735 /* The number of index positions in the array-bounds type TYPE.
1736 Return 0 if TYPE is NULL. */
1737
1738 static int
1739 desc_arity (struct type *type)
1740 {
1741 type = desc_base_type (type);
1742
1743 if (type != NULL)
1744 return type->num_fields () / 2;
1745 return 0;
1746 }
1747
1748 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or
1749 an array descriptor type (representing an unconstrained array
1750 type). */
1751
1752 static int
1753 ada_is_direct_array_type (struct type *type)
1754 {
1755 if (type == NULL)
1756 return 0;
1757 type = ada_check_typedef (type);
1758 return (type->code () == TYPE_CODE_ARRAY
1759 || ada_is_array_descriptor_type (type));
1760 }
1761
1762 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1763 * to one. */
1764
1765 static int
1766 ada_is_array_type (struct type *type)
1767 {
1768 while (type != NULL
1769 && (type->code () == TYPE_CODE_PTR
1770 || type->code () == TYPE_CODE_REF))
1771 type = TYPE_TARGET_TYPE (type);
1772 return ada_is_direct_array_type (type);
1773 }
1774
1775 /* Non-zero iff TYPE is a simple array type or pointer to one. */
1776
1777 int
1778 ada_is_simple_array_type (struct type *type)
1779 {
1780 if (type == NULL)
1781 return 0;
1782 type = ada_check_typedef (type);
1783 return (type->code () == TYPE_CODE_ARRAY
1784 || (type->code () == TYPE_CODE_PTR
1785 && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1786 == TYPE_CODE_ARRAY)));
1787 }
1788
1789 /* Non-zero iff TYPE belongs to a GNAT array descriptor. */
1790
1791 int
1792 ada_is_array_descriptor_type (struct type *type)
1793 {
1794 struct type *data_type = desc_data_target_type (type);
1795
1796 if (type == NULL)
1797 return 0;
1798 type = ada_check_typedef (type);
1799 return (data_type != NULL
1800 && data_type->code () == TYPE_CODE_ARRAY
1801 && desc_arity (desc_bounds_type (type)) > 0);
1802 }
1803
1804 /* Non-zero iff type is a partially mal-formed GNAT array
1805 descriptor. FIXME: This is to compensate for some problems with
1806 debugging output from GNAT. Re-examine periodically to see if it
1807 is still needed. */
1808
1809 int
1810 ada_is_bogus_array_descriptor (struct type *type)
1811 {
1812 return
1813 type != NULL
1814 && type->code () == TYPE_CODE_STRUCT
1815 && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1816 || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1817 && !ada_is_array_descriptor_type (type);
1818 }
1819
1820
1821 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1822 (fat pointer) returns the type of the array data described---specifically,
1823 a pointer-to-array type. If BOUNDS is non-zero, the bounds data are filled
1824 in from the descriptor; otherwise, they are left unspecified. If
1825 the ARR denotes a null array descriptor and BOUNDS is non-zero,
1826 returns NULL. The result is simply the type of ARR if ARR is not
1827 a descriptor. */
1828
1829 static struct type *
1830 ada_type_of_array (struct value *arr, int bounds)
1831 {
1832 if (ada_is_constrained_packed_array_type (value_type (arr)))
1833 return decode_constrained_packed_array_type (value_type (arr));
1834
1835 if (!ada_is_array_descriptor_type (value_type (arr)))
1836 return value_type (arr);
1837
1838 if (!bounds)
1839 {
1840 struct type *array_type =
1841 ada_check_typedef (desc_data_target_type (value_type (arr)));
1842
1843 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1844 TYPE_FIELD_BITSIZE (array_type, 0) =
1845 decode_packed_array_bitsize (value_type (arr));
1846
1847 return array_type;
1848 }
1849 else
1850 {
1851 struct type *elt_type;
1852 int arity;
1853 struct value *descriptor;
1854
1855 elt_type = ada_array_element_type (value_type (arr), -1);
1856 arity = ada_array_arity (value_type (arr));
1857
1858 if (elt_type == NULL || arity == 0)
1859 return ada_check_typedef (value_type (arr));
1860
1861 descriptor = desc_bounds (arr);
1862 if (value_as_long (descriptor) == 0)
1863 return NULL;
1864 while (arity > 0)
1865 {
1866 struct type *range_type = alloc_type_copy (value_type (arr));
1867 struct type *array_type = alloc_type_copy (value_type (arr));
1868 struct value *low = desc_one_bound (descriptor, arity, 0);
1869 struct value *high = desc_one_bound (descriptor, arity, 1);
1870
1871 arity -= 1;
1872 create_static_range_type (range_type, value_type (low),
1873 longest_to_int (value_as_long (low)),
1874 longest_to_int (value_as_long (high)));
1875 elt_type = create_array_type (array_type, elt_type, range_type);
1876
1877 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1878 {
1879 /* We need to store the element packed bitsize, as well as
1880 recompute the array size, because it was previously
1881 computed based on the unpacked element size. */
1882 LONGEST lo = value_as_long (low);
1883 LONGEST hi = value_as_long (high);
1884
1885 TYPE_FIELD_BITSIZE (elt_type, 0) =
1886 decode_packed_array_bitsize (value_type (arr));
1887 /* If the array has no element, then the size is already
1888 zero, and does not need to be recomputed. */
1889 if (lo < hi)
1890 {
1891 int array_bitsize =
1892 (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1893
1894 TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1895 }
1896 }
1897 }
1898
1899 return lookup_pointer_type (elt_type);
1900 }
1901 }
1902
1903 /* If ARR does not represent an array, returns ARR unchanged.
1904 Otherwise, returns either a standard GDB array with bounds set
1905 appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1906 GDB array. Returns NULL if ARR is a null fat pointer. */
1907
1908 struct value *
1909 ada_coerce_to_simple_array_ptr (struct value *arr)
1910 {
1911 if (ada_is_array_descriptor_type (value_type (arr)))
1912 {
1913 struct type *arrType = ada_type_of_array (arr, 1);
1914
1915 if (arrType == NULL)
1916 return NULL;
1917 return value_cast (arrType, value_copy (desc_data (arr)));
1918 }
1919 else if (ada_is_constrained_packed_array_type (value_type (arr)))
1920 return decode_constrained_packed_array (arr);
1921 else
1922 return arr;
1923 }
1924
1925 /* If ARR does not represent an array, returns ARR unchanged.
1926 Otherwise, returns a standard GDB array describing ARR (which may
1927 be ARR itself if it already is in the proper form). */
1928
1929 struct value *
1930 ada_coerce_to_simple_array (struct value *arr)
1931 {
1932 if (ada_is_array_descriptor_type (value_type (arr)))
1933 {
1934 struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1935
1936 if (arrVal == NULL)
1937 error (_("Bounds unavailable for null array pointer."));
1938 ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1939 return value_ind (arrVal);
1940 }
1941 else if (ada_is_constrained_packed_array_type (value_type (arr)))
1942 return decode_constrained_packed_array (arr);
1943 else
1944 return arr;
1945 }
1946
1947 /* If TYPE represents a GNAT array type, return it translated to an
1948 ordinary GDB array type (possibly with BITSIZE fields indicating
1949 packing). For other types, is the identity. */
1950
1951 struct type *
1952 ada_coerce_to_simple_array_type (struct type *type)
1953 {
1954 if (ada_is_constrained_packed_array_type (type))
1955 return decode_constrained_packed_array_type (type);
1956
1957 if (ada_is_array_descriptor_type (type))
1958 return ada_check_typedef (desc_data_target_type (type));
1959
1960 return type;
1961 }
1962
1963 /* Non-zero iff TYPE represents a standard GNAT packed-array type. */
1964
1965 static int
1966 ada_is_gnat_encoded_packed_array_type (struct type *type)
1967 {
1968 if (type == NULL)
1969 return 0;
1970 type = desc_base_type (type);
1971 type = ada_check_typedef (type);
1972 return
1973 ada_type_name (type) != NULL
1974 && strstr (ada_type_name (type), "___XP") != NULL;
1975 }
1976
1977 /* Non-zero iff TYPE represents a standard GNAT constrained
1978 packed-array type. */
1979
1980 int
1981 ada_is_constrained_packed_array_type (struct type *type)
1982 {
1983 return ada_is_gnat_encoded_packed_array_type (type)
1984 && !ada_is_array_descriptor_type (type);
1985 }
1986
1987 /* Non-zero iff TYPE represents an array descriptor for a
1988 unconstrained packed-array type. */
1989
1990 static int
1991 ada_is_unconstrained_packed_array_type (struct type *type)
1992 {
1993 if (!ada_is_array_descriptor_type (type))
1994 return 0;
1995
1996 if (ada_is_gnat_encoded_packed_array_type (type))
1997 return 1;
1998
1999 /* If we saw GNAT encodings, then the above code is sufficient.
2000 However, with minimal encodings, we will just have a thick
2001 pointer instead. */
2002 if (is_thick_pntr (type))
2003 {
2004 type = desc_base_type (type);
2005 /* The structure's first field is a pointer to an array, so this
2006 fetches the array type. */
2007 type = TYPE_TARGET_TYPE (type->field (0).type ());
2008 /* Now we can see if the array elements are packed. */
2009 return TYPE_FIELD_BITSIZE (type, 0) > 0;
2010 }
2011
2012 return 0;
2013 }
2014
2015 /* Return true if TYPE is a (Gnat-encoded) constrained packed array
2016 type, or if it is an ordinary (non-Gnat-encoded) packed array. */
2017
2018 static bool
2019 ada_is_any_packed_array_type (struct type *type)
2020 {
2021 return (ada_is_constrained_packed_array_type (type)
2022 || (type->code () == TYPE_CODE_ARRAY
2023 && TYPE_FIELD_BITSIZE (type, 0) % 8 != 0));
2024 }
2025
2026 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2027 return the size of its elements in bits. */
2028
2029 static long
2030 decode_packed_array_bitsize (struct type *type)
2031 {
2032 const char *raw_name;
2033 const char *tail;
2034 long bits;
2035
2036 /* Access to arrays implemented as fat pointers are encoded as a typedef
2037 of the fat pointer type. We need the name of the fat pointer type
2038 to do the decoding, so strip the typedef layer. */
2039 if (type->code () == TYPE_CODE_TYPEDEF)
2040 type = ada_typedef_target_type (type);
2041
2042 raw_name = ada_type_name (ada_check_typedef (type));
2043 if (!raw_name)
2044 raw_name = ada_type_name (desc_base_type (type));
2045
2046 if (!raw_name)
2047 return 0;
2048
2049 tail = strstr (raw_name, "___XP");
2050 if (tail == nullptr)
2051 {
2052 gdb_assert (is_thick_pntr (type));
2053 /* The structure's first field is a pointer to an array, so this
2054 fetches the array type. */
2055 type = TYPE_TARGET_TYPE (type->field (0).type ());
2056 /* Now we can see if the array elements are packed. */
2057 return TYPE_FIELD_BITSIZE (type, 0);
2058 }
2059
2060 if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2061 {
2062 lim_warning
2063 (_("could not understand bit size information on packed array"));
2064 return 0;
2065 }
2066
2067 return bits;
2068 }
2069
2070 /* Given that TYPE is a standard GDB array type with all bounds filled
2071 in, and that the element size of its ultimate scalar constituents
2072 (that is, either its elements, or, if it is an array of arrays, its
2073 elements' elements, etc.) is *ELT_BITS, return an identical type,
2074 but with the bit sizes of its elements (and those of any
2075 constituent arrays) recorded in the BITSIZE components of its
2076 TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2077 in bits.
2078
2079 Note that, for arrays whose index type has an XA encoding where
2080 a bound references a record discriminant, getting that discriminant,
2081 and therefore the actual value of that bound, is not possible
2082 because none of the given parameters gives us access to the record.
2083 This function assumes that it is OK in the context where it is being
2084 used to return an array whose bounds are still dynamic and where
2085 the length is arbitrary. */
2086
2087 static struct type *
2088 constrained_packed_array_type (struct type *type, long *elt_bits)
2089 {
2090 struct type *new_elt_type;
2091 struct type *new_type;
2092 struct type *index_type_desc;
2093 struct type *index_type;
2094 LONGEST low_bound, high_bound;
2095
2096 type = ada_check_typedef (type);
2097 if (type->code () != TYPE_CODE_ARRAY)
2098 return type;
2099
2100 index_type_desc = ada_find_parallel_type (type, "___XA");
2101 if (index_type_desc)
2102 index_type = to_fixed_range_type (index_type_desc->field (0).type (),
2103 NULL);
2104 else
2105 index_type = type->index_type ();
2106
2107 new_type = alloc_type_copy (type);
2108 new_elt_type =
2109 constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2110 elt_bits);
2111 create_array_type (new_type, new_elt_type, index_type);
2112 TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2113 new_type->set_name (ada_type_name (type));
2114
2115 if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2116 && is_dynamic_type (check_typedef (index_type)))
2117 || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2118 low_bound = high_bound = 0;
2119 if (high_bound < low_bound)
2120 *elt_bits = TYPE_LENGTH (new_type) = 0;
2121 else
2122 {
2123 *elt_bits *= (high_bound - low_bound + 1);
2124 TYPE_LENGTH (new_type) =
2125 (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2126 }
2127
2128 new_type->set_is_fixed_instance (true);
2129 return new_type;
2130 }
2131
2132 /* The array type encoded by TYPE, where
2133 ada_is_constrained_packed_array_type (TYPE). */
2134
2135 static struct type *
2136 decode_constrained_packed_array_type (struct type *type)
2137 {
2138 const char *raw_name = ada_type_name (ada_check_typedef (type));
2139 char *name;
2140 const char *tail;
2141 struct type *shadow_type;
2142 long bits;
2143
2144 if (!raw_name)
2145 raw_name = ada_type_name (desc_base_type (type));
2146
2147 if (!raw_name)
2148 return NULL;
2149
2150 name = (char *) alloca (strlen (raw_name) + 1);
2151 tail = strstr (raw_name, "___XP");
2152 type = desc_base_type (type);
2153
2154 memcpy (name, raw_name, tail - raw_name);
2155 name[tail - raw_name] = '\000';
2156
2157 shadow_type = ada_find_parallel_type_with_name (type, name);
2158
2159 if (shadow_type == NULL)
2160 {
2161 lim_warning (_("could not find bounds information on packed array"));
2162 return NULL;
2163 }
2164 shadow_type = check_typedef (shadow_type);
2165
2166 if (shadow_type->code () != TYPE_CODE_ARRAY)
2167 {
2168 lim_warning (_("could not understand bounds "
2169 "information on packed array"));
2170 return NULL;
2171 }
2172
2173 bits = decode_packed_array_bitsize (type);
2174 return constrained_packed_array_type (shadow_type, &bits);
2175 }
2176
2177 /* Helper function for decode_constrained_packed_array. Set the field
2178 bitsize on a series of packed arrays. Returns the number of
2179 elements in TYPE. */
2180
2181 static LONGEST
2182 recursively_update_array_bitsize (struct type *type)
2183 {
2184 gdb_assert (type->code () == TYPE_CODE_ARRAY);
2185
2186 LONGEST low, high;
2187 if (get_discrete_bounds (type->index_type (), &low, &high) < 0
2188 || low > high)
2189 return 0;
2190 LONGEST our_len = high - low + 1;
2191
2192 struct type *elt_type = TYPE_TARGET_TYPE (type);
2193 if (elt_type->code () == TYPE_CODE_ARRAY)
2194 {
2195 LONGEST elt_len = recursively_update_array_bitsize (elt_type);
2196 LONGEST elt_bitsize = elt_len * TYPE_FIELD_BITSIZE (elt_type, 0);
2197 TYPE_FIELD_BITSIZE (type, 0) = elt_bitsize;
2198
2199 TYPE_LENGTH (type) = ((our_len * elt_bitsize + HOST_CHAR_BIT - 1)
2200 / HOST_CHAR_BIT);
2201 }
2202
2203 return our_len;
2204 }
2205
2206 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2207 array, returns a simple array that denotes that array. Its type is a
2208 standard GDB array type except that the BITSIZEs of the array
2209 target types are set to the number of bits in each element, and the
2210 type length is set appropriately. */
2211
2212 static struct value *
2213 decode_constrained_packed_array (struct value *arr)
2214 {
2215 struct type *type;
2216
2217 /* If our value is a pointer, then dereference it. Likewise if
2218 the value is a reference. Make sure that this operation does not
2219 cause the target type to be fixed, as this would indirectly cause
2220 this array to be decoded. The rest of the routine assumes that
2221 the array hasn't been decoded yet, so we use the basic "coerce_ref"
2222 and "value_ind" routines to perform the dereferencing, as opposed
2223 to using "ada_coerce_ref" or "ada_value_ind". */
2224 arr = coerce_ref (arr);
2225 if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2226 arr = value_ind (arr);
2227
2228 type = decode_constrained_packed_array_type (value_type (arr));
2229 if (type == NULL)
2230 {
2231 error (_("can't unpack array"));
2232 return NULL;
2233 }
2234
2235 /* Decoding the packed array type could not correctly set the field
2236 bitsizes for any dimension except the innermost, because the
2237 bounds may be variable and were not passed to that function. So,
2238 we further resolve the array bounds here and then update the
2239 sizes. */
2240 const gdb_byte *valaddr = value_contents_for_printing (arr);
2241 CORE_ADDR address = value_address (arr);
2242 gdb::array_view<const gdb_byte> view
2243 = gdb::make_array_view (valaddr, TYPE_LENGTH (type));
2244 type = resolve_dynamic_type (type, view, address);
2245 recursively_update_array_bitsize (type);
2246
2247 if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2248 && ada_is_modular_type (value_type (arr)))
2249 {
2250 /* This is a (right-justified) modular type representing a packed
2251 array with no wrapper. In order to interpret the value through
2252 the (left-justified) packed array type we just built, we must
2253 first left-justify it. */
2254 int bit_size, bit_pos;
2255 ULONGEST mod;
2256
2257 mod = ada_modulus (value_type (arr)) - 1;
2258 bit_size = 0;
2259 while (mod > 0)
2260 {
2261 bit_size += 1;
2262 mod >>= 1;
2263 }
2264 bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2265 arr = ada_value_primitive_packed_val (arr, NULL,
2266 bit_pos / HOST_CHAR_BIT,
2267 bit_pos % HOST_CHAR_BIT,
2268 bit_size,
2269 type);
2270 }
2271
2272 return coerce_unspec_val_to_type (arr, type);
2273 }
2274
2275
2276 /* The value of the element of packed array ARR at the ARITY indices
2277 given in IND. ARR must be a simple array. */
2278
2279 static struct value *
2280 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2281 {
2282 int i;
2283 int bits, elt_off, bit_off;
2284 long elt_total_bit_offset;
2285 struct type *elt_type;
2286 struct value *v;
2287
2288 bits = 0;
2289 elt_total_bit_offset = 0;
2290 elt_type = ada_check_typedef (value_type (arr));
2291 for (i = 0; i < arity; i += 1)
2292 {
2293 if (elt_type->code () != TYPE_CODE_ARRAY
2294 || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2295 error
2296 (_("attempt to do packed indexing of "
2297 "something other than a packed array"));
2298 else
2299 {
2300 struct type *range_type = elt_type->index_type ();
2301 LONGEST lowerbound, upperbound;
2302 LONGEST idx;
2303
2304 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2305 {
2306 lim_warning (_("don't know bounds of array"));
2307 lowerbound = upperbound = 0;
2308 }
2309
2310 idx = pos_atr (ind[i]);
2311 if (idx < lowerbound || idx > upperbound)
2312 lim_warning (_("packed array index %ld out of bounds"),
2313 (long) idx);
2314 bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2315 elt_total_bit_offset += (idx - lowerbound) * bits;
2316 elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2317 }
2318 }
2319 elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2320 bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2321
2322 v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2323 bits, elt_type);
2324 return v;
2325 }
2326
2327 /* Non-zero iff TYPE includes negative integer values. */
2328
2329 static int
2330 has_negatives (struct type *type)
2331 {
2332 switch (type->code ())
2333 {
2334 default:
2335 return 0;
2336 case TYPE_CODE_INT:
2337 return !type->is_unsigned ();
2338 case TYPE_CODE_RANGE:
2339 return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
2340 }
2341 }
2342
2343 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2344 unpack that data into UNPACKED. UNPACKED_LEN is the size in bytes of
2345 the unpacked buffer.
2346
2347 The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2348 enough to contain at least BIT_OFFSET bits. If not, an error is raised.
2349
2350 IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2351 zero otherwise.
2352
2353 IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2354
2355 IS_SCALAR is nonzero if the data corresponds to a signed type. */
2356
2357 static void
2358 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2359 gdb_byte *unpacked, int unpacked_len,
2360 int is_big_endian, int is_signed_type,
2361 int is_scalar)
2362 {
2363 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2364 int src_idx; /* Index into the source area */
2365 int src_bytes_left; /* Number of source bytes left to process. */
2366 int srcBitsLeft; /* Number of source bits left to move */
2367 int unusedLS; /* Number of bits in next significant
2368 byte of source that are unused */
2369
2370 int unpacked_idx; /* Index into the unpacked buffer */
2371 int unpacked_bytes_left; /* Number of bytes left to set in unpacked. */
2372
2373 unsigned long accum; /* Staging area for bits being transferred */
2374 int accumSize; /* Number of meaningful bits in accum */
2375 unsigned char sign;
2376
2377 /* Transmit bytes from least to most significant; delta is the direction
2378 the indices move. */
2379 int delta = is_big_endian ? -1 : 1;
2380
2381 /* Make sure that unpacked is large enough to receive the BIT_SIZE
2382 bits from SRC. .*/
2383 if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2384 error (_("Cannot unpack %d bits into buffer of %d bytes"),
2385 bit_size, unpacked_len);
2386
2387 srcBitsLeft = bit_size;
2388 src_bytes_left = src_len;
2389 unpacked_bytes_left = unpacked_len;
2390 sign = 0;
2391
2392 if (is_big_endian)
2393 {
2394 src_idx = src_len - 1;
2395 if (is_signed_type
2396 && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2397 sign = ~0;
2398
2399 unusedLS =
2400 (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2401 % HOST_CHAR_BIT;
2402
2403 if (is_scalar)
2404 {
2405 accumSize = 0;
2406 unpacked_idx = unpacked_len - 1;
2407 }
2408 else
2409 {
2410 /* Non-scalar values must be aligned at a byte boundary... */
2411 accumSize =
2412 (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2413 /* ... And are placed at the beginning (most-significant) bytes
2414 of the target. */
2415 unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2416 unpacked_bytes_left = unpacked_idx + 1;
2417 }
2418 }
2419 else
2420 {
2421 int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2422
2423 src_idx = unpacked_idx = 0;
2424 unusedLS = bit_offset;
2425 accumSize = 0;
2426
2427 if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2428 sign = ~0;
2429 }
2430
2431 accum = 0;
2432 while (src_bytes_left > 0)
2433 {
2434 /* Mask for removing bits of the next source byte that are not
2435 part of the value. */
2436 unsigned int unusedMSMask =
2437 (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2438 1;
2439 /* Sign-extend bits for this byte. */
2440 unsigned int signMask = sign & ~unusedMSMask;
2441
2442 accum |=
2443 (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2444 accumSize += HOST_CHAR_BIT - unusedLS;
2445 if (accumSize >= HOST_CHAR_BIT)
2446 {
2447 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2448 accumSize -= HOST_CHAR_BIT;
2449 accum >>= HOST_CHAR_BIT;
2450 unpacked_bytes_left -= 1;
2451 unpacked_idx += delta;
2452 }
2453 srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2454 unusedLS = 0;
2455 src_bytes_left -= 1;
2456 src_idx += delta;
2457 }
2458 while (unpacked_bytes_left > 0)
2459 {
2460 accum |= sign << accumSize;
2461 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2462 accumSize -= HOST_CHAR_BIT;
2463 if (accumSize < 0)
2464 accumSize = 0;
2465 accum >>= HOST_CHAR_BIT;
2466 unpacked_bytes_left -= 1;
2467 unpacked_idx += delta;
2468 }
2469 }
2470
2471 /* Create a new value of type TYPE from the contents of OBJ starting
2472 at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2473 proceeding for BIT_SIZE bits. If OBJ is an lval in memory, then
2474 assigning through the result will set the field fetched from.
2475 VALADDR is ignored unless OBJ is NULL, in which case,
2476 VALADDR+OFFSET must address the start of storage containing the
2477 packed value. The value returned in this case is never an lval.
2478 Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT. */
2479
2480 struct value *
2481 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2482 long offset, int bit_offset, int bit_size,
2483 struct type *type)
2484 {
2485 struct value *v;
2486 const gdb_byte *src; /* First byte containing data to unpack */
2487 gdb_byte *unpacked;
2488 const int is_scalar = is_scalar_type (type);
2489 const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2490 gdb::byte_vector staging;
2491
2492 type = ada_check_typedef (type);
2493
2494 if (obj == NULL)
2495 src = valaddr + offset;
2496 else
2497 src = value_contents (obj) + offset;
2498
2499 if (is_dynamic_type (type))
2500 {
2501 /* The length of TYPE might by dynamic, so we need to resolve
2502 TYPE in order to know its actual size, which we then use
2503 to create the contents buffer of the value we return.
2504 The difficulty is that the data containing our object is
2505 packed, and therefore maybe not at a byte boundary. So, what
2506 we do, is unpack the data into a byte-aligned buffer, and then
2507 use that buffer as our object's value for resolving the type. */
2508 int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2509 staging.resize (staging_len);
2510
2511 ada_unpack_from_contents (src, bit_offset, bit_size,
2512 staging.data (), staging.size (),
2513 is_big_endian, has_negatives (type),
2514 is_scalar);
2515 type = resolve_dynamic_type (type, staging, 0);
2516 if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2517 {
2518 /* This happens when the length of the object is dynamic,
2519 and is actually smaller than the space reserved for it.
2520 For instance, in an array of variant records, the bit_size
2521 we're given is the array stride, which is constant and
2522 normally equal to the maximum size of its element.
2523 But, in reality, each element only actually spans a portion
2524 of that stride. */
2525 bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2526 }
2527 }
2528
2529 if (obj == NULL)
2530 {
2531 v = allocate_value (type);
2532 src = valaddr + offset;
2533 }
2534 else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2535 {
2536 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2537 gdb_byte *buf;
2538
2539 v = value_at (type, value_address (obj) + offset);
2540 buf = (gdb_byte *) alloca (src_len);
2541 read_memory (value_address (v), buf, src_len);
2542 src = buf;
2543 }
2544 else
2545 {
2546 v = allocate_value (type);
2547 src = value_contents (obj) + offset;
2548 }
2549
2550 if (obj != NULL)
2551 {
2552 long new_offset = offset;
2553
2554 set_value_component_location (v, obj);
2555 set_value_bitpos (v, bit_offset + value_bitpos (obj));
2556 set_value_bitsize (v, bit_size);
2557 if (value_bitpos (v) >= HOST_CHAR_BIT)
2558 {
2559 ++new_offset;
2560 set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2561 }
2562 set_value_offset (v, new_offset);
2563
2564 /* Also set the parent value. This is needed when trying to
2565 assign a new value (in inferior memory). */
2566 set_value_parent (v, obj);
2567 }
2568 else
2569 set_value_bitsize (v, bit_size);
2570 unpacked = value_contents_writeable (v);
2571
2572 if (bit_size == 0)
2573 {
2574 memset (unpacked, 0, TYPE_LENGTH (type));
2575 return v;
2576 }
2577
2578 if (staging.size () == TYPE_LENGTH (type))
2579 {
2580 /* Small short-cut: If we've unpacked the data into a buffer
2581 of the same size as TYPE's length, then we can reuse that,
2582 instead of doing the unpacking again. */
2583 memcpy (unpacked, staging.data (), staging.size ());
2584 }
2585 else
2586 ada_unpack_from_contents (src, bit_offset, bit_size,
2587 unpacked, TYPE_LENGTH (type),
2588 is_big_endian, has_negatives (type), is_scalar);
2589
2590 return v;
2591 }
2592
2593 /* Store the contents of FROMVAL into the location of TOVAL.
2594 Return a new value with the location of TOVAL and contents of
2595 FROMVAL. Handles assignment into packed fields that have
2596 floating-point or non-scalar types. */
2597
2598 static struct value *
2599 ada_value_assign (struct value *toval, struct value *fromval)
2600 {
2601 struct type *type = value_type (toval);
2602 int bits = value_bitsize (toval);
2603
2604 toval = ada_coerce_ref (toval);
2605 fromval = ada_coerce_ref (fromval);
2606
2607 if (ada_is_direct_array_type (value_type (toval)))
2608 toval = ada_coerce_to_simple_array (toval);
2609 if (ada_is_direct_array_type (value_type (fromval)))
2610 fromval = ada_coerce_to_simple_array (fromval);
2611
2612 if (!deprecated_value_modifiable (toval))
2613 error (_("Left operand of assignment is not a modifiable lvalue."));
2614
2615 if (VALUE_LVAL (toval) == lval_memory
2616 && bits > 0
2617 && (type->code () == TYPE_CODE_FLT
2618 || type->code () == TYPE_CODE_STRUCT))
2619 {
2620 int len = (value_bitpos (toval)
2621 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2622 int from_size;
2623 gdb_byte *buffer = (gdb_byte *) alloca (len);
2624 struct value *val;
2625 CORE_ADDR to_addr = value_address (toval);
2626
2627 if (type->code () == TYPE_CODE_FLT)
2628 fromval = value_cast (type, fromval);
2629
2630 read_memory (to_addr, buffer, len);
2631 from_size = value_bitsize (fromval);
2632 if (from_size == 0)
2633 from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2634
2635 const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2636 ULONGEST from_offset = 0;
2637 if (is_big_endian && is_scalar_type (value_type (fromval)))
2638 from_offset = from_size - bits;
2639 copy_bitwise (buffer, value_bitpos (toval),
2640 value_contents (fromval), from_offset,
2641 bits, is_big_endian);
2642 write_memory_with_notification (to_addr, buffer, len);
2643
2644 val = value_copy (toval);
2645 memcpy (value_contents_raw (val), value_contents (fromval),
2646 TYPE_LENGTH (type));
2647 deprecated_set_value_type (val, type);
2648
2649 return val;
2650 }
2651
2652 return value_assign (toval, fromval);
2653 }
2654
2655
2656 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2657 CONTAINER, assign the contents of VAL to COMPONENTS's place in
2658 CONTAINER. Modifies the VALUE_CONTENTS of CONTAINER only, not
2659 COMPONENT, and not the inferior's memory. The current contents
2660 of COMPONENT are ignored.
2661
2662 Although not part of the initial design, this function also works
2663 when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2664 had a null address, and COMPONENT had an address which is equal to
2665 its offset inside CONTAINER. */
2666
2667 static void
2668 value_assign_to_component (struct value *container, struct value *component,
2669 struct value *val)
2670 {
2671 LONGEST offset_in_container =
2672 (LONGEST) (value_address (component) - value_address (container));
2673 int bit_offset_in_container =
2674 value_bitpos (component) - value_bitpos (container);
2675 int bits;
2676
2677 val = value_cast (value_type (component), val);
2678
2679 if (value_bitsize (component) == 0)
2680 bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2681 else
2682 bits = value_bitsize (component);
2683
2684 if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2685 {
2686 int src_offset;
2687
2688 if (is_scalar_type (check_typedef (value_type (component))))
2689 src_offset
2690 = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2691 else
2692 src_offset = 0;
2693 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2694 value_bitpos (container) + bit_offset_in_container,
2695 value_contents (val), src_offset, bits, 1);
2696 }
2697 else
2698 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2699 value_bitpos (container) + bit_offset_in_container,
2700 value_contents (val), 0, bits, 0);
2701 }
2702
2703 /* Determine if TYPE is an access to an unconstrained array. */
2704
2705 bool
2706 ada_is_access_to_unconstrained_array (struct type *type)
2707 {
2708 return (type->code () == TYPE_CODE_TYPEDEF
2709 && is_thick_pntr (ada_typedef_target_type (type)));
2710 }
2711
2712 /* The value of the element of array ARR at the ARITY indices given in IND.
2713 ARR may be either a simple array, GNAT array descriptor, or pointer
2714 thereto. */
2715
2716 struct value *
2717 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2718 {
2719 int k;
2720 struct value *elt;
2721 struct type *elt_type;
2722
2723 elt = ada_coerce_to_simple_array (arr);
2724
2725 elt_type = ada_check_typedef (value_type (elt));
2726 if (elt_type->code () == TYPE_CODE_ARRAY
2727 && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2728 return value_subscript_packed (elt, arity, ind);
2729
2730 for (k = 0; k < arity; k += 1)
2731 {
2732 struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2733
2734 if (elt_type->code () != TYPE_CODE_ARRAY)
2735 error (_("too many subscripts (%d expected)"), k);
2736
2737 elt = value_subscript (elt, pos_atr (ind[k]));
2738
2739 if (ada_is_access_to_unconstrained_array (saved_elt_type)
2740 && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2741 {
2742 /* The element is a typedef to an unconstrained array,
2743 except that the value_subscript call stripped the
2744 typedef layer. The typedef layer is GNAT's way to
2745 specify that the element is, at the source level, an
2746 access to the unconstrained array, rather than the
2747 unconstrained array. So, we need to restore that
2748 typedef layer, which we can do by forcing the element's
2749 type back to its original type. Otherwise, the returned
2750 value is going to be printed as the array, rather
2751 than as an access. Another symptom of the same issue
2752 would be that an expression trying to dereference the
2753 element would also be improperly rejected. */
2754 deprecated_set_value_type (elt, saved_elt_type);
2755 }
2756
2757 elt_type = ada_check_typedef (value_type (elt));
2758 }
2759
2760 return elt;
2761 }
2762
2763 /* Assuming ARR is a pointer to a GDB array, the value of the element
2764 of *ARR at the ARITY indices given in IND.
2765 Does not read the entire array into memory.
2766
2767 Note: Unlike what one would expect, this function is used instead of
2768 ada_value_subscript for basically all non-packed array types. The reason
2769 for this is that a side effect of doing our own pointer arithmetics instead
2770 of relying on value_subscript is that there is no implicit typedef peeling.
2771 This is important for arrays of array accesses, where it allows us to
2772 preserve the fact that the array's element is an array access, where the
2773 access part os encoded in a typedef layer. */
2774
2775 static struct value *
2776 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2777 {
2778 int k;
2779 struct value *array_ind = ada_value_ind (arr);
2780 struct type *type
2781 = check_typedef (value_enclosing_type (array_ind));
2782
2783 if (type->code () == TYPE_CODE_ARRAY
2784 && TYPE_FIELD_BITSIZE (type, 0) > 0)
2785 return value_subscript_packed (array_ind, arity, ind);
2786
2787 for (k = 0; k < arity; k += 1)
2788 {
2789 LONGEST lwb, upb;
2790
2791 if (type->code () != TYPE_CODE_ARRAY)
2792 error (_("too many subscripts (%d expected)"), k);
2793 arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2794 value_copy (arr));
2795 get_discrete_bounds (type->index_type (), &lwb, &upb);
2796 arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2797 type = TYPE_TARGET_TYPE (type);
2798 }
2799
2800 return value_ind (arr);
2801 }
2802
2803 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2804 actual type of ARRAY_PTR is ignored), returns the Ada slice of
2805 HIGH'Pos-LOW'Pos+1 elements starting at index LOW. The lower bound of
2806 this array is LOW, as per Ada rules. */
2807 static struct value *
2808 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2809 int low, int high)
2810 {
2811 struct type *type0 = ada_check_typedef (type);
2812 struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2813 struct type *index_type
2814 = create_static_range_type (NULL, base_index_type, low, high);
2815 struct type *slice_type = create_array_type_with_stride
2816 (NULL, TYPE_TARGET_TYPE (type0), index_type,
2817 type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2818 TYPE_FIELD_BITSIZE (type0, 0));
2819 int base_low = ada_discrete_type_low_bound (type0->index_type ());
2820 LONGEST base_low_pos, low_pos;
2821 CORE_ADDR base;
2822
2823 if (!discrete_position (base_index_type, low, &low_pos)
2824 || !discrete_position (base_index_type, base_low, &base_low_pos))
2825 {
2826 warning (_("unable to get positions in slice, use bounds instead"));
2827 low_pos = low;
2828 base_low_pos = base_low;
2829 }
2830
2831 base = value_as_address (array_ptr)
2832 + ((low_pos - base_low_pos)
2833 * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2834 return value_at_lazy (slice_type, base);
2835 }
2836
2837
2838 static struct value *
2839 ada_value_slice (struct value *array, int low, int high)
2840 {
2841 struct type *type = ada_check_typedef (value_type (array));
2842 struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
2843 struct type *index_type
2844 = create_static_range_type (NULL, type->index_type (), low, high);
2845 struct type *slice_type = create_array_type_with_stride
2846 (NULL, TYPE_TARGET_TYPE (type), index_type,
2847 type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2848 TYPE_FIELD_BITSIZE (type, 0));
2849 LONGEST low_pos, high_pos;
2850
2851 if (!discrete_position (base_index_type, low, &low_pos)
2852 || !discrete_position (base_index_type, high, &high_pos))
2853 {
2854 warning (_("unable to get positions in slice, use bounds instead"));
2855 low_pos = low;
2856 high_pos = high;
2857 }
2858
2859 return value_cast (slice_type,
2860 value_slice (array, low, high_pos - low_pos + 1));
2861 }
2862
2863 /* If type is a record type in the form of a standard GNAT array
2864 descriptor, returns the number of dimensions for type. If arr is a
2865 simple array, returns the number of "array of"s that prefix its
2866 type designation. Otherwise, returns 0. */
2867
2868 int
2869 ada_array_arity (struct type *type)
2870 {
2871 int arity;
2872
2873 if (type == NULL)
2874 return 0;
2875
2876 type = desc_base_type (type);
2877
2878 arity = 0;
2879 if (type->code () == TYPE_CODE_STRUCT)
2880 return desc_arity (desc_bounds_type (type));
2881 else
2882 while (type->code () == TYPE_CODE_ARRAY)
2883 {
2884 arity += 1;
2885 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2886 }
2887
2888 return arity;
2889 }
2890
2891 /* If TYPE is a record type in the form of a standard GNAT array
2892 descriptor or a simple array type, returns the element type for
2893 TYPE after indexing by NINDICES indices, or by all indices if
2894 NINDICES is -1. Otherwise, returns NULL. */
2895
2896 struct type *
2897 ada_array_element_type (struct type *type, int nindices)
2898 {
2899 type = desc_base_type (type);
2900
2901 if (type->code () == TYPE_CODE_STRUCT)
2902 {
2903 int k;
2904 struct type *p_array_type;
2905
2906 p_array_type = desc_data_target_type (type);
2907
2908 k = ada_array_arity (type);
2909 if (k == 0)
2910 return NULL;
2911
2912 /* Initially p_array_type = elt_type(*)[]...(k times)...[]. */
2913 if (nindices >= 0 && k > nindices)
2914 k = nindices;
2915 while (k > 0 && p_array_type != NULL)
2916 {
2917 p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2918 k -= 1;
2919 }
2920 return p_array_type;
2921 }
2922 else if (type->code () == TYPE_CODE_ARRAY)
2923 {
2924 while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2925 {
2926 type = TYPE_TARGET_TYPE (type);
2927 nindices -= 1;
2928 }
2929 return type;
2930 }
2931
2932 return NULL;
2933 }
2934
2935 /* The type of nth index in arrays of given type (n numbering from 1).
2936 Does not examine memory. Throws an error if N is invalid or TYPE
2937 is not an array type. NAME is the name of the Ada attribute being
2938 evaluated ('range, 'first, 'last, or 'length); it is used in building
2939 the error message. */
2940
2941 static struct type *
2942 ada_index_type (struct type *type, int n, const char *name)
2943 {
2944 struct type *result_type;
2945
2946 type = desc_base_type (type);
2947
2948 if (n < 0 || n > ada_array_arity (type))
2949 error (_("invalid dimension number to '%s"), name);
2950
2951 if (ada_is_simple_array_type (type))
2952 {
2953 int i;
2954
2955 for (i = 1; i < n; i += 1)
2956 type = TYPE_TARGET_TYPE (type);
2957 result_type = TYPE_TARGET_TYPE (type->index_type ());
2958 /* FIXME: The stabs type r(0,0);bound;bound in an array type
2959 has a target type of TYPE_CODE_UNDEF. We compensate here, but
2960 perhaps stabsread.c would make more sense. */
2961 if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2962 result_type = NULL;
2963 }
2964 else
2965 {
2966 result_type = desc_index_type (desc_bounds_type (type), n);
2967 if (result_type == NULL)
2968 error (_("attempt to take bound of something that is not an array"));
2969 }
2970
2971 return result_type;
2972 }
2973
2974 /* Given that arr is an array type, returns the lower bound of the
2975 Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2976 WHICH is 1. This returns bounds 0 .. -1 if ARR_TYPE is an
2977 array-descriptor type. It works for other arrays with bounds supplied
2978 by run-time quantities other than discriminants. */
2979
2980 static LONGEST
2981 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2982 {
2983 struct type *type, *index_type_desc, *index_type;
2984 int i;
2985
2986 gdb_assert (which == 0 || which == 1);
2987
2988 if (ada_is_constrained_packed_array_type (arr_type))
2989 arr_type = decode_constrained_packed_array_type (arr_type);
2990
2991 if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2992 return (LONGEST) - which;
2993
2994 if (arr_type->code () == TYPE_CODE_PTR)
2995 type = TYPE_TARGET_TYPE (arr_type);
2996 else
2997 type = arr_type;
2998
2999 if (type->is_fixed_instance ())
3000 {
3001 /* The array has already been fixed, so we do not need to
3002 check the parallel ___XA type again. That encoding has
3003 already been applied, so ignore it now. */
3004 index_type_desc = NULL;
3005 }
3006 else
3007 {
3008 index_type_desc = ada_find_parallel_type (type, "___XA");
3009 ada_fixup_array_indexes_type (index_type_desc);
3010 }
3011
3012 if (index_type_desc != NULL)
3013 index_type = to_fixed_range_type (index_type_desc->field (n - 1).type (),
3014 NULL);
3015 else
3016 {
3017 struct type *elt_type = check_typedef (type);
3018
3019 for (i = 1; i < n; i++)
3020 elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3021
3022 index_type = elt_type->index_type ();
3023 }
3024
3025 return
3026 (LONGEST) (which == 0
3027 ? ada_discrete_type_low_bound (index_type)
3028 : ada_discrete_type_high_bound (index_type));
3029 }
3030
3031 /* Given that arr is an array value, returns the lower bound of the
3032 nth index (numbering from 1) if WHICH is 0, and the upper bound if
3033 WHICH is 1. This routine will also work for arrays with bounds
3034 supplied by run-time quantities other than discriminants. */
3035
3036 static LONGEST
3037 ada_array_bound (struct value *arr, int n, int which)
3038 {
3039 struct type *arr_type;
3040
3041 if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3042 arr = value_ind (arr);
3043 arr_type = value_enclosing_type (arr);
3044
3045 if (ada_is_constrained_packed_array_type (arr_type))
3046 return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3047 else if (ada_is_simple_array_type (arr_type))
3048 return ada_array_bound_from_type (arr_type, n, which);
3049 else
3050 return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3051 }
3052
3053 /* Given that arr is an array value, returns the length of the
3054 nth index. This routine will also work for arrays with bounds
3055 supplied by run-time quantities other than discriminants.
3056 Does not work for arrays indexed by enumeration types with representation
3057 clauses at the moment. */
3058
3059 static LONGEST
3060 ada_array_length (struct value *arr, int n)
3061 {
3062 struct type *arr_type, *index_type;
3063 int low, high;
3064
3065 if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3066 arr = value_ind (arr);
3067 arr_type = value_enclosing_type (arr);
3068
3069 if (ada_is_constrained_packed_array_type (arr_type))
3070 return ada_array_length (decode_constrained_packed_array (arr), n);
3071
3072 if (ada_is_simple_array_type (arr_type))
3073 {
3074 low = ada_array_bound_from_type (arr_type, n, 0);
3075 high = ada_array_bound_from_type (arr_type, n, 1);
3076 }
3077 else
3078 {
3079 low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3080 high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3081 }
3082
3083 arr_type = check_typedef (arr_type);
3084 index_type = ada_index_type (arr_type, n, "length");
3085 if (index_type != NULL)
3086 {
3087 struct type *base_type;
3088 if (index_type->code () == TYPE_CODE_RANGE)
3089 base_type = TYPE_TARGET_TYPE (index_type);
3090 else
3091 base_type = index_type;
3092
3093 low = pos_atr (value_from_longest (base_type, low));
3094 high = pos_atr (value_from_longest (base_type, high));
3095 }
3096 return high - low + 1;
3097 }
3098
3099 /* An array whose type is that of ARR_TYPE (an array type), with
3100 bounds LOW to HIGH, but whose contents are unimportant. If HIGH is
3101 less than LOW, then LOW-1 is used. */
3102
3103 static struct value *
3104 empty_array (struct type *arr_type, int low, int high)
3105 {
3106 struct type *arr_type0 = ada_check_typedef (arr_type);
3107 struct type *index_type
3108 = create_static_range_type
3109 (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
3110 high < low ? low - 1 : high);
3111 struct type *elt_type = ada_array_element_type (arr_type0, 1);
3112
3113 return allocate_value (create_array_type (NULL, elt_type, index_type));
3114 }
3115 \f
3116
3117 /* Name resolution */
3118
3119 /* The "decoded" name for the user-definable Ada operator corresponding
3120 to OP. */
3121
3122 static const char *
3123 ada_decoded_op_name (enum exp_opcode op)
3124 {
3125 int i;
3126
3127 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3128 {
3129 if (ada_opname_table[i].op == op)
3130 return ada_opname_table[i].decoded;
3131 }
3132 error (_("Could not find operator name for opcode"));
3133 }
3134
3135 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3136 in a listing of choices during disambiguation (see sort_choices, below).
3137 The idea is that overloadings of a subprogram name from the
3138 same package should sort in their source order. We settle for ordering
3139 such symbols by their trailing number (__N or $N). */
3140
3141 static int
3142 encoded_ordered_before (const char *N0, const char *N1)
3143 {
3144 if (N1 == NULL)
3145 return 0;
3146 else if (N0 == NULL)
3147 return 1;
3148 else
3149 {
3150 int k0, k1;
3151
3152 for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3153 ;
3154 for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3155 ;
3156 if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3157 && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3158 {
3159 int n0, n1;
3160
3161 n0 = k0;
3162 while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3163 n0 -= 1;
3164 n1 = k1;
3165 while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3166 n1 -= 1;
3167 if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3168 return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3169 }
3170 return (strcmp (N0, N1) < 0);
3171 }
3172 }
3173
3174 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3175 encoded names. */
3176
3177 static void
3178 sort_choices (struct block_symbol syms[], int nsyms)
3179 {
3180 int i;
3181
3182 for (i = 1; i < nsyms; i += 1)
3183 {
3184 struct block_symbol sym = syms[i];
3185 int j;
3186
3187 for (j = i - 1; j >= 0; j -= 1)
3188 {
3189 if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3190 sym.symbol->linkage_name ()))
3191 break;
3192 syms[j + 1] = syms[j];
3193 }
3194 syms[j + 1] = sym;
3195 }
3196 }
3197
3198 /* Whether GDB should display formals and return types for functions in the
3199 overloads selection menu. */
3200 static bool print_signatures = true;
3201
3202 /* Print the signature for SYM on STREAM according to the FLAGS options. For
3203 all but functions, the signature is just the name of the symbol. For
3204 functions, this is the name of the function, the list of types for formals
3205 and the return type (if any). */
3206
3207 static void
3208 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3209 const struct type_print_options *flags)
3210 {
3211 struct type *type = SYMBOL_TYPE (sym);
3212
3213 fprintf_filtered (stream, "%s", sym->print_name ());
3214 if (!print_signatures
3215 || type == NULL
3216 || type->code () != TYPE_CODE_FUNC)
3217 return;
3218
3219 if (type->num_fields () > 0)
3220 {
3221 int i;
3222
3223 fprintf_filtered (stream, " (");
3224 for (i = 0; i < type->num_fields (); ++i)
3225 {
3226 if (i > 0)
3227 fprintf_filtered (stream, "; ");
3228 ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
3229 flags);
3230 }
3231 fprintf_filtered (stream, ")");
3232 }
3233 if (TYPE_TARGET_TYPE (type) != NULL
3234 && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3235 {
3236 fprintf_filtered (stream, " return ");
3237 ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3238 }
3239 }
3240
3241 /* Read and validate a set of numeric choices from the user in the
3242 range 0 .. N_CHOICES-1. Place the results in increasing
3243 order in CHOICES[0 .. N-1], and return N.
3244
3245 The user types choices as a sequence of numbers on one line
3246 separated by blanks, encoding them as follows:
3247
3248 + A choice of 0 means to cancel the selection, throwing an error.
3249 + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3250 + The user chooses k by typing k+IS_ALL_CHOICE+1.
3251
3252 The user is not allowed to choose more than MAX_RESULTS values.
3253
3254 ANNOTATION_SUFFIX, if present, is used to annotate the input
3255 prompts (for use with the -f switch). */
3256
3257 static int
3258 get_selections (int *choices, int n_choices, int max_results,
3259 int is_all_choice, const char *annotation_suffix)
3260 {
3261 const char *args;
3262 const char *prompt;
3263 int n_chosen;
3264 int first_choice = is_all_choice ? 2 : 1;
3265
3266 prompt = getenv ("PS2");
3267 if (prompt == NULL)
3268 prompt = "> ";
3269
3270 args = command_line_input (prompt, annotation_suffix);
3271
3272 if (args == NULL)
3273 error_no_arg (_("one or more choice numbers"));
3274
3275 n_chosen = 0;
3276
3277 /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3278 order, as given in args. Choices are validated. */
3279 while (1)
3280 {
3281 char *args2;
3282 int choice, j;
3283
3284 args = skip_spaces (args);
3285 if (*args == '\0' && n_chosen == 0)
3286 error_no_arg (_("one or more choice numbers"));
3287 else if (*args == '\0')
3288 break;
3289
3290 choice = strtol (args, &args2, 10);
3291 if (args == args2 || choice < 0
3292 || choice > n_choices + first_choice - 1)
3293 error (_("Argument must be choice number"));
3294 args = args2;
3295
3296 if (choice == 0)
3297 error (_("cancelled"));
3298
3299 if (choice < first_choice)
3300 {
3301 n_chosen = n_choices;
3302 for (j = 0; j < n_choices; j += 1)
3303 choices[j] = j;
3304 break;
3305 }
3306 choice -= first_choice;
3307
3308 for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3309 {
3310 }
3311
3312 if (j < 0 || choice != choices[j])
3313 {
3314 int k;
3315
3316 for (k = n_chosen - 1; k > j; k -= 1)
3317 choices[k + 1] = choices[k];
3318 choices[j + 1] = choice;
3319 n_chosen += 1;
3320 }
3321 }
3322
3323 if (n_chosen > max_results)
3324 error (_("Select no more than %d of the above"), max_results);
3325
3326 return n_chosen;
3327 }
3328
3329 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3330 by asking the user (if necessary), returning the number selected,
3331 and setting the first elements of SYMS items. Error if no symbols
3332 selected. */
3333
3334 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3335 to be re-integrated one of these days. */
3336
3337 static int
3338 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3339 {
3340 int i;
3341 int *chosen = XALLOCAVEC (int , nsyms);
3342 int n_chosen;
3343 int first_choice = (max_results == 1) ? 1 : 2;
3344 const char *select_mode = multiple_symbols_select_mode ();
3345
3346 if (max_results < 1)
3347 error (_("Request to select 0 symbols!"));
3348 if (nsyms <= 1)
3349 return nsyms;
3350
3351 if (select_mode == multiple_symbols_cancel)
3352 error (_("\
3353 canceled because the command is ambiguous\n\
3354 See set/show multiple-symbol."));
3355
3356 /* If select_mode is "all", then return all possible symbols.
3357 Only do that if more than one symbol can be selected, of course.
3358 Otherwise, display the menu as usual. */
3359 if (select_mode == multiple_symbols_all && max_results > 1)
3360 return nsyms;
3361
3362 printf_filtered (_("[0] cancel\n"));
3363 if (max_results > 1)
3364 printf_filtered (_("[1] all\n"));
3365
3366 sort_choices (syms, nsyms);
3367
3368 for (i = 0; i < nsyms; i += 1)
3369 {
3370 if (syms[i].symbol == NULL)
3371 continue;
3372
3373 if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3374 {
3375 struct symtab_and_line sal =
3376 find_function_start_sal (syms[i].symbol, 1);
3377
3378 printf_filtered ("[%d] ", i + first_choice);
3379 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3380 &type_print_raw_options);
3381 if (sal.symtab == NULL)
3382 printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3383 metadata_style.style ().ptr (), nullptr, sal.line);
3384 else
3385 printf_filtered
3386 (_(" at %ps:%d\n"),
3387 styled_string (file_name_style.style (),
3388 symtab_to_filename_for_display (sal.symtab)),
3389 sal.line);
3390 continue;
3391 }
3392 else
3393 {
3394 int is_enumeral =
3395 (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3396 && SYMBOL_TYPE (syms[i].symbol) != NULL
3397 && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3398 struct symtab *symtab = NULL;
3399
3400 if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3401 symtab = symbol_symtab (syms[i].symbol);
3402
3403 if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3404 {
3405 printf_filtered ("[%d] ", i + first_choice);
3406 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3407 &type_print_raw_options);
3408 printf_filtered (_(" at %s:%d\n"),
3409 symtab_to_filename_for_display (symtab),
3410 SYMBOL_LINE (syms[i].symbol));
3411 }
3412 else if (is_enumeral
3413 && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3414 {
3415 printf_filtered (("[%d] "), i + first_choice);
3416 ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3417 gdb_stdout, -1, 0, &type_print_raw_options);
3418 printf_filtered (_("'(%s) (enumeral)\n"),
3419 syms[i].symbol->print_name ());
3420 }
3421 else
3422 {
3423 printf_filtered ("[%d] ", i + first_choice);
3424 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3425 &type_print_raw_options);
3426
3427 if (symtab != NULL)
3428 printf_filtered (is_enumeral
3429 ? _(" in %s (enumeral)\n")
3430 : _(" at %s:?\n"),
3431 symtab_to_filename_for_display (symtab));
3432 else
3433 printf_filtered (is_enumeral
3434 ? _(" (enumeral)\n")
3435 : _(" at ?\n"));
3436 }
3437 }
3438 }
3439
3440 n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3441 "overload-choice");
3442
3443 for (i = 0; i < n_chosen; i += 1)
3444 syms[i] = syms[chosen[i]];
3445
3446 return n_chosen;
3447 }
3448
3449 /* Resolve the operator of the subexpression beginning at
3450 position *POS of *EXPP. "Resolving" consists of replacing
3451 the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3452 with their resolutions, replacing built-in operators with
3453 function calls to user-defined operators, where appropriate, and,
3454 when DEPROCEDURE_P is non-zero, converting function-valued variables
3455 into parameterless calls. May expand *EXPP. The CONTEXT_TYPE functions
3456 are as in ada_resolve, above. */
3457
3458 static struct value *
3459 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3460 struct type *context_type, int parse_completion,
3461 innermost_block_tracker *tracker)
3462 {
3463 int pc = *pos;
3464 int i;
3465 struct expression *exp; /* Convenience: == *expp. */
3466 enum exp_opcode op = (*expp)->elts[pc].opcode;
3467 struct value **argvec; /* Vector of operand types (alloca'ed). */
3468 int nargs; /* Number of operands. */
3469 int oplen;
3470
3471 argvec = NULL;
3472 nargs = 0;
3473 exp = expp->get ();
3474
3475 /* Pass one: resolve operands, saving their types and updating *pos,
3476 if needed. */
3477 switch (op)
3478 {
3479 case OP_FUNCALL:
3480 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3481 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3482 *pos += 7;
3483 else
3484 {
3485 *pos += 3;
3486 resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3487 }
3488 nargs = longest_to_int (exp->elts[pc + 1].longconst);
3489 break;
3490
3491 case UNOP_ADDR:
3492 *pos += 1;
3493 resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3494 break;
3495
3496 case UNOP_QUAL:
3497 *pos += 3;
3498 resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3499 parse_completion, tracker);
3500 break;
3501
3502 case OP_ATR_MODULUS:
3503 case OP_ATR_SIZE:
3504 case OP_ATR_TAG:
3505 case OP_ATR_FIRST:
3506 case OP_ATR_LAST:
3507 case OP_ATR_LENGTH:
3508 case OP_ATR_POS:
3509 case OP_ATR_VAL:
3510 case OP_ATR_MIN:
3511 case OP_ATR_MAX:
3512 case TERNOP_IN_RANGE:
3513 case BINOP_IN_BOUNDS:
3514 case UNOP_IN_RANGE:
3515 case OP_AGGREGATE:
3516 case OP_OTHERS:
3517 case OP_CHOICES:
3518 case OP_POSITIONAL:
3519 case OP_DISCRETE_RANGE:
3520 case OP_NAME:
3521 ada_forward_operator_length (exp, pc, &oplen, &nargs);
3522 *pos += oplen;
3523 break;
3524
3525 case BINOP_ASSIGN:
3526 {
3527 struct value *arg1;
3528
3529 *pos += 1;
3530 arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3531 if (arg1 == NULL)
3532 resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3533 else
3534 resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3535 tracker);
3536 break;
3537 }
3538
3539 case UNOP_CAST:
3540 *pos += 3;
3541 nargs = 1;
3542 break;
3543
3544 case BINOP_ADD:
3545 case BINOP_SUB:
3546 case BINOP_MUL:
3547 case BINOP_DIV:
3548 case BINOP_REM:
3549 case BINOP_MOD:
3550 case BINOP_EXP:
3551 case BINOP_CONCAT:
3552 case BINOP_LOGICAL_AND:
3553 case BINOP_LOGICAL_OR:
3554 case BINOP_BITWISE_AND:
3555 case BINOP_BITWISE_IOR:
3556 case BINOP_BITWISE_XOR:
3557
3558 case BINOP_EQUAL:
3559 case BINOP_NOTEQUAL:
3560 case BINOP_LESS:
3561 case BINOP_GTR:
3562 case BINOP_LEQ:
3563 case BINOP_GEQ:
3564
3565 case BINOP_REPEAT:
3566 case BINOP_SUBSCRIPT:
3567 case BINOP_COMMA:
3568 *pos += 1;
3569 nargs = 2;
3570 break;
3571
3572 case UNOP_NEG:
3573 case UNOP_PLUS:
3574 case UNOP_LOGICAL_NOT:
3575 case UNOP_ABS:
3576 case UNOP_IND:
3577 *pos += 1;
3578 nargs = 1;
3579 break;
3580
3581 case OP_LONG:
3582 case OP_FLOAT:
3583 case OP_VAR_VALUE:
3584 case OP_VAR_MSYM_VALUE:
3585 *pos += 4;
3586 break;
3587
3588 case OP_TYPE:
3589 case OP_BOOL:
3590 case OP_LAST:
3591 case OP_INTERNALVAR:
3592 *pos += 3;
3593 break;
3594
3595 case UNOP_MEMVAL:
3596 *pos += 3;
3597 nargs = 1;
3598 break;
3599
3600 case OP_REGISTER:
3601 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3602 break;
3603
3604 case STRUCTOP_STRUCT:
3605 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3606 nargs = 1;
3607 break;
3608
3609 case TERNOP_SLICE:
3610 *pos += 1;
3611 nargs = 3;
3612 break;
3613
3614 case OP_STRING:
3615 break;
3616
3617 default:
3618 error (_("Unexpected operator during name resolution"));
3619 }
3620
3621 argvec = XALLOCAVEC (struct value *, nargs + 1);
3622 for (i = 0; i < nargs; i += 1)
3623 argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3624 tracker);
3625 argvec[i] = NULL;
3626 exp = expp->get ();
3627
3628 /* Pass two: perform any resolution on principal operator. */
3629 switch (op)
3630 {
3631 default:
3632 break;
3633
3634 case OP_VAR_VALUE:
3635 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3636 {
3637 std::vector<struct block_symbol> candidates;
3638 int n_candidates;
3639
3640 n_candidates =
3641 ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3642 exp->elts[pc + 1].block, VAR_DOMAIN,
3643 &candidates);
3644
3645 if (n_candidates > 1)
3646 {
3647 /* Types tend to get re-introduced locally, so if there
3648 are any local symbols that are not types, first filter
3649 out all types. */
3650 int j;
3651 for (j = 0; j < n_candidates; j += 1)
3652 switch (SYMBOL_CLASS (candidates[j].symbol))
3653 {
3654 case LOC_REGISTER:
3655 case LOC_ARG:
3656 case LOC_REF_ARG:
3657 case LOC_REGPARM_ADDR:
3658 case LOC_LOCAL:
3659 case LOC_COMPUTED:
3660 goto FoundNonType;
3661 default:
3662 break;
3663 }
3664 FoundNonType:
3665 if (j < n_candidates)
3666 {
3667 j = 0;
3668 while (j < n_candidates)
3669 {
3670 if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3671 {
3672 candidates[j] = candidates[n_candidates - 1];
3673 n_candidates -= 1;
3674 }
3675 else
3676 j += 1;
3677 }
3678 }
3679 }
3680
3681 if (n_candidates == 0)
3682 error (_("No definition found for %s"),
3683 exp->elts[pc + 2].symbol->print_name ());
3684 else if (n_candidates == 1)
3685 i = 0;
3686 else if (deprocedure_p
3687 && !is_nonfunction (candidates.data (), n_candidates))
3688 {
3689 i = ada_resolve_function
3690 (candidates.data (), n_candidates, NULL, 0,
3691 exp->elts[pc + 2].symbol->linkage_name (),
3692 context_type, parse_completion);
3693 if (i < 0)
3694 error (_("Could not find a match for %s"),
3695 exp->elts[pc + 2].symbol->print_name ());
3696 }
3697 else
3698 {
3699 printf_filtered (_("Multiple matches for %s\n"),
3700 exp->elts[pc + 2].symbol->print_name ());
3701 user_select_syms (candidates.data (), n_candidates, 1);
3702 i = 0;
3703 }
3704
3705 exp->elts[pc + 1].block = candidates[i].block;
3706 exp->elts[pc + 2].symbol = candidates[i].symbol;
3707 tracker->update (candidates[i]);
3708 }
3709
3710 if (deprocedure_p
3711 && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3712 == TYPE_CODE_FUNC))
3713 {
3714 replace_operator_with_call (expp, pc, 0, 4,
3715 exp->elts[pc + 2].symbol,
3716 exp->elts[pc + 1].block);
3717 exp = expp->get ();
3718 }
3719 break;
3720
3721 case OP_FUNCALL:
3722 {
3723 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3724 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3725 {
3726 std::vector<struct block_symbol> candidates;
3727 int n_candidates;
3728
3729 n_candidates =
3730 ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3731 exp->elts[pc + 4].block, VAR_DOMAIN,
3732 &candidates);
3733
3734 if (n_candidates == 1)
3735 i = 0;
3736 else
3737 {
3738 i = ada_resolve_function
3739 (candidates.data (), n_candidates,
3740 argvec, nargs,
3741 exp->elts[pc + 5].symbol->linkage_name (),
3742 context_type, parse_completion);
3743 if (i < 0)
3744 error (_("Could not find a match for %s"),
3745 exp->elts[pc + 5].symbol->print_name ());
3746 }
3747
3748 exp->elts[pc + 4].block = candidates[i].block;
3749 exp->elts[pc + 5].symbol = candidates[i].symbol;
3750 tracker->update (candidates[i]);
3751 }
3752 }
3753 break;
3754 case BINOP_ADD:
3755 case BINOP_SUB:
3756 case BINOP_MUL:
3757 case BINOP_DIV:
3758 case BINOP_REM:
3759 case BINOP_MOD:
3760 case BINOP_CONCAT:
3761 case BINOP_BITWISE_AND:
3762 case BINOP_BITWISE_IOR:
3763 case BINOP_BITWISE_XOR:
3764 case BINOP_EQUAL:
3765 case BINOP_NOTEQUAL:
3766 case BINOP_LESS:
3767 case BINOP_GTR:
3768 case BINOP_LEQ:
3769 case BINOP_GEQ:
3770 case BINOP_EXP:
3771 case UNOP_NEG:
3772 case UNOP_PLUS:
3773 case UNOP_LOGICAL_NOT:
3774 case UNOP_ABS:
3775 if (possible_user_operator_p (op, argvec))
3776 {
3777 std::vector<struct block_symbol> candidates;
3778 int n_candidates;
3779
3780 n_candidates =
3781 ada_lookup_symbol_list (ada_decoded_op_name (op),
3782 NULL, VAR_DOMAIN,
3783 &candidates);
3784
3785 i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3786 nargs, ada_decoded_op_name (op), NULL,
3787 parse_completion);
3788 if (i < 0)
3789 break;
3790
3791 replace_operator_with_call (expp, pc, nargs, 1,
3792 candidates[i].symbol,
3793 candidates[i].block);
3794 exp = expp->get ();
3795 }
3796 break;
3797
3798 case OP_TYPE:
3799 case OP_REGISTER:
3800 return NULL;
3801 }
3802
3803 *pos = pc;
3804 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3805 return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3806 exp->elts[pc + 1].objfile,
3807 exp->elts[pc + 2].msymbol);
3808 else
3809 return evaluate_subexp_type (exp, pos);
3810 }
3811
3812 /* Return non-zero if formal type FTYPE matches actual type ATYPE. If
3813 MAY_DEREF is non-zero, the formal may be a pointer and the actual
3814 a non-pointer. */
3815 /* The term "match" here is rather loose. The match is heuristic and
3816 liberal. */
3817
3818 static int
3819 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3820 {
3821 ftype = ada_check_typedef (ftype);
3822 atype = ada_check_typedef (atype);
3823
3824 if (ftype->code () == TYPE_CODE_REF)
3825 ftype = TYPE_TARGET_TYPE (ftype);
3826 if (atype->code () == TYPE_CODE_REF)
3827 atype = TYPE_TARGET_TYPE (atype);
3828
3829 switch (ftype->code ())
3830 {
3831 default:
3832 return ftype->code () == atype->code ();
3833 case TYPE_CODE_PTR:
3834 if (atype->code () == TYPE_CODE_PTR)
3835 return ada_type_match (TYPE_TARGET_TYPE (ftype),
3836 TYPE_TARGET_TYPE (atype), 0);
3837 else
3838 return (may_deref
3839 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3840 case TYPE_CODE_INT:
3841 case TYPE_CODE_ENUM:
3842 case TYPE_CODE_RANGE:
3843 switch (atype->code ())
3844 {
3845 case TYPE_CODE_INT:
3846 case TYPE_CODE_ENUM:
3847 case TYPE_CODE_RANGE:
3848 return 1;
3849 default:
3850 return 0;
3851 }
3852
3853 case TYPE_CODE_ARRAY:
3854 return (atype->code () == TYPE_CODE_ARRAY
3855 || ada_is_array_descriptor_type (atype));
3856
3857 case TYPE_CODE_STRUCT:
3858 if (ada_is_array_descriptor_type (ftype))
3859 return (atype->code () == TYPE_CODE_ARRAY
3860 || ada_is_array_descriptor_type (atype));
3861 else
3862 return (atype->code () == TYPE_CODE_STRUCT
3863 && !ada_is_array_descriptor_type (atype));
3864
3865 case TYPE_CODE_UNION:
3866 case TYPE_CODE_FLT:
3867 return (atype->code () == ftype->code ());
3868 }
3869 }
3870
3871 /* Return non-zero if the formals of FUNC "sufficiently match" the
3872 vector of actual argument types ACTUALS of size N_ACTUALS. FUNC
3873 may also be an enumeral, in which case it is treated as a 0-
3874 argument function. */
3875
3876 static int
3877 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3878 {
3879 int i;
3880 struct type *func_type = SYMBOL_TYPE (func);
3881
3882 if (SYMBOL_CLASS (func) == LOC_CONST
3883 && func_type->code () == TYPE_CODE_ENUM)
3884 return (n_actuals == 0);
3885 else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3886 return 0;
3887
3888 if (func_type->num_fields () != n_actuals)
3889 return 0;
3890
3891 for (i = 0; i < n_actuals; i += 1)
3892 {
3893 if (actuals[i] == NULL)
3894 return 0;
3895 else
3896 {
3897 struct type *ftype = ada_check_typedef (func_type->field (i).type ());
3898 struct type *atype = ada_check_typedef (value_type (actuals[i]));
3899
3900 if (!ada_type_match (ftype, atype, 1))
3901 return 0;
3902 }
3903 }
3904 return 1;
3905 }
3906
3907 /* False iff function type FUNC_TYPE definitely does not produce a value
3908 compatible with type CONTEXT_TYPE. Conservatively returns 1 if
3909 FUNC_TYPE is not a valid function type with a non-null return type
3910 or an enumerated type. A null CONTEXT_TYPE indicates any non-void type. */
3911
3912 static int
3913 return_match (struct type *func_type, struct type *context_type)
3914 {
3915 struct type *return_type;
3916
3917 if (func_type == NULL)
3918 return 1;
3919
3920 if (func_type->code () == TYPE_CODE_FUNC)
3921 return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3922 else
3923 return_type = get_base_type (func_type);
3924 if (return_type == NULL)
3925 return 1;
3926
3927 context_type = get_base_type (context_type);
3928
3929 if (return_type->code () == TYPE_CODE_ENUM)
3930 return context_type == NULL || return_type == context_type;
3931 else if (context_type == NULL)
3932 return return_type->code () != TYPE_CODE_VOID;
3933 else
3934 return return_type->code () == context_type->code ();
3935 }
3936
3937
3938 /* Returns the index in SYMS[0..NSYMS-1] that contains the symbol for the
3939 function (if any) that matches the types of the NARGS arguments in
3940 ARGS. If CONTEXT_TYPE is non-null and there is at least one match
3941 that returns that type, then eliminate matches that don't. If
3942 CONTEXT_TYPE is void and there is at least one match that does not
3943 return void, eliminate all matches that do.
3944
3945 Asks the user if there is more than one match remaining. Returns -1
3946 if there is no such symbol or none is selected. NAME is used
3947 solely for messages. May re-arrange and modify SYMS in
3948 the process; the index returned is for the modified vector. */
3949
3950 static int
3951 ada_resolve_function (struct block_symbol syms[],
3952 int nsyms, struct value **args, int nargs,
3953 const char *name, struct type *context_type,
3954 int parse_completion)
3955 {
3956 int fallback;
3957 int k;
3958 int m; /* Number of hits */
3959
3960 m = 0;
3961 /* In the first pass of the loop, we only accept functions matching
3962 context_type. If none are found, we add a second pass of the loop
3963 where every function is accepted. */
3964 for (fallback = 0; m == 0 && fallback < 2; fallback++)
3965 {
3966 for (k = 0; k < nsyms; k += 1)
3967 {
3968 struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3969
3970 if (ada_args_match (syms[k].symbol, args, nargs)
3971 && (fallback || return_match (type, context_type)))
3972 {
3973 syms[m] = syms[k];
3974 m += 1;
3975 }
3976 }
3977 }
3978
3979 /* If we got multiple matches, ask the user which one to use. Don't do this
3980 interactive thing during completion, though, as the purpose of the
3981 completion is providing a list of all possible matches. Prompting the
3982 user to filter it down would be completely unexpected in this case. */
3983 if (m == 0)
3984 return -1;
3985 else if (m > 1 && !parse_completion)
3986 {
3987 printf_filtered (_("Multiple matches for %s\n"), name);
3988 user_select_syms (syms, m, 1);
3989 return 0;
3990 }
3991 return 0;
3992 }
3993
3994 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3995 on the function identified by SYM and BLOCK, and taking NARGS
3996 arguments. Update *EXPP as needed to hold more space. */
3997
3998 static void
3999 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4000 int oplen, struct symbol *sym,
4001 const struct block *block)
4002 {
4003 /* A new expression, with 6 more elements (3 for funcall, 4 for function
4004 symbol, -oplen for operator being replaced). */
4005 struct expression *newexp = (struct expression *)
4006 xzalloc (sizeof (struct expression)
4007 + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4008 struct expression *exp = expp->get ();
4009
4010 newexp->nelts = exp->nelts + 7 - oplen;
4011 newexp->language_defn = exp->language_defn;
4012 newexp->gdbarch = exp->gdbarch;
4013 memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4014 memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4015 EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4016
4017 newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4018 newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4019
4020 newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4021 newexp->elts[pc + 4].block = block;
4022 newexp->elts[pc + 5].symbol = sym;
4023
4024 expp->reset (newexp);
4025 }
4026
4027 /* Type-class predicates */
4028
4029 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4030 or FLOAT). */
4031
4032 static int
4033 numeric_type_p (struct type *type)
4034 {
4035 if (type == NULL)
4036 return 0;
4037 else
4038 {
4039 switch (type->code ())
4040 {
4041 case TYPE_CODE_INT:
4042 case TYPE_CODE_FLT:
4043 return 1;
4044 case TYPE_CODE_RANGE:
4045 return (type == TYPE_TARGET_TYPE (type)
4046 || numeric_type_p (TYPE_TARGET_TYPE (type)));
4047 default:
4048 return 0;
4049 }
4050 }
4051 }
4052
4053 /* True iff TYPE is integral (an INT or RANGE of INTs). */
4054
4055 static int
4056 integer_type_p (struct type *type)
4057 {
4058 if (type == NULL)
4059 return 0;
4060 else
4061 {
4062 switch (type->code ())
4063 {
4064 case TYPE_CODE_INT:
4065 return 1;
4066 case TYPE_CODE_RANGE:
4067 return (type == TYPE_TARGET_TYPE (type)
4068 || integer_type_p (TYPE_TARGET_TYPE (type)));
4069 default:
4070 return 0;
4071 }
4072 }
4073 }
4074
4075 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM). */
4076
4077 static int
4078 scalar_type_p (struct type *type)
4079 {
4080 if (type == NULL)
4081 return 0;
4082 else
4083 {
4084 switch (type->code ())
4085 {
4086 case TYPE_CODE_INT:
4087 case TYPE_CODE_RANGE:
4088 case TYPE_CODE_ENUM:
4089 case TYPE_CODE_FLT:
4090 return 1;
4091 default:
4092 return 0;
4093 }
4094 }
4095 }
4096
4097 /* True iff TYPE is discrete (INT, RANGE, ENUM). */
4098
4099 static int
4100 discrete_type_p (struct type *type)
4101 {
4102 if (type == NULL)
4103 return 0;
4104 else
4105 {
4106 switch (type->code ())
4107 {
4108 case TYPE_CODE_INT:
4109 case TYPE_CODE_RANGE:
4110 case TYPE_CODE_ENUM:
4111 case TYPE_CODE_BOOL:
4112 return 1;
4113 default:
4114 return 0;
4115 }
4116 }
4117 }
4118
4119 /* Returns non-zero if OP with operands in the vector ARGS could be
4120 a user-defined function. Errs on the side of pre-defined operators
4121 (i.e., result 0). */
4122
4123 static int
4124 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4125 {
4126 struct type *type0 =
4127 (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4128 struct type *type1 =
4129 (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4130
4131 if (type0 == NULL)
4132 return 0;
4133
4134 switch (op)
4135 {
4136 default:
4137 return 0;
4138
4139 case BINOP_ADD:
4140 case BINOP_SUB:
4141 case BINOP_MUL:
4142 case BINOP_DIV:
4143 return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4144
4145 case BINOP_REM:
4146 case BINOP_MOD:
4147 case BINOP_BITWISE_AND:
4148 case BINOP_BITWISE_IOR:
4149 case BINOP_BITWISE_XOR:
4150 return (!(integer_type_p (type0) && integer_type_p (type1)));
4151
4152 case BINOP_EQUAL:
4153 case BINOP_NOTEQUAL:
4154 case BINOP_LESS:
4155 case BINOP_GTR:
4156 case BINOP_LEQ:
4157 case BINOP_GEQ:
4158 return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4159
4160 case BINOP_CONCAT:
4161 return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4162
4163 case BINOP_EXP:
4164 return (!(numeric_type_p (type0) && integer_type_p (type1)));
4165
4166 case UNOP_NEG:
4167 case UNOP_PLUS:
4168 case UNOP_LOGICAL_NOT:
4169 case UNOP_ABS:
4170 return (!numeric_type_p (type0));
4171
4172 }
4173 }
4174 \f
4175 /* Renaming */
4176
4177 /* NOTES:
4178
4179 1. In the following, we assume that a renaming type's name may
4180 have an ___XD suffix. It would be nice if this went away at some
4181 point.
4182 2. We handle both the (old) purely type-based representation of
4183 renamings and the (new) variable-based encoding. At some point,
4184 it is devoutly to be hoped that the former goes away
4185 (FIXME: hilfinger-2007-07-09).
4186 3. Subprogram renamings are not implemented, although the XRS
4187 suffix is recognized (FIXME: hilfinger-2007-07-09). */
4188
4189 /* If SYM encodes a renaming,
4190
4191 <renaming> renames <renamed entity>,
4192
4193 sets *LEN to the length of the renamed entity's name,
4194 *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4195 the string describing the subcomponent selected from the renamed
4196 entity. Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4197 (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4198 are undefined). Otherwise, returns a value indicating the category
4199 of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4200 (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4201 subprogram (ADA_SUBPROGRAM_RENAMING). Does no allocation; the
4202 strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4203 deallocated. The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4204 may be NULL, in which case they are not assigned.
4205
4206 [Currently, however, GCC does not generate subprogram renamings.] */
4207
4208 enum ada_renaming_category
4209 ada_parse_renaming (struct symbol *sym,
4210 const char **renamed_entity, int *len,
4211 const char **renaming_expr)
4212 {
4213 enum ada_renaming_category kind;
4214 const char *info;
4215 const char *suffix;
4216
4217 if (sym == NULL)
4218 return ADA_NOT_RENAMING;
4219 switch (SYMBOL_CLASS (sym))
4220 {
4221 default:
4222 return ADA_NOT_RENAMING;
4223 case LOC_LOCAL:
4224 case LOC_STATIC:
4225 case LOC_COMPUTED:
4226 case LOC_OPTIMIZED_OUT:
4227 info = strstr (sym->linkage_name (), "___XR");
4228 if (info == NULL)
4229 return ADA_NOT_RENAMING;
4230 switch (info[5])
4231 {
4232 case '_':
4233 kind = ADA_OBJECT_RENAMING;
4234 info += 6;
4235 break;
4236 case 'E':
4237 kind = ADA_EXCEPTION_RENAMING;
4238 info += 7;
4239 break;
4240 case 'P':
4241 kind = ADA_PACKAGE_RENAMING;
4242 info += 7;
4243 break;
4244 case 'S':
4245 kind = ADA_SUBPROGRAM_RENAMING;
4246 info += 7;
4247 break;
4248 default:
4249 return ADA_NOT_RENAMING;
4250 }
4251 }
4252
4253 if (renamed_entity != NULL)
4254 *renamed_entity = info;
4255 suffix = strstr (info, "___XE");
4256 if (suffix == NULL || suffix == info)
4257 return ADA_NOT_RENAMING;
4258 if (len != NULL)
4259 *len = strlen (info) - strlen (suffix);
4260 suffix += 5;
4261 if (renaming_expr != NULL)
4262 *renaming_expr = suffix;
4263 return kind;
4264 }
4265
4266 /* Compute the value of the given RENAMING_SYM, which is expected to
4267 be a symbol encoding a renaming expression. BLOCK is the block
4268 used to evaluate the renaming. */
4269
4270 static struct value *
4271 ada_read_renaming_var_value (struct symbol *renaming_sym,
4272 const struct block *block)
4273 {
4274 const char *sym_name;
4275
4276 sym_name = renaming_sym->linkage_name ();
4277 expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4278 return evaluate_expression (expr.get ());
4279 }
4280 \f
4281
4282 /* Evaluation: Function Calls */
4283
4284 /* Return an lvalue containing the value VAL. This is the identity on
4285 lvalues, and otherwise has the side-effect of allocating memory
4286 in the inferior where a copy of the value contents is copied. */
4287
4288 static struct value *
4289 ensure_lval (struct value *val)
4290 {
4291 if (VALUE_LVAL (val) == not_lval
4292 || VALUE_LVAL (val) == lval_internalvar)
4293 {
4294 int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4295 const CORE_ADDR addr =
4296 value_as_long (value_allocate_space_in_inferior (len));
4297
4298 VALUE_LVAL (val) = lval_memory;
4299 set_value_address (val, addr);
4300 write_memory (addr, value_contents (val), len);
4301 }
4302
4303 return val;
4304 }
4305
4306 /* Given ARG, a value of type (pointer or reference to a)*
4307 structure/union, extract the component named NAME from the ultimate
4308 target structure/union and return it as a value with its
4309 appropriate type.
4310
4311 The routine searches for NAME among all members of the structure itself
4312 and (recursively) among all members of any wrapper members
4313 (e.g., '_parent').
4314
4315 If NO_ERR, then simply return NULL in case of error, rather than
4316 calling error. */
4317
4318 static struct value *
4319 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4320 {
4321 struct type *t, *t1;
4322 struct value *v;
4323 int check_tag;
4324
4325 v = NULL;
4326 t1 = t = ada_check_typedef (value_type (arg));
4327 if (t->code () == TYPE_CODE_REF)
4328 {
4329 t1 = TYPE_TARGET_TYPE (t);
4330 if (t1 == NULL)
4331 goto BadValue;
4332 t1 = ada_check_typedef (t1);
4333 if (t1->code () == TYPE_CODE_PTR)
4334 {
4335 arg = coerce_ref (arg);
4336 t = t1;
4337 }
4338 }
4339
4340 while (t->code () == TYPE_CODE_PTR)
4341 {
4342 t1 = TYPE_TARGET_TYPE (t);
4343 if (t1 == NULL)
4344 goto BadValue;
4345 t1 = ada_check_typedef (t1);
4346 if (t1->code () == TYPE_CODE_PTR)
4347 {
4348 arg = value_ind (arg);
4349 t = t1;
4350 }
4351 else
4352 break;
4353 }
4354
4355 if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4356 goto BadValue;
4357
4358 if (t1 == t)
4359 v = ada_search_struct_field (name, arg, 0, t);
4360 else
4361 {
4362 int bit_offset, bit_size, byte_offset;
4363 struct type *field_type;
4364 CORE_ADDR address;
4365
4366 if (t->code () == TYPE_CODE_PTR)
4367 address = value_address (ada_value_ind (arg));
4368 else
4369 address = value_address (ada_coerce_ref (arg));
4370
4371 /* Check to see if this is a tagged type. We also need to handle
4372 the case where the type is a reference to a tagged type, but
4373 we have to be careful to exclude pointers to tagged types.
4374 The latter should be shown as usual (as a pointer), whereas
4375 a reference should mostly be transparent to the user. */
4376
4377 if (ada_is_tagged_type (t1, 0)
4378 || (t1->code () == TYPE_CODE_REF
4379 && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4380 {
4381 /* We first try to find the searched field in the current type.
4382 If not found then let's look in the fixed type. */
4383
4384 if (!find_struct_field (name, t1, 0,
4385 &field_type, &byte_offset, &bit_offset,
4386 &bit_size, NULL))
4387 check_tag = 1;
4388 else
4389 check_tag = 0;
4390 }
4391 else
4392 check_tag = 0;
4393
4394 /* Convert to fixed type in all cases, so that we have proper
4395 offsets to each field in unconstrained record types. */
4396 t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4397 address, NULL, check_tag);
4398
4399 /* Resolve the dynamic type as well. */
4400 arg = value_from_contents_and_address (t1, nullptr, address);
4401 t1 = value_type (arg);
4402
4403 if (find_struct_field (name, t1, 0,
4404 &field_type, &byte_offset, &bit_offset,
4405 &bit_size, NULL))
4406 {
4407 if (bit_size != 0)
4408 {
4409 if (t->code () == TYPE_CODE_REF)
4410 arg = ada_coerce_ref (arg);
4411 else
4412 arg = ada_value_ind (arg);
4413 v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4414 bit_offset, bit_size,
4415 field_type);
4416 }
4417 else
4418 v = value_at_lazy (field_type, address + byte_offset);
4419 }
4420 }
4421
4422 if (v != NULL || no_err)
4423 return v;
4424 else
4425 error (_("There is no member named %s."), name);
4426
4427 BadValue:
4428 if (no_err)
4429 return NULL;
4430 else
4431 error (_("Attempt to extract a component of "
4432 "a value that is not a record."));
4433 }
4434
4435 /* Return the value ACTUAL, converted to be an appropriate value for a
4436 formal of type FORMAL_TYPE. Use *SP as a stack pointer for
4437 allocating any necessary descriptors (fat pointers), or copies of
4438 values not residing in memory, updating it as needed. */
4439
4440 struct value *
4441 ada_convert_actual (struct value *actual, struct type *formal_type0)
4442 {
4443 struct type *actual_type = ada_check_typedef (value_type (actual));
4444 struct type *formal_type = ada_check_typedef (formal_type0);
4445 struct type *formal_target =
4446 formal_type->code () == TYPE_CODE_PTR
4447 ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4448 struct type *actual_target =
4449 actual_type->code () == TYPE_CODE_PTR
4450 ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4451
4452 if (ada_is_array_descriptor_type (formal_target)
4453 && actual_target->code () == TYPE_CODE_ARRAY)
4454 return make_array_descriptor (formal_type, actual);
4455 else if (formal_type->code () == TYPE_CODE_PTR
4456 || formal_type->code () == TYPE_CODE_REF)
4457 {
4458 struct value *result;
4459
4460 if (formal_target->code () == TYPE_CODE_ARRAY
4461 && ada_is_array_descriptor_type (actual_target))
4462 result = desc_data (actual);
4463 else if (formal_type->code () != TYPE_CODE_PTR)
4464 {
4465 if (VALUE_LVAL (actual) != lval_memory)
4466 {
4467 struct value *val;
4468
4469 actual_type = ada_check_typedef (value_type (actual));
4470 val = allocate_value (actual_type);
4471 memcpy ((char *) value_contents_raw (val),
4472 (char *) value_contents (actual),
4473 TYPE_LENGTH (actual_type));
4474 actual = ensure_lval (val);
4475 }
4476 result = value_addr (actual);
4477 }
4478 else
4479 return actual;
4480 return value_cast_pointers (formal_type, result, 0);
4481 }
4482 else if (actual_type->code () == TYPE_CODE_PTR)
4483 return ada_value_ind (actual);
4484 else if (ada_is_aligner_type (formal_type))
4485 {
4486 /* We need to turn this parameter into an aligner type
4487 as well. */
4488 struct value *aligner = allocate_value (formal_type);
4489 struct value *component = ada_value_struct_elt (aligner, "F", 0);
4490
4491 value_assign_to_component (aligner, component, actual);
4492 return aligner;
4493 }
4494
4495 return actual;
4496 }
4497
4498 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4499 type TYPE. This is usually an inefficient no-op except on some targets
4500 (such as AVR) where the representation of a pointer and an address
4501 differs. */
4502
4503 static CORE_ADDR
4504 value_pointer (struct value *value, struct type *type)
4505 {
4506 struct gdbarch *gdbarch = get_type_arch (type);
4507 unsigned len = TYPE_LENGTH (type);
4508 gdb_byte *buf = (gdb_byte *) alloca (len);
4509 CORE_ADDR addr;
4510
4511 addr = value_address (value);
4512 gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4513 addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4514 return addr;
4515 }
4516
4517
4518 /* Push a descriptor of type TYPE for array value ARR on the stack at
4519 *SP, updating *SP to reflect the new descriptor. Return either
4520 an lvalue representing the new descriptor, or (if TYPE is a pointer-
4521 to-descriptor type rather than a descriptor type), a struct value *
4522 representing a pointer to this descriptor. */
4523
4524 static struct value *
4525 make_array_descriptor (struct type *type, struct value *arr)
4526 {
4527 struct type *bounds_type = desc_bounds_type (type);
4528 struct type *desc_type = desc_base_type (type);
4529 struct value *descriptor = allocate_value (desc_type);
4530 struct value *bounds = allocate_value (bounds_type);
4531 int i;
4532
4533 for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4534 i > 0; i -= 1)
4535 {
4536 modify_field (value_type (bounds), value_contents_writeable (bounds),
4537 ada_array_bound (arr, i, 0),
4538 desc_bound_bitpos (bounds_type, i, 0),
4539 desc_bound_bitsize (bounds_type, i, 0));
4540 modify_field (value_type (bounds), value_contents_writeable (bounds),
4541 ada_array_bound (arr, i, 1),
4542 desc_bound_bitpos (bounds_type, i, 1),
4543 desc_bound_bitsize (bounds_type, i, 1));
4544 }
4545
4546 bounds = ensure_lval (bounds);
4547
4548 modify_field (value_type (descriptor),
4549 value_contents_writeable (descriptor),
4550 value_pointer (ensure_lval (arr),
4551 desc_type->field (0).type ()),
4552 fat_pntr_data_bitpos (desc_type),
4553 fat_pntr_data_bitsize (desc_type));
4554
4555 modify_field (value_type (descriptor),
4556 value_contents_writeable (descriptor),
4557 value_pointer (bounds,
4558 desc_type->field (1).type ()),
4559 fat_pntr_bounds_bitpos (desc_type),
4560 fat_pntr_bounds_bitsize (desc_type));
4561
4562 descriptor = ensure_lval (descriptor);
4563
4564 if (type->code () == TYPE_CODE_PTR)
4565 return value_addr (descriptor);
4566 else
4567 return descriptor;
4568 }
4569 \f
4570 /* Symbol Cache Module */
4571
4572 /* Performance measurements made as of 2010-01-15 indicate that
4573 this cache does bring some noticeable improvements. Depending
4574 on the type of entity being printed, the cache can make it as much
4575 as an order of magnitude faster than without it.
4576
4577 The descriptive type DWARF extension has significantly reduced
4578 the need for this cache, at least when DWARF is being used. However,
4579 even in this case, some expensive name-based symbol searches are still
4580 sometimes necessary - to find an XVZ variable, mostly. */
4581
4582 /* Initialize the contents of SYM_CACHE. */
4583
4584 static void
4585 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4586 {
4587 obstack_init (&sym_cache->cache_space);
4588 memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4589 }
4590
4591 /* Free the memory used by SYM_CACHE. */
4592
4593 static void
4594 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4595 {
4596 obstack_free (&sym_cache->cache_space, NULL);
4597 xfree (sym_cache);
4598 }
4599
4600 /* Return the symbol cache associated to the given program space PSPACE.
4601 If not allocated for this PSPACE yet, allocate and initialize one. */
4602
4603 static struct ada_symbol_cache *
4604 ada_get_symbol_cache (struct program_space *pspace)
4605 {
4606 struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4607
4608 if (pspace_data->sym_cache == NULL)
4609 {
4610 pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4611 ada_init_symbol_cache (pspace_data->sym_cache);
4612 }
4613
4614 return pspace_data->sym_cache;
4615 }
4616
4617 /* Clear all entries from the symbol cache. */
4618
4619 static void
4620 ada_clear_symbol_cache (void)
4621 {
4622 struct ada_symbol_cache *sym_cache
4623 = ada_get_symbol_cache (current_program_space);
4624
4625 obstack_free (&sym_cache->cache_space, NULL);
4626 ada_init_symbol_cache (sym_cache);
4627 }
4628
4629 /* Search our cache for an entry matching NAME and DOMAIN.
4630 Return it if found, or NULL otherwise. */
4631
4632 static struct cache_entry **
4633 find_entry (const char *name, domain_enum domain)
4634 {
4635 struct ada_symbol_cache *sym_cache
4636 = ada_get_symbol_cache (current_program_space);
4637 int h = msymbol_hash (name) % HASH_SIZE;
4638 struct cache_entry **e;
4639
4640 for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4641 {
4642 if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4643 return e;
4644 }
4645 return NULL;
4646 }
4647
4648 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4649 Return 1 if found, 0 otherwise.
4650
4651 If an entry was found and SYM is not NULL, set *SYM to the entry's
4652 SYM. Same principle for BLOCK if not NULL. */
4653
4654 static int
4655 lookup_cached_symbol (const char *name, domain_enum domain,
4656 struct symbol **sym, const struct block **block)
4657 {
4658 struct cache_entry **e = find_entry (name, domain);
4659
4660 if (e == NULL)
4661 return 0;
4662 if (sym != NULL)
4663 *sym = (*e)->sym;
4664 if (block != NULL)
4665 *block = (*e)->block;
4666 return 1;
4667 }
4668
4669 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4670 in domain DOMAIN, save this result in our symbol cache. */
4671
4672 static void
4673 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4674 const struct block *block)
4675 {
4676 struct ada_symbol_cache *sym_cache
4677 = ada_get_symbol_cache (current_program_space);
4678 int h;
4679 struct cache_entry *e;
4680
4681 /* Symbols for builtin types don't have a block.
4682 For now don't cache such symbols. */
4683 if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4684 return;
4685
4686 /* If the symbol is a local symbol, then do not cache it, as a search
4687 for that symbol depends on the context. To determine whether
4688 the symbol is local or not, we check the block where we found it
4689 against the global and static blocks of its associated symtab. */
4690 if (sym
4691 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4692 GLOBAL_BLOCK) != block
4693 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4694 STATIC_BLOCK) != block)
4695 return;
4696
4697 h = msymbol_hash (name) % HASH_SIZE;
4698 e = XOBNEW (&sym_cache->cache_space, cache_entry);
4699 e->next = sym_cache->root[h];
4700 sym_cache->root[h] = e;
4701 e->name = obstack_strdup (&sym_cache->cache_space, name);
4702 e->sym = sym;
4703 e->domain = domain;
4704 e->block = block;
4705 }
4706 \f
4707 /* Symbol Lookup */
4708
4709 /* Return the symbol name match type that should be used used when
4710 searching for all symbols matching LOOKUP_NAME.
4711
4712 LOOKUP_NAME is expected to be a symbol name after transformation
4713 for Ada lookups. */
4714
4715 static symbol_name_match_type
4716 name_match_type_from_name (const char *lookup_name)
4717 {
4718 return (strstr (lookup_name, "__") == NULL
4719 ? symbol_name_match_type::WILD
4720 : symbol_name_match_type::FULL);
4721 }
4722
4723 /* Return the result of a standard (literal, C-like) lookup of NAME in
4724 given DOMAIN, visible from lexical block BLOCK. */
4725
4726 static struct symbol *
4727 standard_lookup (const char *name, const struct block *block,
4728 domain_enum domain)
4729 {
4730 /* Initialize it just to avoid a GCC false warning. */
4731 struct block_symbol sym = {};
4732
4733 if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4734 return sym.symbol;
4735 ada_lookup_encoded_symbol (name, block, domain, &sym);
4736 cache_symbol (name, domain, sym.symbol, sym.block);
4737 return sym.symbol;
4738 }
4739
4740
4741 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4742 in the symbol fields of SYMS[0..N-1]. We treat enumerals as functions,
4743 since they contend in overloading in the same way. */
4744 static int
4745 is_nonfunction (struct block_symbol syms[], int n)
4746 {
4747 int i;
4748
4749 for (i = 0; i < n; i += 1)
4750 if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4751 && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4752 || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4753 return 1;
4754
4755 return 0;
4756 }
4757
4758 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4759 struct types. Otherwise, they may not. */
4760
4761 static int
4762 equiv_types (struct type *type0, struct type *type1)
4763 {
4764 if (type0 == type1)
4765 return 1;
4766 if (type0 == NULL || type1 == NULL
4767 || type0->code () != type1->code ())
4768 return 0;
4769 if ((type0->code () == TYPE_CODE_STRUCT
4770 || type0->code () == TYPE_CODE_ENUM)
4771 && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4772 && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4773 return 1;
4774
4775 return 0;
4776 }
4777
4778 /* True iff SYM0 represents the same entity as SYM1, or one that is
4779 no more defined than that of SYM1. */
4780
4781 static int
4782 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4783 {
4784 if (sym0 == sym1)
4785 return 1;
4786 if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4787 || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4788 return 0;
4789
4790 switch (SYMBOL_CLASS (sym0))
4791 {
4792 case LOC_UNDEF:
4793 return 1;
4794 case LOC_TYPEDEF:
4795 {
4796 struct type *type0 = SYMBOL_TYPE (sym0);
4797 struct type *type1 = SYMBOL_TYPE (sym1);
4798 const char *name0 = sym0->linkage_name ();
4799 const char *name1 = sym1->linkage_name ();
4800 int len0 = strlen (name0);
4801
4802 return
4803 type0->code () == type1->code ()
4804 && (equiv_types (type0, type1)
4805 || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4806 && startswith (name1 + len0, "___XV")));
4807 }
4808 case LOC_CONST:
4809 return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4810 && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4811
4812 case LOC_STATIC:
4813 {
4814 const char *name0 = sym0->linkage_name ();
4815 const char *name1 = sym1->linkage_name ();
4816 return (strcmp (name0, name1) == 0
4817 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4818 }
4819
4820 default:
4821 return 0;
4822 }
4823 }
4824
4825 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4826 records in OBSTACKP. Do nothing if SYM is a duplicate. */
4827
4828 static void
4829 add_defn_to_vec (struct obstack *obstackp,
4830 struct symbol *sym,
4831 const struct block *block)
4832 {
4833 int i;
4834 struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4835
4836 /* Do not try to complete stub types, as the debugger is probably
4837 already scanning all symbols matching a certain name at the
4838 time when this function is called. Trying to replace the stub
4839 type by its associated full type will cause us to restart a scan
4840 which may lead to an infinite recursion. Instead, the client
4841 collecting the matching symbols will end up collecting several
4842 matches, with at least one of them complete. It can then filter
4843 out the stub ones if needed. */
4844
4845 for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4846 {
4847 if (lesseq_defined_than (sym, prevDefns[i].symbol))
4848 return;
4849 else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4850 {
4851 prevDefns[i].symbol = sym;
4852 prevDefns[i].block = block;
4853 return;
4854 }
4855 }
4856
4857 {
4858 struct block_symbol info;
4859
4860 info.symbol = sym;
4861 info.block = block;
4862 obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4863 }
4864 }
4865
4866 /* Number of block_symbol structures currently collected in current vector in
4867 OBSTACKP. */
4868
4869 static int
4870 num_defns_collected (struct obstack *obstackp)
4871 {
4872 return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4873 }
4874
4875 /* Vector of block_symbol structures currently collected in current vector in
4876 OBSTACKP. If FINISH, close off the vector and return its final address. */
4877
4878 static struct block_symbol *
4879 defns_collected (struct obstack *obstackp, int finish)
4880 {
4881 if (finish)
4882 return (struct block_symbol *) obstack_finish (obstackp);
4883 else
4884 return (struct block_symbol *) obstack_base (obstackp);
4885 }
4886
4887 /* Return a bound minimal symbol matching NAME according to Ada
4888 decoding rules. Returns an invalid symbol if there is no such
4889 minimal symbol. Names prefixed with "standard__" are handled
4890 specially: "standard__" is first stripped off, and only static and
4891 global symbols are searched. */
4892
4893 struct bound_minimal_symbol
4894 ada_lookup_simple_minsym (const char *name)
4895 {
4896 struct bound_minimal_symbol result;
4897
4898 memset (&result, 0, sizeof (result));
4899
4900 symbol_name_match_type match_type = name_match_type_from_name (name);
4901 lookup_name_info lookup_name (name, match_type);
4902
4903 symbol_name_matcher_ftype *match_name
4904 = ada_get_symbol_name_matcher (lookup_name);
4905
4906 for (objfile *objfile : current_program_space->objfiles ())
4907 {
4908 for (minimal_symbol *msymbol : objfile->msymbols ())
4909 {
4910 if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4911 && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4912 {
4913 result.minsym = msymbol;
4914 result.objfile = objfile;
4915 break;
4916 }
4917 }
4918 }
4919
4920 return result;
4921 }
4922
4923 /* For all subprograms that statically enclose the subprogram of the
4924 selected frame, add symbols matching identifier NAME in DOMAIN
4925 and their blocks to the list of data in OBSTACKP, as for
4926 ada_add_block_symbols (q.v.). If WILD_MATCH_P, treat as NAME
4927 with a wildcard prefix. */
4928
4929 static void
4930 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4931 const lookup_name_info &lookup_name,
4932 domain_enum domain)
4933 {
4934 }
4935
4936 /* True if TYPE is definitely an artificial type supplied to a symbol
4937 for which no debugging information was given in the symbol file. */
4938
4939 static int
4940 is_nondebugging_type (struct type *type)
4941 {
4942 const char *name = ada_type_name (type);
4943
4944 return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4945 }
4946
4947 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4948 that are deemed "identical" for practical purposes.
4949
4950 This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4951 types and that their number of enumerals is identical (in other
4952 words, type1->num_fields () == type2->num_fields ()). */
4953
4954 static int
4955 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4956 {
4957 int i;
4958
4959 /* The heuristic we use here is fairly conservative. We consider
4960 that 2 enumerate types are identical if they have the same
4961 number of enumerals and that all enumerals have the same
4962 underlying value and name. */
4963
4964 /* All enums in the type should have an identical underlying value. */
4965 for (i = 0; i < type1->num_fields (); i++)
4966 if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4967 return 0;
4968
4969 /* All enumerals should also have the same name (modulo any numerical
4970 suffix). */
4971 for (i = 0; i < type1->num_fields (); i++)
4972 {
4973 const char *name_1 = TYPE_FIELD_NAME (type1, i);
4974 const char *name_2 = TYPE_FIELD_NAME (type2, i);
4975 int len_1 = strlen (name_1);
4976 int len_2 = strlen (name_2);
4977
4978 ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4979 ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4980 if (len_1 != len_2
4981 || strncmp (TYPE_FIELD_NAME (type1, i),
4982 TYPE_FIELD_NAME (type2, i),
4983 len_1) != 0)
4984 return 0;
4985 }
4986
4987 return 1;
4988 }
4989
4990 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4991 that are deemed "identical" for practical purposes. Sometimes,
4992 enumerals are not strictly identical, but their types are so similar
4993 that they can be considered identical.
4994
4995 For instance, consider the following code:
4996
4997 type Color is (Black, Red, Green, Blue, White);
4998 type RGB_Color is new Color range Red .. Blue;
4999
5000 Type RGB_Color is a subrange of an implicit type which is a copy
5001 of type Color. If we call that implicit type RGB_ColorB ("B" is
5002 for "Base Type"), then type RGB_ColorB is a copy of type Color.
5003 As a result, when an expression references any of the enumeral
5004 by name (Eg. "print green"), the expression is technically
5005 ambiguous and the user should be asked to disambiguate. But
5006 doing so would only hinder the user, since it wouldn't matter
5007 what choice he makes, the outcome would always be the same.
5008 So, for practical purposes, we consider them as the same. */
5009
5010 static int
5011 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5012 {
5013 int i;
5014
5015 /* Before performing a thorough comparison check of each type,
5016 we perform a series of inexpensive checks. We expect that these
5017 checks will quickly fail in the vast majority of cases, and thus
5018 help prevent the unnecessary use of a more expensive comparison.
5019 Said comparison also expects us to make some of these checks
5020 (see ada_identical_enum_types_p). */
5021
5022 /* Quick check: All symbols should have an enum type. */
5023 for (i = 0; i < syms.size (); i++)
5024 if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
5025 return 0;
5026
5027 /* Quick check: They should all have the same value. */
5028 for (i = 1; i < syms.size (); i++)
5029 if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5030 return 0;
5031
5032 /* Quick check: They should all have the same number of enumerals. */
5033 for (i = 1; i < syms.size (); i++)
5034 if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
5035 != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
5036 return 0;
5037
5038 /* All the sanity checks passed, so we might have a set of
5039 identical enumeration types. Perform a more complete
5040 comparison of the type of each symbol. */
5041 for (i = 1; i < syms.size (); i++)
5042 if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5043 SYMBOL_TYPE (syms[0].symbol)))
5044 return 0;
5045
5046 return 1;
5047 }
5048
5049 /* Remove any non-debugging symbols in SYMS that definitely
5050 duplicate other symbols in the list (The only case I know of where
5051 this happens is when object files containing stabs-in-ecoff are
5052 linked with files containing ordinary ecoff debugging symbols (or no
5053 debugging symbols)). Modifies SYMS to squeeze out deleted entries.
5054 Returns the number of items in the modified list. */
5055
5056 static int
5057 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5058 {
5059 int i, j;
5060
5061 /* We should never be called with less than 2 symbols, as there
5062 cannot be any extra symbol in that case. But it's easy to
5063 handle, since we have nothing to do in that case. */
5064 if (syms->size () < 2)
5065 return syms->size ();
5066
5067 i = 0;
5068 while (i < syms->size ())
5069 {
5070 int remove_p = 0;
5071
5072 /* If two symbols have the same name and one of them is a stub type,
5073 the get rid of the stub. */
5074
5075 if (SYMBOL_TYPE ((*syms)[i].symbol)->is_stub ()
5076 && (*syms)[i].symbol->linkage_name () != NULL)
5077 {
5078 for (j = 0; j < syms->size (); j++)
5079 {
5080 if (j != i
5081 && !SYMBOL_TYPE ((*syms)[j].symbol)->is_stub ()
5082 && (*syms)[j].symbol->linkage_name () != NULL
5083 && strcmp ((*syms)[i].symbol->linkage_name (),
5084 (*syms)[j].symbol->linkage_name ()) == 0)
5085 remove_p = 1;
5086 }
5087 }
5088
5089 /* Two symbols with the same name, same class and same address
5090 should be identical. */
5091
5092 else if ((*syms)[i].symbol->linkage_name () != NULL
5093 && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5094 && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5095 {
5096 for (j = 0; j < syms->size (); j += 1)
5097 {
5098 if (i != j
5099 && (*syms)[j].symbol->linkage_name () != NULL
5100 && strcmp ((*syms)[i].symbol->linkage_name (),
5101 (*syms)[j].symbol->linkage_name ()) == 0
5102 && SYMBOL_CLASS ((*syms)[i].symbol)
5103 == SYMBOL_CLASS ((*syms)[j].symbol)
5104 && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5105 == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5106 remove_p = 1;
5107 }
5108 }
5109
5110 if (remove_p)
5111 syms->erase (syms->begin () + i);
5112 else
5113 i += 1;
5114 }
5115
5116 /* If all the remaining symbols are identical enumerals, then
5117 just keep the first one and discard the rest.
5118
5119 Unlike what we did previously, we do not discard any entry
5120 unless they are ALL identical. This is because the symbol
5121 comparison is not a strict comparison, but rather a practical
5122 comparison. If all symbols are considered identical, then
5123 we can just go ahead and use the first one and discard the rest.
5124 But if we cannot reduce the list to a single element, we have
5125 to ask the user to disambiguate anyways. And if we have to
5126 present a multiple-choice menu, it's less confusing if the list
5127 isn't missing some choices that were identical and yet distinct. */
5128 if (symbols_are_identical_enums (*syms))
5129 syms->resize (1);
5130
5131 return syms->size ();
5132 }
5133
5134 /* Given a type that corresponds to a renaming entity, use the type name
5135 to extract the scope (package name or function name, fully qualified,
5136 and following the GNAT encoding convention) where this renaming has been
5137 defined. */
5138
5139 static std::string
5140 xget_renaming_scope (struct type *renaming_type)
5141 {
5142 /* The renaming types adhere to the following convention:
5143 <scope>__<rename>___<XR extension>.
5144 So, to extract the scope, we search for the "___XR" extension,
5145 and then backtrack until we find the first "__". */
5146
5147 const char *name = renaming_type->name ();
5148 const char *suffix = strstr (name, "___XR");
5149 const char *last;
5150
5151 /* Now, backtrack a bit until we find the first "__". Start looking
5152 at suffix - 3, as the <rename> part is at least one character long. */
5153
5154 for (last = suffix - 3; last > name; last--)
5155 if (last[0] == '_' && last[1] == '_')
5156 break;
5157
5158 /* Make a copy of scope and return it. */
5159 return std::string (name, last);
5160 }
5161
5162 /* Return nonzero if NAME corresponds to a package name. */
5163
5164 static int
5165 is_package_name (const char *name)
5166 {
5167 /* Here, We take advantage of the fact that no symbols are generated
5168 for packages, while symbols are generated for each function.
5169 So the condition for NAME represent a package becomes equivalent
5170 to NAME not existing in our list of symbols. There is only one
5171 small complication with library-level functions (see below). */
5172
5173 /* If it is a function that has not been defined at library level,
5174 then we should be able to look it up in the symbols. */
5175 if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5176 return 0;
5177
5178 /* Library-level function names start with "_ada_". See if function
5179 "_ada_" followed by NAME can be found. */
5180
5181 /* Do a quick check that NAME does not contain "__", since library-level
5182 functions names cannot contain "__" in them. */
5183 if (strstr (name, "__") != NULL)
5184 return 0;
5185
5186 std::string fun_name = string_printf ("_ada_%s", name);
5187
5188 return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5189 }
5190
5191 /* Return nonzero if SYM corresponds to a renaming entity that is
5192 not visible from FUNCTION_NAME. */
5193
5194 static int
5195 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5196 {
5197 if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5198 return 0;
5199
5200 std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5201
5202 /* If the rename has been defined in a package, then it is visible. */
5203 if (is_package_name (scope.c_str ()))
5204 return 0;
5205
5206 /* Check that the rename is in the current function scope by checking
5207 that its name starts with SCOPE. */
5208
5209 /* If the function name starts with "_ada_", it means that it is
5210 a library-level function. Strip this prefix before doing the
5211 comparison, as the encoding for the renaming does not contain
5212 this prefix. */
5213 if (startswith (function_name, "_ada_"))
5214 function_name += 5;
5215
5216 return !startswith (function_name, scope.c_str ());
5217 }
5218
5219 /* Remove entries from SYMS that corresponds to a renaming entity that
5220 is not visible from the function associated with CURRENT_BLOCK or
5221 that is superfluous due to the presence of more specific renaming
5222 information. Places surviving symbols in the initial entries of
5223 SYMS and returns the number of surviving symbols.
5224
5225 Rationale:
5226 First, in cases where an object renaming is implemented as a
5227 reference variable, GNAT may produce both the actual reference
5228 variable and the renaming encoding. In this case, we discard the
5229 latter.
5230
5231 Second, GNAT emits a type following a specified encoding for each renaming
5232 entity. Unfortunately, STABS currently does not support the definition
5233 of types that are local to a given lexical block, so all renamings types
5234 are emitted at library level. As a consequence, if an application
5235 contains two renaming entities using the same name, and a user tries to
5236 print the value of one of these entities, the result of the ada symbol
5237 lookup will also contain the wrong renaming type.
5238
5239 This function partially covers for this limitation by attempting to
5240 remove from the SYMS list renaming symbols that should be visible
5241 from CURRENT_BLOCK. However, there does not seem be a 100% reliable
5242 method with the current information available. The implementation
5243 below has a couple of limitations (FIXME: brobecker-2003-05-12):
5244
5245 - When the user tries to print a rename in a function while there
5246 is another rename entity defined in a package: Normally, the
5247 rename in the function has precedence over the rename in the
5248 package, so the latter should be removed from the list. This is
5249 currently not the case.
5250
5251 - This function will incorrectly remove valid renames if
5252 the CURRENT_BLOCK corresponds to a function which symbol name
5253 has been changed by an "Export" pragma. As a consequence,
5254 the user will be unable to print such rename entities. */
5255
5256 static int
5257 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5258 const struct block *current_block)
5259 {
5260 struct symbol *current_function;
5261 const char *current_function_name;
5262 int i;
5263 int is_new_style_renaming;
5264
5265 /* If there is both a renaming foo___XR... encoded as a variable and
5266 a simple variable foo in the same block, discard the latter.
5267 First, zero out such symbols, then compress. */
5268 is_new_style_renaming = 0;
5269 for (i = 0; i < syms->size (); i += 1)
5270 {
5271 struct symbol *sym = (*syms)[i].symbol;
5272 const struct block *block = (*syms)[i].block;
5273 const char *name;
5274 const char *suffix;
5275
5276 if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5277 continue;
5278 name = sym->linkage_name ();
5279 suffix = strstr (name, "___XR");
5280
5281 if (suffix != NULL)
5282 {
5283 int name_len = suffix - name;
5284 int j;
5285
5286 is_new_style_renaming = 1;
5287 for (j = 0; j < syms->size (); j += 1)
5288 if (i != j && (*syms)[j].symbol != NULL
5289 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5290 name_len) == 0
5291 && block == (*syms)[j].block)
5292 (*syms)[j].symbol = NULL;
5293 }
5294 }
5295 if (is_new_style_renaming)
5296 {
5297 int j, k;
5298
5299 for (j = k = 0; j < syms->size (); j += 1)
5300 if ((*syms)[j].symbol != NULL)
5301 {
5302 (*syms)[k] = (*syms)[j];
5303 k += 1;
5304 }
5305 return k;
5306 }
5307
5308 /* Extract the function name associated to CURRENT_BLOCK.
5309 Abort if unable to do so. */
5310
5311 if (current_block == NULL)
5312 return syms->size ();
5313
5314 current_function = block_linkage_function (current_block);
5315 if (current_function == NULL)
5316 return syms->size ();
5317
5318 current_function_name = current_function->linkage_name ();
5319 if (current_function_name == NULL)
5320 return syms->size ();
5321
5322 /* Check each of the symbols, and remove it from the list if it is
5323 a type corresponding to a renaming that is out of the scope of
5324 the current block. */
5325
5326 i = 0;
5327 while (i < syms->size ())
5328 {
5329 if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5330 == ADA_OBJECT_RENAMING
5331 && old_renaming_is_invisible ((*syms)[i].symbol,
5332 current_function_name))
5333 syms->erase (syms->begin () + i);
5334 else
5335 i += 1;
5336 }
5337
5338 return syms->size ();
5339 }
5340
5341 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5342 whose name and domain match NAME and DOMAIN respectively.
5343 If no match was found, then extend the search to "enclosing"
5344 routines (in other words, if we're inside a nested function,
5345 search the symbols defined inside the enclosing functions).
5346 If WILD_MATCH_P is nonzero, perform the naming matching in
5347 "wild" mode (see function "wild_match" for more info).
5348
5349 Note: This function assumes that OBSTACKP has 0 (zero) element in it. */
5350
5351 static void
5352 ada_add_local_symbols (struct obstack *obstackp,
5353 const lookup_name_info &lookup_name,
5354 const struct block *block, domain_enum domain)
5355 {
5356 int block_depth = 0;
5357
5358 while (block != NULL)
5359 {
5360 block_depth += 1;
5361 ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5362
5363 /* If we found a non-function match, assume that's the one. */
5364 if (is_nonfunction (defns_collected (obstackp, 0),
5365 num_defns_collected (obstackp)))
5366 return;
5367
5368 block = BLOCK_SUPERBLOCK (block);
5369 }
5370
5371 /* If no luck so far, try to find NAME as a local symbol in some lexically
5372 enclosing subprogram. */
5373 if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5374 add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5375 }
5376
5377 /* An object of this type is used as the user_data argument when
5378 calling the map_matching_symbols method. */
5379
5380 struct match_data
5381 {
5382 struct objfile *objfile;
5383 struct obstack *obstackp;
5384 struct symbol *arg_sym;
5385 int found_sym;
5386 };
5387
5388 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5389 to a list of symbols. DATA is a pointer to a struct match_data *
5390 containing the obstack that collects the symbol list, the file that SYM
5391 must come from, a flag indicating whether a non-argument symbol has
5392 been found in the current block, and the last argument symbol
5393 passed in SYM within the current block (if any). When SYM is null,
5394 marking the end of a block, the argument symbol is added if no
5395 other has been found. */
5396
5397 static bool
5398 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5399 struct match_data *data)
5400 {
5401 const struct block *block = bsym->block;
5402 struct symbol *sym = bsym->symbol;
5403
5404 if (sym == NULL)
5405 {
5406 if (!data->found_sym && data->arg_sym != NULL)
5407 add_defn_to_vec (data->obstackp,
5408 fixup_symbol_section (data->arg_sym, data->objfile),
5409 block);
5410 data->found_sym = 0;
5411 data->arg_sym = NULL;
5412 }
5413 else
5414 {
5415 if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5416 return true;
5417 else if (SYMBOL_IS_ARGUMENT (sym))
5418 data->arg_sym = sym;
5419 else
5420 {
5421 data->found_sym = 1;
5422 add_defn_to_vec (data->obstackp,
5423 fixup_symbol_section (sym, data->objfile),
5424 block);
5425 }
5426 }
5427 return true;
5428 }
5429
5430 /* Helper for add_nonlocal_symbols. Find symbols in DOMAIN which are
5431 targeted by renamings matching LOOKUP_NAME in BLOCK. Add these
5432 symbols to OBSTACKP. Return whether we found such symbols. */
5433
5434 static int
5435 ada_add_block_renamings (struct obstack *obstackp,
5436 const struct block *block,
5437 const lookup_name_info &lookup_name,
5438 domain_enum domain)
5439 {
5440 struct using_direct *renaming;
5441 int defns_mark = num_defns_collected (obstackp);
5442
5443 symbol_name_matcher_ftype *name_match
5444 = ada_get_symbol_name_matcher (lookup_name);
5445
5446 for (renaming = block_using (block);
5447 renaming != NULL;
5448 renaming = renaming->next)
5449 {
5450 const char *r_name;
5451
5452 /* Avoid infinite recursions: skip this renaming if we are actually
5453 already traversing it.
5454
5455 Currently, symbol lookup in Ada don't use the namespace machinery from
5456 C++/Fortran support: skip namespace imports that use them. */
5457 if (renaming->searched
5458 || (renaming->import_src != NULL
5459 && renaming->import_src[0] != '\0')
5460 || (renaming->import_dest != NULL
5461 && renaming->import_dest[0] != '\0'))
5462 continue;
5463 renaming->searched = 1;
5464
5465 /* TODO: here, we perform another name-based symbol lookup, which can
5466 pull its own multiple overloads. In theory, we should be able to do
5467 better in this case since, in DWARF, DW_AT_import is a DIE reference,
5468 not a simple name. But in order to do this, we would need to enhance
5469 the DWARF reader to associate a symbol to this renaming, instead of a
5470 name. So, for now, we do something simpler: re-use the C++/Fortran
5471 namespace machinery. */
5472 r_name = (renaming->alias != NULL
5473 ? renaming->alias
5474 : renaming->declaration);
5475 if (name_match (r_name, lookup_name, NULL))
5476 {
5477 lookup_name_info decl_lookup_name (renaming->declaration,
5478 lookup_name.match_type ());
5479 ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5480 1, NULL);
5481 }
5482 renaming->searched = 0;
5483 }
5484 return num_defns_collected (obstackp) != defns_mark;
5485 }
5486
5487 /* Implements compare_names, but only applying the comparision using
5488 the given CASING. */
5489
5490 static int
5491 compare_names_with_case (const char *string1, const char *string2,
5492 enum case_sensitivity casing)
5493 {
5494 while (*string1 != '\0' && *string2 != '\0')
5495 {
5496 char c1, c2;
5497
5498 if (isspace (*string1) || isspace (*string2))
5499 return strcmp_iw_ordered (string1, string2);
5500
5501 if (casing == case_sensitive_off)
5502 {
5503 c1 = tolower (*string1);
5504 c2 = tolower (*string2);
5505 }
5506 else
5507 {
5508 c1 = *string1;
5509 c2 = *string2;
5510 }
5511 if (c1 != c2)
5512 break;
5513
5514 string1 += 1;
5515 string2 += 1;
5516 }
5517
5518 switch (*string1)
5519 {
5520 case '(':
5521 return strcmp_iw_ordered (string1, string2);
5522 case '_':
5523 if (*string2 == '\0')
5524 {
5525 if (is_name_suffix (string1))
5526 return 0;
5527 else
5528 return 1;
5529 }
5530 /* FALLTHROUGH */
5531 default:
5532 if (*string2 == '(')
5533 return strcmp_iw_ordered (string1, string2);
5534 else
5535 {
5536 if (casing == case_sensitive_off)
5537 return tolower (*string1) - tolower (*string2);
5538 else
5539 return *string1 - *string2;
5540 }
5541 }
5542 }
5543
5544 /* Compare STRING1 to STRING2, with results as for strcmp.
5545 Compatible with strcmp_iw_ordered in that...
5546
5547 strcmp_iw_ordered (STRING1, STRING2) <= 0
5548
5549 ... implies...
5550
5551 compare_names (STRING1, STRING2) <= 0
5552
5553 (they may differ as to what symbols compare equal). */
5554
5555 static int
5556 compare_names (const char *string1, const char *string2)
5557 {
5558 int result;
5559
5560 /* Similar to what strcmp_iw_ordered does, we need to perform
5561 a case-insensitive comparison first, and only resort to
5562 a second, case-sensitive, comparison if the first one was
5563 not sufficient to differentiate the two strings. */
5564
5565 result = compare_names_with_case (string1, string2, case_sensitive_off);
5566 if (result == 0)
5567 result = compare_names_with_case (string1, string2, case_sensitive_on);
5568
5569 return result;
5570 }
5571
5572 /* Convenience function to get at the Ada encoded lookup name for
5573 LOOKUP_NAME, as a C string. */
5574
5575 static const char *
5576 ada_lookup_name (const lookup_name_info &lookup_name)
5577 {
5578 return lookup_name.ada ().lookup_name ().c_str ();
5579 }
5580
5581 /* Add to OBSTACKP all non-local symbols whose name and domain match
5582 LOOKUP_NAME and DOMAIN respectively. The search is performed on
5583 GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5584 symbols otherwise. */
5585
5586 static void
5587 add_nonlocal_symbols (struct obstack *obstackp,
5588 const lookup_name_info &lookup_name,
5589 domain_enum domain, int global)
5590 {
5591 struct match_data data;
5592
5593 memset (&data, 0, sizeof data);
5594 data.obstackp = obstackp;
5595
5596 bool is_wild_match = lookup_name.ada ().wild_match_p ();
5597
5598 auto callback = [&] (struct block_symbol *bsym)
5599 {
5600 return aux_add_nonlocal_symbols (bsym, &data);
5601 };
5602
5603 for (objfile *objfile : current_program_space->objfiles ())
5604 {
5605 data.objfile = objfile;
5606
5607 objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5608 domain, global, callback,
5609 (is_wild_match
5610 ? NULL : compare_names));
5611
5612 for (compunit_symtab *cu : objfile->compunits ())
5613 {
5614 const struct block *global_block
5615 = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5616
5617 if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5618 domain))
5619 data.found_sym = 1;
5620 }
5621 }
5622
5623 if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5624 {
5625 const char *name = ada_lookup_name (lookup_name);
5626 std::string bracket_name = std::string ("<_ada_") + name + '>';
5627 lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5628
5629 for (objfile *objfile : current_program_space->objfiles ())
5630 {
5631 data.objfile = objfile;
5632 objfile->sf->qf->map_matching_symbols (objfile, name1,
5633 domain, global, callback,
5634 compare_names);
5635 }
5636 }
5637 }
5638
5639 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5640 FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5641 returning the number of matches. Add these to OBSTACKP.
5642
5643 When FULL_SEARCH is non-zero, any non-function/non-enumeral
5644 symbol match within the nest of blocks whose innermost member is BLOCK,
5645 is the one match returned (no other matches in that or
5646 enclosing blocks is returned). If there are any matches in or
5647 surrounding BLOCK, then these alone are returned.
5648
5649 Names prefixed with "standard__" are handled specially:
5650 "standard__" is first stripped off (by the lookup_name
5651 constructor), and only static and global symbols are searched.
5652
5653 If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5654 to lookup global symbols. */
5655
5656 static void
5657 ada_add_all_symbols (struct obstack *obstackp,
5658 const struct block *block,
5659 const lookup_name_info &lookup_name,
5660 domain_enum domain,
5661 int full_search,
5662 int *made_global_lookup_p)
5663 {
5664 struct symbol *sym;
5665
5666 if (made_global_lookup_p)
5667 *made_global_lookup_p = 0;
5668
5669 /* Special case: If the user specifies a symbol name inside package
5670 Standard, do a non-wild matching of the symbol name without
5671 the "standard__" prefix. This was primarily introduced in order
5672 to allow the user to specifically access the standard exceptions
5673 using, for instance, Standard.Constraint_Error when Constraint_Error
5674 is ambiguous (due to the user defining its own Constraint_Error
5675 entity inside its program). */
5676 if (lookup_name.ada ().standard_p ())
5677 block = NULL;
5678
5679 /* Check the non-global symbols. If we have ANY match, then we're done. */
5680
5681 if (block != NULL)
5682 {
5683 if (full_search)
5684 ada_add_local_symbols (obstackp, lookup_name, block, domain);
5685 else
5686 {
5687 /* In the !full_search case we're are being called by
5688 iterate_over_symbols, and we don't want to search
5689 superblocks. */
5690 ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5691 }
5692 if (num_defns_collected (obstackp) > 0 || !full_search)
5693 return;
5694 }
5695
5696 /* No non-global symbols found. Check our cache to see if we have
5697 already performed this search before. If we have, then return
5698 the same result. */
5699
5700 if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5701 domain, &sym, &block))
5702 {
5703 if (sym != NULL)
5704 add_defn_to_vec (obstackp, sym, block);
5705 return;
5706 }
5707
5708 if (made_global_lookup_p)
5709 *made_global_lookup_p = 1;
5710
5711 /* Search symbols from all global blocks. */
5712
5713 add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5714
5715 /* Now add symbols from all per-file blocks if we've gotten no hits
5716 (not strictly correct, but perhaps better than an error). */
5717
5718 if (num_defns_collected (obstackp) == 0)
5719 add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5720 }
5721
5722 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5723 is non-zero, enclosing scope and in global scopes, returning the number of
5724 matches.
5725 Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5726 found and the blocks and symbol tables (if any) in which they were
5727 found.
5728
5729 When full_search is non-zero, any non-function/non-enumeral
5730 symbol match within the nest of blocks whose innermost member is BLOCK,
5731 is the one match returned (no other matches in that or
5732 enclosing blocks is returned). If there are any matches in or
5733 surrounding BLOCK, then these alone are returned.
5734
5735 Names prefixed with "standard__" are handled specially: "standard__"
5736 is first stripped off, and only static and global symbols are searched. */
5737
5738 static int
5739 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5740 const struct block *block,
5741 domain_enum domain,
5742 std::vector<struct block_symbol> *results,
5743 int full_search)
5744 {
5745 int syms_from_global_search;
5746 int ndefns;
5747 auto_obstack obstack;
5748
5749 ada_add_all_symbols (&obstack, block, lookup_name,
5750 domain, full_search, &syms_from_global_search);
5751
5752 ndefns = num_defns_collected (&obstack);
5753
5754 struct block_symbol *base = defns_collected (&obstack, 1);
5755 for (int i = 0; i < ndefns; ++i)
5756 results->push_back (base[i]);
5757
5758 ndefns = remove_extra_symbols (results);
5759
5760 if (ndefns == 0 && full_search && syms_from_global_search)
5761 cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5762
5763 if (ndefns == 1 && full_search && syms_from_global_search)
5764 cache_symbol (ada_lookup_name (lookup_name), domain,
5765 (*results)[0].symbol, (*results)[0].block);
5766
5767 ndefns = remove_irrelevant_renamings (results, block);
5768
5769 return ndefns;
5770 }
5771
5772 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5773 in global scopes, returning the number of matches, and filling *RESULTS
5774 with (SYM,BLOCK) tuples.
5775
5776 See ada_lookup_symbol_list_worker for further details. */
5777
5778 int
5779 ada_lookup_symbol_list (const char *name, const struct block *block,
5780 domain_enum domain,
5781 std::vector<struct block_symbol> *results)
5782 {
5783 symbol_name_match_type name_match_type = name_match_type_from_name (name);
5784 lookup_name_info lookup_name (name, name_match_type);
5785
5786 return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5787 }
5788
5789 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5790 to 1, but choosing the first symbol found if there are multiple
5791 choices.
5792
5793 The result is stored in *INFO, which must be non-NULL.
5794 If no match is found, INFO->SYM is set to NULL. */
5795
5796 void
5797 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5798 domain_enum domain,
5799 struct block_symbol *info)
5800 {
5801 /* Since we already have an encoded name, wrap it in '<>' to force a
5802 verbatim match. Otherwise, if the name happens to not look like
5803 an encoded name (because it doesn't include a "__"),
5804 ada_lookup_name_info would re-encode/fold it again, and that
5805 would e.g., incorrectly lowercase object renaming names like
5806 "R28b" -> "r28b". */
5807 std::string verbatim = std::string ("<") + name + '>';
5808
5809 gdb_assert (info != NULL);
5810 *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5811 }
5812
5813 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5814 scope and in global scopes, or NULL if none. NAME is folded and
5815 encoded first. Otherwise, the result is as for ada_lookup_symbol_list,
5816 choosing the first symbol if there are multiple choices. */
5817
5818 struct block_symbol
5819 ada_lookup_symbol (const char *name, const struct block *block0,
5820 domain_enum domain)
5821 {
5822 std::vector<struct block_symbol> candidates;
5823 int n_candidates;
5824
5825 n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5826
5827 if (n_candidates == 0)
5828 return {};
5829
5830 block_symbol info = candidates[0];
5831 info.symbol = fixup_symbol_section (info.symbol, NULL);
5832 return info;
5833 }
5834
5835
5836 /* True iff STR is a possible encoded suffix of a normal Ada name
5837 that is to be ignored for matching purposes. Suffixes of parallel
5838 names (e.g., XVE) are not included here. Currently, the possible suffixes
5839 are given by any of the regular expressions:
5840
5841 [.$][0-9]+ [nested subprogram suffix, on platforms such as GNU/Linux]
5842 ___[0-9]+ [nested subprogram suffix, on platforms such as HP/UX]
5843 TKB [subprogram suffix for task bodies]
5844 _E[0-9]+[bs]$ [protected object entry suffixes]
5845 (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5846
5847 Also, any leading "__[0-9]+" sequence is skipped before the suffix
5848 match is performed. This sequence is used to differentiate homonyms,
5849 is an optional part of a valid name suffix. */
5850
5851 static int
5852 is_name_suffix (const char *str)
5853 {
5854 int k;
5855 const char *matching;
5856 const int len = strlen (str);
5857
5858 /* Skip optional leading __[0-9]+. */
5859
5860 if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5861 {
5862 str += 3;
5863 while (isdigit (str[0]))
5864 str += 1;
5865 }
5866
5867 /* [.$][0-9]+ */
5868
5869 if (str[0] == '.' || str[0] == '$')
5870 {
5871 matching = str + 1;
5872 while (isdigit (matching[0]))
5873 matching += 1;
5874 if (matching[0] == '\0')
5875 return 1;
5876 }
5877
5878 /* ___[0-9]+ */
5879
5880 if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5881 {
5882 matching = str + 3;
5883 while (isdigit (matching[0]))
5884 matching += 1;
5885 if (matching[0] == '\0')
5886 return 1;
5887 }
5888
5889 /* "TKB" suffixes are used for subprograms implementing task bodies. */
5890
5891 if (strcmp (str, "TKB") == 0)
5892 return 1;
5893
5894 #if 0
5895 /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5896 with a N at the end. Unfortunately, the compiler uses the same
5897 convention for other internal types it creates. So treating
5898 all entity names that end with an "N" as a name suffix causes
5899 some regressions. For instance, consider the case of an enumerated
5900 type. To support the 'Image attribute, it creates an array whose
5901 name ends with N.
5902 Having a single character like this as a suffix carrying some
5903 information is a bit risky. Perhaps we should change the encoding
5904 to be something like "_N" instead. In the meantime, do not do
5905 the following check. */
5906 /* Protected Object Subprograms */
5907 if (len == 1 && str [0] == 'N')
5908 return 1;
5909 #endif
5910
5911 /* _E[0-9]+[bs]$ */
5912 if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5913 {
5914 matching = str + 3;
5915 while (isdigit (matching[0]))
5916 matching += 1;
5917 if ((matching[0] == 'b' || matching[0] == 's')
5918 && matching [1] == '\0')
5919 return 1;
5920 }
5921
5922 /* ??? We should not modify STR directly, as we are doing below. This
5923 is fine in this case, but may become problematic later if we find
5924 that this alternative did not work, and want to try matching
5925 another one from the begining of STR. Since we modified it, we
5926 won't be able to find the begining of the string anymore! */
5927 if (str[0] == 'X')
5928 {
5929 str += 1;
5930 while (str[0] != '_' && str[0] != '\0')
5931 {
5932 if (str[0] != 'n' && str[0] != 'b')
5933 return 0;
5934 str += 1;
5935 }
5936 }
5937
5938 if (str[0] == '\000')
5939 return 1;
5940
5941 if (str[0] == '_')
5942 {
5943 if (str[1] != '_' || str[2] == '\000')
5944 return 0;
5945 if (str[2] == '_')
5946 {
5947 if (strcmp (str + 3, "JM") == 0)
5948 return 1;
5949 /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5950 the LJM suffix in favor of the JM one. But we will
5951 still accept LJM as a valid suffix for a reasonable
5952 amount of time, just to allow ourselves to debug programs
5953 compiled using an older version of GNAT. */
5954 if (strcmp (str + 3, "LJM") == 0)
5955 return 1;
5956 if (str[3] != 'X')
5957 return 0;
5958 if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5959 || str[4] == 'U' || str[4] == 'P')
5960 return 1;
5961 if (str[4] == 'R' && str[5] != 'T')
5962 return 1;
5963 return 0;
5964 }
5965 if (!isdigit (str[2]))
5966 return 0;
5967 for (k = 3; str[k] != '\0'; k += 1)
5968 if (!isdigit (str[k]) && str[k] != '_')
5969 return 0;
5970 return 1;
5971 }
5972 if (str[0] == '$' && isdigit (str[1]))
5973 {
5974 for (k = 2; str[k] != '\0'; k += 1)
5975 if (!isdigit (str[k]) && str[k] != '_')
5976 return 0;
5977 return 1;
5978 }
5979 return 0;
5980 }
5981
5982 /* Return non-zero if the string starting at NAME and ending before
5983 NAME_END contains no capital letters. */
5984
5985 static int
5986 is_valid_name_for_wild_match (const char *name0)
5987 {
5988 std::string decoded_name = ada_decode (name0);
5989 int i;
5990
5991 /* If the decoded name starts with an angle bracket, it means that
5992 NAME0 does not follow the GNAT encoding format. It should then
5993 not be allowed as a possible wild match. */
5994 if (decoded_name[0] == '<')
5995 return 0;
5996
5997 for (i=0; decoded_name[i] != '\0'; i++)
5998 if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5999 return 0;
6000
6001 return 1;
6002 }
6003
6004 /* Advance *NAMEP to next occurrence in the string NAME0 of the TARGET0
6005 character which could start a simple name. Assumes that *NAMEP points
6006 somewhere inside the string beginning at NAME0. */
6007
6008 static int
6009 advance_wild_match (const char **namep, const char *name0, char target0)
6010 {
6011 const char *name = *namep;
6012
6013 while (1)
6014 {
6015 char t0, t1;
6016
6017 t0 = *name;
6018 if (t0 == '_')
6019 {
6020 t1 = name[1];
6021 if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6022 {
6023 name += 1;
6024 if (name == name0 + 5 && startswith (name0, "_ada"))
6025 break;
6026 else
6027 name += 1;
6028 }
6029 else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6030 || name[2] == target0))
6031 {
6032 name += 2;
6033 break;
6034 }
6035 else
6036 return 0;
6037 }
6038 else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6039 name += 1;
6040 else
6041 return 0;
6042 }
6043
6044 *namep = name;
6045 return 1;
6046 }
6047
6048 /* Return true iff NAME encodes a name of the form prefix.PATN.
6049 Ignores any informational suffixes of NAME (i.e., for which
6050 is_name_suffix is true). Assumes that PATN is a lower-cased Ada
6051 simple name. */
6052
6053 static bool
6054 wild_match (const char *name, const char *patn)
6055 {
6056 const char *p;
6057 const char *name0 = name;
6058
6059 while (1)
6060 {
6061 const char *match = name;
6062
6063 if (*name == *patn)
6064 {
6065 for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6066 if (*p != *name)
6067 break;
6068 if (*p == '\0' && is_name_suffix (name))
6069 return match == name0 || is_valid_name_for_wild_match (name0);
6070
6071 if (name[-1] == '_')
6072 name -= 1;
6073 }
6074 if (!advance_wild_match (&name, name0, *patn))
6075 return false;
6076 }
6077 }
6078
6079 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6080 any trailing suffixes that encode debugging information or leading
6081 _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6082 information that is ignored). */
6083
6084 static bool
6085 full_match (const char *sym_name, const char *search_name)
6086 {
6087 size_t search_name_len = strlen (search_name);
6088
6089 if (strncmp (sym_name, search_name, search_name_len) == 0
6090 && is_name_suffix (sym_name + search_name_len))
6091 return true;
6092
6093 if (startswith (sym_name, "_ada_")
6094 && strncmp (sym_name + 5, search_name, search_name_len) == 0
6095 && is_name_suffix (sym_name + search_name_len + 5))
6096 return true;
6097
6098 return false;
6099 }
6100
6101 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6102 *defn_symbols, updating the list of symbols in OBSTACKP (if
6103 necessary). OBJFILE is the section containing BLOCK. */
6104
6105 static void
6106 ada_add_block_symbols (struct obstack *obstackp,
6107 const struct block *block,
6108 const lookup_name_info &lookup_name,
6109 domain_enum domain, struct objfile *objfile)
6110 {
6111 struct block_iterator iter;
6112 /* A matching argument symbol, if any. */
6113 struct symbol *arg_sym;
6114 /* Set true when we find a matching non-argument symbol. */
6115 int found_sym;
6116 struct symbol *sym;
6117
6118 arg_sym = NULL;
6119 found_sym = 0;
6120 for (sym = block_iter_match_first (block, lookup_name, &iter);
6121 sym != NULL;
6122 sym = block_iter_match_next (lookup_name, &iter))
6123 {
6124 if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6125 {
6126 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6127 {
6128 if (SYMBOL_IS_ARGUMENT (sym))
6129 arg_sym = sym;
6130 else
6131 {
6132 found_sym = 1;
6133 add_defn_to_vec (obstackp,
6134 fixup_symbol_section (sym, objfile),
6135 block);
6136 }
6137 }
6138 }
6139 }
6140
6141 /* Handle renamings. */
6142
6143 if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6144 found_sym = 1;
6145
6146 if (!found_sym && arg_sym != NULL)
6147 {
6148 add_defn_to_vec (obstackp,
6149 fixup_symbol_section (arg_sym, objfile),
6150 block);
6151 }
6152
6153 if (!lookup_name.ada ().wild_match_p ())
6154 {
6155 arg_sym = NULL;
6156 found_sym = 0;
6157 const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6158 const char *name = ada_lookup_name.c_str ();
6159 size_t name_len = ada_lookup_name.size ();
6160
6161 ALL_BLOCK_SYMBOLS (block, iter, sym)
6162 {
6163 if (symbol_matches_domain (sym->language (),
6164 SYMBOL_DOMAIN (sym), domain))
6165 {
6166 int cmp;
6167
6168 cmp = (int) '_' - (int) sym->linkage_name ()[0];
6169 if (cmp == 0)
6170 {
6171 cmp = !startswith (sym->linkage_name (), "_ada_");
6172 if (cmp == 0)
6173 cmp = strncmp (name, sym->linkage_name () + 5,
6174 name_len);
6175 }
6176
6177 if (cmp == 0
6178 && is_name_suffix (sym->linkage_name () + name_len + 5))
6179 {
6180 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6181 {
6182 if (SYMBOL_IS_ARGUMENT (sym))
6183 arg_sym = sym;
6184 else
6185 {
6186 found_sym = 1;
6187 add_defn_to_vec (obstackp,
6188 fixup_symbol_section (sym, objfile),
6189 block);
6190 }
6191 }
6192 }
6193 }
6194 }
6195
6196 /* NOTE: This really shouldn't be needed for _ada_ symbols.
6197 They aren't parameters, right? */
6198 if (!found_sym && arg_sym != NULL)
6199 {
6200 add_defn_to_vec (obstackp,
6201 fixup_symbol_section (arg_sym, objfile),
6202 block);
6203 }
6204 }
6205 }
6206 \f
6207
6208 /* Symbol Completion */
6209
6210 /* See symtab.h. */
6211
6212 bool
6213 ada_lookup_name_info::matches
6214 (const char *sym_name,
6215 symbol_name_match_type match_type,
6216 completion_match_result *comp_match_res) const
6217 {
6218 bool match = false;
6219 const char *text = m_encoded_name.c_str ();
6220 size_t text_len = m_encoded_name.size ();
6221
6222 /* First, test against the fully qualified name of the symbol. */
6223
6224 if (strncmp (sym_name, text, text_len) == 0)
6225 match = true;
6226
6227 std::string decoded_name = ada_decode (sym_name);
6228 if (match && !m_encoded_p)
6229 {
6230 /* One needed check before declaring a positive match is to verify
6231 that iff we are doing a verbatim match, the decoded version
6232 of the symbol name starts with '<'. Otherwise, this symbol name
6233 is not a suitable completion. */
6234
6235 bool has_angle_bracket = (decoded_name[0] == '<');
6236 match = (has_angle_bracket == m_verbatim_p);
6237 }
6238
6239 if (match && !m_verbatim_p)
6240 {
6241 /* When doing non-verbatim match, another check that needs to
6242 be done is to verify that the potentially matching symbol name
6243 does not include capital letters, because the ada-mode would
6244 not be able to understand these symbol names without the
6245 angle bracket notation. */
6246 const char *tmp;
6247
6248 for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6249 if (*tmp != '\0')
6250 match = false;
6251 }
6252
6253 /* Second: Try wild matching... */
6254
6255 if (!match && m_wild_match_p)
6256 {
6257 /* Since we are doing wild matching, this means that TEXT
6258 may represent an unqualified symbol name. We therefore must
6259 also compare TEXT against the unqualified name of the symbol. */
6260 sym_name = ada_unqualified_name (decoded_name.c_str ());
6261
6262 if (strncmp (sym_name, text, text_len) == 0)
6263 match = true;
6264 }
6265
6266 /* Finally: If we found a match, prepare the result to return. */
6267
6268 if (!match)
6269 return false;
6270
6271 if (comp_match_res != NULL)
6272 {
6273 std::string &match_str = comp_match_res->match.storage ();
6274
6275 if (!m_encoded_p)
6276 match_str = ada_decode (sym_name);
6277 else
6278 {
6279 if (m_verbatim_p)
6280 match_str = add_angle_brackets (sym_name);
6281 else
6282 match_str = sym_name;
6283
6284 }
6285
6286 comp_match_res->set_match (match_str.c_str ());
6287 }
6288
6289 return true;
6290 }
6291
6292 /* Field Access */
6293
6294 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6295 for tagged types. */
6296
6297 static int
6298 ada_is_dispatch_table_ptr_type (struct type *type)
6299 {
6300 const char *name;
6301
6302 if (type->code () != TYPE_CODE_PTR)
6303 return 0;
6304
6305 name = TYPE_TARGET_TYPE (type)->name ();
6306 if (name == NULL)
6307 return 0;
6308
6309 return (strcmp (name, "ada__tags__dispatch_table") == 0);
6310 }
6311
6312 /* Return non-zero if TYPE is an interface tag. */
6313
6314 static int
6315 ada_is_interface_tag (struct type *type)
6316 {
6317 const char *name = type->name ();
6318
6319 if (name == NULL)
6320 return 0;
6321
6322 return (strcmp (name, "ada__tags__interface_tag") == 0);
6323 }
6324
6325 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6326 to be invisible to users. */
6327
6328 int
6329 ada_is_ignored_field (struct type *type, int field_num)
6330 {
6331 if (field_num < 0 || field_num > type->num_fields ())
6332 return 1;
6333
6334 /* Check the name of that field. */
6335 {
6336 const char *name = TYPE_FIELD_NAME (type, field_num);
6337
6338 /* Anonymous field names should not be printed.
6339 brobecker/2007-02-20: I don't think this can actually happen
6340 but we don't want to print the value of anonymous fields anyway. */
6341 if (name == NULL)
6342 return 1;
6343
6344 /* Normally, fields whose name start with an underscore ("_")
6345 are fields that have been internally generated by the compiler,
6346 and thus should not be printed. The "_parent" field is special,
6347 however: This is a field internally generated by the compiler
6348 for tagged types, and it contains the components inherited from
6349 the parent type. This field should not be printed as is, but
6350 should not be ignored either. */
6351 if (name[0] == '_' && !startswith (name, "_parent"))
6352 return 1;
6353 }
6354
6355 /* If this is the dispatch table of a tagged type or an interface tag,
6356 then ignore. */
6357 if (ada_is_tagged_type (type, 1)
6358 && (ada_is_dispatch_table_ptr_type (type->field (field_num).type ())
6359 || ada_is_interface_tag (type->field (field_num).type ())))
6360 return 1;
6361
6362 /* Not a special field, so it should not be ignored. */
6363 return 0;
6364 }
6365
6366 /* True iff TYPE has a tag field. If REFOK, then TYPE may also be a
6367 pointer or reference type whose ultimate target has a tag field. */
6368
6369 int
6370 ada_is_tagged_type (struct type *type, int refok)
6371 {
6372 return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6373 }
6374
6375 /* True iff TYPE represents the type of X'Tag */
6376
6377 int
6378 ada_is_tag_type (struct type *type)
6379 {
6380 type = ada_check_typedef (type);
6381
6382 if (type == NULL || type->code () != TYPE_CODE_PTR)
6383 return 0;
6384 else
6385 {
6386 const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6387
6388 return (name != NULL
6389 && strcmp (name, "ada__tags__dispatch_table") == 0);
6390 }
6391 }
6392
6393 /* The type of the tag on VAL. */
6394
6395 static struct type *
6396 ada_tag_type (struct value *val)
6397 {
6398 return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6399 }
6400
6401 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6402 retired at Ada 05). */
6403
6404 static int
6405 is_ada95_tag (struct value *tag)
6406 {
6407 return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6408 }
6409
6410 /* The value of the tag on VAL. */
6411
6412 static struct value *
6413 ada_value_tag (struct value *val)
6414 {
6415 return ada_value_struct_elt (val, "_tag", 0);
6416 }
6417
6418 /* The value of the tag on the object of type TYPE whose contents are
6419 saved at VALADDR, if it is non-null, or is at memory address
6420 ADDRESS. */
6421
6422 static struct value *
6423 value_tag_from_contents_and_address (struct type *type,
6424 const gdb_byte *valaddr,
6425 CORE_ADDR address)
6426 {
6427 int tag_byte_offset;
6428 struct type *tag_type;
6429
6430 if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6431 NULL, NULL, NULL))
6432 {
6433 const gdb_byte *valaddr1 = ((valaddr == NULL)
6434 ? NULL
6435 : valaddr + tag_byte_offset);
6436 CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6437
6438 return value_from_contents_and_address (tag_type, valaddr1, address1);
6439 }
6440 return NULL;
6441 }
6442
6443 static struct type *
6444 type_from_tag (struct value *tag)
6445 {
6446 gdb::unique_xmalloc_ptr<char> type_name = ada_tag_name (tag);
6447
6448 if (type_name != NULL)
6449 return ada_find_any_type (ada_encode (type_name.get ()).c_str ());
6450 return NULL;
6451 }
6452
6453 /* Given a value OBJ of a tagged type, return a value of this
6454 type at the base address of the object. The base address, as
6455 defined in Ada.Tags, it is the address of the primary tag of
6456 the object, and therefore where the field values of its full
6457 view can be fetched. */
6458
6459 struct value *
6460 ada_tag_value_at_base_address (struct value *obj)
6461 {
6462 struct value *val;
6463 LONGEST offset_to_top = 0;
6464 struct type *ptr_type, *obj_type;
6465 struct value *tag;
6466 CORE_ADDR base_address;
6467
6468 obj_type = value_type (obj);
6469
6470 /* It is the responsability of the caller to deref pointers. */
6471
6472 if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6473 return obj;
6474
6475 tag = ada_value_tag (obj);
6476 if (!tag)
6477 return obj;
6478
6479 /* Base addresses only appeared with Ada 05 and multiple inheritance. */
6480
6481 if (is_ada95_tag (tag))
6482 return obj;
6483
6484 ptr_type = language_lookup_primitive_type
6485 (language_def (language_ada), target_gdbarch(), "storage_offset");
6486 ptr_type = lookup_pointer_type (ptr_type);
6487 val = value_cast (ptr_type, tag);
6488 if (!val)
6489 return obj;
6490
6491 /* It is perfectly possible that an exception be raised while
6492 trying to determine the base address, just like for the tag;
6493 see ada_tag_name for more details. We do not print the error
6494 message for the same reason. */
6495
6496 try
6497 {
6498 offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6499 }
6500
6501 catch (const gdb_exception_error &e)
6502 {
6503 return obj;
6504 }
6505
6506 /* If offset is null, nothing to do. */
6507
6508 if (offset_to_top == 0)
6509 return obj;
6510
6511 /* -1 is a special case in Ada.Tags; however, what should be done
6512 is not quite clear from the documentation. So do nothing for
6513 now. */
6514
6515 if (offset_to_top == -1)
6516 return obj;
6517
6518 /* OFFSET_TO_TOP used to be a positive value to be subtracted
6519 from the base address. This was however incompatible with
6520 C++ dispatch table: C++ uses a *negative* value to *add*
6521 to the base address. Ada's convention has therefore been
6522 changed in GNAT 19.0w 20171023: since then, C++ and Ada
6523 use the same convention. Here, we support both cases by
6524 checking the sign of OFFSET_TO_TOP. */
6525
6526 if (offset_to_top > 0)
6527 offset_to_top = -offset_to_top;
6528
6529 base_address = value_address (obj) + offset_to_top;
6530 tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6531
6532 /* Make sure that we have a proper tag at the new address.
6533 Otherwise, offset_to_top is bogus (which can happen when
6534 the object is not initialized yet). */
6535
6536 if (!tag)
6537 return obj;
6538
6539 obj_type = type_from_tag (tag);
6540
6541 if (!obj_type)
6542 return obj;
6543
6544 return value_from_contents_and_address (obj_type, NULL, base_address);
6545 }
6546
6547 /* Return the "ada__tags__type_specific_data" type. */
6548
6549 static struct type *
6550 ada_get_tsd_type (struct inferior *inf)
6551 {
6552 struct ada_inferior_data *data = get_ada_inferior_data (inf);
6553
6554 if (data->tsd_type == 0)
6555 data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6556 return data->tsd_type;
6557 }
6558
6559 /* Return the TSD (type-specific data) associated to the given TAG.
6560 TAG is assumed to be the tag of a tagged-type entity.
6561
6562 May return NULL if we are unable to get the TSD. */
6563
6564 static struct value *
6565 ada_get_tsd_from_tag (struct value *tag)
6566 {
6567 struct value *val;
6568 struct type *type;
6569
6570 /* First option: The TSD is simply stored as a field of our TAG.
6571 Only older versions of GNAT would use this format, but we have
6572 to test it first, because there are no visible markers for
6573 the current approach except the absence of that field. */
6574
6575 val = ada_value_struct_elt (tag, "tsd", 1);
6576 if (val)
6577 return val;
6578
6579 /* Try the second representation for the dispatch table (in which
6580 there is no explicit 'tsd' field in the referent of the tag pointer,
6581 and instead the tsd pointer is stored just before the dispatch
6582 table. */
6583
6584 type = ada_get_tsd_type (current_inferior());
6585 if (type == NULL)
6586 return NULL;
6587 type = lookup_pointer_type (lookup_pointer_type (type));
6588 val = value_cast (type, tag);
6589 if (val == NULL)
6590 return NULL;
6591 return value_ind (value_ptradd (val, -1));
6592 }
6593
6594 /* Given the TSD of a tag (type-specific data), return a string
6595 containing the name of the associated type.
6596
6597 May return NULL if we are unable to determine the tag name. */
6598
6599 static gdb::unique_xmalloc_ptr<char>
6600 ada_tag_name_from_tsd (struct value *tsd)
6601 {
6602 char *p;
6603 struct value *val;
6604
6605 val = ada_value_struct_elt (tsd, "expanded_name", 1);
6606 if (val == NULL)
6607 return NULL;
6608 gdb::unique_xmalloc_ptr<char> buffer
6609 = target_read_string (value_as_address (val), INT_MAX);
6610 if (buffer == nullptr)
6611 return nullptr;
6612
6613 for (p = buffer.get (); *p != '\0'; ++p)
6614 {
6615 if (isalpha (*p))
6616 *p = tolower (*p);
6617 }
6618
6619 return buffer;
6620 }
6621
6622 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6623 a C string.
6624
6625 Return NULL if the TAG is not an Ada tag, or if we were unable to
6626 determine the name of that tag. */
6627
6628 gdb::unique_xmalloc_ptr<char>
6629 ada_tag_name (struct value *tag)
6630 {
6631 gdb::unique_xmalloc_ptr<char> name;
6632
6633 if (!ada_is_tag_type (value_type (tag)))
6634 return NULL;
6635
6636 /* It is perfectly possible that an exception be raised while trying
6637 to determine the TAG's name, even under normal circumstances:
6638 The associated variable may be uninitialized or corrupted, for
6639 instance. We do not let any exception propagate past this point.
6640 instead we return NULL.
6641
6642 We also do not print the error message either (which often is very
6643 low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6644 the caller print a more meaningful message if necessary. */
6645 try
6646 {
6647 struct value *tsd = ada_get_tsd_from_tag (tag);
6648
6649 if (tsd != NULL)
6650 name = ada_tag_name_from_tsd (tsd);
6651 }
6652 catch (const gdb_exception_error &e)
6653 {
6654 }
6655
6656 return name;
6657 }
6658
6659 /* The parent type of TYPE, or NULL if none. */
6660
6661 struct type *
6662 ada_parent_type (struct type *type)
6663 {
6664 int i;
6665
6666 type = ada_check_typedef (type);
6667
6668 if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6669 return NULL;
6670
6671 for (i = 0; i < type->num_fields (); i += 1)
6672 if (ada_is_parent_field (type, i))
6673 {
6674 struct type *parent_type = type->field (i).type ();
6675
6676 /* If the _parent field is a pointer, then dereference it. */
6677 if (parent_type->code () == TYPE_CODE_PTR)
6678 parent_type = TYPE_TARGET_TYPE (parent_type);
6679 /* If there is a parallel XVS type, get the actual base type. */
6680 parent_type = ada_get_base_type (parent_type);
6681
6682 return ada_check_typedef (parent_type);
6683 }
6684
6685 return NULL;
6686 }
6687
6688 /* True iff field number FIELD_NUM of structure type TYPE contains the
6689 parent-type (inherited) fields of a derived type. Assumes TYPE is
6690 a structure type with at least FIELD_NUM+1 fields. */
6691
6692 int
6693 ada_is_parent_field (struct type *type, int field_num)
6694 {
6695 const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6696
6697 return (name != NULL
6698 && (startswith (name, "PARENT")
6699 || startswith (name, "_parent")));
6700 }
6701
6702 /* True iff field number FIELD_NUM of structure type TYPE is a
6703 transparent wrapper field (which should be silently traversed when doing
6704 field selection and flattened when printing). Assumes TYPE is a
6705 structure type with at least FIELD_NUM+1 fields. Such fields are always
6706 structures. */
6707
6708 int
6709 ada_is_wrapper_field (struct type *type, int field_num)
6710 {
6711 const char *name = TYPE_FIELD_NAME (type, field_num);
6712
6713 if (name != NULL && strcmp (name, "RETVAL") == 0)
6714 {
6715 /* This happens in functions with "out" or "in out" parameters
6716 which are passed by copy. For such functions, GNAT describes
6717 the function's return type as being a struct where the return
6718 value is in a field called RETVAL, and where the other "out"
6719 or "in out" parameters are fields of that struct. This is not
6720 a wrapper. */
6721 return 0;
6722 }
6723
6724 return (name != NULL
6725 && (startswith (name, "PARENT")
6726 || strcmp (name, "REP") == 0
6727 || startswith (name, "_parent")
6728 || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6729 }
6730
6731 /* True iff field number FIELD_NUM of structure or union type TYPE
6732 is a variant wrapper. Assumes TYPE is a structure type with at least
6733 FIELD_NUM+1 fields. */
6734
6735 int
6736 ada_is_variant_part (struct type *type, int field_num)
6737 {
6738 /* Only Ada types are eligible. */
6739 if (!ADA_TYPE_P (type))
6740 return 0;
6741
6742 struct type *field_type = type->field (field_num).type ();
6743
6744 return (field_type->code () == TYPE_CODE_UNION
6745 || (is_dynamic_field (type, field_num)
6746 && (TYPE_TARGET_TYPE (field_type)->code ()
6747 == TYPE_CODE_UNION)));
6748 }
6749
6750 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6751 whose discriminants are contained in the record type OUTER_TYPE,
6752 returns the type of the controlling discriminant for the variant.
6753 May return NULL if the type could not be found. */
6754
6755 struct type *
6756 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6757 {
6758 const char *name = ada_variant_discrim_name (var_type);
6759
6760 return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6761 }
6762
6763 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6764 valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6765 represents a 'when others' clause; otherwise 0. */
6766
6767 static int
6768 ada_is_others_clause (struct type *type, int field_num)
6769 {
6770 const char *name = TYPE_FIELD_NAME (type, field_num);
6771
6772 return (name != NULL && name[0] == 'O');
6773 }
6774
6775 /* Assuming that TYPE0 is the type of the variant part of a record,
6776 returns the name of the discriminant controlling the variant.
6777 The value is valid until the next call to ada_variant_discrim_name. */
6778
6779 const char *
6780 ada_variant_discrim_name (struct type *type0)
6781 {
6782 static char *result = NULL;
6783 static size_t result_len = 0;
6784 struct type *type;
6785 const char *name;
6786 const char *discrim_end;
6787 const char *discrim_start;
6788
6789 if (type0->code () == TYPE_CODE_PTR)
6790 type = TYPE_TARGET_TYPE (type0);
6791 else
6792 type = type0;
6793
6794 name = ada_type_name (type);
6795
6796 if (name == NULL || name[0] == '\000')
6797 return "";
6798
6799 for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6800 discrim_end -= 1)
6801 {
6802 if (startswith (discrim_end, "___XVN"))
6803 break;
6804 }
6805 if (discrim_end == name)
6806 return "";
6807
6808 for (discrim_start = discrim_end; discrim_start != name + 3;
6809 discrim_start -= 1)
6810 {
6811 if (discrim_start == name + 1)
6812 return "";
6813 if ((discrim_start > name + 3
6814 && startswith (discrim_start - 3, "___"))
6815 || discrim_start[-1] == '.')
6816 break;
6817 }
6818
6819 GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6820 strncpy (result, discrim_start, discrim_end - discrim_start);
6821 result[discrim_end - discrim_start] = '\0';
6822 return result;
6823 }
6824
6825 /* Scan STR for a subtype-encoded number, beginning at position K.
6826 Put the position of the character just past the number scanned in
6827 *NEW_K, if NEW_K!=NULL. Put the scanned number in *R, if R!=NULL.
6828 Return 1 if there was a valid number at the given position, and 0
6829 otherwise. A "subtype-encoded" number consists of the absolute value
6830 in decimal, followed by the letter 'm' to indicate a negative number.
6831 Assumes 0m does not occur. */
6832
6833 int
6834 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6835 {
6836 ULONGEST RU;
6837
6838 if (!isdigit (str[k]))
6839 return 0;
6840
6841 /* Do it the hard way so as not to make any assumption about
6842 the relationship of unsigned long (%lu scan format code) and
6843 LONGEST. */
6844 RU = 0;
6845 while (isdigit (str[k]))
6846 {
6847 RU = RU * 10 + (str[k] - '0');
6848 k += 1;
6849 }
6850
6851 if (str[k] == 'm')
6852 {
6853 if (R != NULL)
6854 *R = (-(LONGEST) (RU - 1)) - 1;
6855 k += 1;
6856 }
6857 else if (R != NULL)
6858 *R = (LONGEST) RU;
6859
6860 /* NOTE on the above: Technically, C does not say what the results of
6861 - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6862 number representable as a LONGEST (although either would probably work
6863 in most implementations). When RU>0, the locution in the then branch
6864 above is always equivalent to the negative of RU. */
6865
6866 if (new_k != NULL)
6867 *new_k = k;
6868 return 1;
6869 }
6870
6871 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6872 and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6873 in the range encoded by field FIELD_NUM of TYPE; otherwise 0. */
6874
6875 static int
6876 ada_in_variant (LONGEST val, struct type *type, int field_num)
6877 {
6878 const char *name = TYPE_FIELD_NAME (type, field_num);
6879 int p;
6880
6881 p = 0;
6882 while (1)
6883 {
6884 switch (name[p])
6885 {
6886 case '\0':
6887 return 0;
6888 case 'S':
6889 {
6890 LONGEST W;
6891
6892 if (!ada_scan_number (name, p + 1, &W, &p))
6893 return 0;
6894 if (val == W)
6895 return 1;
6896 break;
6897 }
6898 case 'R':
6899 {
6900 LONGEST L, U;
6901
6902 if (!ada_scan_number (name, p + 1, &L, &p)
6903 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6904 return 0;
6905 if (val >= L && val <= U)
6906 return 1;
6907 break;
6908 }
6909 case 'O':
6910 return 1;
6911 default:
6912 return 0;
6913 }
6914 }
6915 }
6916
6917 /* FIXME: Lots of redundancy below. Try to consolidate. */
6918
6919 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6920 ARG_TYPE, extract and return the value of one of its (non-static)
6921 fields. FIELDNO says which field. Differs from value_primitive_field
6922 only in that it can handle packed values of arbitrary type. */
6923
6924 struct value *
6925 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6926 struct type *arg_type)
6927 {
6928 struct type *type;
6929
6930 arg_type = ada_check_typedef (arg_type);
6931 type = arg_type->field (fieldno).type ();
6932
6933 /* Handle packed fields. It might be that the field is not packed
6934 relative to its containing structure, but the structure itself is
6935 packed; in this case we must take the bit-field path. */
6936 if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
6937 {
6938 int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6939 int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6940
6941 return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6942 offset + bit_pos / 8,
6943 bit_pos % 8, bit_size, type);
6944 }
6945 else
6946 return value_primitive_field (arg1, offset, fieldno, arg_type);
6947 }
6948
6949 /* Find field with name NAME in object of type TYPE. If found,
6950 set the following for each argument that is non-null:
6951 - *FIELD_TYPE_P to the field's type;
6952 - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within
6953 an object of that type;
6954 - *BIT_OFFSET_P to the bit offset modulo byte size of the field;
6955 - *BIT_SIZE_P to its size in bits if the field is packed, and
6956 0 otherwise;
6957 If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6958 fields up to but not including the desired field, or by the total
6959 number of fields if not found. A NULL value of NAME never
6960 matches; the function just counts visible fields in this case.
6961
6962 Notice that we need to handle when a tagged record hierarchy
6963 has some components with the same name, like in this scenario:
6964
6965 type Top_T is tagged record
6966 N : Integer := 1;
6967 U : Integer := 974;
6968 A : Integer := 48;
6969 end record;
6970
6971 type Middle_T is new Top.Top_T with record
6972 N : Character := 'a';
6973 C : Integer := 3;
6974 end record;
6975
6976 type Bottom_T is new Middle.Middle_T with record
6977 N : Float := 4.0;
6978 C : Character := '5';
6979 X : Integer := 6;
6980 A : Character := 'J';
6981 end record;
6982
6983 Let's say we now have a variable declared and initialized as follow:
6984
6985 TC : Top_A := new Bottom_T;
6986
6987 And then we use this variable to call this function
6988
6989 procedure Assign (Obj: in out Top_T; TV : Integer);
6990
6991 as follow:
6992
6993 Assign (Top_T (B), 12);
6994
6995 Now, we're in the debugger, and we're inside that procedure
6996 then and we want to print the value of obj.c:
6997
6998 Usually, the tagged record or one of the parent type owns the
6999 component to print and there's no issue but in this particular
7000 case, what does it mean to ask for Obj.C? Since the actual
7001 type for object is type Bottom_T, it could mean two things: type
7002 component C from the Middle_T view, but also component C from
7003 Bottom_T. So in that "undefined" case, when the component is
7004 not found in the non-resolved type (which includes all the
7005 components of the parent type), then resolve it and see if we
7006 get better luck once expanded.
7007
7008 In the case of homonyms in the derived tagged type, we don't
7009 guaranty anything, and pick the one that's easiest for us
7010 to program.
7011
7012 Returns 1 if found, 0 otherwise. */
7013
7014 static int
7015 find_struct_field (const char *name, struct type *type, int offset,
7016 struct type **field_type_p,
7017 int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7018 int *index_p)
7019 {
7020 int i;
7021 int parent_offset = -1;
7022
7023 type = ada_check_typedef (type);
7024
7025 if (field_type_p != NULL)
7026 *field_type_p = NULL;
7027 if (byte_offset_p != NULL)
7028 *byte_offset_p = 0;
7029 if (bit_offset_p != NULL)
7030 *bit_offset_p = 0;
7031 if (bit_size_p != NULL)
7032 *bit_size_p = 0;
7033
7034 for (i = 0; i < type->num_fields (); i += 1)
7035 {
7036 int bit_pos = TYPE_FIELD_BITPOS (type, i);
7037 int fld_offset = offset + bit_pos / 8;
7038 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7039
7040 if (t_field_name == NULL)
7041 continue;
7042
7043 else if (ada_is_parent_field (type, i))
7044 {
7045 /* This is a field pointing us to the parent type of a tagged
7046 type. As hinted in this function's documentation, we give
7047 preference to fields in the current record first, so what
7048 we do here is just record the index of this field before
7049 we skip it. If it turns out we couldn't find our field
7050 in the current record, then we'll get back to it and search
7051 inside it whether the field might exist in the parent. */
7052
7053 parent_offset = i;
7054 continue;
7055 }
7056
7057 else if (name != NULL && field_name_match (t_field_name, name))
7058 {
7059 int bit_size = TYPE_FIELD_BITSIZE (type, i);
7060
7061 if (field_type_p != NULL)
7062 *field_type_p = type->field (i).type ();
7063 if (byte_offset_p != NULL)
7064 *byte_offset_p = fld_offset;
7065 if (bit_offset_p != NULL)
7066 *bit_offset_p = bit_pos % 8;
7067 if (bit_size_p != NULL)
7068 *bit_size_p = bit_size;
7069 return 1;
7070 }
7071 else if (ada_is_wrapper_field (type, i))
7072 {
7073 if (find_struct_field (name, type->field (i).type (), fld_offset,
7074 field_type_p, byte_offset_p, bit_offset_p,
7075 bit_size_p, index_p))
7076 return 1;
7077 }
7078 else if (ada_is_variant_part (type, i))
7079 {
7080 /* PNH: Wait. Do we ever execute this section, or is ARG always of
7081 fixed type?? */
7082 int j;
7083 struct type *field_type
7084 = ada_check_typedef (type->field (i).type ());
7085
7086 for (j = 0; j < field_type->num_fields (); j += 1)
7087 {
7088 if (find_struct_field (name, field_type->field (j).type (),
7089 fld_offset
7090 + TYPE_FIELD_BITPOS (field_type, j) / 8,
7091 field_type_p, byte_offset_p,
7092 bit_offset_p, bit_size_p, index_p))
7093 return 1;
7094 }
7095 }
7096 else if (index_p != NULL)
7097 *index_p += 1;
7098 }
7099
7100 /* Field not found so far. If this is a tagged type which
7101 has a parent, try finding that field in the parent now. */
7102
7103 if (parent_offset != -1)
7104 {
7105 int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7106 int fld_offset = offset + bit_pos / 8;
7107
7108 if (find_struct_field (name, type->field (parent_offset).type (),
7109 fld_offset, field_type_p, byte_offset_p,
7110 bit_offset_p, bit_size_p, index_p))
7111 return 1;
7112 }
7113
7114 return 0;
7115 }
7116
7117 /* Number of user-visible fields in record type TYPE. */
7118
7119 static int
7120 num_visible_fields (struct type *type)
7121 {
7122 int n;
7123
7124 n = 0;
7125 find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7126 return n;
7127 }
7128
7129 /* Look for a field NAME in ARG. Adjust the address of ARG by OFFSET bytes,
7130 and search in it assuming it has (class) type TYPE.
7131 If found, return value, else return NULL.
7132
7133 Searches recursively through wrapper fields (e.g., '_parent').
7134
7135 In the case of homonyms in the tagged types, please refer to the
7136 long explanation in find_struct_field's function documentation. */
7137
7138 static struct value *
7139 ada_search_struct_field (const char *name, struct value *arg, int offset,
7140 struct type *type)
7141 {
7142 int i;
7143 int parent_offset = -1;
7144
7145 type = ada_check_typedef (type);
7146 for (i = 0; i < type->num_fields (); i += 1)
7147 {
7148 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7149
7150 if (t_field_name == NULL)
7151 continue;
7152
7153 else if (ada_is_parent_field (type, i))
7154 {
7155 /* This is a field pointing us to the parent type of a tagged
7156 type. As hinted in this function's documentation, we give
7157 preference to fields in the current record first, so what
7158 we do here is just record the index of this field before
7159 we skip it. If it turns out we couldn't find our field
7160 in the current record, then we'll get back to it and search
7161 inside it whether the field might exist in the parent. */
7162
7163 parent_offset = i;
7164 continue;
7165 }
7166
7167 else if (field_name_match (t_field_name, name))
7168 return ada_value_primitive_field (arg, offset, i, type);
7169
7170 else if (ada_is_wrapper_field (type, i))
7171 {
7172 struct value *v = /* Do not let indent join lines here. */
7173 ada_search_struct_field (name, arg,
7174 offset + TYPE_FIELD_BITPOS (type, i) / 8,
7175 type->field (i).type ());
7176
7177 if (v != NULL)
7178 return v;
7179 }
7180
7181 else if (ada_is_variant_part (type, i))
7182 {
7183 /* PNH: Do we ever get here? See find_struct_field. */
7184 int j;
7185 struct type *field_type = ada_check_typedef (type->field (i).type ());
7186 int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7187
7188 for (j = 0; j < field_type->num_fields (); j += 1)
7189 {
7190 struct value *v = ada_search_struct_field /* Force line
7191 break. */
7192 (name, arg,
7193 var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7194 field_type->field (j).type ());
7195
7196 if (v != NULL)
7197 return v;
7198 }
7199 }
7200 }
7201
7202 /* Field not found so far. If this is a tagged type which
7203 has a parent, try finding that field in the parent now. */
7204
7205 if (parent_offset != -1)
7206 {
7207 struct value *v = ada_search_struct_field (
7208 name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7209 type->field (parent_offset).type ());
7210
7211 if (v != NULL)
7212 return v;
7213 }
7214
7215 return NULL;
7216 }
7217
7218 static struct value *ada_index_struct_field_1 (int *, struct value *,
7219 int, struct type *);
7220
7221
7222 /* Return field #INDEX in ARG, where the index is that returned by
7223 * find_struct_field through its INDEX_P argument. Adjust the address
7224 * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7225 * If found, return value, else return NULL. */
7226
7227 static struct value *
7228 ada_index_struct_field (int index, struct value *arg, int offset,
7229 struct type *type)
7230 {
7231 return ada_index_struct_field_1 (&index, arg, offset, type);
7232 }
7233
7234
7235 /* Auxiliary function for ada_index_struct_field. Like
7236 * ada_index_struct_field, but takes index from *INDEX_P and modifies
7237 * *INDEX_P. */
7238
7239 static struct value *
7240 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7241 struct type *type)
7242 {
7243 int i;
7244 type = ada_check_typedef (type);
7245
7246 for (i = 0; i < type->num_fields (); i += 1)
7247 {
7248 if (TYPE_FIELD_NAME (type, i) == NULL)
7249 continue;
7250 else if (ada_is_wrapper_field (type, i))
7251 {
7252 struct value *v = /* Do not let indent join lines here. */
7253 ada_index_struct_field_1 (index_p, arg,
7254 offset + TYPE_FIELD_BITPOS (type, i) / 8,
7255 type->field (i).type ());
7256
7257 if (v != NULL)
7258 return v;
7259 }
7260
7261 else if (ada_is_variant_part (type, i))
7262 {
7263 /* PNH: Do we ever get here? See ada_search_struct_field,
7264 find_struct_field. */
7265 error (_("Cannot assign this kind of variant record"));
7266 }
7267 else if (*index_p == 0)
7268 return ada_value_primitive_field (arg, offset, i, type);
7269 else
7270 *index_p -= 1;
7271 }
7272 return NULL;
7273 }
7274
7275 /* Return a string representation of type TYPE. */
7276
7277 static std::string
7278 type_as_string (struct type *type)
7279 {
7280 string_file tmp_stream;
7281
7282 type_print (type, "", &tmp_stream, -1);
7283
7284 return std::move (tmp_stream.string ());
7285 }
7286
7287 /* Given a type TYPE, look up the type of the component of type named NAME.
7288 If DISPP is non-null, add its byte displacement from the beginning of a
7289 structure (pointed to by a value) of type TYPE to *DISPP (does not
7290 work for packed fields).
7291
7292 Matches any field whose name has NAME as a prefix, possibly
7293 followed by "___".
7294
7295 TYPE can be either a struct or union. If REFOK, TYPE may also
7296 be a (pointer or reference)+ to a struct or union, and the
7297 ultimate target type will be searched.
7298
7299 Looks recursively into variant clauses and parent types.
7300
7301 In the case of homonyms in the tagged types, please refer to the
7302 long explanation in find_struct_field's function documentation.
7303
7304 If NOERR is nonzero, return NULL if NAME is not suitably defined or
7305 TYPE is not a type of the right kind. */
7306
7307 static struct type *
7308 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7309 int noerr)
7310 {
7311 int i;
7312 int parent_offset = -1;
7313
7314 if (name == NULL)
7315 goto BadName;
7316
7317 if (refok && type != NULL)
7318 while (1)
7319 {
7320 type = ada_check_typedef (type);
7321 if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7322 break;
7323 type = TYPE_TARGET_TYPE (type);
7324 }
7325
7326 if (type == NULL
7327 || (type->code () != TYPE_CODE_STRUCT
7328 && type->code () != TYPE_CODE_UNION))
7329 {
7330 if (noerr)
7331 return NULL;
7332
7333 error (_("Type %s is not a structure or union type"),
7334 type != NULL ? type_as_string (type).c_str () : _("(null)"));
7335 }
7336
7337 type = to_static_fixed_type (type);
7338
7339 for (i = 0; i < type->num_fields (); i += 1)
7340 {
7341 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7342 struct type *t;
7343
7344 if (t_field_name == NULL)
7345 continue;
7346
7347 else if (ada_is_parent_field (type, i))
7348 {
7349 /* This is a field pointing us to the parent type of a tagged
7350 type. As hinted in this function's documentation, we give
7351 preference to fields in the current record first, so what
7352 we do here is just record the index of this field before
7353 we skip it. If it turns out we couldn't find our field
7354 in the current record, then we'll get back to it and search
7355 inside it whether the field might exist in the parent. */
7356
7357 parent_offset = i;
7358 continue;
7359 }
7360
7361 else if (field_name_match (t_field_name, name))
7362 return type->field (i).type ();
7363
7364 else if (ada_is_wrapper_field (type, i))
7365 {
7366 t = ada_lookup_struct_elt_type (type->field (i).type (), name,
7367 0, 1);
7368 if (t != NULL)
7369 return t;
7370 }
7371
7372 else if (ada_is_variant_part (type, i))
7373 {
7374 int j;
7375 struct type *field_type = ada_check_typedef (type->field (i).type ());
7376
7377 for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7378 {
7379 /* FIXME pnh 2008/01/26: We check for a field that is
7380 NOT wrapped in a struct, since the compiler sometimes
7381 generates these for unchecked variant types. Revisit
7382 if the compiler changes this practice. */
7383 const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7384
7385 if (v_field_name != NULL
7386 && field_name_match (v_field_name, name))
7387 t = field_type->field (j).type ();
7388 else
7389 t = ada_lookup_struct_elt_type (field_type->field (j).type (),
7390 name, 0, 1);
7391
7392 if (t != NULL)
7393 return t;
7394 }
7395 }
7396
7397 }
7398
7399 /* Field not found so far. If this is a tagged type which
7400 has a parent, try finding that field in the parent now. */
7401
7402 if (parent_offset != -1)
7403 {
7404 struct type *t;
7405
7406 t = ada_lookup_struct_elt_type (type->field (parent_offset).type (),
7407 name, 0, 1);
7408 if (t != NULL)
7409 return t;
7410 }
7411
7412 BadName:
7413 if (!noerr)
7414 {
7415 const char *name_str = name != NULL ? name : _("<null>");
7416
7417 error (_("Type %s has no component named %s"),
7418 type_as_string (type).c_str (), name_str);
7419 }
7420
7421 return NULL;
7422 }
7423
7424 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7425 within a value of type OUTER_TYPE, return true iff VAR_TYPE
7426 represents an unchecked union (that is, the variant part of a
7427 record that is named in an Unchecked_Union pragma). */
7428
7429 static int
7430 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7431 {
7432 const char *discrim_name = ada_variant_discrim_name (var_type);
7433
7434 return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7435 }
7436
7437
7438 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7439 within OUTER, determine which variant clause (field number in VAR_TYPE,
7440 numbering from 0) is applicable. Returns -1 if none are. */
7441
7442 int
7443 ada_which_variant_applies (struct type *var_type, struct value *outer)
7444 {
7445 int others_clause;
7446 int i;
7447 const char *discrim_name = ada_variant_discrim_name (var_type);
7448 struct value *discrim;
7449 LONGEST discrim_val;
7450
7451 /* Using plain value_from_contents_and_address here causes problems
7452 because we will end up trying to resolve a type that is currently
7453 being constructed. */
7454 discrim = ada_value_struct_elt (outer, discrim_name, 1);
7455 if (discrim == NULL)
7456 return -1;
7457 discrim_val = value_as_long (discrim);
7458
7459 others_clause = -1;
7460 for (i = 0; i < var_type->num_fields (); i += 1)
7461 {
7462 if (ada_is_others_clause (var_type, i))
7463 others_clause = i;
7464 else if (ada_in_variant (discrim_val, var_type, i))
7465 return i;
7466 }
7467
7468 return others_clause;
7469 }
7470 \f
7471
7472
7473 /* Dynamic-Sized Records */
7474
7475 /* Strategy: The type ostensibly attached to a value with dynamic size
7476 (i.e., a size that is not statically recorded in the debugging
7477 data) does not accurately reflect the size or layout of the value.
7478 Our strategy is to convert these values to values with accurate,
7479 conventional types that are constructed on the fly. */
7480
7481 /* There is a subtle and tricky problem here. In general, we cannot
7482 determine the size of dynamic records without its data. However,
7483 the 'struct value' data structure, which GDB uses to represent
7484 quantities in the inferior process (the target), requires the size
7485 of the type at the time of its allocation in order to reserve space
7486 for GDB's internal copy of the data. That's why the
7487 'to_fixed_xxx_type' routines take (target) addresses as parameters,
7488 rather than struct value*s.
7489
7490 However, GDB's internal history variables ($1, $2, etc.) are
7491 struct value*s containing internal copies of the data that are not, in
7492 general, the same as the data at their corresponding addresses in
7493 the target. Fortunately, the types we give to these values are all
7494 conventional, fixed-size types (as per the strategy described
7495 above), so that we don't usually have to perform the
7496 'to_fixed_xxx_type' conversions to look at their values.
7497 Unfortunately, there is one exception: if one of the internal
7498 history variables is an array whose elements are unconstrained
7499 records, then we will need to create distinct fixed types for each
7500 element selected. */
7501
7502 /* The upshot of all of this is that many routines take a (type, host
7503 address, target address) triple as arguments to represent a value.
7504 The host address, if non-null, is supposed to contain an internal
7505 copy of the relevant data; otherwise, the program is to consult the
7506 target at the target address. */
7507
7508 /* Assuming that VAL0 represents a pointer value, the result of
7509 dereferencing it. Differs from value_ind in its treatment of
7510 dynamic-sized types. */
7511
7512 struct value *
7513 ada_value_ind (struct value *val0)
7514 {
7515 struct value *val = value_ind (val0);
7516
7517 if (ada_is_tagged_type (value_type (val), 0))
7518 val = ada_tag_value_at_base_address (val);
7519
7520 return ada_to_fixed_value (val);
7521 }
7522
7523 /* The value resulting from dereferencing any "reference to"
7524 qualifiers on VAL0. */
7525
7526 static struct value *
7527 ada_coerce_ref (struct value *val0)
7528 {
7529 if (value_type (val0)->code () == TYPE_CODE_REF)
7530 {
7531 struct value *val = val0;
7532
7533 val = coerce_ref (val);
7534
7535 if (ada_is_tagged_type (value_type (val), 0))
7536 val = ada_tag_value_at_base_address (val);
7537
7538 return ada_to_fixed_value (val);
7539 }
7540 else
7541 return val0;
7542 }
7543
7544 /* Return the bit alignment required for field #F of template type TYPE. */
7545
7546 static unsigned int
7547 field_alignment (struct type *type, int f)
7548 {
7549 const char *name = TYPE_FIELD_NAME (type, f);
7550 int len;
7551 int align_offset;
7552
7553 /* The field name should never be null, unless the debugging information
7554 is somehow malformed. In this case, we assume the field does not
7555 require any alignment. */
7556 if (name == NULL)
7557 return 1;
7558
7559 len = strlen (name);
7560
7561 if (!isdigit (name[len - 1]))
7562 return 1;
7563
7564 if (isdigit (name[len - 2]))
7565 align_offset = len - 2;
7566 else
7567 align_offset = len - 1;
7568
7569 if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7570 return TARGET_CHAR_BIT;
7571
7572 return atoi (name + align_offset) * TARGET_CHAR_BIT;
7573 }
7574
7575 /* Find a typedef or tag symbol named NAME. Ignores ambiguity. */
7576
7577 static struct symbol *
7578 ada_find_any_type_symbol (const char *name)
7579 {
7580 struct symbol *sym;
7581
7582 sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7583 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7584 return sym;
7585
7586 sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7587 return sym;
7588 }
7589
7590 /* Find a type named NAME. Ignores ambiguity. This routine will look
7591 solely for types defined by debug info, it will not search the GDB
7592 primitive types. */
7593
7594 static struct type *
7595 ada_find_any_type (const char *name)
7596 {
7597 struct symbol *sym = ada_find_any_type_symbol (name);
7598
7599 if (sym != NULL)
7600 return SYMBOL_TYPE (sym);
7601
7602 return NULL;
7603 }
7604
7605 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7606 associated with NAME_SYM's name. NAME_SYM may itself be a renaming
7607 symbol, in which case it is returned. Otherwise, this looks for
7608 symbols whose name is that of NAME_SYM suffixed with "___XR".
7609 Return symbol if found, and NULL otherwise. */
7610
7611 static bool
7612 ada_is_renaming_symbol (struct symbol *name_sym)
7613 {
7614 const char *name = name_sym->linkage_name ();
7615 return strstr (name, "___XR") != NULL;
7616 }
7617
7618 /* Because of GNAT encoding conventions, several GDB symbols may match a
7619 given type name. If the type denoted by TYPE0 is to be preferred to
7620 that of TYPE1 for purposes of type printing, return non-zero;
7621 otherwise return 0. */
7622
7623 int
7624 ada_prefer_type (struct type *type0, struct type *type1)
7625 {
7626 if (type1 == NULL)
7627 return 1;
7628 else if (type0 == NULL)
7629 return 0;
7630 else if (type1->code () == TYPE_CODE_VOID)
7631 return 1;
7632 else if (type0->code () == TYPE_CODE_VOID)
7633 return 0;
7634 else if (type1->name () == NULL && type0->name () != NULL)
7635 return 1;
7636 else if (ada_is_constrained_packed_array_type (type0))
7637 return 1;
7638 else if (ada_is_array_descriptor_type (type0)
7639 && !ada_is_array_descriptor_type (type1))
7640 return 1;
7641 else
7642 {
7643 const char *type0_name = type0->name ();
7644 const char *type1_name = type1->name ();
7645
7646 if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7647 && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7648 return 1;
7649 }
7650 return 0;
7651 }
7652
7653 /* The name of TYPE, which is its TYPE_NAME. Null if TYPE is
7654 null. */
7655
7656 const char *
7657 ada_type_name (struct type *type)
7658 {
7659 if (type == NULL)
7660 return NULL;
7661 return type->name ();
7662 }
7663
7664 /* Search the list of "descriptive" types associated to TYPE for a type
7665 whose name is NAME. */
7666
7667 static struct type *
7668 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7669 {
7670 struct type *result, *tmp;
7671
7672 if (ada_ignore_descriptive_types_p)
7673 return NULL;
7674
7675 /* If there no descriptive-type info, then there is no parallel type
7676 to be found. */
7677 if (!HAVE_GNAT_AUX_INFO (type))
7678 return NULL;
7679
7680 result = TYPE_DESCRIPTIVE_TYPE (type);
7681 while (result != NULL)
7682 {
7683 const char *result_name = ada_type_name (result);
7684
7685 if (result_name == NULL)
7686 {
7687 warning (_("unexpected null name on descriptive type"));
7688 return NULL;
7689 }
7690
7691 /* If the names match, stop. */
7692 if (strcmp (result_name, name) == 0)
7693 break;
7694
7695 /* Otherwise, look at the next item on the list, if any. */
7696 if (HAVE_GNAT_AUX_INFO (result))
7697 tmp = TYPE_DESCRIPTIVE_TYPE (result);
7698 else
7699 tmp = NULL;
7700
7701 /* If not found either, try after having resolved the typedef. */
7702 if (tmp != NULL)
7703 result = tmp;
7704 else
7705 {
7706 result = check_typedef (result);
7707 if (HAVE_GNAT_AUX_INFO (result))
7708 result = TYPE_DESCRIPTIVE_TYPE (result);
7709 else
7710 result = NULL;
7711 }
7712 }
7713
7714 /* If we didn't find a match, see whether this is a packed array. With
7715 older compilers, the descriptive type information is either absent or
7716 irrelevant when it comes to packed arrays so the above lookup fails.
7717 Fall back to using a parallel lookup by name in this case. */
7718 if (result == NULL && ada_is_constrained_packed_array_type (type))
7719 return ada_find_any_type (name);
7720
7721 return result;
7722 }
7723
7724 /* Find a parallel type to TYPE with the specified NAME, using the
7725 descriptive type taken from the debugging information, if available,
7726 and otherwise using the (slower) name-based method. */
7727
7728 static struct type *
7729 ada_find_parallel_type_with_name (struct type *type, const char *name)
7730 {
7731 struct type *result = NULL;
7732
7733 if (HAVE_GNAT_AUX_INFO (type))
7734 result = find_parallel_type_by_descriptive_type (type, name);
7735 else
7736 result = ada_find_any_type (name);
7737
7738 return result;
7739 }
7740
7741 /* Same as above, but specify the name of the parallel type by appending
7742 SUFFIX to the name of TYPE. */
7743
7744 struct type *
7745 ada_find_parallel_type (struct type *type, const char *suffix)
7746 {
7747 char *name;
7748 const char *type_name = ada_type_name (type);
7749 int len;
7750
7751 if (type_name == NULL)
7752 return NULL;
7753
7754 len = strlen (type_name);
7755
7756 name = (char *) alloca (len + strlen (suffix) + 1);
7757
7758 strcpy (name, type_name);
7759 strcpy (name + len, suffix);
7760
7761 return ada_find_parallel_type_with_name (type, name);
7762 }
7763
7764 /* If TYPE is a variable-size record type, return the corresponding template
7765 type describing its fields. Otherwise, return NULL. */
7766
7767 static struct type *
7768 dynamic_template_type (struct type *type)
7769 {
7770 type = ada_check_typedef (type);
7771
7772 if (type == NULL || type->code () != TYPE_CODE_STRUCT
7773 || ada_type_name (type) == NULL)
7774 return NULL;
7775 else
7776 {
7777 int len = strlen (ada_type_name (type));
7778
7779 if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7780 return type;
7781 else
7782 return ada_find_parallel_type (type, "___XVE");
7783 }
7784 }
7785
7786 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7787 non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size. */
7788
7789 static int
7790 is_dynamic_field (struct type *templ_type, int field_num)
7791 {
7792 const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7793
7794 return name != NULL
7795 && templ_type->field (field_num).type ()->code () == TYPE_CODE_PTR
7796 && strstr (name, "___XVL") != NULL;
7797 }
7798
7799 /* The index of the variant field of TYPE, or -1 if TYPE does not
7800 represent a variant record type. */
7801
7802 static int
7803 variant_field_index (struct type *type)
7804 {
7805 int f;
7806
7807 if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7808 return -1;
7809
7810 for (f = 0; f < type->num_fields (); f += 1)
7811 {
7812 if (ada_is_variant_part (type, f))
7813 return f;
7814 }
7815 return -1;
7816 }
7817
7818 /* A record type with no fields. */
7819
7820 static struct type *
7821 empty_record (struct type *templ)
7822 {
7823 struct type *type = alloc_type_copy (templ);
7824
7825 type->set_code (TYPE_CODE_STRUCT);
7826 INIT_NONE_SPECIFIC (type);
7827 type->set_name ("<empty>");
7828 TYPE_LENGTH (type) = 0;
7829 return type;
7830 }
7831
7832 /* An ordinary record type (with fixed-length fields) that describes
7833 the value of type TYPE at VALADDR or ADDRESS (see comments at
7834 the beginning of this section) VAL according to GNAT conventions.
7835 DVAL0 should describe the (portion of a) record that contains any
7836 necessary discriminants. It should be NULL if value_type (VAL) is
7837 an outer-level type (i.e., as opposed to a branch of a variant.) A
7838 variant field (unless unchecked) is replaced by a particular branch
7839 of the variant.
7840
7841 If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7842 length are not statically known are discarded. As a consequence,
7843 VALADDR, ADDRESS and DVAL0 are ignored.
7844
7845 NOTE: Limitations: For now, we assume that dynamic fields and
7846 variants occupy whole numbers of bytes. However, they need not be
7847 byte-aligned. */
7848
7849 struct type *
7850 ada_template_to_fixed_record_type_1 (struct type *type,
7851 const gdb_byte *valaddr,
7852 CORE_ADDR address, struct value *dval0,
7853 int keep_dynamic_fields)
7854 {
7855 struct value *mark = value_mark ();
7856 struct value *dval;
7857 struct type *rtype;
7858 int nfields, bit_len;
7859 int variant_field;
7860 long off;
7861 int fld_bit_len;
7862 int f;
7863
7864 /* Compute the number of fields in this record type that are going
7865 to be processed: unless keep_dynamic_fields, this includes only
7866 fields whose position and length are static will be processed. */
7867 if (keep_dynamic_fields)
7868 nfields = type->num_fields ();
7869 else
7870 {
7871 nfields = 0;
7872 while (nfields < type->num_fields ()
7873 && !ada_is_variant_part (type, nfields)
7874 && !is_dynamic_field (type, nfields))
7875 nfields++;
7876 }
7877
7878 rtype = alloc_type_copy (type);
7879 rtype->set_code (TYPE_CODE_STRUCT);
7880 INIT_NONE_SPECIFIC (rtype);
7881 rtype->set_num_fields (nfields);
7882 rtype->set_fields
7883 ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
7884 rtype->set_name (ada_type_name (type));
7885 rtype->set_is_fixed_instance (true);
7886
7887 off = 0;
7888 bit_len = 0;
7889 variant_field = -1;
7890
7891 for (f = 0; f < nfields; f += 1)
7892 {
7893 off = align_up (off, field_alignment (type, f))
7894 + TYPE_FIELD_BITPOS (type, f);
7895 SET_FIELD_BITPOS (rtype->field (f), off);
7896 TYPE_FIELD_BITSIZE (rtype, f) = 0;
7897
7898 if (ada_is_variant_part (type, f))
7899 {
7900 variant_field = f;
7901 fld_bit_len = 0;
7902 }
7903 else if (is_dynamic_field (type, f))
7904 {
7905 const gdb_byte *field_valaddr = valaddr;
7906 CORE_ADDR field_address = address;
7907 struct type *field_type =
7908 TYPE_TARGET_TYPE (type->field (f).type ());
7909
7910 if (dval0 == NULL)
7911 {
7912 /* rtype's length is computed based on the run-time
7913 value of discriminants. If the discriminants are not
7914 initialized, the type size may be completely bogus and
7915 GDB may fail to allocate a value for it. So check the
7916 size first before creating the value. */
7917 ada_ensure_varsize_limit (rtype);
7918 /* Using plain value_from_contents_and_address here
7919 causes problems because we will end up trying to
7920 resolve a type that is currently being
7921 constructed. */
7922 dval = value_from_contents_and_address_unresolved (rtype,
7923 valaddr,
7924 address);
7925 rtype = value_type (dval);
7926 }
7927 else
7928 dval = dval0;
7929
7930 /* If the type referenced by this field is an aligner type, we need
7931 to unwrap that aligner type, because its size might not be set.
7932 Keeping the aligner type would cause us to compute the wrong
7933 size for this field, impacting the offset of the all the fields
7934 that follow this one. */
7935 if (ada_is_aligner_type (field_type))
7936 {
7937 long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7938
7939 field_valaddr = cond_offset_host (field_valaddr, field_offset);
7940 field_address = cond_offset_target (field_address, field_offset);
7941 field_type = ada_aligned_type (field_type);
7942 }
7943
7944 field_valaddr = cond_offset_host (field_valaddr,
7945 off / TARGET_CHAR_BIT);
7946 field_address = cond_offset_target (field_address,
7947 off / TARGET_CHAR_BIT);
7948
7949 /* Get the fixed type of the field. Note that, in this case,
7950 we do not want to get the real type out of the tag: if
7951 the current field is the parent part of a tagged record,
7952 we will get the tag of the object. Clearly wrong: the real
7953 type of the parent is not the real type of the child. We
7954 would end up in an infinite loop. */
7955 field_type = ada_get_base_type (field_type);
7956 field_type = ada_to_fixed_type (field_type, field_valaddr,
7957 field_address, dval, 0);
7958 /* If the field size is already larger than the maximum
7959 object size, then the record itself will necessarily
7960 be larger than the maximum object size. We need to make
7961 this check now, because the size might be so ridiculously
7962 large (due to an uninitialized variable in the inferior)
7963 that it would cause an overflow when adding it to the
7964 record size. */
7965 ada_ensure_varsize_limit (field_type);
7966
7967 rtype->field (f).set_type (field_type);
7968 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7969 /* The multiplication can potentially overflow. But because
7970 the field length has been size-checked just above, and
7971 assuming that the maximum size is a reasonable value,
7972 an overflow should not happen in practice. So rather than
7973 adding overflow recovery code to this already complex code,
7974 we just assume that it's not going to happen. */
7975 fld_bit_len =
7976 TYPE_LENGTH (rtype->field (f).type ()) * TARGET_CHAR_BIT;
7977 }
7978 else
7979 {
7980 /* Note: If this field's type is a typedef, it is important
7981 to preserve the typedef layer.
7982
7983 Otherwise, we might be transforming a typedef to a fat
7984 pointer (encoding a pointer to an unconstrained array),
7985 into a basic fat pointer (encoding an unconstrained
7986 array). As both types are implemented using the same
7987 structure, the typedef is the only clue which allows us
7988 to distinguish between the two options. Stripping it
7989 would prevent us from printing this field appropriately. */
7990 rtype->field (f).set_type (type->field (f).type ());
7991 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7992 if (TYPE_FIELD_BITSIZE (type, f) > 0)
7993 fld_bit_len =
7994 TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7995 else
7996 {
7997 struct type *field_type = type->field (f).type ();
7998
7999 /* We need to be careful of typedefs when computing
8000 the length of our field. If this is a typedef,
8001 get the length of the target type, not the length
8002 of the typedef. */
8003 if (field_type->code () == TYPE_CODE_TYPEDEF)
8004 field_type = ada_typedef_target_type (field_type);
8005
8006 fld_bit_len =
8007 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8008 }
8009 }
8010 if (off + fld_bit_len > bit_len)
8011 bit_len = off + fld_bit_len;
8012 off += fld_bit_len;
8013 TYPE_LENGTH (rtype) =
8014 align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8015 }
8016
8017 /* We handle the variant part, if any, at the end because of certain
8018 odd cases in which it is re-ordered so as NOT to be the last field of
8019 the record. This can happen in the presence of representation
8020 clauses. */
8021 if (variant_field >= 0)
8022 {
8023 struct type *branch_type;
8024
8025 off = TYPE_FIELD_BITPOS (rtype, variant_field);
8026
8027 if (dval0 == NULL)
8028 {
8029 /* Using plain value_from_contents_and_address here causes
8030 problems because we will end up trying to resolve a type
8031 that is currently being constructed. */
8032 dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8033 address);
8034 rtype = value_type (dval);
8035 }
8036 else
8037 dval = dval0;
8038
8039 branch_type =
8040 to_fixed_variant_branch_type
8041 (type->field (variant_field).type (),
8042 cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8043 cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8044 if (branch_type == NULL)
8045 {
8046 for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
8047 rtype->field (f - 1) = rtype->field (f);
8048 rtype->set_num_fields (rtype->num_fields () - 1);
8049 }
8050 else
8051 {
8052 rtype->field (variant_field).set_type (branch_type);
8053 TYPE_FIELD_NAME (rtype, variant_field) = "S";
8054 fld_bit_len =
8055 TYPE_LENGTH (rtype->field (variant_field).type ()) *
8056 TARGET_CHAR_BIT;
8057 if (off + fld_bit_len > bit_len)
8058 bit_len = off + fld_bit_len;
8059 TYPE_LENGTH (rtype) =
8060 align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8061 }
8062 }
8063
8064 /* According to exp_dbug.ads, the size of TYPE for variable-size records
8065 should contain the alignment of that record, which should be a strictly
8066 positive value. If null or negative, then something is wrong, most
8067 probably in the debug info. In that case, we don't round up the size
8068 of the resulting type. If this record is not part of another structure,
8069 the current RTYPE length might be good enough for our purposes. */
8070 if (TYPE_LENGTH (type) <= 0)
8071 {
8072 if (rtype->name ())
8073 warning (_("Invalid type size for `%s' detected: %s."),
8074 rtype->name (), pulongest (TYPE_LENGTH (type)));
8075 else
8076 warning (_("Invalid type size for <unnamed> detected: %s."),
8077 pulongest (TYPE_LENGTH (type)));
8078 }
8079 else
8080 {
8081 TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8082 TYPE_LENGTH (type));
8083 }
8084
8085 value_free_to_mark (mark);
8086 if (TYPE_LENGTH (rtype) > varsize_limit)
8087 error (_("record type with dynamic size is larger than varsize-limit"));
8088 return rtype;
8089 }
8090
8091 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8092 of 1. */
8093
8094 static struct type *
8095 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8096 CORE_ADDR address, struct value *dval0)
8097 {
8098 return ada_template_to_fixed_record_type_1 (type, valaddr,
8099 address, dval0, 1);
8100 }
8101
8102 /* An ordinary record type in which ___XVL-convention fields and
8103 ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8104 static approximations, containing all possible fields. Uses
8105 no runtime values. Useless for use in values, but that's OK,
8106 since the results are used only for type determinations. Works on both
8107 structs and unions. Representation note: to save space, we memorize
8108 the result of this function in the TYPE_TARGET_TYPE of the
8109 template type. */
8110
8111 static struct type *
8112 template_to_static_fixed_type (struct type *type0)
8113 {
8114 struct type *type;
8115 int nfields;
8116 int f;
8117
8118 /* No need no do anything if the input type is already fixed. */
8119 if (type0->is_fixed_instance ())
8120 return type0;
8121
8122 /* Likewise if we already have computed the static approximation. */
8123 if (TYPE_TARGET_TYPE (type0) != NULL)
8124 return TYPE_TARGET_TYPE (type0);
8125
8126 /* Don't clone TYPE0 until we are sure we are going to need a copy. */
8127 type = type0;
8128 nfields = type0->num_fields ();
8129
8130 /* Whether or not we cloned TYPE0, cache the result so that we don't do
8131 recompute all over next time. */
8132 TYPE_TARGET_TYPE (type0) = type;
8133
8134 for (f = 0; f < nfields; f += 1)
8135 {
8136 struct type *field_type = type0->field (f).type ();
8137 struct type *new_type;
8138
8139 if (is_dynamic_field (type0, f))
8140 {
8141 field_type = ada_check_typedef (field_type);
8142 new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8143 }
8144 else
8145 new_type = static_unwrap_type (field_type);
8146
8147 if (new_type != field_type)
8148 {
8149 /* Clone TYPE0 only the first time we get a new field type. */
8150 if (type == type0)
8151 {
8152 TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8153 type->set_code (type0->code ());
8154 INIT_NONE_SPECIFIC (type);
8155 type->set_num_fields (nfields);
8156
8157 field *fields =
8158 ((struct field *)
8159 TYPE_ALLOC (type, nfields * sizeof (struct field)));
8160 memcpy (fields, type0->fields (),
8161 sizeof (struct field) * nfields);
8162 type->set_fields (fields);
8163
8164 type->set_name (ada_type_name (type0));
8165 type->set_is_fixed_instance (true);
8166 TYPE_LENGTH (type) = 0;
8167 }
8168 type->field (f).set_type (new_type);
8169 TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8170 }
8171 }
8172
8173 return type;
8174 }
8175
8176 /* Given an object of type TYPE whose contents are at VALADDR and
8177 whose address in memory is ADDRESS, returns a revision of TYPE,
8178 which should be a non-dynamic-sized record, in which the variant
8179 part, if any, is replaced with the appropriate branch. Looks
8180 for discriminant values in DVAL0, which can be NULL if the record
8181 contains the necessary discriminant values. */
8182
8183 static struct type *
8184 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8185 CORE_ADDR address, struct value *dval0)
8186 {
8187 struct value *mark = value_mark ();
8188 struct value *dval;
8189 struct type *rtype;
8190 struct type *branch_type;
8191 int nfields = type->num_fields ();
8192 int variant_field = variant_field_index (type);
8193
8194 if (variant_field == -1)
8195 return type;
8196
8197 if (dval0 == NULL)
8198 {
8199 dval = value_from_contents_and_address (type, valaddr, address);
8200 type = value_type (dval);
8201 }
8202 else
8203 dval = dval0;
8204
8205 rtype = alloc_type_copy (type);
8206 rtype->set_code (TYPE_CODE_STRUCT);
8207 INIT_NONE_SPECIFIC (rtype);
8208 rtype->set_num_fields (nfields);
8209
8210 field *fields =
8211 (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8212 memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8213 rtype->set_fields (fields);
8214
8215 rtype->set_name (ada_type_name (type));
8216 rtype->set_is_fixed_instance (true);
8217 TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8218
8219 branch_type = to_fixed_variant_branch_type
8220 (type->field (variant_field).type (),
8221 cond_offset_host (valaddr,
8222 TYPE_FIELD_BITPOS (type, variant_field)
8223 / TARGET_CHAR_BIT),
8224 cond_offset_target (address,
8225 TYPE_FIELD_BITPOS (type, variant_field)
8226 / TARGET_CHAR_BIT), dval);
8227 if (branch_type == NULL)
8228 {
8229 int f;
8230
8231 for (f = variant_field + 1; f < nfields; f += 1)
8232 rtype->field (f - 1) = rtype->field (f);
8233 rtype->set_num_fields (rtype->num_fields () - 1);
8234 }
8235 else
8236 {
8237 rtype->field (variant_field).set_type (branch_type);
8238 TYPE_FIELD_NAME (rtype, variant_field) = "S";
8239 TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8240 TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8241 }
8242 TYPE_LENGTH (rtype) -= TYPE_LENGTH (type->field (variant_field).type ());
8243
8244 value_free_to_mark (mark);
8245 return rtype;
8246 }
8247
8248 /* An ordinary record type (with fixed-length fields) that describes
8249 the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8250 beginning of this section]. Any necessary discriminants' values
8251 should be in DVAL, a record value; it may be NULL if the object
8252 at ADDR itself contains any necessary discriminant values.
8253 Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8254 values from the record are needed. Except in the case that DVAL,
8255 VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8256 unchecked) is replaced by a particular branch of the variant.
8257
8258 NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8259 is questionable and may be removed. It can arise during the
8260 processing of an unconstrained-array-of-record type where all the
8261 variant branches have exactly the same size. This is because in
8262 such cases, the compiler does not bother to use the XVS convention
8263 when encoding the record. I am currently dubious of this
8264 shortcut and suspect the compiler should be altered. FIXME. */
8265
8266 static struct type *
8267 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8268 CORE_ADDR address, struct value *dval)
8269 {
8270 struct type *templ_type;
8271
8272 if (type0->is_fixed_instance ())
8273 return type0;
8274
8275 templ_type = dynamic_template_type (type0);
8276
8277 if (templ_type != NULL)
8278 return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8279 else if (variant_field_index (type0) >= 0)
8280 {
8281 if (dval == NULL && valaddr == NULL && address == 0)
8282 return type0;
8283 return to_record_with_fixed_variant_part (type0, valaddr, address,
8284 dval);
8285 }
8286 else
8287 {
8288 type0->set_is_fixed_instance (true);
8289 return type0;
8290 }
8291
8292 }
8293
8294 /* An ordinary record type (with fixed-length fields) that describes
8295 the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8296 union type. Any necessary discriminants' values should be in DVAL,
8297 a record value. That is, this routine selects the appropriate
8298 branch of the union at ADDR according to the discriminant value
8299 indicated in the union's type name. Returns VAR_TYPE0 itself if
8300 it represents a variant subject to a pragma Unchecked_Union. */
8301
8302 static struct type *
8303 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8304 CORE_ADDR address, struct value *dval)
8305 {
8306 int which;
8307 struct type *templ_type;
8308 struct type *var_type;
8309
8310 if (var_type0->code () == TYPE_CODE_PTR)
8311 var_type = TYPE_TARGET_TYPE (var_type0);
8312 else
8313 var_type = var_type0;
8314
8315 templ_type = ada_find_parallel_type (var_type, "___XVU");
8316
8317 if (templ_type != NULL)
8318 var_type = templ_type;
8319
8320 if (is_unchecked_variant (var_type, value_type (dval)))
8321 return var_type0;
8322 which = ada_which_variant_applies (var_type, dval);
8323
8324 if (which < 0)
8325 return empty_record (var_type);
8326 else if (is_dynamic_field (var_type, which))
8327 return to_fixed_record_type
8328 (TYPE_TARGET_TYPE (var_type->field (which).type ()),
8329 valaddr, address, dval);
8330 else if (variant_field_index (var_type->field (which).type ()) >= 0)
8331 return
8332 to_fixed_record_type
8333 (var_type->field (which).type (), valaddr, address, dval);
8334 else
8335 return var_type->field (which).type ();
8336 }
8337
8338 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8339 ENCODING_TYPE, a type following the GNAT conventions for discrete
8340 type encodings, only carries redundant information. */
8341
8342 static int
8343 ada_is_redundant_range_encoding (struct type *range_type,
8344 struct type *encoding_type)
8345 {
8346 const char *bounds_str;
8347 int n;
8348 LONGEST lo, hi;
8349
8350 gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8351
8352 if (get_base_type (range_type)->code ()
8353 != get_base_type (encoding_type)->code ())
8354 {
8355 /* The compiler probably used a simple base type to describe
8356 the range type instead of the range's actual base type,
8357 expecting us to get the real base type from the encoding
8358 anyway. In this situation, the encoding cannot be ignored
8359 as redundant. */
8360 return 0;
8361 }
8362
8363 if (is_dynamic_type (range_type))
8364 return 0;
8365
8366 if (encoding_type->name () == NULL)
8367 return 0;
8368
8369 bounds_str = strstr (encoding_type->name (), "___XDLU_");
8370 if (bounds_str == NULL)
8371 return 0;
8372
8373 n = 8; /* Skip "___XDLU_". */
8374 if (!ada_scan_number (bounds_str, n, &lo, &n))
8375 return 0;
8376 if (range_type->bounds ()->low.const_val () != lo)
8377 return 0;
8378
8379 n += 2; /* Skip the "__" separator between the two bounds. */
8380 if (!ada_scan_number (bounds_str, n, &hi, &n))
8381 return 0;
8382 if (range_type->bounds ()->high.const_val () != hi)
8383 return 0;
8384
8385 return 1;
8386 }
8387
8388 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8389 a type following the GNAT encoding for describing array type
8390 indices, only carries redundant information. */
8391
8392 static int
8393 ada_is_redundant_index_type_desc (struct type *array_type,
8394 struct type *desc_type)
8395 {
8396 struct type *this_layer = check_typedef (array_type);
8397 int i;
8398
8399 for (i = 0; i < desc_type->num_fields (); i++)
8400 {
8401 if (!ada_is_redundant_range_encoding (this_layer->index_type (),
8402 desc_type->field (i).type ()))
8403 return 0;
8404 this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8405 }
8406
8407 return 1;
8408 }
8409
8410 /* Assuming that TYPE0 is an array type describing the type of a value
8411 at ADDR, and that DVAL describes a record containing any
8412 discriminants used in TYPE0, returns a type for the value that
8413 contains no dynamic components (that is, no components whose sizes
8414 are determined by run-time quantities). Unless IGNORE_TOO_BIG is
8415 true, gives an error message if the resulting type's size is over
8416 varsize_limit. */
8417
8418 static struct type *
8419 to_fixed_array_type (struct type *type0, struct value *dval,
8420 int ignore_too_big)
8421 {
8422 struct type *index_type_desc;
8423 struct type *result;
8424 int constrained_packed_array_p;
8425 static const char *xa_suffix = "___XA";
8426
8427 type0 = ada_check_typedef (type0);
8428 if (type0->is_fixed_instance ())
8429 return type0;
8430
8431 constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8432 if (constrained_packed_array_p)
8433 {
8434 type0 = decode_constrained_packed_array_type (type0);
8435 if (type0 == nullptr)
8436 error (_("could not decode constrained packed array type"));
8437 }
8438
8439 index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8440
8441 /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8442 encoding suffixed with 'P' may still be generated. If so,
8443 it should be used to find the XA type. */
8444
8445 if (index_type_desc == NULL)
8446 {
8447 const char *type_name = ada_type_name (type0);
8448
8449 if (type_name != NULL)
8450 {
8451 const int len = strlen (type_name);
8452 char *name = (char *) alloca (len + strlen (xa_suffix));
8453
8454 if (type_name[len - 1] == 'P')
8455 {
8456 strcpy (name, type_name);
8457 strcpy (name + len - 1, xa_suffix);
8458 index_type_desc = ada_find_parallel_type_with_name (type0, name);
8459 }
8460 }
8461 }
8462
8463 ada_fixup_array_indexes_type (index_type_desc);
8464 if (index_type_desc != NULL
8465 && ada_is_redundant_index_type_desc (type0, index_type_desc))
8466 {
8467 /* Ignore this ___XA parallel type, as it does not bring any
8468 useful information. This allows us to avoid creating fixed
8469 versions of the array's index types, which would be identical
8470 to the original ones. This, in turn, can also help avoid
8471 the creation of fixed versions of the array itself. */
8472 index_type_desc = NULL;
8473 }
8474
8475 if (index_type_desc == NULL)
8476 {
8477 struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8478
8479 /* NOTE: elt_type---the fixed version of elt_type0---should never
8480 depend on the contents of the array in properly constructed
8481 debugging data. */
8482 /* Create a fixed version of the array element type.
8483 We're not providing the address of an element here,
8484 and thus the actual object value cannot be inspected to do
8485 the conversion. This should not be a problem, since arrays of
8486 unconstrained objects are not allowed. In particular, all
8487 the elements of an array of a tagged type should all be of
8488 the same type specified in the debugging info. No need to
8489 consult the object tag. */
8490 struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8491
8492 /* Make sure we always create a new array type when dealing with
8493 packed array types, since we're going to fix-up the array
8494 type length and element bitsize a little further down. */
8495 if (elt_type0 == elt_type && !constrained_packed_array_p)
8496 result = type0;
8497 else
8498 result = create_array_type (alloc_type_copy (type0),
8499 elt_type, type0->index_type ());
8500 }
8501 else
8502 {
8503 int i;
8504 struct type *elt_type0;
8505
8506 elt_type0 = type0;
8507 for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8508 elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8509
8510 /* NOTE: result---the fixed version of elt_type0---should never
8511 depend on the contents of the array in properly constructed
8512 debugging data. */
8513 /* Create a fixed version of the array element type.
8514 We're not providing the address of an element here,
8515 and thus the actual object value cannot be inspected to do
8516 the conversion. This should not be a problem, since arrays of
8517 unconstrained objects are not allowed. In particular, all
8518 the elements of an array of a tagged type should all be of
8519 the same type specified in the debugging info. No need to
8520 consult the object tag. */
8521 result =
8522 ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8523
8524 elt_type0 = type0;
8525 for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8526 {
8527 struct type *range_type =
8528 to_fixed_range_type (index_type_desc->field (i).type (), dval);
8529
8530 result = create_array_type (alloc_type_copy (elt_type0),
8531 result, range_type);
8532 elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8533 }
8534 if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8535 error (_("array type with dynamic size is larger than varsize-limit"));
8536 }
8537
8538 /* We want to preserve the type name. This can be useful when
8539 trying to get the type name of a value that has already been
8540 printed (for instance, if the user did "print VAR; whatis $". */
8541 result->set_name (type0->name ());
8542
8543 if (constrained_packed_array_p)
8544 {
8545 /* So far, the resulting type has been created as if the original
8546 type was a regular (non-packed) array type. As a result, the
8547 bitsize of the array elements needs to be set again, and the array
8548 length needs to be recomputed based on that bitsize. */
8549 int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8550 int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8551
8552 TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8553 TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8554 if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8555 TYPE_LENGTH (result)++;
8556 }
8557
8558 result->set_is_fixed_instance (true);
8559 return result;
8560 }
8561
8562
8563 /* A standard type (containing no dynamically sized components)
8564 corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8565 DVAL describes a record containing any discriminants used in TYPE0,
8566 and may be NULL if there are none, or if the object of type TYPE at
8567 ADDRESS or in VALADDR contains these discriminants.
8568
8569 If CHECK_TAG is not null, in the case of tagged types, this function
8570 attempts to locate the object's tag and use it to compute the actual
8571 type. However, when ADDRESS is null, we cannot use it to determine the
8572 location of the tag, and therefore compute the tagged type's actual type.
8573 So we return the tagged type without consulting the tag. */
8574
8575 static struct type *
8576 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8577 CORE_ADDR address, struct value *dval, int check_tag)
8578 {
8579 type = ada_check_typedef (type);
8580
8581 /* Only un-fixed types need to be handled here. */
8582 if (!HAVE_GNAT_AUX_INFO (type))
8583 return type;
8584
8585 switch (type->code ())
8586 {
8587 default:
8588 return type;
8589 case TYPE_CODE_STRUCT:
8590 {
8591 struct type *static_type = to_static_fixed_type (type);
8592 struct type *fixed_record_type =
8593 to_fixed_record_type (type, valaddr, address, NULL);
8594
8595 /* If STATIC_TYPE is a tagged type and we know the object's address,
8596 then we can determine its tag, and compute the object's actual
8597 type from there. Note that we have to use the fixed record
8598 type (the parent part of the record may have dynamic fields
8599 and the way the location of _tag is expressed may depend on
8600 them). */
8601
8602 if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8603 {
8604 struct value *tag =
8605 value_tag_from_contents_and_address
8606 (fixed_record_type,
8607 valaddr,
8608 address);
8609 struct type *real_type = type_from_tag (tag);
8610 struct value *obj =
8611 value_from_contents_and_address (fixed_record_type,
8612 valaddr,
8613 address);
8614 fixed_record_type = value_type (obj);
8615 if (real_type != NULL)
8616 return to_fixed_record_type
8617 (real_type, NULL,
8618 value_address (ada_tag_value_at_base_address (obj)), NULL);
8619 }
8620
8621 /* Check to see if there is a parallel ___XVZ variable.
8622 If there is, then it provides the actual size of our type. */
8623 else if (ada_type_name (fixed_record_type) != NULL)
8624 {
8625 const char *name = ada_type_name (fixed_record_type);
8626 char *xvz_name
8627 = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8628 bool xvz_found = false;
8629 LONGEST size;
8630
8631 xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8632 try
8633 {
8634 xvz_found = get_int_var_value (xvz_name, size);
8635 }
8636 catch (const gdb_exception_error &except)
8637 {
8638 /* We found the variable, but somehow failed to read
8639 its value. Rethrow the same error, but with a little
8640 bit more information, to help the user understand
8641 what went wrong (Eg: the variable might have been
8642 optimized out). */
8643 throw_error (except.error,
8644 _("unable to read value of %s (%s)"),
8645 xvz_name, except.what ());
8646 }
8647
8648 if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8649 {
8650 fixed_record_type = copy_type (fixed_record_type);
8651 TYPE_LENGTH (fixed_record_type) = size;
8652
8653 /* The FIXED_RECORD_TYPE may have be a stub. We have
8654 observed this when the debugging info is STABS, and
8655 apparently it is something that is hard to fix.
8656
8657 In practice, we don't need the actual type definition
8658 at all, because the presence of the XVZ variable allows us
8659 to assume that there must be a XVS type as well, which we
8660 should be able to use later, when we need the actual type
8661 definition.
8662
8663 In the meantime, pretend that the "fixed" type we are
8664 returning is NOT a stub, because this can cause trouble
8665 when using this type to create new types targeting it.
8666 Indeed, the associated creation routines often check
8667 whether the target type is a stub and will try to replace
8668 it, thus using a type with the wrong size. This, in turn,
8669 might cause the new type to have the wrong size too.
8670 Consider the case of an array, for instance, where the size
8671 of the array is computed from the number of elements in
8672 our array multiplied by the size of its element. */
8673 fixed_record_type->set_is_stub (false);
8674 }
8675 }
8676 return fixed_record_type;
8677 }
8678 case TYPE_CODE_ARRAY:
8679 return to_fixed_array_type (type, dval, 1);
8680 case TYPE_CODE_UNION:
8681 if (dval == NULL)
8682 return type;
8683 else
8684 return to_fixed_variant_branch_type (type, valaddr, address, dval);
8685 }
8686 }
8687
8688 /* The same as ada_to_fixed_type_1, except that it preserves the type
8689 if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8690
8691 The typedef layer needs be preserved in order to differentiate between
8692 arrays and array pointers when both types are implemented using the same
8693 fat pointer. In the array pointer case, the pointer is encoded as
8694 a typedef of the pointer type. For instance, considering:
8695
8696 type String_Access is access String;
8697 S1 : String_Access := null;
8698
8699 To the debugger, S1 is defined as a typedef of type String. But
8700 to the user, it is a pointer. So if the user tries to print S1,
8701 we should not dereference the array, but print the array address
8702 instead.
8703
8704 If we didn't preserve the typedef layer, we would lose the fact that
8705 the type is to be presented as a pointer (needs de-reference before
8706 being printed). And we would also use the source-level type name. */
8707
8708 struct type *
8709 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8710 CORE_ADDR address, struct value *dval, int check_tag)
8711
8712 {
8713 struct type *fixed_type =
8714 ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8715
8716 /* If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8717 then preserve the typedef layer.
8718
8719 Implementation note: We can only check the main-type portion of
8720 the TYPE and FIXED_TYPE, because eliminating the typedef layer
8721 from TYPE now returns a type that has the same instance flags
8722 as TYPE. For instance, if TYPE is a "typedef const", and its
8723 target type is a "struct", then the typedef elimination will return
8724 a "const" version of the target type. See check_typedef for more
8725 details about how the typedef layer elimination is done.
8726
8727 brobecker/2010-11-19: It seems to me that the only case where it is
8728 useful to preserve the typedef layer is when dealing with fat pointers.
8729 Perhaps, we could add a check for that and preserve the typedef layer
8730 only in that situation. But this seems unnecessary so far, probably
8731 because we call check_typedef/ada_check_typedef pretty much everywhere.
8732 */
8733 if (type->code () == TYPE_CODE_TYPEDEF
8734 && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8735 == TYPE_MAIN_TYPE (fixed_type)))
8736 return type;
8737
8738 return fixed_type;
8739 }
8740
8741 /* A standard (static-sized) type corresponding as well as possible to
8742 TYPE0, but based on no runtime data. */
8743
8744 static struct type *
8745 to_static_fixed_type (struct type *type0)
8746 {
8747 struct type *type;
8748
8749 if (type0 == NULL)
8750 return NULL;
8751
8752 if (type0->is_fixed_instance ())
8753 return type0;
8754
8755 type0 = ada_check_typedef (type0);
8756
8757 switch (type0->code ())
8758 {
8759 default:
8760 return type0;
8761 case TYPE_CODE_STRUCT:
8762 type = dynamic_template_type (type0);
8763 if (type != NULL)
8764 return template_to_static_fixed_type (type);
8765 else
8766 return template_to_static_fixed_type (type0);
8767 case TYPE_CODE_UNION:
8768 type = ada_find_parallel_type (type0, "___XVU");
8769 if (type != NULL)
8770 return template_to_static_fixed_type (type);
8771 else
8772 return template_to_static_fixed_type (type0);
8773 }
8774 }
8775
8776 /* A static approximation of TYPE with all type wrappers removed. */
8777
8778 static struct type *
8779 static_unwrap_type (struct type *type)
8780 {
8781 if (ada_is_aligner_type (type))
8782 {
8783 struct type *type1 = ada_check_typedef (type)->field (0).type ();
8784 if (ada_type_name (type1) == NULL)
8785 type1->set_name (ada_type_name (type));
8786
8787 return static_unwrap_type (type1);
8788 }
8789 else
8790 {
8791 struct type *raw_real_type = ada_get_base_type (type);
8792
8793 if (raw_real_type == type)
8794 return type;
8795 else
8796 return to_static_fixed_type (raw_real_type);
8797 }
8798 }
8799
8800 /* In some cases, incomplete and private types require
8801 cross-references that are not resolved as records (for example,
8802 type Foo;
8803 type FooP is access Foo;
8804 V: FooP;
8805 type Foo is array ...;
8806 ). In these cases, since there is no mechanism for producing
8807 cross-references to such types, we instead substitute for FooP a
8808 stub enumeration type that is nowhere resolved, and whose tag is
8809 the name of the actual type. Call these types "non-record stubs". */
8810
8811 /* A type equivalent to TYPE that is not a non-record stub, if one
8812 exists, otherwise TYPE. */
8813
8814 struct type *
8815 ada_check_typedef (struct type *type)
8816 {
8817 if (type == NULL)
8818 return NULL;
8819
8820 /* If our type is an access to an unconstrained array, which is encoded
8821 as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8822 We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8823 what allows us to distinguish between fat pointers that represent
8824 array types, and fat pointers that represent array access types
8825 (in both cases, the compiler implements them as fat pointers). */
8826 if (ada_is_access_to_unconstrained_array (type))
8827 return type;
8828
8829 type = check_typedef (type);
8830 if (type == NULL || type->code () != TYPE_CODE_ENUM
8831 || !type->is_stub ()
8832 || type->name () == NULL)
8833 return type;
8834 else
8835 {
8836 const char *name = type->name ();
8837 struct type *type1 = ada_find_any_type (name);
8838
8839 if (type1 == NULL)
8840 return type;
8841
8842 /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8843 stubs pointing to arrays, as we don't create symbols for array
8844 types, only for the typedef-to-array types). If that's the case,
8845 strip the typedef layer. */
8846 if (type1->code () == TYPE_CODE_TYPEDEF)
8847 type1 = ada_check_typedef (type1);
8848
8849 return type1;
8850 }
8851 }
8852
8853 /* A value representing the data at VALADDR/ADDRESS as described by
8854 type TYPE0, but with a standard (static-sized) type that correctly
8855 describes it. If VAL0 is not NULL and TYPE0 already is a standard
8856 type, then return VAL0 [this feature is simply to avoid redundant
8857 creation of struct values]. */
8858
8859 static struct value *
8860 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8861 struct value *val0)
8862 {
8863 struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8864
8865 if (type == type0 && val0 != NULL)
8866 return val0;
8867
8868 if (VALUE_LVAL (val0) != lval_memory)
8869 {
8870 /* Our value does not live in memory; it could be a convenience
8871 variable, for instance. Create a not_lval value using val0's
8872 contents. */
8873 return value_from_contents (type, value_contents (val0));
8874 }
8875
8876 return value_from_contents_and_address (type, 0, address);
8877 }
8878
8879 /* A value representing VAL, but with a standard (static-sized) type
8880 that correctly describes it. Does not necessarily create a new
8881 value. */
8882
8883 struct value *
8884 ada_to_fixed_value (struct value *val)
8885 {
8886 val = unwrap_value (val);
8887 val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
8888 return val;
8889 }
8890 \f
8891
8892 /* Attributes */
8893
8894 /* Table mapping attribute numbers to names.
8895 NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h. */
8896
8897 static const char * const attribute_names[] = {
8898 "<?>",
8899
8900 "first",
8901 "last",
8902 "length",
8903 "image",
8904 "max",
8905 "min",
8906 "modulus",
8907 "pos",
8908 "size",
8909 "tag",
8910 "val",
8911 0
8912 };
8913
8914 static const char *
8915 ada_attribute_name (enum exp_opcode n)
8916 {
8917 if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8918 return attribute_names[n - OP_ATR_FIRST + 1];
8919 else
8920 return attribute_names[0];
8921 }
8922
8923 /* Evaluate the 'POS attribute applied to ARG. */
8924
8925 static LONGEST
8926 pos_atr (struct value *arg)
8927 {
8928 struct value *val = coerce_ref (arg);
8929 struct type *type = value_type (val);
8930 LONGEST result;
8931
8932 if (!discrete_type_p (type))
8933 error (_("'POS only defined on discrete types"));
8934
8935 if (!discrete_position (type, value_as_long (val), &result))
8936 error (_("enumeration value is invalid: can't find 'POS"));
8937
8938 return result;
8939 }
8940
8941 static struct value *
8942 value_pos_atr (struct type *type, struct value *arg)
8943 {
8944 return value_from_longest (type, pos_atr (arg));
8945 }
8946
8947 /* Evaluate the TYPE'VAL attribute applied to ARG. */
8948
8949 static struct value *
8950 val_atr (struct type *type, LONGEST val)
8951 {
8952 gdb_assert (discrete_type_p (type));
8953 if (type->code () == TYPE_CODE_RANGE)
8954 type = TYPE_TARGET_TYPE (type);
8955 if (type->code () == TYPE_CODE_ENUM)
8956 {
8957 if (val < 0 || val >= type->num_fields ())
8958 error (_("argument to 'VAL out of range"));
8959 val = TYPE_FIELD_ENUMVAL (type, val);
8960 }
8961 return value_from_longest (type, val);
8962 }
8963
8964 static struct value *
8965 value_val_atr (struct type *type, struct value *arg)
8966 {
8967 if (!discrete_type_p (type))
8968 error (_("'VAL only defined on discrete types"));
8969 if (!integer_type_p (value_type (arg)))
8970 error (_("'VAL requires integral argument"));
8971
8972 return val_atr (type, value_as_long (arg));
8973 }
8974 \f
8975
8976 /* Evaluation */
8977
8978 /* True if TYPE appears to be an Ada character type.
8979 [At the moment, this is true only for Character and Wide_Character;
8980 It is a heuristic test that could stand improvement]. */
8981
8982 bool
8983 ada_is_character_type (struct type *type)
8984 {
8985 const char *name;
8986
8987 /* If the type code says it's a character, then assume it really is,
8988 and don't check any further. */
8989 if (type->code () == TYPE_CODE_CHAR)
8990 return true;
8991
8992 /* Otherwise, assume it's a character type iff it is a discrete type
8993 with a known character type name. */
8994 name = ada_type_name (type);
8995 return (name != NULL
8996 && (type->code () == TYPE_CODE_INT
8997 || type->code () == TYPE_CODE_RANGE)
8998 && (strcmp (name, "character") == 0
8999 || strcmp (name, "wide_character") == 0
9000 || strcmp (name, "wide_wide_character") == 0
9001 || strcmp (name, "unsigned char") == 0));
9002 }
9003
9004 /* True if TYPE appears to be an Ada string type. */
9005
9006 bool
9007 ada_is_string_type (struct type *type)
9008 {
9009 type = ada_check_typedef (type);
9010 if (type != NULL
9011 && type->code () != TYPE_CODE_PTR
9012 && (ada_is_simple_array_type (type)
9013 || ada_is_array_descriptor_type (type))
9014 && ada_array_arity (type) == 1)
9015 {
9016 struct type *elttype = ada_array_element_type (type, 1);
9017
9018 return ada_is_character_type (elttype);
9019 }
9020 else
9021 return false;
9022 }
9023
9024 /* The compiler sometimes provides a parallel XVS type for a given
9025 PAD type. Normally, it is safe to follow the PAD type directly,
9026 but older versions of the compiler have a bug that causes the offset
9027 of its "F" field to be wrong. Following that field in that case
9028 would lead to incorrect results, but this can be worked around
9029 by ignoring the PAD type and using the associated XVS type instead.
9030
9031 Set to True if the debugger should trust the contents of PAD types.
9032 Otherwise, ignore the PAD type if there is a parallel XVS type. */
9033 static bool trust_pad_over_xvs = true;
9034
9035 /* True if TYPE is a struct type introduced by the compiler to force the
9036 alignment of a value. Such types have a single field with a
9037 distinctive name. */
9038
9039 int
9040 ada_is_aligner_type (struct type *type)
9041 {
9042 type = ada_check_typedef (type);
9043
9044 if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9045 return 0;
9046
9047 return (type->code () == TYPE_CODE_STRUCT
9048 && type->num_fields () == 1
9049 && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9050 }
9051
9052 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9053 the parallel type. */
9054
9055 struct type *
9056 ada_get_base_type (struct type *raw_type)
9057 {
9058 struct type *real_type_namer;
9059 struct type *raw_real_type;
9060
9061 if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
9062 return raw_type;
9063
9064 if (ada_is_aligner_type (raw_type))
9065 /* The encoding specifies that we should always use the aligner type.
9066 So, even if this aligner type has an associated XVS type, we should
9067 simply ignore it.
9068
9069 According to the compiler gurus, an XVS type parallel to an aligner
9070 type may exist because of a stabs limitation. In stabs, aligner
9071 types are empty because the field has a variable-sized type, and
9072 thus cannot actually be used as an aligner type. As a result,
9073 we need the associated parallel XVS type to decode the type.
9074 Since the policy in the compiler is to not change the internal
9075 representation based on the debugging info format, we sometimes
9076 end up having a redundant XVS type parallel to the aligner type. */
9077 return raw_type;
9078
9079 real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9080 if (real_type_namer == NULL
9081 || real_type_namer->code () != TYPE_CODE_STRUCT
9082 || real_type_namer->num_fields () != 1)
9083 return raw_type;
9084
9085 if (real_type_namer->field (0).type ()->code () != TYPE_CODE_REF)
9086 {
9087 /* This is an older encoding form where the base type needs to be
9088 looked up by name. We prefer the newer encoding because it is
9089 more efficient. */
9090 raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9091 if (raw_real_type == NULL)
9092 return raw_type;
9093 else
9094 return raw_real_type;
9095 }
9096
9097 /* The field in our XVS type is a reference to the base type. */
9098 return TYPE_TARGET_TYPE (real_type_namer->field (0).type ());
9099 }
9100
9101 /* The type of value designated by TYPE, with all aligners removed. */
9102
9103 struct type *
9104 ada_aligned_type (struct type *type)
9105 {
9106 if (ada_is_aligner_type (type))
9107 return ada_aligned_type (type->field (0).type ());
9108 else
9109 return ada_get_base_type (type);
9110 }
9111
9112
9113 /* The address of the aligned value in an object at address VALADDR
9114 having type TYPE. Assumes ada_is_aligner_type (TYPE). */
9115
9116 const gdb_byte *
9117 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9118 {
9119 if (ada_is_aligner_type (type))
9120 return ada_aligned_value_addr (type->field (0).type (),
9121 valaddr +
9122 TYPE_FIELD_BITPOS (type,
9123 0) / TARGET_CHAR_BIT);
9124 else
9125 return valaddr;
9126 }
9127
9128
9129
9130 /* The printed representation of an enumeration literal with encoded
9131 name NAME. The value is good to the next call of ada_enum_name. */
9132 const char *
9133 ada_enum_name (const char *name)
9134 {
9135 static char *result;
9136 static size_t result_len = 0;
9137 const char *tmp;
9138
9139 /* First, unqualify the enumeration name:
9140 1. Search for the last '.' character. If we find one, then skip
9141 all the preceding characters, the unqualified name starts
9142 right after that dot.
9143 2. Otherwise, we may be debugging on a target where the compiler
9144 translates dots into "__". Search forward for double underscores,
9145 but stop searching when we hit an overloading suffix, which is
9146 of the form "__" followed by digits. */
9147
9148 tmp = strrchr (name, '.');
9149 if (tmp != NULL)
9150 name = tmp + 1;
9151 else
9152 {
9153 while ((tmp = strstr (name, "__")) != NULL)
9154 {
9155 if (isdigit (tmp[2]))
9156 break;
9157 else
9158 name = tmp + 2;
9159 }
9160 }
9161
9162 if (name[0] == 'Q')
9163 {
9164 int v;
9165
9166 if (name[1] == 'U' || name[1] == 'W')
9167 {
9168 if (sscanf (name + 2, "%x", &v) != 1)
9169 return name;
9170 }
9171 else if (((name[1] >= '0' && name[1] <= '9')
9172 || (name[1] >= 'a' && name[1] <= 'z'))
9173 && name[2] == '\0')
9174 {
9175 GROW_VECT (result, result_len, 4);
9176 xsnprintf (result, result_len, "'%c'", name[1]);
9177 return result;
9178 }
9179 else
9180 return name;
9181
9182 GROW_VECT (result, result_len, 16);
9183 if (isascii (v) && isprint (v))
9184 xsnprintf (result, result_len, "'%c'", v);
9185 else if (name[1] == 'U')
9186 xsnprintf (result, result_len, "[\"%02x\"]", v);
9187 else
9188 xsnprintf (result, result_len, "[\"%04x\"]", v);
9189
9190 return result;
9191 }
9192 else
9193 {
9194 tmp = strstr (name, "__");
9195 if (tmp == NULL)
9196 tmp = strstr (name, "$");
9197 if (tmp != NULL)
9198 {
9199 GROW_VECT (result, result_len, tmp - name + 1);
9200 strncpy (result, name, tmp - name);
9201 result[tmp - name] = '\0';
9202 return result;
9203 }
9204
9205 return name;
9206 }
9207 }
9208
9209 /* Evaluate the subexpression of EXP starting at *POS as for
9210 evaluate_type, updating *POS to point just past the evaluated
9211 expression. */
9212
9213 static struct value *
9214 evaluate_subexp_type (struct expression *exp, int *pos)
9215 {
9216 return evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9217 }
9218
9219 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9220 value it wraps. */
9221
9222 static struct value *
9223 unwrap_value (struct value *val)
9224 {
9225 struct type *type = ada_check_typedef (value_type (val));
9226
9227 if (ada_is_aligner_type (type))
9228 {
9229 struct value *v = ada_value_struct_elt (val, "F", 0);
9230 struct type *val_type = ada_check_typedef (value_type (v));
9231
9232 if (ada_type_name (val_type) == NULL)
9233 val_type->set_name (ada_type_name (type));
9234
9235 return unwrap_value (v);
9236 }
9237 else
9238 {
9239 struct type *raw_real_type =
9240 ada_check_typedef (ada_get_base_type (type));
9241
9242 /* If there is no parallel XVS or XVE type, then the value is
9243 already unwrapped. Return it without further modification. */
9244 if ((type == raw_real_type)
9245 && ada_find_parallel_type (type, "___XVE") == NULL)
9246 return val;
9247
9248 return
9249 coerce_unspec_val_to_type
9250 (val, ada_to_fixed_type (raw_real_type, 0,
9251 value_address (val),
9252 NULL, 1));
9253 }
9254 }
9255
9256 static struct value *
9257 cast_from_gnat_encoded_fixed_point_type (struct type *type, struct value *arg)
9258 {
9259 struct value *scale
9260 = gnat_encoded_fixed_point_scaling_factor (value_type (arg));
9261 arg = value_cast (value_type (scale), arg);
9262
9263 arg = value_binop (arg, scale, BINOP_MUL);
9264 return value_cast (type, arg);
9265 }
9266
9267 static struct value *
9268 cast_to_gnat_encoded_fixed_point_type (struct type *type, struct value *arg)
9269 {
9270 if (type == value_type (arg))
9271 return arg;
9272
9273 struct value *scale = gnat_encoded_fixed_point_scaling_factor (type);
9274 if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9275 arg = cast_from_gnat_encoded_fixed_point_type (value_type (scale), arg);
9276 else
9277 arg = value_cast (value_type (scale), arg);
9278
9279 arg = value_binop (arg, scale, BINOP_DIV);
9280 return value_cast (type, arg);
9281 }
9282
9283 /* Given two array types T1 and T2, return nonzero iff both arrays
9284 contain the same number of elements. */
9285
9286 static int
9287 ada_same_array_size_p (struct type *t1, struct type *t2)
9288 {
9289 LONGEST lo1, hi1, lo2, hi2;
9290
9291 /* Get the array bounds in order to verify that the size of
9292 the two arrays match. */
9293 if (!get_array_bounds (t1, &lo1, &hi1)
9294 || !get_array_bounds (t2, &lo2, &hi2))
9295 error (_("unable to determine array bounds"));
9296
9297 /* To make things easier for size comparison, normalize a bit
9298 the case of empty arrays by making sure that the difference
9299 between upper bound and lower bound is always -1. */
9300 if (lo1 > hi1)
9301 hi1 = lo1 - 1;
9302 if (lo2 > hi2)
9303 hi2 = lo2 - 1;
9304
9305 return (hi1 - lo1 == hi2 - lo2);
9306 }
9307
9308 /* Assuming that VAL is an array of integrals, and TYPE represents
9309 an array with the same number of elements, but with wider integral
9310 elements, return an array "casted" to TYPE. In practice, this
9311 means that the returned array is built by casting each element
9312 of the original array into TYPE's (wider) element type. */
9313
9314 static struct value *
9315 ada_promote_array_of_integrals (struct type *type, struct value *val)
9316 {
9317 struct type *elt_type = TYPE_TARGET_TYPE (type);
9318 LONGEST lo, hi;
9319 struct value *res;
9320 LONGEST i;
9321
9322 /* Verify that both val and type are arrays of scalars, and
9323 that the size of val's elements is smaller than the size
9324 of type's element. */
9325 gdb_assert (type->code () == TYPE_CODE_ARRAY);
9326 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9327 gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9328 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9329 gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9330 > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9331
9332 if (!get_array_bounds (type, &lo, &hi))
9333 error (_("unable to determine array bounds"));
9334
9335 res = allocate_value (type);
9336
9337 /* Promote each array element. */
9338 for (i = 0; i < hi - lo + 1; i++)
9339 {
9340 struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9341
9342 memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9343 value_contents_all (elt), TYPE_LENGTH (elt_type));
9344 }
9345
9346 return res;
9347 }
9348
9349 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9350 return the converted value. */
9351
9352 static struct value *
9353 coerce_for_assign (struct type *type, struct value *val)
9354 {
9355 struct type *type2 = value_type (val);
9356
9357 if (type == type2)
9358 return val;
9359
9360 type2 = ada_check_typedef (type2);
9361 type = ada_check_typedef (type);
9362
9363 if (type2->code () == TYPE_CODE_PTR
9364 && type->code () == TYPE_CODE_ARRAY)
9365 {
9366 val = ada_value_ind (val);
9367 type2 = value_type (val);
9368 }
9369
9370 if (type2->code () == TYPE_CODE_ARRAY
9371 && type->code () == TYPE_CODE_ARRAY)
9372 {
9373 if (!ada_same_array_size_p (type, type2))
9374 error (_("cannot assign arrays of different length"));
9375
9376 if (is_integral_type (TYPE_TARGET_TYPE (type))
9377 && is_integral_type (TYPE_TARGET_TYPE (type2))
9378 && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9379 < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9380 {
9381 /* Allow implicit promotion of the array elements to
9382 a wider type. */
9383 return ada_promote_array_of_integrals (type, val);
9384 }
9385
9386 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9387 != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9388 error (_("Incompatible types in assignment"));
9389 deprecated_set_value_type (val, type);
9390 }
9391 return val;
9392 }
9393
9394 static struct value *
9395 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9396 {
9397 struct value *val;
9398 struct type *type1, *type2;
9399 LONGEST v, v1, v2;
9400
9401 arg1 = coerce_ref (arg1);
9402 arg2 = coerce_ref (arg2);
9403 type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9404 type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9405
9406 if (type1->code () != TYPE_CODE_INT
9407 || type2->code () != TYPE_CODE_INT)
9408 return value_binop (arg1, arg2, op);
9409
9410 switch (op)
9411 {
9412 case BINOP_MOD:
9413 case BINOP_DIV:
9414 case BINOP_REM:
9415 break;
9416 default:
9417 return value_binop (arg1, arg2, op);
9418 }
9419
9420 v2 = value_as_long (arg2);
9421 if (v2 == 0)
9422 error (_("second operand of %s must not be zero."), op_string (op));
9423
9424 if (type1->is_unsigned () || op == BINOP_MOD)
9425 return value_binop (arg1, arg2, op);
9426
9427 v1 = value_as_long (arg1);
9428 switch (op)
9429 {
9430 case BINOP_DIV:
9431 v = v1 / v2;
9432 if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9433 v += v > 0 ? -1 : 1;
9434 break;
9435 case BINOP_REM:
9436 v = v1 % v2;
9437 if (v * v1 < 0)
9438 v -= v2;
9439 break;
9440 default:
9441 /* Should not reach this point. */
9442 v = 0;
9443 }
9444
9445 val = allocate_value (type1);
9446 store_unsigned_integer (value_contents_raw (val),
9447 TYPE_LENGTH (value_type (val)),
9448 type_byte_order (type1), v);
9449 return val;
9450 }
9451
9452 static int
9453 ada_value_equal (struct value *arg1, struct value *arg2)
9454 {
9455 if (ada_is_direct_array_type (value_type (arg1))
9456 || ada_is_direct_array_type (value_type (arg2)))
9457 {
9458 struct type *arg1_type, *arg2_type;
9459
9460 /* Automatically dereference any array reference before
9461 we attempt to perform the comparison. */
9462 arg1 = ada_coerce_ref (arg1);
9463 arg2 = ada_coerce_ref (arg2);
9464
9465 arg1 = ada_coerce_to_simple_array (arg1);
9466 arg2 = ada_coerce_to_simple_array (arg2);
9467
9468 arg1_type = ada_check_typedef (value_type (arg1));
9469 arg2_type = ada_check_typedef (value_type (arg2));
9470
9471 if (arg1_type->code () != TYPE_CODE_ARRAY
9472 || arg2_type->code () != TYPE_CODE_ARRAY)
9473 error (_("Attempt to compare array with non-array"));
9474 /* FIXME: The following works only for types whose
9475 representations use all bits (no padding or undefined bits)
9476 and do not have user-defined equality. */
9477 return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9478 && memcmp (value_contents (arg1), value_contents (arg2),
9479 TYPE_LENGTH (arg1_type)) == 0);
9480 }
9481 return value_equal (arg1, arg2);
9482 }
9483
9484 /* Total number of component associations in the aggregate starting at
9485 index PC in EXP. Assumes that index PC is the start of an
9486 OP_AGGREGATE. */
9487
9488 static int
9489 num_component_specs (struct expression *exp, int pc)
9490 {
9491 int n, m, i;
9492
9493 m = exp->elts[pc + 1].longconst;
9494 pc += 3;
9495 n = 0;
9496 for (i = 0; i < m; i += 1)
9497 {
9498 switch (exp->elts[pc].opcode)
9499 {
9500 default:
9501 n += 1;
9502 break;
9503 case OP_CHOICES:
9504 n += exp->elts[pc + 1].longconst;
9505 break;
9506 }
9507 ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9508 }
9509 return n;
9510 }
9511
9512 /* Assign the result of evaluating EXP starting at *POS to the INDEXth
9513 component of LHS (a simple array or a record), updating *POS past
9514 the expression, assuming that LHS is contained in CONTAINER. Does
9515 not modify the inferior's memory, nor does it modify LHS (unless
9516 LHS == CONTAINER). */
9517
9518 static void
9519 assign_component (struct value *container, struct value *lhs, LONGEST index,
9520 struct expression *exp, int *pos)
9521 {
9522 struct value *mark = value_mark ();
9523 struct value *elt;
9524 struct type *lhs_type = check_typedef (value_type (lhs));
9525
9526 if (lhs_type->code () == TYPE_CODE_ARRAY)
9527 {
9528 struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9529 struct value *index_val = value_from_longest (index_type, index);
9530
9531 elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9532 }
9533 else
9534 {
9535 elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9536 elt = ada_to_fixed_value (elt);
9537 }
9538
9539 if (exp->elts[*pos].opcode == OP_AGGREGATE)
9540 assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9541 else
9542 value_assign_to_component (container, elt,
9543 ada_evaluate_subexp (NULL, exp, pos,
9544 EVAL_NORMAL));
9545
9546 value_free_to_mark (mark);
9547 }
9548
9549 /* Assuming that LHS represents an lvalue having a record or array
9550 type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9551 of that aggregate's value to LHS, advancing *POS past the
9552 aggregate. NOSIDE is as for evaluate_subexp. CONTAINER is an
9553 lvalue containing LHS (possibly LHS itself). Does not modify
9554 the inferior's memory, nor does it modify the contents of
9555 LHS (unless == CONTAINER). Returns the modified CONTAINER. */
9556
9557 static struct value *
9558 assign_aggregate (struct value *container,
9559 struct value *lhs, struct expression *exp,
9560 int *pos, enum noside noside)
9561 {
9562 struct type *lhs_type;
9563 int n = exp->elts[*pos+1].longconst;
9564 LONGEST low_index, high_index;
9565 int num_specs;
9566 LONGEST *indices;
9567 int max_indices, num_indices;
9568 int i;
9569
9570 *pos += 3;
9571 if (noside != EVAL_NORMAL)
9572 {
9573 for (i = 0; i < n; i += 1)
9574 ada_evaluate_subexp (NULL, exp, pos, noside);
9575 return container;
9576 }
9577
9578 container = ada_coerce_ref (container);
9579 if (ada_is_direct_array_type (value_type (container)))
9580 container = ada_coerce_to_simple_array (container);
9581 lhs = ada_coerce_ref (lhs);
9582 if (!deprecated_value_modifiable (lhs))
9583 error (_("Left operand of assignment is not a modifiable lvalue."));
9584
9585 lhs_type = check_typedef (value_type (lhs));
9586 if (ada_is_direct_array_type (lhs_type))
9587 {
9588 lhs = ada_coerce_to_simple_array (lhs);
9589 lhs_type = check_typedef (value_type (lhs));
9590 low_index = lhs_type->bounds ()->low.const_val ();
9591 high_index = lhs_type->bounds ()->high.const_val ();
9592 }
9593 else if (lhs_type->code () == TYPE_CODE_STRUCT)
9594 {
9595 low_index = 0;
9596 high_index = num_visible_fields (lhs_type) - 1;
9597 }
9598 else
9599 error (_("Left-hand side must be array or record."));
9600
9601 num_specs = num_component_specs (exp, *pos - 3);
9602 max_indices = 4 * num_specs + 4;
9603 indices = XALLOCAVEC (LONGEST, max_indices);
9604 indices[0] = indices[1] = low_index - 1;
9605 indices[2] = indices[3] = high_index + 1;
9606 num_indices = 4;
9607
9608 for (i = 0; i < n; i += 1)
9609 {
9610 switch (exp->elts[*pos].opcode)
9611 {
9612 case OP_CHOICES:
9613 aggregate_assign_from_choices (container, lhs, exp, pos, indices,
9614 &num_indices, max_indices,
9615 low_index, high_index);
9616 break;
9617 case OP_POSITIONAL:
9618 aggregate_assign_positional (container, lhs, exp, pos, indices,
9619 &num_indices, max_indices,
9620 low_index, high_index);
9621 break;
9622 case OP_OTHERS:
9623 if (i != n-1)
9624 error (_("Misplaced 'others' clause"));
9625 aggregate_assign_others (container, lhs, exp, pos, indices,
9626 num_indices, low_index, high_index);
9627 break;
9628 default:
9629 error (_("Internal error: bad aggregate clause"));
9630 }
9631 }
9632
9633 return container;
9634 }
9635
9636 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9637 construct at *POS, updating *POS past the construct, given that
9638 the positions are relative to lower bound LOW, where HIGH is the
9639 upper bound. Record the position in INDICES[0 .. MAX_INDICES-1]
9640 updating *NUM_INDICES as needed. CONTAINER is as for
9641 assign_aggregate. */
9642 static void
9643 aggregate_assign_positional (struct value *container,
9644 struct value *lhs, struct expression *exp,
9645 int *pos, LONGEST *indices, int *num_indices,
9646 int max_indices, LONGEST low, LONGEST high)
9647 {
9648 LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9649
9650 if (ind - 1 == high)
9651 warning (_("Extra components in aggregate ignored."));
9652 if (ind <= high)
9653 {
9654 add_component_interval (ind, ind, indices, num_indices, max_indices);
9655 *pos += 3;
9656 assign_component (container, lhs, ind, exp, pos);
9657 }
9658 else
9659 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9660 }
9661
9662 /* Assign into the components of LHS indexed by the OP_CHOICES
9663 construct at *POS, updating *POS past the construct, given that
9664 the allowable indices are LOW..HIGH. Record the indices assigned
9665 to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9666 needed. CONTAINER is as for assign_aggregate. */
9667 static void
9668 aggregate_assign_from_choices (struct value *container,
9669 struct value *lhs, struct expression *exp,
9670 int *pos, LONGEST *indices, int *num_indices,
9671 int max_indices, LONGEST low, LONGEST high)
9672 {
9673 int j;
9674 int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9675 int choice_pos, expr_pc;
9676 int is_array = ada_is_direct_array_type (value_type (lhs));
9677
9678 choice_pos = *pos += 3;
9679
9680 for (j = 0; j < n_choices; j += 1)
9681 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9682 expr_pc = *pos;
9683 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9684
9685 for (j = 0; j < n_choices; j += 1)
9686 {
9687 LONGEST lower, upper;
9688 enum exp_opcode op = exp->elts[choice_pos].opcode;
9689
9690 if (op == OP_DISCRETE_RANGE)
9691 {
9692 choice_pos += 1;
9693 lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9694 EVAL_NORMAL));
9695 upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9696 EVAL_NORMAL));
9697 }
9698 else if (is_array)
9699 {
9700 lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos,
9701 EVAL_NORMAL));
9702 upper = lower;
9703 }
9704 else
9705 {
9706 int ind;
9707 const char *name;
9708
9709 switch (op)
9710 {
9711 case OP_NAME:
9712 name = &exp->elts[choice_pos + 2].string;
9713 break;
9714 case OP_VAR_VALUE:
9715 name = exp->elts[choice_pos + 2].symbol->natural_name ();
9716 break;
9717 default:
9718 error (_("Invalid record component association."));
9719 }
9720 ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9721 ind = 0;
9722 if (! find_struct_field (name, value_type (lhs), 0,
9723 NULL, NULL, NULL, NULL, &ind))
9724 error (_("Unknown component name: %s."), name);
9725 lower = upper = ind;
9726 }
9727
9728 if (lower <= upper && (lower < low || upper > high))
9729 error (_("Index in component association out of bounds."));
9730
9731 add_component_interval (lower, upper, indices, num_indices,
9732 max_indices);
9733 while (lower <= upper)
9734 {
9735 int pos1;
9736
9737 pos1 = expr_pc;
9738 assign_component (container, lhs, lower, exp, &pos1);
9739 lower += 1;
9740 }
9741 }
9742 }
9743
9744 /* Assign the value of the expression in the OP_OTHERS construct in
9745 EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9746 have not been previously assigned. The index intervals already assigned
9747 are in INDICES[0 .. NUM_INDICES-1]. Updates *POS to after the
9748 OP_OTHERS clause. CONTAINER is as for assign_aggregate. */
9749 static void
9750 aggregate_assign_others (struct value *container,
9751 struct value *lhs, struct expression *exp,
9752 int *pos, LONGEST *indices, int num_indices,
9753 LONGEST low, LONGEST high)
9754 {
9755 int i;
9756 int expr_pc = *pos + 1;
9757
9758 for (i = 0; i < num_indices - 2; i += 2)
9759 {
9760 LONGEST ind;
9761
9762 for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9763 {
9764 int localpos;
9765
9766 localpos = expr_pc;
9767 assign_component (container, lhs, ind, exp, &localpos);
9768 }
9769 }
9770 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9771 }
9772
9773 /* Add the interval [LOW .. HIGH] to the sorted set of intervals
9774 [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9775 modifying *SIZE as needed. It is an error if *SIZE exceeds
9776 MAX_SIZE. The resulting intervals do not overlap. */
9777 static void
9778 add_component_interval (LONGEST low, LONGEST high,
9779 LONGEST* indices, int *size, int max_size)
9780 {
9781 int i, j;
9782
9783 for (i = 0; i < *size; i += 2) {
9784 if (high >= indices[i] && low <= indices[i + 1])
9785 {
9786 int kh;
9787
9788 for (kh = i + 2; kh < *size; kh += 2)
9789 if (high < indices[kh])
9790 break;
9791 if (low < indices[i])
9792 indices[i] = low;
9793 indices[i + 1] = indices[kh - 1];
9794 if (high > indices[i + 1])
9795 indices[i + 1] = high;
9796 memcpy (indices + i + 2, indices + kh, *size - kh);
9797 *size -= kh - i - 2;
9798 return;
9799 }
9800 else if (high < indices[i])
9801 break;
9802 }
9803
9804 if (*size == max_size)
9805 error (_("Internal error: miscounted aggregate components."));
9806 *size += 2;
9807 for (j = *size-1; j >= i+2; j -= 1)
9808 indices[j] = indices[j - 2];
9809 indices[i] = low;
9810 indices[i + 1] = high;
9811 }
9812
9813 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9814 is different. */
9815
9816 static struct value *
9817 ada_value_cast (struct type *type, struct value *arg2)
9818 {
9819 if (type == ada_check_typedef (value_type (arg2)))
9820 return arg2;
9821
9822 if (ada_is_gnat_encoded_fixed_point_type (type))
9823 return cast_to_gnat_encoded_fixed_point_type (type, arg2);
9824
9825 if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
9826 return cast_from_gnat_encoded_fixed_point_type (type, arg2);
9827
9828 return value_cast (type, arg2);
9829 }
9830
9831 /* Evaluating Ada expressions, and printing their result.
9832 ------------------------------------------------------
9833
9834 1. Introduction:
9835 ----------------
9836
9837 We usually evaluate an Ada expression in order to print its value.
9838 We also evaluate an expression in order to print its type, which
9839 happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9840 but we'll focus mostly on the EVAL_NORMAL phase. In practice, the
9841 EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9842 the evaluation compared to the EVAL_NORMAL, but is otherwise very
9843 similar.
9844
9845 Evaluating expressions is a little more complicated for Ada entities
9846 than it is for entities in languages such as C. The main reason for
9847 this is that Ada provides types whose definition might be dynamic.
9848 One example of such types is variant records. Or another example
9849 would be an array whose bounds can only be known at run time.
9850
9851 The following description is a general guide as to what should be
9852 done (and what should NOT be done) in order to evaluate an expression
9853 involving such types, and when. This does not cover how the semantic
9854 information is encoded by GNAT as this is covered separatly. For the
9855 document used as the reference for the GNAT encoding, see exp_dbug.ads
9856 in the GNAT sources.
9857
9858 Ideally, we should embed each part of this description next to its
9859 associated code. Unfortunately, the amount of code is so vast right
9860 now that it's hard to see whether the code handling a particular
9861 situation might be duplicated or not. One day, when the code is
9862 cleaned up, this guide might become redundant with the comments
9863 inserted in the code, and we might want to remove it.
9864
9865 2. ``Fixing'' an Entity, the Simple Case:
9866 -----------------------------------------
9867
9868 When evaluating Ada expressions, the tricky issue is that they may
9869 reference entities whose type contents and size are not statically
9870 known. Consider for instance a variant record:
9871
9872 type Rec (Empty : Boolean := True) is record
9873 case Empty is
9874 when True => null;
9875 when False => Value : Integer;
9876 end case;
9877 end record;
9878 Yes : Rec := (Empty => False, Value => 1);
9879 No : Rec := (empty => True);
9880
9881 The size and contents of that record depends on the value of the
9882 descriminant (Rec.Empty). At this point, neither the debugging
9883 information nor the associated type structure in GDB are able to
9884 express such dynamic types. So what the debugger does is to create
9885 "fixed" versions of the type that applies to the specific object.
9886 We also informally refer to this operation as "fixing" an object,
9887 which means creating its associated fixed type.
9888
9889 Example: when printing the value of variable "Yes" above, its fixed
9890 type would look like this:
9891
9892 type Rec is record
9893 Empty : Boolean;
9894 Value : Integer;
9895 end record;
9896
9897 On the other hand, if we printed the value of "No", its fixed type
9898 would become:
9899
9900 type Rec is record
9901 Empty : Boolean;
9902 end record;
9903
9904 Things become a little more complicated when trying to fix an entity
9905 with a dynamic type that directly contains another dynamic type,
9906 such as an array of variant records, for instance. There are
9907 two possible cases: Arrays, and records.
9908
9909 3. ``Fixing'' Arrays:
9910 ---------------------
9911
9912 The type structure in GDB describes an array in terms of its bounds,
9913 and the type of its elements. By design, all elements in the array
9914 have the same type and we cannot represent an array of variant elements
9915 using the current type structure in GDB. When fixing an array,
9916 we cannot fix the array element, as we would potentially need one
9917 fixed type per element of the array. As a result, the best we can do
9918 when fixing an array is to produce an array whose bounds and size
9919 are correct (allowing us to read it from memory), but without having
9920 touched its element type. Fixing each element will be done later,
9921 when (if) necessary.
9922
9923 Arrays are a little simpler to handle than records, because the same
9924 amount of memory is allocated for each element of the array, even if
9925 the amount of space actually used by each element differs from element
9926 to element. Consider for instance the following array of type Rec:
9927
9928 type Rec_Array is array (1 .. 2) of Rec;
9929
9930 The actual amount of memory occupied by each element might be different
9931 from element to element, depending on the value of their discriminant.
9932 But the amount of space reserved for each element in the array remains
9933 fixed regardless. So we simply need to compute that size using
9934 the debugging information available, from which we can then determine
9935 the array size (we multiply the number of elements of the array by
9936 the size of each element).
9937
9938 The simplest case is when we have an array of a constrained element
9939 type. For instance, consider the following type declarations:
9940
9941 type Bounded_String (Max_Size : Integer) is
9942 Length : Integer;
9943 Buffer : String (1 .. Max_Size);
9944 end record;
9945 type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9946
9947 In this case, the compiler describes the array as an array of
9948 variable-size elements (identified by its XVS suffix) for which
9949 the size can be read in the parallel XVZ variable.
9950
9951 In the case of an array of an unconstrained element type, the compiler
9952 wraps the array element inside a private PAD type. This type should not
9953 be shown to the user, and must be "unwrap"'ed before printing. Note
9954 that we also use the adjective "aligner" in our code to designate
9955 these wrapper types.
9956
9957 In some cases, the size allocated for each element is statically
9958 known. In that case, the PAD type already has the correct size,
9959 and the array element should remain unfixed.
9960
9961 But there are cases when this size is not statically known.
9962 For instance, assuming that "Five" is an integer variable:
9963
9964 type Dynamic is array (1 .. Five) of Integer;
9965 type Wrapper (Has_Length : Boolean := False) is record
9966 Data : Dynamic;
9967 case Has_Length is
9968 when True => Length : Integer;
9969 when False => null;
9970 end case;
9971 end record;
9972 type Wrapper_Array is array (1 .. 2) of Wrapper;
9973
9974 Hello : Wrapper_Array := (others => (Has_Length => True,
9975 Data => (others => 17),
9976 Length => 1));
9977
9978
9979 The debugging info would describe variable Hello as being an
9980 array of a PAD type. The size of that PAD type is not statically
9981 known, but can be determined using a parallel XVZ variable.
9982 In that case, a copy of the PAD type with the correct size should
9983 be used for the fixed array.
9984
9985 3. ``Fixing'' record type objects:
9986 ----------------------------------
9987
9988 Things are slightly different from arrays in the case of dynamic
9989 record types. In this case, in order to compute the associated
9990 fixed type, we need to determine the size and offset of each of
9991 its components. This, in turn, requires us to compute the fixed
9992 type of each of these components.
9993
9994 Consider for instance the example:
9995
9996 type Bounded_String (Max_Size : Natural) is record
9997 Str : String (1 .. Max_Size);
9998 Length : Natural;
9999 end record;
10000 My_String : Bounded_String (Max_Size => 10);
10001
10002 In that case, the position of field "Length" depends on the size
10003 of field Str, which itself depends on the value of the Max_Size
10004 discriminant. In order to fix the type of variable My_String,
10005 we need to fix the type of field Str. Therefore, fixing a variant
10006 record requires us to fix each of its components.
10007
10008 However, if a component does not have a dynamic size, the component
10009 should not be fixed. In particular, fields that use a PAD type
10010 should not fixed. Here is an example where this might happen
10011 (assuming type Rec above):
10012
10013 type Container (Big : Boolean) is record
10014 First : Rec;
10015 After : Integer;
10016 case Big is
10017 when True => Another : Integer;
10018 when False => null;
10019 end case;
10020 end record;
10021 My_Container : Container := (Big => False,
10022 First => (Empty => True),
10023 After => 42);
10024
10025 In that example, the compiler creates a PAD type for component First,
10026 whose size is constant, and then positions the component After just
10027 right after it. The offset of component After is therefore constant
10028 in this case.
10029
10030 The debugger computes the position of each field based on an algorithm
10031 that uses, among other things, the actual position and size of the field
10032 preceding it. Let's now imagine that the user is trying to print
10033 the value of My_Container. If the type fixing was recursive, we would
10034 end up computing the offset of field After based on the size of the
10035 fixed version of field First. And since in our example First has
10036 only one actual field, the size of the fixed type is actually smaller
10037 than the amount of space allocated to that field, and thus we would
10038 compute the wrong offset of field After.
10039
10040 To make things more complicated, we need to watch out for dynamic
10041 components of variant records (identified by the ___XVL suffix in
10042 the component name). Even if the target type is a PAD type, the size
10043 of that type might not be statically known. So the PAD type needs
10044 to be unwrapped and the resulting type needs to be fixed. Otherwise,
10045 we might end up with the wrong size for our component. This can be
10046 observed with the following type declarations:
10047
10048 type Octal is new Integer range 0 .. 7;
10049 type Octal_Array is array (Positive range <>) of Octal;
10050 pragma Pack (Octal_Array);
10051
10052 type Octal_Buffer (Size : Positive) is record
10053 Buffer : Octal_Array (1 .. Size);
10054 Length : Integer;
10055 end record;
10056
10057 In that case, Buffer is a PAD type whose size is unset and needs
10058 to be computed by fixing the unwrapped type.
10059
10060 4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10061 ----------------------------------------------------------
10062
10063 Lastly, when should the sub-elements of an entity that remained unfixed
10064 thus far, be actually fixed?
10065
10066 The answer is: Only when referencing that element. For instance
10067 when selecting one component of a record, this specific component
10068 should be fixed at that point in time. Or when printing the value
10069 of a record, each component should be fixed before its value gets
10070 printed. Similarly for arrays, the element of the array should be
10071 fixed when printing each element of the array, or when extracting
10072 one element out of that array. On the other hand, fixing should
10073 not be performed on the elements when taking a slice of an array!
10074
10075 Note that one of the side effects of miscomputing the offset and
10076 size of each field is that we end up also miscomputing the size
10077 of the containing type. This can have adverse results when computing
10078 the value of an entity. GDB fetches the value of an entity based
10079 on the size of its type, and thus a wrong size causes GDB to fetch
10080 the wrong amount of memory. In the case where the computed size is
10081 too small, GDB fetches too little data to print the value of our
10082 entity. Results in this case are unpredictable, as we usually read
10083 past the buffer containing the data =:-o. */
10084
10085 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10086 for that subexpression cast to TO_TYPE. Advance *POS over the
10087 subexpression. */
10088
10089 static value *
10090 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10091 enum noside noside, struct type *to_type)
10092 {
10093 int pc = *pos;
10094
10095 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10096 || exp->elts[pc].opcode == OP_VAR_VALUE)
10097 {
10098 (*pos) += 4;
10099
10100 value *val;
10101 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10102 {
10103 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10104 return value_zero (to_type, not_lval);
10105
10106 val = evaluate_var_msym_value (noside,
10107 exp->elts[pc + 1].objfile,
10108 exp->elts[pc + 2].msymbol);
10109 }
10110 else
10111 val = evaluate_var_value (noside,
10112 exp->elts[pc + 1].block,
10113 exp->elts[pc + 2].symbol);
10114
10115 if (noside == EVAL_SKIP)
10116 return eval_skip_value (exp);
10117
10118 val = ada_value_cast (to_type, val);
10119
10120 /* Follow the Ada language semantics that do not allow taking
10121 an address of the result of a cast (view conversion in Ada). */
10122 if (VALUE_LVAL (val) == lval_memory)
10123 {
10124 if (value_lazy (val))
10125 value_fetch_lazy (val);
10126 VALUE_LVAL (val) = not_lval;
10127 }
10128 return val;
10129 }
10130
10131 value *val = evaluate_subexp (to_type, exp, pos, noside);
10132 if (noside == EVAL_SKIP)
10133 return eval_skip_value (exp);
10134 return ada_value_cast (to_type, val);
10135 }
10136
10137 /* Implement the evaluate_exp routine in the exp_descriptor structure
10138 for the Ada language. */
10139
10140 static struct value *
10141 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10142 int *pos, enum noside noside)
10143 {
10144 enum exp_opcode op;
10145 int tem;
10146 int pc;
10147 int preeval_pos;
10148 struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10149 struct type *type;
10150 int nargs, oplen;
10151 struct value **argvec;
10152
10153 pc = *pos;
10154 *pos += 1;
10155 op = exp->elts[pc].opcode;
10156
10157 switch (op)
10158 {
10159 default:
10160 *pos -= 1;
10161 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10162
10163 if (noside == EVAL_NORMAL)
10164 arg1 = unwrap_value (arg1);
10165
10166 /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10167 then we need to perform the conversion manually, because
10168 evaluate_subexp_standard doesn't do it. This conversion is
10169 necessary in Ada because the different kinds of float/fixed
10170 types in Ada have different representations.
10171
10172 Similarly, we need to perform the conversion from OP_LONG
10173 ourselves. */
10174 if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10175 arg1 = ada_value_cast (expect_type, arg1);
10176
10177 return arg1;
10178
10179 case OP_STRING:
10180 {
10181 struct value *result;
10182
10183 *pos -= 1;
10184 result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10185 /* The result type will have code OP_STRING, bashed there from
10186 OP_ARRAY. Bash it back. */
10187 if (value_type (result)->code () == TYPE_CODE_STRING)
10188 value_type (result)->set_code (TYPE_CODE_ARRAY);
10189 return result;
10190 }
10191
10192 case UNOP_CAST:
10193 (*pos) += 2;
10194 type = exp->elts[pc + 1].type;
10195 return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10196
10197 case UNOP_QUAL:
10198 (*pos) += 2;
10199 type = exp->elts[pc + 1].type;
10200 return ada_evaluate_subexp (type, exp, pos, noside);
10201
10202 case BINOP_ASSIGN:
10203 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10204 if (exp->elts[*pos].opcode == OP_AGGREGATE)
10205 {
10206 arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10207 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10208 return arg1;
10209 return ada_value_assign (arg1, arg1);
10210 }
10211 /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10212 except if the lhs of our assignment is a convenience variable.
10213 In the case of assigning to a convenience variable, the lhs
10214 should be exactly the result of the evaluation of the rhs. */
10215 type = value_type (arg1);
10216 if (VALUE_LVAL (arg1) == lval_internalvar)
10217 type = NULL;
10218 arg2 = evaluate_subexp (type, exp, pos, noside);
10219 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10220 return arg1;
10221 if (VALUE_LVAL (arg1) == lval_internalvar)
10222 {
10223 /* Nothing. */
10224 }
10225 else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10226 arg2 = cast_to_gnat_encoded_fixed_point_type (value_type (arg1), arg2);
10227 else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10228 error
10229 (_("Fixed-point values must be assigned to fixed-point variables"));
10230 else
10231 arg2 = coerce_for_assign (value_type (arg1), arg2);
10232 return ada_value_assign (arg1, arg2);
10233
10234 case BINOP_ADD:
10235 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10236 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10237 if (noside == EVAL_SKIP)
10238 goto nosideret;
10239 if (value_type (arg1)->code () == TYPE_CODE_PTR)
10240 return (value_from_longest
10241 (value_type (arg1),
10242 value_as_long (arg1) + value_as_long (arg2)));
10243 if (value_type (arg2)->code () == TYPE_CODE_PTR)
10244 return (value_from_longest
10245 (value_type (arg2),
10246 value_as_long (arg1) + value_as_long (arg2)));
10247 if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10248 || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10249 && value_type (arg1) != value_type (arg2))
10250 error (_("Operands of fixed-point addition must have the same type"));
10251 /* Do the addition, and cast the result to the type of the first
10252 argument. We cannot cast the result to a reference type, so if
10253 ARG1 is a reference type, find its underlying type. */
10254 type = value_type (arg1);
10255 while (type->code () == TYPE_CODE_REF)
10256 type = TYPE_TARGET_TYPE (type);
10257 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10258 return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10259
10260 case BINOP_SUB:
10261 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10262 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10263 if (noside == EVAL_SKIP)
10264 goto nosideret;
10265 if (value_type (arg1)->code () == TYPE_CODE_PTR)
10266 return (value_from_longest
10267 (value_type (arg1),
10268 value_as_long (arg1) - value_as_long (arg2)));
10269 if (value_type (arg2)->code () == TYPE_CODE_PTR)
10270 return (value_from_longest
10271 (value_type (arg2),
10272 value_as_long (arg1) - value_as_long (arg2)));
10273 if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10274 || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10275 && value_type (arg1) != value_type (arg2))
10276 error (_("Operands of fixed-point subtraction "
10277 "must have the same type"));
10278 /* Do the substraction, and cast the result to the type of the first
10279 argument. We cannot cast the result to a reference type, so if
10280 ARG1 is a reference type, find its underlying type. */
10281 type = value_type (arg1);
10282 while (type->code () == TYPE_CODE_REF)
10283 type = TYPE_TARGET_TYPE (type);
10284 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10285 return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10286
10287 case BINOP_MUL:
10288 case BINOP_DIV:
10289 case BINOP_REM:
10290 case BINOP_MOD:
10291 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10292 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10293 if (noside == EVAL_SKIP)
10294 goto nosideret;
10295 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10296 {
10297 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10298 return value_zero (value_type (arg1), not_lval);
10299 }
10300 else
10301 {
10302 type = builtin_type (exp->gdbarch)->builtin_double;
10303 if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10304 arg1 = cast_from_gnat_encoded_fixed_point_type (type, arg1);
10305 if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10306 arg2 = cast_from_gnat_encoded_fixed_point_type (type, arg2);
10307 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10308 return ada_value_binop (arg1, arg2, op);
10309 }
10310
10311 case BINOP_EQUAL:
10312 case BINOP_NOTEQUAL:
10313 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10314 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10315 if (noside == EVAL_SKIP)
10316 goto nosideret;
10317 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10318 tem = 0;
10319 else
10320 {
10321 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10322 tem = ada_value_equal (arg1, arg2);
10323 }
10324 if (op == BINOP_NOTEQUAL)
10325 tem = !tem;
10326 type = language_bool_type (exp->language_defn, exp->gdbarch);
10327 return value_from_longest (type, (LONGEST) tem);
10328
10329 case UNOP_NEG:
10330 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10331 if (noside == EVAL_SKIP)
10332 goto nosideret;
10333 else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10334 return value_cast (value_type (arg1), value_neg (arg1));
10335 else
10336 {
10337 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10338 return value_neg (arg1);
10339 }
10340
10341 case BINOP_LOGICAL_AND:
10342 case BINOP_LOGICAL_OR:
10343 case UNOP_LOGICAL_NOT:
10344 {
10345 struct value *val;
10346
10347 *pos -= 1;
10348 val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10349 type = language_bool_type (exp->language_defn, exp->gdbarch);
10350 return value_cast (type, val);
10351 }
10352
10353 case BINOP_BITWISE_AND:
10354 case BINOP_BITWISE_IOR:
10355 case BINOP_BITWISE_XOR:
10356 {
10357 struct value *val;
10358
10359 arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10360 *pos = pc;
10361 val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10362
10363 return value_cast (value_type (arg1), val);
10364 }
10365
10366 case OP_VAR_VALUE:
10367 *pos -= 1;
10368
10369 if (noside == EVAL_SKIP)
10370 {
10371 *pos += 4;
10372 goto nosideret;
10373 }
10374
10375 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10376 /* Only encountered when an unresolved symbol occurs in a
10377 context other than a function call, in which case, it is
10378 invalid. */
10379 error (_("Unexpected unresolved symbol, %s, during evaluation"),
10380 exp->elts[pc + 2].symbol->print_name ());
10381
10382 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10383 {
10384 type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10385 /* Check to see if this is a tagged type. We also need to handle
10386 the case where the type is a reference to a tagged type, but
10387 we have to be careful to exclude pointers to tagged types.
10388 The latter should be shown as usual (as a pointer), whereas
10389 a reference should mostly be transparent to the user. */
10390 if (ada_is_tagged_type (type, 0)
10391 || (type->code () == TYPE_CODE_REF
10392 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10393 {
10394 /* Tagged types are a little special in the fact that the real
10395 type is dynamic and can only be determined by inspecting the
10396 object's tag. This means that we need to get the object's
10397 value first (EVAL_NORMAL) and then extract the actual object
10398 type from its tag.
10399
10400 Note that we cannot skip the final step where we extract
10401 the object type from its tag, because the EVAL_NORMAL phase
10402 results in dynamic components being resolved into fixed ones.
10403 This can cause problems when trying to print the type
10404 description of tagged types whose parent has a dynamic size:
10405 We use the type name of the "_parent" component in order
10406 to print the name of the ancestor type in the type description.
10407 If that component had a dynamic size, the resolution into
10408 a fixed type would result in the loss of that type name,
10409 thus preventing us from printing the name of the ancestor
10410 type in the type description. */
10411 arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
10412
10413 if (type->code () != TYPE_CODE_REF)
10414 {
10415 struct type *actual_type;
10416
10417 actual_type = type_from_tag (ada_value_tag (arg1));
10418 if (actual_type == NULL)
10419 /* If, for some reason, we were unable to determine
10420 the actual type from the tag, then use the static
10421 approximation that we just computed as a fallback.
10422 This can happen if the debugging information is
10423 incomplete, for instance. */
10424 actual_type = type;
10425 return value_zero (actual_type, not_lval);
10426 }
10427 else
10428 {
10429 /* In the case of a ref, ada_coerce_ref takes care
10430 of determining the actual type. But the evaluation
10431 should return a ref as it should be valid to ask
10432 for its address; so rebuild a ref after coerce. */
10433 arg1 = ada_coerce_ref (arg1);
10434 return value_ref (arg1, TYPE_CODE_REF);
10435 }
10436 }
10437
10438 /* Records and unions for which GNAT encodings have been
10439 generated need to be statically fixed as well.
10440 Otherwise, non-static fixing produces a type where
10441 all dynamic properties are removed, which prevents "ptype"
10442 from being able to completely describe the type.
10443 For instance, a case statement in a variant record would be
10444 replaced by the relevant components based on the actual
10445 value of the discriminants. */
10446 if ((type->code () == TYPE_CODE_STRUCT
10447 && dynamic_template_type (type) != NULL)
10448 || (type->code () == TYPE_CODE_UNION
10449 && ada_find_parallel_type (type, "___XVU") != NULL))
10450 {
10451 *pos += 4;
10452 return value_zero (to_static_fixed_type (type), not_lval);
10453 }
10454 }
10455
10456 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10457 return ada_to_fixed_value (arg1);
10458
10459 case OP_FUNCALL:
10460 (*pos) += 2;
10461
10462 /* Allocate arg vector, including space for the function to be
10463 called in argvec[0] and a terminating NULL. */
10464 nargs = longest_to_int (exp->elts[pc + 1].longconst);
10465 argvec = XALLOCAVEC (struct value *, nargs + 2);
10466
10467 if (exp->elts[*pos].opcode == OP_VAR_VALUE
10468 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10469 error (_("Unexpected unresolved symbol, %s, during evaluation"),
10470 exp->elts[pc + 5].symbol->print_name ());
10471 else
10472 {
10473 for (tem = 0; tem <= nargs; tem += 1)
10474 argvec[tem] = evaluate_subexp (nullptr, exp, pos, noside);
10475 argvec[tem] = 0;
10476
10477 if (noside == EVAL_SKIP)
10478 goto nosideret;
10479 }
10480
10481 if (ada_is_constrained_packed_array_type
10482 (desc_base_type (value_type (argvec[0]))))
10483 argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10484 else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10485 && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10486 /* This is a packed array that has already been fixed, and
10487 therefore already coerced to a simple array. Nothing further
10488 to do. */
10489 ;
10490 else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10491 {
10492 /* Make sure we dereference references so that all the code below
10493 feels like it's really handling the referenced value. Wrapping
10494 types (for alignment) may be there, so make sure we strip them as
10495 well. */
10496 argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10497 }
10498 else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10499 && VALUE_LVAL (argvec[0]) == lval_memory)
10500 argvec[0] = value_addr (argvec[0]);
10501
10502 type = ada_check_typedef (value_type (argvec[0]));
10503
10504 /* Ada allows us to implicitly dereference arrays when subscripting
10505 them. So, if this is an array typedef (encoding use for array
10506 access types encoded as fat pointers), strip it now. */
10507 if (type->code () == TYPE_CODE_TYPEDEF)
10508 type = ada_typedef_target_type (type);
10509
10510 if (type->code () == TYPE_CODE_PTR)
10511 {
10512 switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10513 {
10514 case TYPE_CODE_FUNC:
10515 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10516 break;
10517 case TYPE_CODE_ARRAY:
10518 break;
10519 case TYPE_CODE_STRUCT:
10520 if (noside != EVAL_AVOID_SIDE_EFFECTS)
10521 argvec[0] = ada_value_ind (argvec[0]);
10522 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10523 break;
10524 default:
10525 error (_("cannot subscript or call something of type `%s'"),
10526 ada_type_name (value_type (argvec[0])));
10527 break;
10528 }
10529 }
10530
10531 switch (type->code ())
10532 {
10533 case TYPE_CODE_FUNC:
10534 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10535 {
10536 if (TYPE_TARGET_TYPE (type) == NULL)
10537 error_call_unknown_return_type (NULL);
10538 return allocate_value (TYPE_TARGET_TYPE (type));
10539 }
10540 return call_function_by_hand (argvec[0], NULL,
10541 gdb::make_array_view (argvec + 1,
10542 nargs));
10543 case TYPE_CODE_INTERNAL_FUNCTION:
10544 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10545 /* We don't know anything about what the internal
10546 function might return, but we have to return
10547 something. */
10548 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10549 not_lval);
10550 else
10551 return call_internal_function (exp->gdbarch, exp->language_defn,
10552 argvec[0], nargs, argvec + 1);
10553
10554 case TYPE_CODE_STRUCT:
10555 {
10556 int arity;
10557
10558 arity = ada_array_arity (type);
10559 type = ada_array_element_type (type, nargs);
10560 if (type == NULL)
10561 error (_("cannot subscript or call a record"));
10562 if (arity != nargs)
10563 error (_("wrong number of subscripts; expecting %d"), arity);
10564 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10565 return value_zero (ada_aligned_type (type), lval_memory);
10566 return
10567 unwrap_value (ada_value_subscript
10568 (argvec[0], nargs, argvec + 1));
10569 }
10570 case TYPE_CODE_ARRAY:
10571 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10572 {
10573 type = ada_array_element_type (type, nargs);
10574 if (type == NULL)
10575 error (_("element type of array unknown"));
10576 else
10577 return value_zero (ada_aligned_type (type), lval_memory);
10578 }
10579 return
10580 unwrap_value (ada_value_subscript
10581 (ada_coerce_to_simple_array (argvec[0]),
10582 nargs, argvec + 1));
10583 case TYPE_CODE_PTR: /* Pointer to array */
10584 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10585 {
10586 type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10587 type = ada_array_element_type (type, nargs);
10588 if (type == NULL)
10589 error (_("element type of array unknown"));
10590 else
10591 return value_zero (ada_aligned_type (type), lval_memory);
10592 }
10593 return
10594 unwrap_value (ada_value_ptr_subscript (argvec[0],
10595 nargs, argvec + 1));
10596
10597 default:
10598 error (_("Attempt to index or call something other than an "
10599 "array or function"));
10600 }
10601
10602 case TERNOP_SLICE:
10603 {
10604 struct value *array = evaluate_subexp (nullptr, exp, pos, noside);
10605 struct value *low_bound_val
10606 = evaluate_subexp (nullptr, exp, pos, noside);
10607 struct value *high_bound_val
10608 = evaluate_subexp (nullptr, exp, pos, noside);
10609 LONGEST low_bound;
10610 LONGEST high_bound;
10611
10612 low_bound_val = coerce_ref (low_bound_val);
10613 high_bound_val = coerce_ref (high_bound_val);
10614 low_bound = value_as_long (low_bound_val);
10615 high_bound = value_as_long (high_bound_val);
10616
10617 if (noside == EVAL_SKIP)
10618 goto nosideret;
10619
10620 /* If this is a reference to an aligner type, then remove all
10621 the aligners. */
10622 if (value_type (array)->code () == TYPE_CODE_REF
10623 && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10624 TYPE_TARGET_TYPE (value_type (array)) =
10625 ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10626
10627 if (ada_is_any_packed_array_type (value_type (array)))
10628 error (_("cannot slice a packed array"));
10629
10630 /* If this is a reference to an array or an array lvalue,
10631 convert to a pointer. */
10632 if (value_type (array)->code () == TYPE_CODE_REF
10633 || (value_type (array)->code () == TYPE_CODE_ARRAY
10634 && VALUE_LVAL (array) == lval_memory))
10635 array = value_addr (array);
10636
10637 if (noside == EVAL_AVOID_SIDE_EFFECTS
10638 && ada_is_array_descriptor_type (ada_check_typedef
10639 (value_type (array))))
10640 return empty_array (ada_type_of_array (array, 0), low_bound,
10641 high_bound);
10642
10643 array = ada_coerce_to_simple_array_ptr (array);
10644
10645 /* If we have more than one level of pointer indirection,
10646 dereference the value until we get only one level. */
10647 while (value_type (array)->code () == TYPE_CODE_PTR
10648 && (TYPE_TARGET_TYPE (value_type (array))->code ()
10649 == TYPE_CODE_PTR))
10650 array = value_ind (array);
10651
10652 /* Make sure we really do have an array type before going further,
10653 to avoid a SEGV when trying to get the index type or the target
10654 type later down the road if the debug info generated by
10655 the compiler is incorrect or incomplete. */
10656 if (!ada_is_simple_array_type (value_type (array)))
10657 error (_("cannot take slice of non-array"));
10658
10659 if (ada_check_typedef (value_type (array))->code ()
10660 == TYPE_CODE_PTR)
10661 {
10662 struct type *type0 = ada_check_typedef (value_type (array));
10663
10664 if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10665 return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10666 else
10667 {
10668 struct type *arr_type0 =
10669 to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10670
10671 return ada_value_slice_from_ptr (array, arr_type0,
10672 longest_to_int (low_bound),
10673 longest_to_int (high_bound));
10674 }
10675 }
10676 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10677 return array;
10678 else if (high_bound < low_bound)
10679 return empty_array (value_type (array), low_bound, high_bound);
10680 else
10681 return ada_value_slice (array, longest_to_int (low_bound),
10682 longest_to_int (high_bound));
10683 }
10684
10685 case UNOP_IN_RANGE:
10686 (*pos) += 2;
10687 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10688 type = check_typedef (exp->elts[pc + 1].type);
10689
10690 if (noside == EVAL_SKIP)
10691 goto nosideret;
10692
10693 switch (type->code ())
10694 {
10695 default:
10696 lim_warning (_("Membership test incompletely implemented; "
10697 "always returns true"));
10698 type = language_bool_type (exp->language_defn, exp->gdbarch);
10699 return value_from_longest (type, (LONGEST) 1);
10700
10701 case TYPE_CODE_RANGE:
10702 arg2 = value_from_longest (type,
10703 type->bounds ()->low.const_val ());
10704 arg3 = value_from_longest (type,
10705 type->bounds ()->high.const_val ());
10706 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10707 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10708 type = language_bool_type (exp->language_defn, exp->gdbarch);
10709 return
10710 value_from_longest (type,
10711 (value_less (arg1, arg3)
10712 || value_equal (arg1, arg3))
10713 && (value_less (arg2, arg1)
10714 || value_equal (arg2, arg1)));
10715 }
10716
10717 case BINOP_IN_BOUNDS:
10718 (*pos) += 2;
10719 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10720 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10721
10722 if (noside == EVAL_SKIP)
10723 goto nosideret;
10724
10725 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10726 {
10727 type = language_bool_type (exp->language_defn, exp->gdbarch);
10728 return value_zero (type, not_lval);
10729 }
10730
10731 tem = longest_to_int (exp->elts[pc + 1].longconst);
10732
10733 type = ada_index_type (value_type (arg2), tem, "range");
10734 if (!type)
10735 type = value_type (arg1);
10736
10737 arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10738 arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10739
10740 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10741 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10742 type = language_bool_type (exp->language_defn, exp->gdbarch);
10743 return
10744 value_from_longest (type,
10745 (value_less (arg1, arg3)
10746 || value_equal (arg1, arg3))
10747 && (value_less (arg2, arg1)
10748 || value_equal (arg2, arg1)));
10749
10750 case TERNOP_IN_RANGE:
10751 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10752 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10753 arg3 = evaluate_subexp (nullptr, exp, pos, noside);
10754
10755 if (noside == EVAL_SKIP)
10756 goto nosideret;
10757
10758 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10759 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10760 type = language_bool_type (exp->language_defn, exp->gdbarch);
10761 return
10762 value_from_longest (type,
10763 (value_less (arg1, arg3)
10764 || value_equal (arg1, arg3))
10765 && (value_less (arg2, arg1)
10766 || value_equal (arg2, arg1)));
10767
10768 case OP_ATR_FIRST:
10769 case OP_ATR_LAST:
10770 case OP_ATR_LENGTH:
10771 {
10772 struct type *type_arg;
10773
10774 if (exp->elts[*pos].opcode == OP_TYPE)
10775 {
10776 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10777 arg1 = NULL;
10778 type_arg = check_typedef (exp->elts[pc + 2].type);
10779 }
10780 else
10781 {
10782 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10783 type_arg = NULL;
10784 }
10785
10786 if (exp->elts[*pos].opcode != OP_LONG)
10787 error (_("Invalid operand to '%s"), ada_attribute_name (op));
10788 tem = longest_to_int (exp->elts[*pos + 2].longconst);
10789 *pos += 4;
10790
10791 if (noside == EVAL_SKIP)
10792 goto nosideret;
10793 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10794 {
10795 if (type_arg == NULL)
10796 type_arg = value_type (arg1);
10797
10798 if (ada_is_constrained_packed_array_type (type_arg))
10799 type_arg = decode_constrained_packed_array_type (type_arg);
10800
10801 if (!discrete_type_p (type_arg))
10802 {
10803 switch (op)
10804 {
10805 default: /* Should never happen. */
10806 error (_("unexpected attribute encountered"));
10807 case OP_ATR_FIRST:
10808 case OP_ATR_LAST:
10809 type_arg = ada_index_type (type_arg, tem,
10810 ada_attribute_name (op));
10811 break;
10812 case OP_ATR_LENGTH:
10813 type_arg = builtin_type (exp->gdbarch)->builtin_int;
10814 break;
10815 }
10816 }
10817
10818 return value_zero (type_arg, not_lval);
10819 }
10820 else if (type_arg == NULL)
10821 {
10822 arg1 = ada_coerce_ref (arg1);
10823
10824 if (ada_is_constrained_packed_array_type (value_type (arg1)))
10825 arg1 = ada_coerce_to_simple_array (arg1);
10826
10827 if (op == OP_ATR_LENGTH)
10828 type = builtin_type (exp->gdbarch)->builtin_int;
10829 else
10830 {
10831 type = ada_index_type (value_type (arg1), tem,
10832 ada_attribute_name (op));
10833 if (type == NULL)
10834 type = builtin_type (exp->gdbarch)->builtin_int;
10835 }
10836
10837 switch (op)
10838 {
10839 default: /* Should never happen. */
10840 error (_("unexpected attribute encountered"));
10841 case OP_ATR_FIRST:
10842 return value_from_longest
10843 (type, ada_array_bound (arg1, tem, 0));
10844 case OP_ATR_LAST:
10845 return value_from_longest
10846 (type, ada_array_bound (arg1, tem, 1));
10847 case OP_ATR_LENGTH:
10848 return value_from_longest
10849 (type, ada_array_length (arg1, tem));
10850 }
10851 }
10852 else if (discrete_type_p (type_arg))
10853 {
10854 struct type *range_type;
10855 const char *name = ada_type_name (type_arg);
10856
10857 range_type = NULL;
10858 if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
10859 range_type = to_fixed_range_type (type_arg, NULL);
10860 if (range_type == NULL)
10861 range_type = type_arg;
10862 switch (op)
10863 {
10864 default:
10865 error (_("unexpected attribute encountered"));
10866 case OP_ATR_FIRST:
10867 return value_from_longest
10868 (range_type, ada_discrete_type_low_bound (range_type));
10869 case OP_ATR_LAST:
10870 return value_from_longest
10871 (range_type, ada_discrete_type_high_bound (range_type));
10872 case OP_ATR_LENGTH:
10873 error (_("the 'length attribute applies only to array types"));
10874 }
10875 }
10876 else if (type_arg->code () == TYPE_CODE_FLT)
10877 error (_("unimplemented type attribute"));
10878 else
10879 {
10880 LONGEST low, high;
10881
10882 if (ada_is_constrained_packed_array_type (type_arg))
10883 type_arg = decode_constrained_packed_array_type (type_arg);
10884
10885 if (op == OP_ATR_LENGTH)
10886 type = builtin_type (exp->gdbarch)->builtin_int;
10887 else
10888 {
10889 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10890 if (type == NULL)
10891 type = builtin_type (exp->gdbarch)->builtin_int;
10892 }
10893
10894 switch (op)
10895 {
10896 default:
10897 error (_("unexpected attribute encountered"));
10898 case OP_ATR_FIRST:
10899 low = ada_array_bound_from_type (type_arg, tem, 0);
10900 return value_from_longest (type, low);
10901 case OP_ATR_LAST:
10902 high = ada_array_bound_from_type (type_arg, tem, 1);
10903 return value_from_longest (type, high);
10904 case OP_ATR_LENGTH:
10905 low = ada_array_bound_from_type (type_arg, tem, 0);
10906 high = ada_array_bound_from_type (type_arg, tem, 1);
10907 return value_from_longest (type, high - low + 1);
10908 }
10909 }
10910 }
10911
10912 case OP_ATR_TAG:
10913 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10914 if (noside == EVAL_SKIP)
10915 goto nosideret;
10916
10917 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10918 return value_zero (ada_tag_type (arg1), not_lval);
10919
10920 return ada_value_tag (arg1);
10921
10922 case OP_ATR_MIN:
10923 case OP_ATR_MAX:
10924 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10925 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10926 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10927 if (noside == EVAL_SKIP)
10928 goto nosideret;
10929 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10930 return value_zero (value_type (arg1), not_lval);
10931 else
10932 {
10933 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10934 return value_binop (arg1, arg2,
10935 op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
10936 }
10937
10938 case OP_ATR_MODULUS:
10939 {
10940 struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
10941
10942 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10943 if (noside == EVAL_SKIP)
10944 goto nosideret;
10945
10946 if (!ada_is_modular_type (type_arg))
10947 error (_("'modulus must be applied to modular type"));
10948
10949 return value_from_longest (TYPE_TARGET_TYPE (type_arg),
10950 ada_modulus (type_arg));
10951 }
10952
10953
10954 case OP_ATR_POS:
10955 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10956 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10957 if (noside == EVAL_SKIP)
10958 goto nosideret;
10959 type = builtin_type (exp->gdbarch)->builtin_int;
10960 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10961 return value_zero (type, not_lval);
10962 else
10963 return value_pos_atr (type, arg1);
10964
10965 case OP_ATR_SIZE:
10966 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10967 type = value_type (arg1);
10968
10969 /* If the argument is a reference, then dereference its type, since
10970 the user is really asking for the size of the actual object,
10971 not the size of the pointer. */
10972 if (type->code () == TYPE_CODE_REF)
10973 type = TYPE_TARGET_TYPE (type);
10974
10975 if (noside == EVAL_SKIP)
10976 goto nosideret;
10977 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10978 return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
10979 else
10980 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
10981 TARGET_CHAR_BIT * TYPE_LENGTH (type));
10982
10983 case OP_ATR_VAL:
10984 evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10985 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10986 type = exp->elts[pc + 2].type;
10987 if (noside == EVAL_SKIP)
10988 goto nosideret;
10989 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10990 return value_zero (type, not_lval);
10991 else
10992 return value_val_atr (type, arg1);
10993
10994 case BINOP_EXP:
10995 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10996 arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10997 if (noside == EVAL_SKIP)
10998 goto nosideret;
10999 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11000 return value_zero (value_type (arg1), not_lval);
11001 else
11002 {
11003 /* For integer exponentiation operations,
11004 only promote the first argument. */
11005 if (is_integral_type (value_type (arg2)))
11006 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11007 else
11008 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11009
11010 return value_binop (arg1, arg2, op);
11011 }
11012
11013 case UNOP_PLUS:
11014 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
11015 if (noside == EVAL_SKIP)
11016 goto nosideret;
11017 else
11018 return arg1;
11019
11020 case UNOP_ABS:
11021 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
11022 if (noside == EVAL_SKIP)
11023 goto nosideret;
11024 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11025 if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11026 return value_neg (arg1);
11027 else
11028 return arg1;
11029
11030 case UNOP_IND:
11031 preeval_pos = *pos;
11032 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
11033 if (noside == EVAL_SKIP)
11034 goto nosideret;
11035 type = ada_check_typedef (value_type (arg1));
11036 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11037 {
11038 if (ada_is_array_descriptor_type (type))
11039 /* GDB allows dereferencing GNAT array descriptors. */
11040 {
11041 struct type *arrType = ada_type_of_array (arg1, 0);
11042
11043 if (arrType == NULL)
11044 error (_("Attempt to dereference null array pointer."));
11045 return value_at_lazy (arrType, 0);
11046 }
11047 else if (type->code () == TYPE_CODE_PTR
11048 || type->code () == TYPE_CODE_REF
11049 /* In C you can dereference an array to get the 1st elt. */
11050 || type->code () == TYPE_CODE_ARRAY)
11051 {
11052 /* As mentioned in the OP_VAR_VALUE case, tagged types can
11053 only be determined by inspecting the object's tag.
11054 This means that we need to evaluate completely the
11055 expression in order to get its type. */
11056
11057 if ((type->code () == TYPE_CODE_REF
11058 || type->code () == TYPE_CODE_PTR)
11059 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11060 {
11061 arg1
11062 = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
11063 type = value_type (ada_value_ind (arg1));
11064 }
11065 else
11066 {
11067 type = to_static_fixed_type
11068 (ada_aligned_type
11069 (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11070 }
11071 ada_ensure_varsize_limit (type);
11072 return value_zero (type, lval_memory);
11073 }
11074 else if (type->code () == TYPE_CODE_INT)
11075 {
11076 /* GDB allows dereferencing an int. */
11077 if (expect_type == NULL)
11078 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11079 lval_memory);
11080 else
11081 {
11082 expect_type =
11083 to_static_fixed_type (ada_aligned_type (expect_type));
11084 return value_zero (expect_type, lval_memory);
11085 }
11086 }
11087 else
11088 error (_("Attempt to take contents of a non-pointer value."));
11089 }
11090 arg1 = ada_coerce_ref (arg1); /* FIXME: What is this for?? */
11091 type = ada_check_typedef (value_type (arg1));
11092
11093 if (type->code () == TYPE_CODE_INT)
11094 /* GDB allows dereferencing an int. If we were given
11095 the expect_type, then use that as the target type.
11096 Otherwise, assume that the target type is an int. */
11097 {
11098 if (expect_type != NULL)
11099 return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11100 arg1));
11101 else
11102 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11103 (CORE_ADDR) value_as_address (arg1));
11104 }
11105
11106 if (ada_is_array_descriptor_type (type))
11107 /* GDB allows dereferencing GNAT array descriptors. */
11108 return ada_coerce_to_simple_array (arg1);
11109 else
11110 return ada_value_ind (arg1);
11111
11112 case STRUCTOP_STRUCT:
11113 tem = longest_to_int (exp->elts[pc + 1].longconst);
11114 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11115 preeval_pos = *pos;
11116 arg1 = evaluate_subexp (nullptr, exp, pos, noside);
11117 if (noside == EVAL_SKIP)
11118 goto nosideret;
11119 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11120 {
11121 struct type *type1 = value_type (arg1);
11122
11123 if (ada_is_tagged_type (type1, 1))
11124 {
11125 type = ada_lookup_struct_elt_type (type1,
11126 &exp->elts[pc + 2].string,
11127 1, 1);
11128
11129 /* If the field is not found, check if it exists in the
11130 extension of this object's type. This means that we
11131 need to evaluate completely the expression. */
11132
11133 if (type == NULL)
11134 {
11135 arg1
11136 = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
11137 arg1 = ada_value_struct_elt (arg1,
11138 &exp->elts[pc + 2].string,
11139 0);
11140 arg1 = unwrap_value (arg1);
11141 type = value_type (ada_to_fixed_value (arg1));
11142 }
11143 }
11144 else
11145 type =
11146 ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11147 0);
11148
11149 return value_zero (ada_aligned_type (type), lval_memory);
11150 }
11151 else
11152 {
11153 arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11154 arg1 = unwrap_value (arg1);
11155 return ada_to_fixed_value (arg1);
11156 }
11157
11158 case OP_TYPE:
11159 /* The value is not supposed to be used. This is here to make it
11160 easier to accommodate expressions that contain types. */
11161 (*pos) += 2;
11162 if (noside == EVAL_SKIP)
11163 goto nosideret;
11164 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11165 return allocate_value (exp->elts[pc + 1].type);
11166 else
11167 error (_("Attempt to use a type name as an expression"));
11168
11169 case OP_AGGREGATE:
11170 case OP_CHOICES:
11171 case OP_OTHERS:
11172 case OP_DISCRETE_RANGE:
11173 case OP_POSITIONAL:
11174 case OP_NAME:
11175 if (noside == EVAL_NORMAL)
11176 switch (op)
11177 {
11178 case OP_NAME:
11179 error (_("Undefined name, ambiguous name, or renaming used in "
11180 "component association: %s."), &exp->elts[pc+2].string);
11181 case OP_AGGREGATE:
11182 error (_("Aggregates only allowed on the right of an assignment"));
11183 default:
11184 internal_error (__FILE__, __LINE__,
11185 _("aggregate apparently mangled"));
11186 }
11187
11188 ada_forward_operator_length (exp, pc, &oplen, &nargs);
11189 *pos += oplen - 1;
11190 for (tem = 0; tem < nargs; tem += 1)
11191 ada_evaluate_subexp (NULL, exp, pos, noside);
11192 goto nosideret;
11193 }
11194
11195 nosideret:
11196 return eval_skip_value (exp);
11197 }
11198 \f
11199
11200 /* Fixed point */
11201
11202 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11203 type name that encodes the 'small and 'delta information.
11204 Otherwise, return NULL. */
11205
11206 static const char *
11207 gnat_encoded_fixed_point_type_info (struct type *type)
11208 {
11209 const char *name = ada_type_name (type);
11210 enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11211
11212 if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11213 {
11214 const char *tail = strstr (name, "___XF_");
11215
11216 if (tail == NULL)
11217 return NULL;
11218 else
11219 return tail + 5;
11220 }
11221 else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11222 return gnat_encoded_fixed_point_type_info (TYPE_TARGET_TYPE (type));
11223 else
11224 return NULL;
11225 }
11226
11227 /* Returns non-zero iff TYPE represents an Ada fixed-point type. */
11228
11229 int
11230 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11231 {
11232 return gnat_encoded_fixed_point_type_info (type) != NULL;
11233 }
11234
11235 /* Return non-zero iff TYPE represents a System.Address type. */
11236
11237 int
11238 ada_is_system_address_type (struct type *type)
11239 {
11240 return (type->name () && strcmp (type->name (), "system__address") == 0);
11241 }
11242
11243 /* Assuming that TYPE is the representation of an Ada fixed-point
11244 type, return the target floating-point type to be used to represent
11245 of this type during internal computation. */
11246
11247 static struct type *
11248 ada_scaling_type (struct type *type)
11249 {
11250 return builtin_type (get_type_arch (type))->builtin_long_double;
11251 }
11252
11253 /* Assuming that TYPE is the representation of an Ada fixed-point
11254 type, return its delta, or NULL if the type is malformed and the
11255 delta cannot be determined. */
11256
11257 struct value *
11258 gnat_encoded_fixed_point_delta (struct type *type)
11259 {
11260 const char *encoding = gnat_encoded_fixed_point_type_info (type);
11261 struct type *scale_type = ada_scaling_type (type);
11262
11263 long long num, den;
11264
11265 if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11266 return nullptr;
11267 else
11268 return value_binop (value_from_longest (scale_type, num),
11269 value_from_longest (scale_type, den), BINOP_DIV);
11270 }
11271
11272 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11273 the scaling factor ('SMALL value) associated with the type. */
11274
11275 struct value *
11276 gnat_encoded_fixed_point_scaling_factor (struct type *type)
11277 {
11278 const char *encoding = gnat_encoded_fixed_point_type_info (type);
11279 struct type *scale_type = ada_scaling_type (type);
11280
11281 long long num0, den0, num1, den1;
11282 int n;
11283
11284 n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11285 &num0, &den0, &num1, &den1);
11286
11287 if (n < 2)
11288 return value_from_longest (scale_type, 1);
11289 else if (n == 4)
11290 return value_binop (value_from_longest (scale_type, num1),
11291 value_from_longest (scale_type, den1), BINOP_DIV);
11292 else
11293 return value_binop (value_from_longest (scale_type, num0),
11294 value_from_longest (scale_type, den0), BINOP_DIV);
11295 }
11296
11297 \f
11298
11299 /* Range types */
11300
11301 /* Scan STR beginning at position K for a discriminant name, and
11302 return the value of that discriminant field of DVAL in *PX. If
11303 PNEW_K is not null, put the position of the character beyond the
11304 name scanned in *PNEW_K. Return 1 if successful; return 0 and do
11305 not alter *PX and *PNEW_K if unsuccessful. */
11306
11307 static int
11308 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11309 int *pnew_k)
11310 {
11311 static char *bound_buffer = NULL;
11312 static size_t bound_buffer_len = 0;
11313 const char *pstart, *pend, *bound;
11314 struct value *bound_val;
11315
11316 if (dval == NULL || str == NULL || str[k] == '\0')
11317 return 0;
11318
11319 pstart = str + k;
11320 pend = strstr (pstart, "__");
11321 if (pend == NULL)
11322 {
11323 bound = pstart;
11324 k += strlen (bound);
11325 }
11326 else
11327 {
11328 int len = pend - pstart;
11329
11330 /* Strip __ and beyond. */
11331 GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11332 strncpy (bound_buffer, pstart, len);
11333 bound_buffer[len] = '\0';
11334
11335 bound = bound_buffer;
11336 k = pend - str;
11337 }
11338
11339 bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11340 if (bound_val == NULL)
11341 return 0;
11342
11343 *px = value_as_long (bound_val);
11344 if (pnew_k != NULL)
11345 *pnew_k = k;
11346 return 1;
11347 }
11348
11349 /* Value of variable named NAME in the current environment. If
11350 no such variable found, then if ERR_MSG is null, returns 0, and
11351 otherwise causes an error with message ERR_MSG. */
11352
11353 static struct value *
11354 get_var_value (const char *name, const char *err_msg)
11355 {
11356 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11357
11358 std::vector<struct block_symbol> syms;
11359 int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11360 get_selected_block (0),
11361 VAR_DOMAIN, &syms, 1);
11362
11363 if (nsyms != 1)
11364 {
11365 if (err_msg == NULL)
11366 return 0;
11367 else
11368 error (("%s"), err_msg);
11369 }
11370
11371 return value_of_variable (syms[0].symbol, syms[0].block);
11372 }
11373
11374 /* Value of integer variable named NAME in the current environment.
11375 If no such variable is found, returns false. Otherwise, sets VALUE
11376 to the variable's value and returns true. */
11377
11378 bool
11379 get_int_var_value (const char *name, LONGEST &value)
11380 {
11381 struct value *var_val = get_var_value (name, 0);
11382
11383 if (var_val == 0)
11384 return false;
11385
11386 value = value_as_long (var_val);
11387 return true;
11388 }
11389
11390
11391 /* Return a range type whose base type is that of the range type named
11392 NAME in the current environment, and whose bounds are calculated
11393 from NAME according to the GNAT range encoding conventions.
11394 Extract discriminant values, if needed, from DVAL. ORIG_TYPE is the
11395 corresponding range type from debug information; fall back to using it
11396 if symbol lookup fails. If a new type must be created, allocate it
11397 like ORIG_TYPE was. The bounds information, in general, is encoded
11398 in NAME, the base type given in the named range type. */
11399
11400 static struct type *
11401 to_fixed_range_type (struct type *raw_type, struct value *dval)
11402 {
11403 const char *name;
11404 struct type *base_type;
11405 const char *subtype_info;
11406
11407 gdb_assert (raw_type != NULL);
11408 gdb_assert (raw_type->name () != NULL);
11409
11410 if (raw_type->code () == TYPE_CODE_RANGE)
11411 base_type = TYPE_TARGET_TYPE (raw_type);
11412 else
11413 base_type = raw_type;
11414
11415 name = raw_type->name ();
11416 subtype_info = strstr (name, "___XD");
11417 if (subtype_info == NULL)
11418 {
11419 LONGEST L = ada_discrete_type_low_bound (raw_type);
11420 LONGEST U = ada_discrete_type_high_bound (raw_type);
11421
11422 if (L < INT_MIN || U > INT_MAX)
11423 return raw_type;
11424 else
11425 return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11426 L, U);
11427 }
11428 else
11429 {
11430 static char *name_buf = NULL;
11431 static size_t name_len = 0;
11432 int prefix_len = subtype_info - name;
11433 LONGEST L, U;
11434 struct type *type;
11435 const char *bounds_str;
11436 int n;
11437
11438 GROW_VECT (name_buf, name_len, prefix_len + 5);
11439 strncpy (name_buf, name, prefix_len);
11440 name_buf[prefix_len] = '\0';
11441
11442 subtype_info += 5;
11443 bounds_str = strchr (subtype_info, '_');
11444 n = 1;
11445
11446 if (*subtype_info == 'L')
11447 {
11448 if (!ada_scan_number (bounds_str, n, &L, &n)
11449 && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11450 return raw_type;
11451 if (bounds_str[n] == '_')
11452 n += 2;
11453 else if (bounds_str[n] == '.') /* FIXME? SGI Workshop kludge. */
11454 n += 1;
11455 subtype_info += 1;
11456 }
11457 else
11458 {
11459 strcpy (name_buf + prefix_len, "___L");
11460 if (!get_int_var_value (name_buf, L))
11461 {
11462 lim_warning (_("Unknown lower bound, using 1."));
11463 L = 1;
11464 }
11465 }
11466
11467 if (*subtype_info == 'U')
11468 {
11469 if (!ada_scan_number (bounds_str, n, &U, &n)
11470 && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11471 return raw_type;
11472 }
11473 else
11474 {
11475 strcpy (name_buf + prefix_len, "___U");
11476 if (!get_int_var_value (name_buf, U))
11477 {
11478 lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11479 U = L;
11480 }
11481 }
11482
11483 type = create_static_range_type (alloc_type_copy (raw_type),
11484 base_type, L, U);
11485 /* create_static_range_type alters the resulting type's length
11486 to match the size of the base_type, which is not what we want.
11487 Set it back to the original range type's length. */
11488 TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11489 type->set_name (name);
11490 return type;
11491 }
11492 }
11493
11494 /* True iff NAME is the name of a range type. */
11495
11496 int
11497 ada_is_range_type_name (const char *name)
11498 {
11499 return (name != NULL && strstr (name, "___XD"));
11500 }
11501 \f
11502
11503 /* Modular types */
11504
11505 /* True iff TYPE is an Ada modular type. */
11506
11507 int
11508 ada_is_modular_type (struct type *type)
11509 {
11510 struct type *subranged_type = get_base_type (type);
11511
11512 return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11513 && subranged_type->code () == TYPE_CODE_INT
11514 && subranged_type->is_unsigned ());
11515 }
11516
11517 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE. */
11518
11519 ULONGEST
11520 ada_modulus (struct type *type)
11521 {
11522 const dynamic_prop &high = type->bounds ()->high;
11523
11524 if (high.kind () == PROP_CONST)
11525 return (ULONGEST) high.const_val () + 1;
11526
11527 /* If TYPE is unresolved, the high bound might be a location list. Return
11528 0, for lack of a better value to return. */
11529 return 0;
11530 }
11531 \f
11532
11533 /* Ada exception catchpoint support:
11534 ---------------------------------
11535
11536 We support 3 kinds of exception catchpoints:
11537 . catchpoints on Ada exceptions
11538 . catchpoints on unhandled Ada exceptions
11539 . catchpoints on failed assertions
11540
11541 Exceptions raised during failed assertions, or unhandled exceptions
11542 could perfectly be caught with the general catchpoint on Ada exceptions.
11543 However, we can easily differentiate these two special cases, and having
11544 the option to distinguish these two cases from the rest can be useful
11545 to zero-in on certain situations.
11546
11547 Exception catchpoints are a specialized form of breakpoint,
11548 since they rely on inserting breakpoints inside known routines
11549 of the GNAT runtime. The implementation therefore uses a standard
11550 breakpoint structure of the BP_BREAKPOINT type, but with its own set
11551 of breakpoint_ops.
11552
11553 Support in the runtime for exception catchpoints have been changed
11554 a few times already, and these changes affect the implementation
11555 of these catchpoints. In order to be able to support several
11556 variants of the runtime, we use a sniffer that will determine
11557 the runtime variant used by the program being debugged. */
11558
11559 /* Ada's standard exceptions.
11560
11561 The Ada 83 standard also defined Numeric_Error. But there so many
11562 situations where it was unclear from the Ada 83 Reference Manual
11563 (RM) whether Constraint_Error or Numeric_Error should be raised,
11564 that the ARG (Ada Rapporteur Group) eventually issued a Binding
11565 Interpretation saying that anytime the RM says that Numeric_Error
11566 should be raised, the implementation may raise Constraint_Error.
11567 Ada 95 went one step further and pretty much removed Numeric_Error
11568 from the list of standard exceptions (it made it a renaming of
11569 Constraint_Error, to help preserve compatibility when compiling
11570 an Ada83 compiler). As such, we do not include Numeric_Error from
11571 this list of standard exceptions. */
11572
11573 static const char * const standard_exc[] = {
11574 "constraint_error",
11575 "program_error",
11576 "storage_error",
11577 "tasking_error"
11578 };
11579
11580 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11581
11582 /* A structure that describes how to support exception catchpoints
11583 for a given executable. */
11584
11585 struct exception_support_info
11586 {
11587 /* The name of the symbol to break on in order to insert
11588 a catchpoint on exceptions. */
11589 const char *catch_exception_sym;
11590
11591 /* The name of the symbol to break on in order to insert
11592 a catchpoint on unhandled exceptions. */
11593 const char *catch_exception_unhandled_sym;
11594
11595 /* The name of the symbol to break on in order to insert
11596 a catchpoint on failed assertions. */
11597 const char *catch_assert_sym;
11598
11599 /* The name of the symbol to break on in order to insert
11600 a catchpoint on exception handling. */
11601 const char *catch_handlers_sym;
11602
11603 /* Assuming that the inferior just triggered an unhandled exception
11604 catchpoint, this function is responsible for returning the address
11605 in inferior memory where the name of that exception is stored.
11606 Return zero if the address could not be computed. */
11607 ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11608 };
11609
11610 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11611 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11612
11613 /* The following exception support info structure describes how to
11614 implement exception catchpoints with the latest version of the
11615 Ada runtime (as of 2019-08-??). */
11616
11617 static const struct exception_support_info default_exception_support_info =
11618 {
11619 "__gnat_debug_raise_exception", /* catch_exception_sym */
11620 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11621 "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11622 "__gnat_begin_handler_v1", /* catch_handlers_sym */
11623 ada_unhandled_exception_name_addr
11624 };
11625
11626 /* The following exception support info structure describes how to
11627 implement exception catchpoints with an earlier version of the
11628 Ada runtime (as of 2007-03-06) using v0 of the EH ABI. */
11629
11630 static const struct exception_support_info exception_support_info_v0 =
11631 {
11632 "__gnat_debug_raise_exception", /* catch_exception_sym */
11633 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11634 "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11635 "__gnat_begin_handler", /* catch_handlers_sym */
11636 ada_unhandled_exception_name_addr
11637 };
11638
11639 /* The following exception support info structure describes how to
11640 implement exception catchpoints with a slightly older version
11641 of the Ada runtime. */
11642
11643 static const struct exception_support_info exception_support_info_fallback =
11644 {
11645 "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11646 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11647 "system__assertions__raise_assert_failure", /* catch_assert_sym */
11648 "__gnat_begin_handler", /* catch_handlers_sym */
11649 ada_unhandled_exception_name_addr_from_raise
11650 };
11651
11652 /* Return nonzero if we can detect the exception support routines
11653 described in EINFO.
11654
11655 This function errors out if an abnormal situation is detected
11656 (for instance, if we find the exception support routines, but
11657 that support is found to be incomplete). */
11658
11659 static int
11660 ada_has_this_exception_support (const struct exception_support_info *einfo)
11661 {
11662 struct symbol *sym;
11663
11664 /* The symbol we're looking up is provided by a unit in the GNAT runtime
11665 that should be compiled with debugging information. As a result, we
11666 expect to find that symbol in the symtabs. */
11667
11668 sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11669 if (sym == NULL)
11670 {
11671 /* Perhaps we did not find our symbol because the Ada runtime was
11672 compiled without debugging info, or simply stripped of it.
11673 It happens on some GNU/Linux distributions for instance, where
11674 users have to install a separate debug package in order to get
11675 the runtime's debugging info. In that situation, let the user
11676 know why we cannot insert an Ada exception catchpoint.
11677
11678 Note: Just for the purpose of inserting our Ada exception
11679 catchpoint, we could rely purely on the associated minimal symbol.
11680 But we would be operating in degraded mode anyway, since we are
11681 still lacking the debugging info needed later on to extract
11682 the name of the exception being raised (this name is printed in
11683 the catchpoint message, and is also used when trying to catch
11684 a specific exception). We do not handle this case for now. */
11685 struct bound_minimal_symbol msym
11686 = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11687
11688 if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11689 error (_("Your Ada runtime appears to be missing some debugging "
11690 "information.\nCannot insert Ada exception catchpoint "
11691 "in this configuration."));
11692
11693 return 0;
11694 }
11695
11696 /* Make sure that the symbol we found corresponds to a function. */
11697
11698 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11699 {
11700 error (_("Symbol \"%s\" is not a function (class = %d)"),
11701 sym->linkage_name (), SYMBOL_CLASS (sym));
11702 return 0;
11703 }
11704
11705 sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11706 if (sym == NULL)
11707 {
11708 struct bound_minimal_symbol msym
11709 = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11710
11711 if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11712 error (_("Your Ada runtime appears to be missing some debugging "
11713 "information.\nCannot insert Ada exception catchpoint "
11714 "in this configuration."));
11715
11716 return 0;
11717 }
11718
11719 /* Make sure that the symbol we found corresponds to a function. */
11720
11721 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11722 {
11723 error (_("Symbol \"%s\" is not a function (class = %d)"),
11724 sym->linkage_name (), SYMBOL_CLASS (sym));
11725 return 0;
11726 }
11727
11728 return 1;
11729 }
11730
11731 /* Inspect the Ada runtime and determine which exception info structure
11732 should be used to provide support for exception catchpoints.
11733
11734 This function will always set the per-inferior exception_info,
11735 or raise an error. */
11736
11737 static void
11738 ada_exception_support_info_sniffer (void)
11739 {
11740 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11741
11742 /* If the exception info is already known, then no need to recompute it. */
11743 if (data->exception_info != NULL)
11744 return;
11745
11746 /* Check the latest (default) exception support info. */
11747 if (ada_has_this_exception_support (&default_exception_support_info))
11748 {
11749 data->exception_info = &default_exception_support_info;
11750 return;
11751 }
11752
11753 /* Try the v0 exception suport info. */
11754 if (ada_has_this_exception_support (&exception_support_info_v0))
11755 {
11756 data->exception_info = &exception_support_info_v0;
11757 return;
11758 }
11759
11760 /* Try our fallback exception suport info. */
11761 if (ada_has_this_exception_support (&exception_support_info_fallback))
11762 {
11763 data->exception_info = &exception_support_info_fallback;
11764 return;
11765 }
11766
11767 /* Sometimes, it is normal for us to not be able to find the routine
11768 we are looking for. This happens when the program is linked with
11769 the shared version of the GNAT runtime, and the program has not been
11770 started yet. Inform the user of these two possible causes if
11771 applicable. */
11772
11773 if (ada_update_initial_language (language_unknown) != language_ada)
11774 error (_("Unable to insert catchpoint. Is this an Ada main program?"));
11775
11776 /* If the symbol does not exist, then check that the program is
11777 already started, to make sure that shared libraries have been
11778 loaded. If it is not started, this may mean that the symbol is
11779 in a shared library. */
11780
11781 if (inferior_ptid.pid () == 0)
11782 error (_("Unable to insert catchpoint. Try to start the program first."));
11783
11784 /* At this point, we know that we are debugging an Ada program and
11785 that the inferior has been started, but we still are not able to
11786 find the run-time symbols. That can mean that we are in
11787 configurable run time mode, or that a-except as been optimized
11788 out by the linker... In any case, at this point it is not worth
11789 supporting this feature. */
11790
11791 error (_("Cannot insert Ada exception catchpoints in this configuration."));
11792 }
11793
11794 /* True iff FRAME is very likely to be that of a function that is
11795 part of the runtime system. This is all very heuristic, but is
11796 intended to be used as advice as to what frames are uninteresting
11797 to most users. */
11798
11799 static int
11800 is_known_support_routine (struct frame_info *frame)
11801 {
11802 enum language func_lang;
11803 int i;
11804 const char *fullname;
11805
11806 /* If this code does not have any debugging information (no symtab),
11807 This cannot be any user code. */
11808
11809 symtab_and_line sal = find_frame_sal (frame);
11810 if (sal.symtab == NULL)
11811 return 1;
11812
11813 /* If there is a symtab, but the associated source file cannot be
11814 located, then assume this is not user code: Selecting a frame
11815 for which we cannot display the code would not be very helpful
11816 for the user. This should also take care of case such as VxWorks
11817 where the kernel has some debugging info provided for a few units. */
11818
11819 fullname = symtab_to_fullname (sal.symtab);
11820 if (access (fullname, R_OK) != 0)
11821 return 1;
11822
11823 /* Check the unit filename against the Ada runtime file naming.
11824 We also check the name of the objfile against the name of some
11825 known system libraries that sometimes come with debugging info
11826 too. */
11827
11828 for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11829 {
11830 re_comp (known_runtime_file_name_patterns[i]);
11831 if (re_exec (lbasename (sal.symtab->filename)))
11832 return 1;
11833 if (SYMTAB_OBJFILE (sal.symtab) != NULL
11834 && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11835 return 1;
11836 }
11837
11838 /* Check whether the function is a GNAT-generated entity. */
11839
11840 gdb::unique_xmalloc_ptr<char> func_name
11841 = find_frame_funname (frame, &func_lang, NULL);
11842 if (func_name == NULL)
11843 return 1;
11844
11845 for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11846 {
11847 re_comp (known_auxiliary_function_name_patterns[i]);
11848 if (re_exec (func_name.get ()))
11849 return 1;
11850 }
11851
11852 return 0;
11853 }
11854
11855 /* Find the first frame that contains debugging information and that is not
11856 part of the Ada run-time, starting from FI and moving upward. */
11857
11858 void
11859 ada_find_printable_frame (struct frame_info *fi)
11860 {
11861 for (; fi != NULL; fi = get_prev_frame (fi))
11862 {
11863 if (!is_known_support_routine (fi))
11864 {
11865 select_frame (fi);
11866 break;
11867 }
11868 }
11869
11870 }
11871
11872 /* Assuming that the inferior just triggered an unhandled exception
11873 catchpoint, return the address in inferior memory where the name
11874 of the exception is stored.
11875
11876 Return zero if the address could not be computed. */
11877
11878 static CORE_ADDR
11879 ada_unhandled_exception_name_addr (void)
11880 {
11881 return parse_and_eval_address ("e.full_name");
11882 }
11883
11884 /* Same as ada_unhandled_exception_name_addr, except that this function
11885 should be used when the inferior uses an older version of the runtime,
11886 where the exception name needs to be extracted from a specific frame
11887 several frames up in the callstack. */
11888
11889 static CORE_ADDR
11890 ada_unhandled_exception_name_addr_from_raise (void)
11891 {
11892 int frame_level;
11893 struct frame_info *fi;
11894 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11895
11896 /* To determine the name of this exception, we need to select
11897 the frame corresponding to RAISE_SYM_NAME. This frame is
11898 at least 3 levels up, so we simply skip the first 3 frames
11899 without checking the name of their associated function. */
11900 fi = get_current_frame ();
11901 for (frame_level = 0; frame_level < 3; frame_level += 1)
11902 if (fi != NULL)
11903 fi = get_prev_frame (fi);
11904
11905 while (fi != NULL)
11906 {
11907 enum language func_lang;
11908
11909 gdb::unique_xmalloc_ptr<char> func_name
11910 = find_frame_funname (fi, &func_lang, NULL);
11911 if (func_name != NULL)
11912 {
11913 if (strcmp (func_name.get (),
11914 data->exception_info->catch_exception_sym) == 0)
11915 break; /* We found the frame we were looking for... */
11916 }
11917 fi = get_prev_frame (fi);
11918 }
11919
11920 if (fi == NULL)
11921 return 0;
11922
11923 select_frame (fi);
11924 return parse_and_eval_address ("id.full_name");
11925 }
11926
11927 /* Assuming the inferior just triggered an Ada exception catchpoint
11928 (of any type), return the address in inferior memory where the name
11929 of the exception is stored, if applicable.
11930
11931 Assumes the selected frame is the current frame.
11932
11933 Return zero if the address could not be computed, or if not relevant. */
11934
11935 static CORE_ADDR
11936 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11937 struct breakpoint *b)
11938 {
11939 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11940
11941 switch (ex)
11942 {
11943 case ada_catch_exception:
11944 return (parse_and_eval_address ("e.full_name"));
11945 break;
11946
11947 case ada_catch_exception_unhandled:
11948 return data->exception_info->unhandled_exception_name_addr ();
11949 break;
11950
11951 case ada_catch_handlers:
11952 return 0; /* The runtimes does not provide access to the exception
11953 name. */
11954 break;
11955
11956 case ada_catch_assert:
11957 return 0; /* Exception name is not relevant in this case. */
11958 break;
11959
11960 default:
11961 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11962 break;
11963 }
11964
11965 return 0; /* Should never be reached. */
11966 }
11967
11968 /* Assuming the inferior is stopped at an exception catchpoint,
11969 return the message which was associated to the exception, if
11970 available. Return NULL if the message could not be retrieved.
11971
11972 Note: The exception message can be associated to an exception
11973 either through the use of the Raise_Exception function, or
11974 more simply (Ada 2005 and later), via:
11975
11976 raise Exception_Name with "exception message";
11977
11978 */
11979
11980 static gdb::unique_xmalloc_ptr<char>
11981 ada_exception_message_1 (void)
11982 {
11983 struct value *e_msg_val;
11984 int e_msg_len;
11985
11986 /* For runtimes that support this feature, the exception message
11987 is passed as an unbounded string argument called "message". */
11988 e_msg_val = parse_and_eval ("message");
11989 if (e_msg_val == NULL)
11990 return NULL; /* Exception message not supported. */
11991
11992 e_msg_val = ada_coerce_to_simple_array (e_msg_val);
11993 gdb_assert (e_msg_val != NULL);
11994 e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
11995
11996 /* If the message string is empty, then treat it as if there was
11997 no exception message. */
11998 if (e_msg_len <= 0)
11999 return NULL;
12000
12001 gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12002 read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (),
12003 e_msg_len);
12004 e_msg.get ()[e_msg_len] = '\0';
12005
12006 return e_msg;
12007 }
12008
12009 /* Same as ada_exception_message_1, except that all exceptions are
12010 contained here (returning NULL instead). */
12011
12012 static gdb::unique_xmalloc_ptr<char>
12013 ada_exception_message (void)
12014 {
12015 gdb::unique_xmalloc_ptr<char> e_msg;
12016
12017 try
12018 {
12019 e_msg = ada_exception_message_1 ();
12020 }
12021 catch (const gdb_exception_error &e)
12022 {
12023 e_msg.reset (nullptr);
12024 }
12025
12026 return e_msg;
12027 }
12028
12029 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12030 any error that ada_exception_name_addr_1 might cause to be thrown.
12031 When an error is intercepted, a warning with the error message is printed,
12032 and zero is returned. */
12033
12034 static CORE_ADDR
12035 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12036 struct breakpoint *b)
12037 {
12038 CORE_ADDR result = 0;
12039
12040 try
12041 {
12042 result = ada_exception_name_addr_1 (ex, b);
12043 }
12044
12045 catch (const gdb_exception_error &e)
12046 {
12047 warning (_("failed to get exception name: %s"), e.what ());
12048 return 0;
12049 }
12050
12051 return result;
12052 }
12053
12054 static std::string ada_exception_catchpoint_cond_string
12055 (const char *excep_string,
12056 enum ada_exception_catchpoint_kind ex);
12057
12058 /* Ada catchpoints.
12059
12060 In the case of catchpoints on Ada exceptions, the catchpoint will
12061 stop the target on every exception the program throws. When a user
12062 specifies the name of a specific exception, we translate this
12063 request into a condition expression (in text form), and then parse
12064 it into an expression stored in each of the catchpoint's locations.
12065 We then use this condition to check whether the exception that was
12066 raised is the one the user is interested in. If not, then the
12067 target is resumed again. We store the name of the requested
12068 exception, in order to be able to re-set the condition expression
12069 when symbols change. */
12070
12071 /* An instance of this type is used to represent an Ada catchpoint
12072 breakpoint location. */
12073
12074 class ada_catchpoint_location : public bp_location
12075 {
12076 public:
12077 ada_catchpoint_location (breakpoint *owner)
12078 : bp_location (owner, bp_loc_software_breakpoint)
12079 {}
12080
12081 /* The condition that checks whether the exception that was raised
12082 is the specific exception the user specified on catchpoint
12083 creation. */
12084 expression_up excep_cond_expr;
12085 };
12086
12087 /* An instance of this type is used to represent an Ada catchpoint. */
12088
12089 struct ada_catchpoint : public breakpoint
12090 {
12091 explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12092 : m_kind (kind)
12093 {
12094 }
12095
12096 /* The name of the specific exception the user specified. */
12097 std::string excep_string;
12098
12099 /* What kind of catchpoint this is. */
12100 enum ada_exception_catchpoint_kind m_kind;
12101 };
12102
12103 /* Parse the exception condition string in the context of each of the
12104 catchpoint's locations, and store them for later evaluation. */
12105
12106 static void
12107 create_excep_cond_exprs (struct ada_catchpoint *c,
12108 enum ada_exception_catchpoint_kind ex)
12109 {
12110 struct bp_location *bl;
12111
12112 /* Nothing to do if there's no specific exception to catch. */
12113 if (c->excep_string.empty ())
12114 return;
12115
12116 /* Same if there are no locations... */
12117 if (c->loc == NULL)
12118 return;
12119
12120 /* Compute the condition expression in text form, from the specific
12121 expection we want to catch. */
12122 std::string cond_string
12123 = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12124
12125 /* Iterate over all the catchpoint's locations, and parse an
12126 expression for each. */
12127 for (bl = c->loc; bl != NULL; bl = bl->next)
12128 {
12129 struct ada_catchpoint_location *ada_loc
12130 = (struct ada_catchpoint_location *) bl;
12131 expression_up exp;
12132
12133 if (!bl->shlib_disabled)
12134 {
12135 const char *s;
12136
12137 s = cond_string.c_str ();
12138 try
12139 {
12140 exp = parse_exp_1 (&s, bl->address,
12141 block_for_pc (bl->address),
12142 0);
12143 }
12144 catch (const gdb_exception_error &e)
12145 {
12146 warning (_("failed to reevaluate internal exception condition "
12147 "for catchpoint %d: %s"),
12148 c->number, e.what ());
12149 }
12150 }
12151
12152 ada_loc->excep_cond_expr = std::move (exp);
12153 }
12154 }
12155
12156 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12157 structure for all exception catchpoint kinds. */
12158
12159 static struct bp_location *
12160 allocate_location_exception (struct breakpoint *self)
12161 {
12162 return new ada_catchpoint_location (self);
12163 }
12164
12165 /* Implement the RE_SET method in the breakpoint_ops structure for all
12166 exception catchpoint kinds. */
12167
12168 static void
12169 re_set_exception (struct breakpoint *b)
12170 {
12171 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12172
12173 /* Call the base class's method. This updates the catchpoint's
12174 locations. */
12175 bkpt_breakpoint_ops.re_set (b);
12176
12177 /* Reparse the exception conditional expressions. One for each
12178 location. */
12179 create_excep_cond_exprs (c, c->m_kind);
12180 }
12181
12182 /* Returns true if we should stop for this breakpoint hit. If the
12183 user specified a specific exception, we only want to cause a stop
12184 if the program thrown that exception. */
12185
12186 static int
12187 should_stop_exception (const struct bp_location *bl)
12188 {
12189 struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12190 const struct ada_catchpoint_location *ada_loc
12191 = (const struct ada_catchpoint_location *) bl;
12192 int stop;
12193
12194 struct internalvar *var = lookup_internalvar ("_ada_exception");
12195 if (c->m_kind == ada_catch_assert)
12196 clear_internalvar (var);
12197 else
12198 {
12199 try
12200 {
12201 const char *expr;
12202
12203 if (c->m_kind == ada_catch_handlers)
12204 expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12205 ".all.occurrence.id");
12206 else
12207 expr = "e";
12208
12209 struct value *exc = parse_and_eval (expr);
12210 set_internalvar (var, exc);
12211 }
12212 catch (const gdb_exception_error &ex)
12213 {
12214 clear_internalvar (var);
12215 }
12216 }
12217
12218 /* With no specific exception, should always stop. */
12219 if (c->excep_string.empty ())
12220 return 1;
12221
12222 if (ada_loc->excep_cond_expr == NULL)
12223 {
12224 /* We will have a NULL expression if back when we were creating
12225 the expressions, this location's had failed to parse. */
12226 return 1;
12227 }
12228
12229 stop = 1;
12230 try
12231 {
12232 struct value *mark;
12233
12234 mark = value_mark ();
12235 stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12236 value_free_to_mark (mark);
12237 }
12238 catch (const gdb_exception &ex)
12239 {
12240 exception_fprintf (gdb_stderr, ex,
12241 _("Error in testing exception condition:\n"));
12242 }
12243
12244 return stop;
12245 }
12246
12247 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12248 for all exception catchpoint kinds. */
12249
12250 static void
12251 check_status_exception (bpstat bs)
12252 {
12253 bs->stop = should_stop_exception (bs->bp_location_at);
12254 }
12255
12256 /* Implement the PRINT_IT method in the breakpoint_ops structure
12257 for all exception catchpoint kinds. */
12258
12259 static enum print_stop_action
12260 print_it_exception (bpstat bs)
12261 {
12262 struct ui_out *uiout = current_uiout;
12263 struct breakpoint *b = bs->breakpoint_at;
12264
12265 annotate_catchpoint (b->number);
12266
12267 if (uiout->is_mi_like_p ())
12268 {
12269 uiout->field_string ("reason",
12270 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12271 uiout->field_string ("disp", bpdisp_text (b->disposition));
12272 }
12273
12274 uiout->text (b->disposition == disp_del
12275 ? "\nTemporary catchpoint " : "\nCatchpoint ");
12276 uiout->field_signed ("bkptno", b->number);
12277 uiout->text (", ");
12278
12279 /* ada_exception_name_addr relies on the selected frame being the
12280 current frame. Need to do this here because this function may be
12281 called more than once when printing a stop, and below, we'll
12282 select the first frame past the Ada run-time (see
12283 ada_find_printable_frame). */
12284 select_frame (get_current_frame ());
12285
12286 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12287 switch (c->m_kind)
12288 {
12289 case ada_catch_exception:
12290 case ada_catch_exception_unhandled:
12291 case ada_catch_handlers:
12292 {
12293 const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12294 char exception_name[256];
12295
12296 if (addr != 0)
12297 {
12298 read_memory (addr, (gdb_byte *) exception_name,
12299 sizeof (exception_name) - 1);
12300 exception_name [sizeof (exception_name) - 1] = '\0';
12301 }
12302 else
12303 {
12304 /* For some reason, we were unable to read the exception
12305 name. This could happen if the Runtime was compiled
12306 without debugging info, for instance. In that case,
12307 just replace the exception name by the generic string
12308 "exception" - it will read as "an exception" in the
12309 notification we are about to print. */
12310 memcpy (exception_name, "exception", sizeof ("exception"));
12311 }
12312 /* In the case of unhandled exception breakpoints, we print
12313 the exception name as "unhandled EXCEPTION_NAME", to make
12314 it clearer to the user which kind of catchpoint just got
12315 hit. We used ui_out_text to make sure that this extra
12316 info does not pollute the exception name in the MI case. */
12317 if (c->m_kind == ada_catch_exception_unhandled)
12318 uiout->text ("unhandled ");
12319 uiout->field_string ("exception-name", exception_name);
12320 }
12321 break;
12322 case ada_catch_assert:
12323 /* In this case, the name of the exception is not really
12324 important. Just print "failed assertion" to make it clearer
12325 that his program just hit an assertion-failure catchpoint.
12326 We used ui_out_text because this info does not belong in
12327 the MI output. */
12328 uiout->text ("failed assertion");
12329 break;
12330 }
12331
12332 gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12333 if (exception_message != NULL)
12334 {
12335 uiout->text (" (");
12336 uiout->field_string ("exception-message", exception_message.get ());
12337 uiout->text (")");
12338 }
12339
12340 uiout->text (" at ");
12341 ada_find_printable_frame (get_current_frame ());
12342
12343 return PRINT_SRC_AND_LOC;
12344 }
12345
12346 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12347 for all exception catchpoint kinds. */
12348
12349 static void
12350 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12351 {
12352 struct ui_out *uiout = current_uiout;
12353 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12354 struct value_print_options opts;
12355
12356 get_user_print_options (&opts);
12357
12358 if (opts.addressprint)
12359 uiout->field_skip ("addr");
12360
12361 annotate_field (5);
12362 switch (c->m_kind)
12363 {
12364 case ada_catch_exception:
12365 if (!c->excep_string.empty ())
12366 {
12367 std::string msg = string_printf (_("`%s' Ada exception"),
12368 c->excep_string.c_str ());
12369
12370 uiout->field_string ("what", msg);
12371 }
12372 else
12373 uiout->field_string ("what", "all Ada exceptions");
12374
12375 break;
12376
12377 case ada_catch_exception_unhandled:
12378 uiout->field_string ("what", "unhandled Ada exceptions");
12379 break;
12380
12381 case ada_catch_handlers:
12382 if (!c->excep_string.empty ())
12383 {
12384 uiout->field_fmt ("what",
12385 _("`%s' Ada exception handlers"),
12386 c->excep_string.c_str ());
12387 }
12388 else
12389 uiout->field_string ("what", "all Ada exceptions handlers");
12390 break;
12391
12392 case ada_catch_assert:
12393 uiout->field_string ("what", "failed Ada assertions");
12394 break;
12395
12396 default:
12397 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12398 break;
12399 }
12400 }
12401
12402 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12403 for all exception catchpoint kinds. */
12404
12405 static void
12406 print_mention_exception (struct breakpoint *b)
12407 {
12408 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12409 struct ui_out *uiout = current_uiout;
12410
12411 uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12412 : _("Catchpoint "));
12413 uiout->field_signed ("bkptno", b->number);
12414 uiout->text (": ");
12415
12416 switch (c->m_kind)
12417 {
12418 case ada_catch_exception:
12419 if (!c->excep_string.empty ())
12420 {
12421 std::string info = string_printf (_("`%s' Ada exception"),
12422 c->excep_string.c_str ());
12423 uiout->text (info.c_str ());
12424 }
12425 else
12426 uiout->text (_("all Ada exceptions"));
12427 break;
12428
12429 case ada_catch_exception_unhandled:
12430 uiout->text (_("unhandled Ada exceptions"));
12431 break;
12432
12433 case ada_catch_handlers:
12434 if (!c->excep_string.empty ())
12435 {
12436 std::string info
12437 = string_printf (_("`%s' Ada exception handlers"),
12438 c->excep_string.c_str ());
12439 uiout->text (info.c_str ());
12440 }
12441 else
12442 uiout->text (_("all Ada exceptions handlers"));
12443 break;
12444
12445 case ada_catch_assert:
12446 uiout->text (_("failed Ada assertions"));
12447 break;
12448
12449 default:
12450 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12451 break;
12452 }
12453 }
12454
12455 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12456 for all exception catchpoint kinds. */
12457
12458 static void
12459 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12460 {
12461 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12462
12463 switch (c->m_kind)
12464 {
12465 case ada_catch_exception:
12466 fprintf_filtered (fp, "catch exception");
12467 if (!c->excep_string.empty ())
12468 fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12469 break;
12470
12471 case ada_catch_exception_unhandled:
12472 fprintf_filtered (fp, "catch exception unhandled");
12473 break;
12474
12475 case ada_catch_handlers:
12476 fprintf_filtered (fp, "catch handlers");
12477 break;
12478
12479 case ada_catch_assert:
12480 fprintf_filtered (fp, "catch assert");
12481 break;
12482
12483 default:
12484 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12485 }
12486 print_recreate_thread (b, fp);
12487 }
12488
12489 /* Virtual tables for various breakpoint types. */
12490 static struct breakpoint_ops catch_exception_breakpoint_ops;
12491 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12492 static struct breakpoint_ops catch_assert_breakpoint_ops;
12493 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12494
12495 /* See ada-lang.h. */
12496
12497 bool
12498 is_ada_exception_catchpoint (breakpoint *bp)
12499 {
12500 return (bp->ops == &catch_exception_breakpoint_ops
12501 || bp->ops == &catch_exception_unhandled_breakpoint_ops
12502 || bp->ops == &catch_assert_breakpoint_ops
12503 || bp->ops == &catch_handlers_breakpoint_ops);
12504 }
12505
12506 /* Split the arguments specified in a "catch exception" command.
12507 Set EX to the appropriate catchpoint type.
12508 Set EXCEP_STRING to the name of the specific exception if
12509 specified by the user.
12510 IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12511 "catch handlers" command. False otherwise.
12512 If a condition is found at the end of the arguments, the condition
12513 expression is stored in COND_STRING (memory must be deallocated
12514 after use). Otherwise COND_STRING is set to NULL. */
12515
12516 static void
12517 catch_ada_exception_command_split (const char *args,
12518 bool is_catch_handlers_cmd,
12519 enum ada_exception_catchpoint_kind *ex,
12520 std::string *excep_string,
12521 std::string *cond_string)
12522 {
12523 std::string exception_name;
12524
12525 exception_name = extract_arg (&args);
12526 if (exception_name == "if")
12527 {
12528 /* This is not an exception name; this is the start of a condition
12529 expression for a catchpoint on all exceptions. So, "un-get"
12530 this token, and set exception_name to NULL. */
12531 exception_name.clear ();
12532 args -= 2;
12533 }
12534
12535 /* Check to see if we have a condition. */
12536
12537 args = skip_spaces (args);
12538 if (startswith (args, "if")
12539 && (isspace (args[2]) || args[2] == '\0'))
12540 {
12541 args += 2;
12542 args = skip_spaces (args);
12543
12544 if (args[0] == '\0')
12545 error (_("Condition missing after `if' keyword"));
12546 *cond_string = args;
12547
12548 args += strlen (args);
12549 }
12550
12551 /* Check that we do not have any more arguments. Anything else
12552 is unexpected. */
12553
12554 if (args[0] != '\0')
12555 error (_("Junk at end of expression"));
12556
12557 if (is_catch_handlers_cmd)
12558 {
12559 /* Catch handling of exceptions. */
12560 *ex = ada_catch_handlers;
12561 *excep_string = exception_name;
12562 }
12563 else if (exception_name.empty ())
12564 {
12565 /* Catch all exceptions. */
12566 *ex = ada_catch_exception;
12567 excep_string->clear ();
12568 }
12569 else if (exception_name == "unhandled")
12570 {
12571 /* Catch unhandled exceptions. */
12572 *ex = ada_catch_exception_unhandled;
12573 excep_string->clear ();
12574 }
12575 else
12576 {
12577 /* Catch a specific exception. */
12578 *ex = ada_catch_exception;
12579 *excep_string = exception_name;
12580 }
12581 }
12582
12583 /* Return the name of the symbol on which we should break in order to
12584 implement a catchpoint of the EX kind. */
12585
12586 static const char *
12587 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12588 {
12589 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12590
12591 gdb_assert (data->exception_info != NULL);
12592
12593 switch (ex)
12594 {
12595 case ada_catch_exception:
12596 return (data->exception_info->catch_exception_sym);
12597 break;
12598 case ada_catch_exception_unhandled:
12599 return (data->exception_info->catch_exception_unhandled_sym);
12600 break;
12601 case ada_catch_assert:
12602 return (data->exception_info->catch_assert_sym);
12603 break;
12604 case ada_catch_handlers:
12605 return (data->exception_info->catch_handlers_sym);
12606 break;
12607 default:
12608 internal_error (__FILE__, __LINE__,
12609 _("unexpected catchpoint kind (%d)"), ex);
12610 }
12611 }
12612
12613 /* Return the breakpoint ops "virtual table" used for catchpoints
12614 of the EX kind. */
12615
12616 static const struct breakpoint_ops *
12617 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12618 {
12619 switch (ex)
12620 {
12621 case ada_catch_exception:
12622 return (&catch_exception_breakpoint_ops);
12623 break;
12624 case ada_catch_exception_unhandled:
12625 return (&catch_exception_unhandled_breakpoint_ops);
12626 break;
12627 case ada_catch_assert:
12628 return (&catch_assert_breakpoint_ops);
12629 break;
12630 case ada_catch_handlers:
12631 return (&catch_handlers_breakpoint_ops);
12632 break;
12633 default:
12634 internal_error (__FILE__, __LINE__,
12635 _("unexpected catchpoint kind (%d)"), ex);
12636 }
12637 }
12638
12639 /* Return the condition that will be used to match the current exception
12640 being raised with the exception that the user wants to catch. This
12641 assumes that this condition is used when the inferior just triggered
12642 an exception catchpoint.
12643 EX: the type of catchpoints used for catching Ada exceptions. */
12644
12645 static std::string
12646 ada_exception_catchpoint_cond_string (const char *excep_string,
12647 enum ada_exception_catchpoint_kind ex)
12648 {
12649 int i;
12650 bool is_standard_exc = false;
12651 std::string result;
12652
12653 if (ex == ada_catch_handlers)
12654 {
12655 /* For exception handlers catchpoints, the condition string does
12656 not use the same parameter as for the other exceptions. */
12657 result = ("long_integer (GNAT_GCC_exception_Access"
12658 "(gcc_exception).all.occurrence.id)");
12659 }
12660 else
12661 result = "long_integer (e)";
12662
12663 /* The standard exceptions are a special case. They are defined in
12664 runtime units that have been compiled without debugging info; if
12665 EXCEP_STRING is the not-fully-qualified name of a standard
12666 exception (e.g. "constraint_error") then, during the evaluation
12667 of the condition expression, the symbol lookup on this name would
12668 *not* return this standard exception. The catchpoint condition
12669 may then be set only on user-defined exceptions which have the
12670 same not-fully-qualified name (e.g. my_package.constraint_error).
12671
12672 To avoid this unexcepted behavior, these standard exceptions are
12673 systematically prefixed by "standard". This means that "catch
12674 exception constraint_error" is rewritten into "catch exception
12675 standard.constraint_error".
12676
12677 If an exception named constraint_error is defined in another package of
12678 the inferior program, then the only way to specify this exception as a
12679 breakpoint condition is to use its fully-qualified named:
12680 e.g. my_package.constraint_error. */
12681
12682 for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12683 {
12684 if (strcmp (standard_exc [i], excep_string) == 0)
12685 {
12686 is_standard_exc = true;
12687 break;
12688 }
12689 }
12690
12691 result += " = ";
12692
12693 if (is_standard_exc)
12694 string_appendf (result, "long_integer (&standard.%s)", excep_string);
12695 else
12696 string_appendf (result, "long_integer (&%s)", excep_string);
12697
12698 return result;
12699 }
12700
12701 /* Return the symtab_and_line that should be used to insert an exception
12702 catchpoint of the TYPE kind.
12703
12704 ADDR_STRING returns the name of the function where the real
12705 breakpoint that implements the catchpoints is set, depending on the
12706 type of catchpoint we need to create. */
12707
12708 static struct symtab_and_line
12709 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12710 std::string *addr_string, const struct breakpoint_ops **ops)
12711 {
12712 const char *sym_name;
12713 struct symbol *sym;
12714
12715 /* First, find out which exception support info to use. */
12716 ada_exception_support_info_sniffer ();
12717
12718 /* Then lookup the function on which we will break in order to catch
12719 the Ada exceptions requested by the user. */
12720 sym_name = ada_exception_sym_name (ex);
12721 sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12722
12723 if (sym == NULL)
12724 error (_("Catchpoint symbol not found: %s"), sym_name);
12725
12726 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12727 error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12728
12729 /* Set ADDR_STRING. */
12730 *addr_string = sym_name;
12731
12732 /* Set OPS. */
12733 *ops = ada_exception_breakpoint_ops (ex);
12734
12735 return find_function_start_sal (sym, 1);
12736 }
12737
12738 /* Create an Ada exception catchpoint.
12739
12740 EX_KIND is the kind of exception catchpoint to be created.
12741
12742 If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12743 for all exceptions. Otherwise, EXCEPT_STRING indicates the name
12744 of the exception to which this catchpoint applies.
12745
12746 COND_STRING, if not empty, is the catchpoint condition.
12747
12748 TEMPFLAG, if nonzero, means that the underlying breakpoint
12749 should be temporary.
12750
12751 FROM_TTY is the usual argument passed to all commands implementations. */
12752
12753 void
12754 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12755 enum ada_exception_catchpoint_kind ex_kind,
12756 const std::string &excep_string,
12757 const std::string &cond_string,
12758 int tempflag,
12759 int disabled,
12760 int from_tty)
12761 {
12762 std::string addr_string;
12763 const struct breakpoint_ops *ops = NULL;
12764 struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12765
12766 std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12767 init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12768 ops, tempflag, disabled, from_tty);
12769 c->excep_string = excep_string;
12770 create_excep_cond_exprs (c.get (), ex_kind);
12771 if (!cond_string.empty ())
12772 set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty, false);
12773 install_breakpoint (0, std::move (c), 1);
12774 }
12775
12776 /* Implement the "catch exception" command. */
12777
12778 static void
12779 catch_ada_exception_command (const char *arg_entry, int from_tty,
12780 struct cmd_list_element *command)
12781 {
12782 const char *arg = arg_entry;
12783 struct gdbarch *gdbarch = get_current_arch ();
12784 int tempflag;
12785 enum ada_exception_catchpoint_kind ex_kind;
12786 std::string excep_string;
12787 std::string cond_string;
12788
12789 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12790
12791 if (!arg)
12792 arg = "";
12793 catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12794 &cond_string);
12795 create_ada_exception_catchpoint (gdbarch, ex_kind,
12796 excep_string, cond_string,
12797 tempflag, 1 /* enabled */,
12798 from_tty);
12799 }
12800
12801 /* Implement the "catch handlers" command. */
12802
12803 static void
12804 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12805 struct cmd_list_element *command)
12806 {
12807 const char *arg = arg_entry;
12808 struct gdbarch *gdbarch = get_current_arch ();
12809 int tempflag;
12810 enum ada_exception_catchpoint_kind ex_kind;
12811 std::string excep_string;
12812 std::string cond_string;
12813
12814 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12815
12816 if (!arg)
12817 arg = "";
12818 catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12819 &cond_string);
12820 create_ada_exception_catchpoint (gdbarch, ex_kind,
12821 excep_string, cond_string,
12822 tempflag, 1 /* enabled */,
12823 from_tty);
12824 }
12825
12826 /* Completion function for the Ada "catch" commands. */
12827
12828 static void
12829 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12830 const char *text, const char *word)
12831 {
12832 std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12833
12834 for (const ada_exc_info &info : exceptions)
12835 {
12836 if (startswith (info.name, word))
12837 tracker.add_completion (make_unique_xstrdup (info.name));
12838 }
12839 }
12840
12841 /* Split the arguments specified in a "catch assert" command.
12842
12843 ARGS contains the command's arguments (or the empty string if
12844 no arguments were passed).
12845
12846 If ARGS contains a condition, set COND_STRING to that condition
12847 (the memory needs to be deallocated after use). */
12848
12849 static void
12850 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12851 {
12852 args = skip_spaces (args);
12853
12854 /* Check whether a condition was provided. */
12855 if (startswith (args, "if")
12856 && (isspace (args[2]) || args[2] == '\0'))
12857 {
12858 args += 2;
12859 args = skip_spaces (args);
12860 if (args[0] == '\0')
12861 error (_("condition missing after `if' keyword"));
12862 cond_string.assign (args);
12863 }
12864
12865 /* Otherwise, there should be no other argument at the end of
12866 the command. */
12867 else if (args[0] != '\0')
12868 error (_("Junk at end of arguments."));
12869 }
12870
12871 /* Implement the "catch assert" command. */
12872
12873 static void
12874 catch_assert_command (const char *arg_entry, int from_tty,
12875 struct cmd_list_element *command)
12876 {
12877 const char *arg = arg_entry;
12878 struct gdbarch *gdbarch = get_current_arch ();
12879 int tempflag;
12880 std::string cond_string;
12881
12882 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12883
12884 if (!arg)
12885 arg = "";
12886 catch_ada_assert_command_split (arg, cond_string);
12887 create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12888 "", cond_string,
12889 tempflag, 1 /* enabled */,
12890 from_tty);
12891 }
12892
12893 /* Return non-zero if the symbol SYM is an Ada exception object. */
12894
12895 static int
12896 ada_is_exception_sym (struct symbol *sym)
12897 {
12898 const char *type_name = SYMBOL_TYPE (sym)->name ();
12899
12900 return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12901 && SYMBOL_CLASS (sym) != LOC_BLOCK
12902 && SYMBOL_CLASS (sym) != LOC_CONST
12903 && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12904 && type_name != NULL && strcmp (type_name, "exception") == 0);
12905 }
12906
12907 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12908 Ada exception object. This matches all exceptions except the ones
12909 defined by the Ada language. */
12910
12911 static int
12912 ada_is_non_standard_exception_sym (struct symbol *sym)
12913 {
12914 int i;
12915
12916 if (!ada_is_exception_sym (sym))
12917 return 0;
12918
12919 for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12920 if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
12921 return 0; /* A standard exception. */
12922
12923 /* Numeric_Error is also a standard exception, so exclude it.
12924 See the STANDARD_EXC description for more details as to why
12925 this exception is not listed in that array. */
12926 if (strcmp (sym->linkage_name (), "numeric_error") == 0)
12927 return 0;
12928
12929 return 1;
12930 }
12931
12932 /* A helper function for std::sort, comparing two struct ada_exc_info
12933 objects.
12934
12935 The comparison is determined first by exception name, and then
12936 by exception address. */
12937
12938 bool
12939 ada_exc_info::operator< (const ada_exc_info &other) const
12940 {
12941 int result;
12942
12943 result = strcmp (name, other.name);
12944 if (result < 0)
12945 return true;
12946 if (result == 0 && addr < other.addr)
12947 return true;
12948 return false;
12949 }
12950
12951 bool
12952 ada_exc_info::operator== (const ada_exc_info &other) const
12953 {
12954 return addr == other.addr && strcmp (name, other.name) == 0;
12955 }
12956
12957 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12958 routine, but keeping the first SKIP elements untouched.
12959
12960 All duplicates are also removed. */
12961
12962 static void
12963 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
12964 int skip)
12965 {
12966 std::sort (exceptions->begin () + skip, exceptions->end ());
12967 exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
12968 exceptions->end ());
12969 }
12970
12971 /* Add all exceptions defined by the Ada standard whose name match
12972 a regular expression.
12973
12974 If PREG is not NULL, then this regexp_t object is used to
12975 perform the symbol name matching. Otherwise, no name-based
12976 filtering is performed.
12977
12978 EXCEPTIONS is a vector of exceptions to which matching exceptions
12979 gets pushed. */
12980
12981 static void
12982 ada_add_standard_exceptions (compiled_regex *preg,
12983 std::vector<ada_exc_info> *exceptions)
12984 {
12985 int i;
12986
12987 for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12988 {
12989 if (preg == NULL
12990 || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
12991 {
12992 struct bound_minimal_symbol msymbol
12993 = ada_lookup_simple_minsym (standard_exc[i]);
12994
12995 if (msymbol.minsym != NULL)
12996 {
12997 struct ada_exc_info info
12998 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12999
13000 exceptions->push_back (info);
13001 }
13002 }
13003 }
13004 }
13005
13006 /* Add all Ada exceptions defined locally and accessible from the given
13007 FRAME.
13008
13009 If PREG is not NULL, then this regexp_t object is used to
13010 perform the symbol name matching. Otherwise, no name-based
13011 filtering is performed.
13012
13013 EXCEPTIONS is a vector of exceptions to which matching exceptions
13014 gets pushed. */
13015
13016 static void
13017 ada_add_exceptions_from_frame (compiled_regex *preg,
13018 struct frame_info *frame,
13019 std::vector<ada_exc_info> *exceptions)
13020 {
13021 const struct block *block = get_frame_block (frame, 0);
13022
13023 while (block != 0)
13024 {
13025 struct block_iterator iter;
13026 struct symbol *sym;
13027
13028 ALL_BLOCK_SYMBOLS (block, iter, sym)
13029 {
13030 switch (SYMBOL_CLASS (sym))
13031 {
13032 case LOC_TYPEDEF:
13033 case LOC_BLOCK:
13034 case LOC_CONST:
13035 break;
13036 default:
13037 if (ada_is_exception_sym (sym))
13038 {
13039 struct ada_exc_info info = {sym->print_name (),
13040 SYMBOL_VALUE_ADDRESS (sym)};
13041
13042 exceptions->push_back (info);
13043 }
13044 }
13045 }
13046 if (BLOCK_FUNCTION (block) != NULL)
13047 break;
13048 block = BLOCK_SUPERBLOCK (block);
13049 }
13050 }
13051
13052 /* Return true if NAME matches PREG or if PREG is NULL. */
13053
13054 static bool
13055 name_matches_regex (const char *name, compiled_regex *preg)
13056 {
13057 return (preg == NULL
13058 || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
13059 }
13060
13061 /* Add all exceptions defined globally whose name name match
13062 a regular expression, excluding standard exceptions.
13063
13064 The reason we exclude standard exceptions is that they need
13065 to be handled separately: Standard exceptions are defined inside
13066 a runtime unit which is normally not compiled with debugging info,
13067 and thus usually do not show up in our symbol search. However,
13068 if the unit was in fact built with debugging info, we need to
13069 exclude them because they would duplicate the entry we found
13070 during the special loop that specifically searches for those
13071 standard exceptions.
13072
13073 If PREG is not NULL, then this regexp_t object is used to
13074 perform the symbol name matching. Otherwise, no name-based
13075 filtering is performed.
13076
13077 EXCEPTIONS is a vector of exceptions to which matching exceptions
13078 gets pushed. */
13079
13080 static void
13081 ada_add_global_exceptions (compiled_regex *preg,
13082 std::vector<ada_exc_info> *exceptions)
13083 {
13084 /* In Ada, the symbol "search name" is a linkage name, whereas the
13085 regular expression used to do the matching refers to the natural
13086 name. So match against the decoded name. */
13087 expand_symtabs_matching (NULL,
13088 lookup_name_info::match_any (),
13089 [&] (const char *search_name)
13090 {
13091 std::string decoded = ada_decode (search_name);
13092 return name_matches_regex (decoded.c_str (), preg);
13093 },
13094 NULL,
13095 VARIABLES_DOMAIN);
13096
13097 for (objfile *objfile : current_program_space->objfiles ())
13098 {
13099 for (compunit_symtab *s : objfile->compunits ())
13100 {
13101 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13102 int i;
13103
13104 for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13105 {
13106 const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13107 struct block_iterator iter;
13108 struct symbol *sym;
13109
13110 ALL_BLOCK_SYMBOLS (b, iter, sym)
13111 if (ada_is_non_standard_exception_sym (sym)
13112 && name_matches_regex (sym->natural_name (), preg))
13113 {
13114 struct ada_exc_info info
13115 = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13116
13117 exceptions->push_back (info);
13118 }
13119 }
13120 }
13121 }
13122 }
13123
13124 /* Implements ada_exceptions_list with the regular expression passed
13125 as a regex_t, rather than a string.
13126
13127 If not NULL, PREG is used to filter out exceptions whose names
13128 do not match. Otherwise, all exceptions are listed. */
13129
13130 static std::vector<ada_exc_info>
13131 ada_exceptions_list_1 (compiled_regex *preg)
13132 {
13133 std::vector<ada_exc_info> result;
13134 int prev_len;
13135
13136 /* First, list the known standard exceptions. These exceptions
13137 need to be handled separately, as they are usually defined in
13138 runtime units that have been compiled without debugging info. */
13139
13140 ada_add_standard_exceptions (preg, &result);
13141
13142 /* Next, find all exceptions whose scope is local and accessible
13143 from the currently selected frame. */
13144
13145 if (has_stack_frames ())
13146 {
13147 prev_len = result.size ();
13148 ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13149 &result);
13150 if (result.size () > prev_len)
13151 sort_remove_dups_ada_exceptions_list (&result, prev_len);
13152 }
13153
13154 /* Add all exceptions whose scope is global. */
13155
13156 prev_len = result.size ();
13157 ada_add_global_exceptions (preg, &result);
13158 if (result.size () > prev_len)
13159 sort_remove_dups_ada_exceptions_list (&result, prev_len);
13160
13161 return result;
13162 }
13163
13164 /* Return a vector of ada_exc_info.
13165
13166 If REGEXP is NULL, all exceptions are included in the result.
13167 Otherwise, it should contain a valid regular expression,
13168 and only the exceptions whose names match that regular expression
13169 are included in the result.
13170
13171 The exceptions are sorted in the following order:
13172 - Standard exceptions (defined by the Ada language), in
13173 alphabetical order;
13174 - Exceptions only visible from the current frame, in
13175 alphabetical order;
13176 - Exceptions whose scope is global, in alphabetical order. */
13177
13178 std::vector<ada_exc_info>
13179 ada_exceptions_list (const char *regexp)
13180 {
13181 if (regexp == NULL)
13182 return ada_exceptions_list_1 (NULL);
13183
13184 compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13185 return ada_exceptions_list_1 (&reg);
13186 }
13187
13188 /* Implement the "info exceptions" command. */
13189
13190 static void
13191 info_exceptions_command (const char *regexp, int from_tty)
13192 {
13193 struct gdbarch *gdbarch = get_current_arch ();
13194
13195 std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13196
13197 if (regexp != NULL)
13198 printf_filtered
13199 (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13200 else
13201 printf_filtered (_("All defined Ada exceptions:\n"));
13202
13203 for (const ada_exc_info &info : exceptions)
13204 printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13205 }
13206
13207 /* Operators */
13208 /* Information about operators given special treatment in functions
13209 below. */
13210 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>). */
13211
13212 #define ADA_OPERATORS \
13213 OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13214 OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13215 OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13216 OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13217 OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13218 OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13219 OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13220 OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13221 OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13222 OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13223 OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13224 OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13225 OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13226 OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13227 OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13228 OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13229 OP_DEFN (OP_OTHERS, 1, 1, 0) \
13230 OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13231 OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13232
13233 static void
13234 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13235 int *argsp)
13236 {
13237 switch (exp->elts[pc - 1].opcode)
13238 {
13239 default:
13240 operator_length_standard (exp, pc, oplenp, argsp);
13241 break;
13242
13243 #define OP_DEFN(op, len, args, binop) \
13244 case op: *oplenp = len; *argsp = args; break;
13245 ADA_OPERATORS;
13246 #undef OP_DEFN
13247
13248 case OP_AGGREGATE:
13249 *oplenp = 3;
13250 *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13251 break;
13252
13253 case OP_CHOICES:
13254 *oplenp = 3;
13255 *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13256 break;
13257 }
13258 }
13259
13260 /* Implementation of the exp_descriptor method operator_check. */
13261
13262 static int
13263 ada_operator_check (struct expression *exp, int pos,
13264 int (*objfile_func) (struct objfile *objfile, void *data),
13265 void *data)
13266 {
13267 const union exp_element *const elts = exp->elts;
13268 struct type *type = NULL;
13269
13270 switch (elts[pos].opcode)
13271 {
13272 case UNOP_IN_RANGE:
13273 case UNOP_QUAL:
13274 type = elts[pos + 1].type;
13275 break;
13276
13277 default:
13278 return operator_check_standard (exp, pos, objfile_func, data);
13279 }
13280
13281 /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */
13282
13283 if (type && TYPE_OBJFILE (type)
13284 && (*objfile_func) (TYPE_OBJFILE (type), data))
13285 return 1;
13286
13287 return 0;
13288 }
13289
13290 static const char *
13291 ada_op_name (enum exp_opcode opcode)
13292 {
13293 switch (opcode)
13294 {
13295 default:
13296 return op_name_standard (opcode);
13297
13298 #define OP_DEFN(op, len, args, binop) case op: return #op;
13299 ADA_OPERATORS;
13300 #undef OP_DEFN
13301
13302 case OP_AGGREGATE:
13303 return "OP_AGGREGATE";
13304 case OP_CHOICES:
13305 return "OP_CHOICES";
13306 case OP_NAME:
13307 return "OP_NAME";
13308 }
13309 }
13310
13311 /* As for operator_length, but assumes PC is pointing at the first
13312 element of the operator, and gives meaningful results only for the
13313 Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */
13314
13315 static void
13316 ada_forward_operator_length (struct expression *exp, int pc,
13317 int *oplenp, int *argsp)
13318 {
13319 switch (exp->elts[pc].opcode)
13320 {
13321 default:
13322 *oplenp = *argsp = 0;
13323 break;
13324
13325 #define OP_DEFN(op, len, args, binop) \
13326 case op: *oplenp = len; *argsp = args; break;
13327 ADA_OPERATORS;
13328 #undef OP_DEFN
13329
13330 case OP_AGGREGATE:
13331 *oplenp = 3;
13332 *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13333 break;
13334
13335 case OP_CHOICES:
13336 *oplenp = 3;
13337 *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13338 break;
13339
13340 case OP_STRING:
13341 case OP_NAME:
13342 {
13343 int len = longest_to_int (exp->elts[pc + 1].longconst);
13344
13345 *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13346 *argsp = 0;
13347 break;
13348 }
13349 }
13350 }
13351
13352 static int
13353 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13354 {
13355 enum exp_opcode op = exp->elts[elt].opcode;
13356 int oplen, nargs;
13357 int pc = elt;
13358 int i;
13359
13360 ada_forward_operator_length (exp, elt, &oplen, &nargs);
13361
13362 switch (op)
13363 {
13364 /* Ada attributes ('Foo). */
13365 case OP_ATR_FIRST:
13366 case OP_ATR_LAST:
13367 case OP_ATR_LENGTH:
13368 case OP_ATR_IMAGE:
13369 case OP_ATR_MAX:
13370 case OP_ATR_MIN:
13371 case OP_ATR_MODULUS:
13372 case OP_ATR_POS:
13373 case OP_ATR_SIZE:
13374 case OP_ATR_TAG:
13375 case OP_ATR_VAL:
13376 break;
13377
13378 case UNOP_IN_RANGE:
13379 case UNOP_QUAL:
13380 /* XXX: gdb_sprint_host_address, type_sprint */
13381 fprintf_filtered (stream, _("Type @"));
13382 gdb_print_host_address (exp->elts[pc + 1].type, stream);
13383 fprintf_filtered (stream, " (");
13384 type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13385 fprintf_filtered (stream, ")");
13386 break;
13387 case BINOP_IN_BOUNDS:
13388 fprintf_filtered (stream, " (%d)",
13389 longest_to_int (exp->elts[pc + 2].longconst));
13390 break;
13391 case TERNOP_IN_RANGE:
13392 break;
13393
13394 case OP_AGGREGATE:
13395 case OP_OTHERS:
13396 case OP_DISCRETE_RANGE:
13397 case OP_POSITIONAL:
13398 case OP_CHOICES:
13399 break;
13400
13401 case OP_NAME:
13402 case OP_STRING:
13403 {
13404 char *name = &exp->elts[elt + 2].string;
13405 int len = longest_to_int (exp->elts[elt + 1].longconst);
13406
13407 fprintf_filtered (stream, "Text: `%.*s'", len, name);
13408 break;
13409 }
13410
13411 default:
13412 return dump_subexp_body_standard (exp, stream, elt);
13413 }
13414
13415 elt += oplen;
13416 for (i = 0; i < nargs; i += 1)
13417 elt = dump_subexp (exp, stream, elt);
13418
13419 return elt;
13420 }
13421
13422 /* The Ada extension of print_subexp (q.v.). */
13423
13424 static void
13425 ada_print_subexp (struct expression *exp, int *pos,
13426 struct ui_file *stream, enum precedence prec)
13427 {
13428 int oplen, nargs, i;
13429 int pc = *pos;
13430 enum exp_opcode op = exp->elts[pc].opcode;
13431
13432 ada_forward_operator_length (exp, pc, &oplen, &nargs);
13433
13434 *pos += oplen;
13435 switch (op)
13436 {
13437 default:
13438 *pos -= oplen;
13439 print_subexp_standard (exp, pos, stream, prec);
13440 return;
13441
13442 case OP_VAR_VALUE:
13443 fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13444 return;
13445
13446 case BINOP_IN_BOUNDS:
13447 /* XXX: sprint_subexp */
13448 print_subexp (exp, pos, stream, PREC_SUFFIX);
13449 fputs_filtered (" in ", stream);
13450 print_subexp (exp, pos, stream, PREC_SUFFIX);
13451 fputs_filtered ("'range", stream);
13452 if (exp->elts[pc + 1].longconst > 1)
13453 fprintf_filtered (stream, "(%ld)",
13454 (long) exp->elts[pc + 1].longconst);
13455 return;
13456
13457 case TERNOP_IN_RANGE:
13458 if (prec >= PREC_EQUAL)
13459 fputs_filtered ("(", stream);
13460 /* XXX: sprint_subexp */
13461 print_subexp (exp, pos, stream, PREC_SUFFIX);
13462 fputs_filtered (" in ", stream);
13463 print_subexp (exp, pos, stream, PREC_EQUAL);
13464 fputs_filtered (" .. ", stream);
13465 print_subexp (exp, pos, stream, PREC_EQUAL);
13466 if (prec >= PREC_EQUAL)
13467 fputs_filtered (")", stream);
13468 return;
13469
13470 case OP_ATR_FIRST:
13471 case OP_ATR_LAST:
13472 case OP_ATR_LENGTH:
13473 case OP_ATR_IMAGE:
13474 case OP_ATR_MAX:
13475 case OP_ATR_MIN:
13476 case OP_ATR_MODULUS:
13477 case OP_ATR_POS:
13478 case OP_ATR_SIZE:
13479 case OP_ATR_TAG:
13480 case OP_ATR_VAL:
13481 if (exp->elts[*pos].opcode == OP_TYPE)
13482 {
13483 if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13484 LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13485 &type_print_raw_options);
13486 *pos += 3;
13487 }
13488 else
13489 print_subexp (exp, pos, stream, PREC_SUFFIX);
13490 fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13491 if (nargs > 1)
13492 {
13493 int tem;
13494
13495 for (tem = 1; tem < nargs; tem += 1)
13496 {
13497 fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13498 print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13499 }
13500 fputs_filtered (")", stream);
13501 }
13502 return;
13503
13504 case UNOP_QUAL:
13505 type_print (exp->elts[pc + 1].type, "", stream, 0);
13506 fputs_filtered ("'(", stream);
13507 print_subexp (exp, pos, stream, PREC_PREFIX);
13508 fputs_filtered (")", stream);
13509 return;
13510
13511 case UNOP_IN_RANGE:
13512 /* XXX: sprint_subexp */
13513 print_subexp (exp, pos, stream, PREC_SUFFIX);
13514 fputs_filtered (" in ", stream);
13515 LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13516 &type_print_raw_options);
13517 return;
13518
13519 case OP_DISCRETE_RANGE:
13520 print_subexp (exp, pos, stream, PREC_SUFFIX);
13521 fputs_filtered ("..", stream);
13522 print_subexp (exp, pos, stream, PREC_SUFFIX);
13523 return;
13524
13525 case OP_OTHERS:
13526 fputs_filtered ("others => ", stream);
13527 print_subexp (exp, pos, stream, PREC_SUFFIX);
13528 return;
13529
13530 case OP_CHOICES:
13531 for (i = 0; i < nargs-1; i += 1)
13532 {
13533 if (i > 0)
13534 fputs_filtered ("|", stream);
13535 print_subexp (exp, pos, stream, PREC_SUFFIX);
13536 }
13537 fputs_filtered (" => ", stream);
13538 print_subexp (exp, pos, stream, PREC_SUFFIX);
13539 return;
13540
13541 case OP_POSITIONAL:
13542 print_subexp (exp, pos, stream, PREC_SUFFIX);
13543 return;
13544
13545 case OP_AGGREGATE:
13546 fputs_filtered ("(", stream);
13547 for (i = 0; i < nargs; i += 1)
13548 {
13549 if (i > 0)
13550 fputs_filtered (", ", stream);
13551 print_subexp (exp, pos, stream, PREC_SUFFIX);
13552 }
13553 fputs_filtered (")", stream);
13554 return;
13555 }
13556 }
13557
13558 /* Table mapping opcodes into strings for printing operators
13559 and precedences of the operators. */
13560
13561 static const struct op_print ada_op_print_tab[] = {
13562 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13563 {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13564 {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13565 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13566 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13567 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13568 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13569 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13570 {"<=", BINOP_LEQ, PREC_ORDER, 0},
13571 {">=", BINOP_GEQ, PREC_ORDER, 0},
13572 {">", BINOP_GTR, PREC_ORDER, 0},
13573 {"<", BINOP_LESS, PREC_ORDER, 0},
13574 {">>", BINOP_RSH, PREC_SHIFT, 0},
13575 {"<<", BINOP_LSH, PREC_SHIFT, 0},
13576 {"+", BINOP_ADD, PREC_ADD, 0},
13577 {"-", BINOP_SUB, PREC_ADD, 0},
13578 {"&", BINOP_CONCAT, PREC_ADD, 0},
13579 {"*", BINOP_MUL, PREC_MUL, 0},
13580 {"/", BINOP_DIV, PREC_MUL, 0},
13581 {"rem", BINOP_REM, PREC_MUL, 0},
13582 {"mod", BINOP_MOD, PREC_MUL, 0},
13583 {"**", BINOP_EXP, PREC_REPEAT, 0},
13584 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13585 {"-", UNOP_NEG, PREC_PREFIX, 0},
13586 {"+", UNOP_PLUS, PREC_PREFIX, 0},
13587 {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13588 {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13589 {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13590 {".all", UNOP_IND, PREC_SUFFIX, 1},
13591 {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13592 {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13593 {NULL, OP_NULL, PREC_SUFFIX, 0}
13594 };
13595 \f
13596 enum ada_primitive_types {
13597 ada_primitive_type_int,
13598 ada_primitive_type_long,
13599 ada_primitive_type_short,
13600 ada_primitive_type_char,
13601 ada_primitive_type_float,
13602 ada_primitive_type_double,
13603 ada_primitive_type_void,
13604 ada_primitive_type_long_long,
13605 ada_primitive_type_long_double,
13606 ada_primitive_type_natural,
13607 ada_primitive_type_positive,
13608 ada_primitive_type_system_address,
13609 ada_primitive_type_storage_offset,
13610 nr_ada_primitive_types
13611 };
13612
13613 \f
13614 /* Language vector */
13615
13616 static const struct exp_descriptor ada_exp_descriptor = {
13617 ada_print_subexp,
13618 ada_operator_length,
13619 ada_operator_check,
13620 ada_op_name,
13621 ada_dump_subexp_body,
13622 ada_evaluate_subexp
13623 };
13624
13625 /* symbol_name_matcher_ftype adapter for wild_match. */
13626
13627 static bool
13628 do_wild_match (const char *symbol_search_name,
13629 const lookup_name_info &lookup_name,
13630 completion_match_result *comp_match_res)
13631 {
13632 return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13633 }
13634
13635 /* symbol_name_matcher_ftype adapter for full_match. */
13636
13637 static bool
13638 do_full_match (const char *symbol_search_name,
13639 const lookup_name_info &lookup_name,
13640 completion_match_result *comp_match_res)
13641 {
13642 return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13643 }
13644
13645 /* symbol_name_matcher_ftype for exact (verbatim) matches. */
13646
13647 static bool
13648 do_exact_match (const char *symbol_search_name,
13649 const lookup_name_info &lookup_name,
13650 completion_match_result *comp_match_res)
13651 {
13652 return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13653 }
13654
13655 /* Build the Ada lookup name for LOOKUP_NAME. */
13656
13657 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13658 {
13659 gdb::string_view user_name = lookup_name.name ();
13660
13661 if (user_name[0] == '<')
13662 {
13663 if (user_name.back () == '>')
13664 m_encoded_name
13665 = gdb::to_string (user_name.substr (1, user_name.size () - 2));
13666 else
13667 m_encoded_name
13668 = gdb::to_string (user_name.substr (1, user_name.size () - 1));
13669 m_encoded_p = true;
13670 m_verbatim_p = true;
13671 m_wild_match_p = false;
13672 m_standard_p = false;
13673 }
13674 else
13675 {
13676 m_verbatim_p = false;
13677
13678 m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13679
13680 if (!m_encoded_p)
13681 {
13682 const char *folded = ada_fold_name (user_name);
13683 m_encoded_name = ada_encode_1 (folded, false);
13684 if (m_encoded_name.empty ())
13685 m_encoded_name = gdb::to_string (user_name);
13686 }
13687 else
13688 m_encoded_name = gdb::to_string (user_name);
13689
13690 /* Handle the 'package Standard' special case. See description
13691 of m_standard_p. */
13692 if (startswith (m_encoded_name.c_str (), "standard__"))
13693 {
13694 m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13695 m_standard_p = true;
13696 }
13697 else
13698 m_standard_p = false;
13699
13700 /* If the name contains a ".", then the user is entering a fully
13701 qualified entity name, and the match must not be done in wild
13702 mode. Similarly, if the user wants to complete what looks
13703 like an encoded name, the match must not be done in wild
13704 mode. Also, in the standard__ special case always do
13705 non-wild matching. */
13706 m_wild_match_p
13707 = (lookup_name.match_type () != symbol_name_match_type::FULL
13708 && !m_encoded_p
13709 && !m_standard_p
13710 && user_name.find ('.') == std::string::npos);
13711 }
13712 }
13713
13714 /* symbol_name_matcher_ftype method for Ada. This only handles
13715 completion mode. */
13716
13717 static bool
13718 ada_symbol_name_matches (const char *symbol_search_name,
13719 const lookup_name_info &lookup_name,
13720 completion_match_result *comp_match_res)
13721 {
13722 return lookup_name.ada ().matches (symbol_search_name,
13723 lookup_name.match_type (),
13724 comp_match_res);
13725 }
13726
13727 /* A name matcher that matches the symbol name exactly, with
13728 strcmp. */
13729
13730 static bool
13731 literal_symbol_name_matcher (const char *symbol_search_name,
13732 const lookup_name_info &lookup_name,
13733 completion_match_result *comp_match_res)
13734 {
13735 gdb::string_view name_view = lookup_name.name ();
13736
13737 if (lookup_name.completion_mode ()
13738 ? (strncmp (symbol_search_name, name_view.data (),
13739 name_view.size ()) == 0)
13740 : symbol_search_name == name_view)
13741 {
13742 if (comp_match_res != NULL)
13743 comp_match_res->set_match (symbol_search_name);
13744 return true;
13745 }
13746 else
13747 return false;
13748 }
13749
13750 /* Implement the "get_symbol_name_matcher" language_defn method for
13751 Ada. */
13752
13753 static symbol_name_matcher_ftype *
13754 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13755 {
13756 if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13757 return literal_symbol_name_matcher;
13758
13759 if (lookup_name.completion_mode ())
13760 return ada_symbol_name_matches;
13761 else
13762 {
13763 if (lookup_name.ada ().wild_match_p ())
13764 return do_wild_match;
13765 else if (lookup_name.ada ().verbatim_p ())
13766 return do_exact_match;
13767 else
13768 return do_full_match;
13769 }
13770 }
13771
13772 /* Class representing the Ada language. */
13773
13774 class ada_language : public language_defn
13775 {
13776 public:
13777 ada_language ()
13778 : language_defn (language_ada)
13779 { /* Nothing. */ }
13780
13781 /* See language.h. */
13782
13783 const char *name () const override
13784 { return "ada"; }
13785
13786 /* See language.h. */
13787
13788 const char *natural_name () const override
13789 { return "Ada"; }
13790
13791 /* See language.h. */
13792
13793 const std::vector<const char *> &filename_extensions () const override
13794 {
13795 static const std::vector<const char *> extensions
13796 = { ".adb", ".ads", ".a", ".ada", ".dg" };
13797 return extensions;
13798 }
13799
13800 /* Print an array element index using the Ada syntax. */
13801
13802 void print_array_index (struct type *index_type,
13803 LONGEST index,
13804 struct ui_file *stream,
13805 const value_print_options *options) const override
13806 {
13807 struct value *index_value = val_atr (index_type, index);
13808
13809 value_print (index_value, stream, options);
13810 fprintf_filtered (stream, " => ");
13811 }
13812
13813 /* Implement the "read_var_value" language_defn method for Ada. */
13814
13815 struct value *read_var_value (struct symbol *var,
13816 const struct block *var_block,
13817 struct frame_info *frame) const override
13818 {
13819 /* The only case where default_read_var_value is not sufficient
13820 is when VAR is a renaming... */
13821 if (frame != nullptr)
13822 {
13823 const struct block *frame_block = get_frame_block (frame, NULL);
13824 if (frame_block != nullptr && ada_is_renaming_symbol (var))
13825 return ada_read_renaming_var_value (var, frame_block);
13826 }
13827
13828 /* This is a typical case where we expect the default_read_var_value
13829 function to work. */
13830 return language_defn::read_var_value (var, var_block, frame);
13831 }
13832
13833 /* See language.h. */
13834 void language_arch_info (struct gdbarch *gdbarch,
13835 struct language_arch_info *lai) const override
13836 {
13837 const struct builtin_type *builtin = builtin_type (gdbarch);
13838
13839 lai->primitive_type_vector
13840 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13841 struct type *);
13842
13843 lai->primitive_type_vector [ada_primitive_type_int]
13844 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13845 0, "integer");
13846 lai->primitive_type_vector [ada_primitive_type_long]
13847 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13848 0, "long_integer");
13849 lai->primitive_type_vector [ada_primitive_type_short]
13850 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13851 0, "short_integer");
13852 lai->string_char_type
13853 = lai->primitive_type_vector [ada_primitive_type_char]
13854 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13855 lai->primitive_type_vector [ada_primitive_type_float]
13856 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13857 "float", gdbarch_float_format (gdbarch));
13858 lai->primitive_type_vector [ada_primitive_type_double]
13859 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13860 "long_float", gdbarch_double_format (gdbarch));
13861 lai->primitive_type_vector [ada_primitive_type_long_long]
13862 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13863 0, "long_long_integer");
13864 lai->primitive_type_vector [ada_primitive_type_long_double]
13865 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13866 "long_long_float", gdbarch_long_double_format (gdbarch));
13867 lai->primitive_type_vector [ada_primitive_type_natural]
13868 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13869 0, "natural");
13870 lai->primitive_type_vector [ada_primitive_type_positive]
13871 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13872 0, "positive");
13873 lai->primitive_type_vector [ada_primitive_type_void]
13874 = builtin->builtin_void;
13875
13876 lai->primitive_type_vector [ada_primitive_type_system_address]
13877 = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13878 "void"));
13879 lai->primitive_type_vector [ada_primitive_type_system_address]
13880 ->set_name ("system__address");
13881
13882 /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13883 type. This is a signed integral type whose size is the same as
13884 the size of addresses. */
13885 {
13886 unsigned int addr_length = TYPE_LENGTH
13887 (lai->primitive_type_vector [ada_primitive_type_system_address]);
13888
13889 lai->primitive_type_vector [ada_primitive_type_storage_offset]
13890 = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13891 "storage_offset");
13892 }
13893
13894 lai->bool_type_symbol = NULL;
13895 lai->bool_type_default = builtin->builtin_bool;
13896 }
13897
13898 /* See language.h. */
13899
13900 bool iterate_over_symbols
13901 (const struct block *block, const lookup_name_info &name,
13902 domain_enum domain,
13903 gdb::function_view<symbol_found_callback_ftype> callback) const override
13904 {
13905 std::vector<struct block_symbol> results;
13906
13907 ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
13908 for (block_symbol &sym : results)
13909 {
13910 if (!callback (&sym))
13911 return false;
13912 }
13913
13914 return true;
13915 }
13916
13917 /* See language.h. */
13918 bool sniff_from_mangled_name (const char *mangled,
13919 char **out) const override
13920 {
13921 std::string demangled = ada_decode (mangled);
13922
13923 *out = NULL;
13924
13925 if (demangled != mangled && demangled[0] != '<')
13926 {
13927 /* Set the gsymbol language to Ada, but still return 0.
13928 Two reasons for that:
13929
13930 1. For Ada, we prefer computing the symbol's decoded name
13931 on the fly rather than pre-compute it, in order to save
13932 memory (Ada projects are typically very large).
13933
13934 2. There are some areas in the definition of the GNAT
13935 encoding where, with a bit of bad luck, we might be able
13936 to decode a non-Ada symbol, generating an incorrect
13937 demangled name (Eg: names ending with "TB" for instance
13938 are identified as task bodies and so stripped from
13939 the decoded name returned).
13940
13941 Returning true, here, but not setting *DEMANGLED, helps us get
13942 a little bit of the best of both worlds. Because we're last,
13943 we should not affect any of the other languages that were
13944 able to demangle the symbol before us; we get to correctly
13945 tag Ada symbols as such; and even if we incorrectly tagged a
13946 non-Ada symbol, which should be rare, any routing through the
13947 Ada language should be transparent (Ada tries to behave much
13948 like C/C++ with non-Ada symbols). */
13949 return true;
13950 }
13951
13952 return false;
13953 }
13954
13955 /* See language.h. */
13956
13957 char *demangle_symbol (const char *mangled, int options) const override
13958 {
13959 return ada_la_decode (mangled, options);
13960 }
13961
13962 /* See language.h. */
13963
13964 void print_type (struct type *type, const char *varstring,
13965 struct ui_file *stream, int show, int level,
13966 const struct type_print_options *flags) const override
13967 {
13968 ada_print_type (type, varstring, stream, show, level, flags);
13969 }
13970
13971 /* See language.h. */
13972
13973 const char *word_break_characters (void) const override
13974 {
13975 return ada_completer_word_break_characters;
13976 }
13977
13978 /* See language.h. */
13979
13980 void collect_symbol_completion_matches (completion_tracker &tracker,
13981 complete_symbol_mode mode,
13982 symbol_name_match_type name_match_type,
13983 const char *text, const char *word,
13984 enum type_code code) const override
13985 {
13986 struct symbol *sym;
13987 const struct block *b, *surrounding_static_block = 0;
13988 struct block_iterator iter;
13989
13990 gdb_assert (code == TYPE_CODE_UNDEF);
13991
13992 lookup_name_info lookup_name (text, name_match_type, true);
13993
13994 /* First, look at the partial symtab symbols. */
13995 expand_symtabs_matching (NULL,
13996 lookup_name,
13997 NULL,
13998 NULL,
13999 ALL_DOMAIN);
14000
14001 /* At this point scan through the misc symbol vectors and add each
14002 symbol you find to the list. Eventually we want to ignore
14003 anything that isn't a text symbol (everything else will be
14004 handled by the psymtab code above). */
14005
14006 for (objfile *objfile : current_program_space->objfiles ())
14007 {
14008 for (minimal_symbol *msymbol : objfile->msymbols ())
14009 {
14010 QUIT;
14011
14012 if (completion_skip_symbol (mode, msymbol))
14013 continue;
14014
14015 language symbol_language = msymbol->language ();
14016
14017 /* Ada minimal symbols won't have their language set to Ada. If
14018 we let completion_list_add_name compare using the
14019 default/C-like matcher, then when completing e.g., symbols in a
14020 package named "pck", we'd match internal Ada symbols like
14021 "pckS", which are invalid in an Ada expression, unless you wrap
14022 them in '<' '>' to request a verbatim match.
14023
14024 Unfortunately, some Ada encoded names successfully demangle as
14025 C++ symbols (using an old mangling scheme), such as "name__2Xn"
14026 -> "Xn::name(void)" and thus some Ada minimal symbols end up
14027 with the wrong language set. Paper over that issue here. */
14028 if (symbol_language == language_auto
14029 || symbol_language == language_cplus)
14030 symbol_language = language_ada;
14031
14032 completion_list_add_name (tracker,
14033 symbol_language,
14034 msymbol->linkage_name (),
14035 lookup_name, text, word);
14036 }
14037 }
14038
14039 /* Search upwards from currently selected frame (so that we can
14040 complete on local vars. */
14041
14042 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
14043 {
14044 if (!BLOCK_SUPERBLOCK (b))
14045 surrounding_static_block = b; /* For elmin of dups */
14046
14047 ALL_BLOCK_SYMBOLS (b, iter, sym)
14048 {
14049 if (completion_skip_symbol (mode, sym))
14050 continue;
14051
14052 completion_list_add_name (tracker,
14053 sym->language (),
14054 sym->linkage_name (),
14055 lookup_name, text, word);
14056 }
14057 }
14058
14059 /* Go through the symtabs and check the externs and statics for
14060 symbols which match. */
14061
14062 for (objfile *objfile : current_program_space->objfiles ())
14063 {
14064 for (compunit_symtab *s : objfile->compunits ())
14065 {
14066 QUIT;
14067 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
14068 ALL_BLOCK_SYMBOLS (b, iter, sym)
14069 {
14070 if (completion_skip_symbol (mode, sym))
14071 continue;
14072
14073 completion_list_add_name (tracker,
14074 sym->language (),
14075 sym->linkage_name (),
14076 lookup_name, text, word);
14077 }
14078 }
14079 }
14080
14081 for (objfile *objfile : current_program_space->objfiles ())
14082 {
14083 for (compunit_symtab *s : objfile->compunits ())
14084 {
14085 QUIT;
14086 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
14087 /* Don't do this block twice. */
14088 if (b == surrounding_static_block)
14089 continue;
14090 ALL_BLOCK_SYMBOLS (b, iter, sym)
14091 {
14092 if (completion_skip_symbol (mode, sym))
14093 continue;
14094
14095 completion_list_add_name (tracker,
14096 sym->language (),
14097 sym->linkage_name (),
14098 lookup_name, text, word);
14099 }
14100 }
14101 }
14102 }
14103
14104 /* See language.h. */
14105
14106 gdb::unique_xmalloc_ptr<char> watch_location_expression
14107 (struct type *type, CORE_ADDR addr) const override
14108 {
14109 type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
14110 std::string name = type_to_string (type);
14111 return gdb::unique_xmalloc_ptr<char>
14112 (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
14113 }
14114
14115 /* See language.h. */
14116
14117 void value_print (struct value *val, struct ui_file *stream,
14118 const struct value_print_options *options) const override
14119 {
14120 return ada_value_print (val, stream, options);
14121 }
14122
14123 /* See language.h. */
14124
14125 void value_print_inner
14126 (struct value *val, struct ui_file *stream, int recurse,
14127 const struct value_print_options *options) const override
14128 {
14129 return ada_value_print_inner (val, stream, recurse, options);
14130 }
14131
14132 /* See language.h. */
14133
14134 struct block_symbol lookup_symbol_nonlocal
14135 (const char *name, const struct block *block,
14136 const domain_enum domain) const override
14137 {
14138 struct block_symbol sym;
14139
14140 sym = ada_lookup_symbol (name, block_static_block (block), domain);
14141 if (sym.symbol != NULL)
14142 return sym;
14143
14144 /* If we haven't found a match at this point, try the primitive
14145 types. In other languages, this search is performed before
14146 searching for global symbols in order to short-circuit that
14147 global-symbol search if it happens that the name corresponds
14148 to a primitive type. But we cannot do the same in Ada, because
14149 it is perfectly legitimate for a program to declare a type which
14150 has the same name as a standard type. If looking up a type in
14151 that situation, we have traditionally ignored the primitive type
14152 in favor of user-defined types. This is why, unlike most other
14153 languages, we search the primitive types this late and only after
14154 having searched the global symbols without success. */
14155
14156 if (domain == VAR_DOMAIN)
14157 {
14158 struct gdbarch *gdbarch;
14159
14160 if (block == NULL)
14161 gdbarch = target_gdbarch ();
14162 else
14163 gdbarch = block_gdbarch (block);
14164 sym.symbol
14165 = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
14166 if (sym.symbol != NULL)
14167 return sym;
14168 }
14169
14170 return {};
14171 }
14172
14173 /* See language.h. */
14174
14175 int parser (struct parser_state *ps) const override
14176 {
14177 warnings_issued = 0;
14178 return ada_parse (ps);
14179 }
14180
14181 /* See language.h.
14182
14183 Same as evaluate_type (*EXP), but resolves ambiguous symbol references
14184 (marked by OP_VAR_VALUE nodes in which the symbol has an undefined
14185 namespace) and converts operators that are user-defined into
14186 appropriate function calls. If CONTEXT_TYPE is non-null, it provides
14187 a preferred result type [at the moment, only type void has any
14188 effect---causing procedures to be preferred over functions in calls].
14189 A null CONTEXT_TYPE indicates that a non-void return type is
14190 preferred. May change (expand) *EXP. */
14191
14192 void post_parser (expression_up *expp, int void_context_p, int completing,
14193 innermost_block_tracker *tracker) const override
14194 {
14195 struct type *context_type = NULL;
14196 int pc = 0;
14197
14198 if (void_context_p)
14199 context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
14200
14201 resolve_subexp (expp, &pc, 1, context_type, completing, tracker);
14202 }
14203
14204 /* See language.h. */
14205
14206 void emitchar (int ch, struct type *chtype,
14207 struct ui_file *stream, int quoter) const override
14208 {
14209 ada_emit_char (ch, chtype, stream, quoter, 1);
14210 }
14211
14212 /* See language.h. */
14213
14214 void printchar (int ch, struct type *chtype,
14215 struct ui_file *stream) const override
14216 {
14217 ada_printchar (ch, chtype, stream);
14218 }
14219
14220 /* See language.h. */
14221
14222 void printstr (struct ui_file *stream, struct type *elttype,
14223 const gdb_byte *string, unsigned int length,
14224 const char *encoding, int force_ellipses,
14225 const struct value_print_options *options) const override
14226 {
14227 ada_printstr (stream, elttype, string, length, encoding,
14228 force_ellipses, options);
14229 }
14230
14231 /* See language.h. */
14232
14233 void print_typedef (struct type *type, struct symbol *new_symbol,
14234 struct ui_file *stream) const override
14235 {
14236 ada_print_typedef (type, new_symbol, stream);
14237 }
14238
14239 /* See language.h. */
14240
14241 bool is_string_type_p (struct type *type) const override
14242 {
14243 return ada_is_string_type (type);
14244 }
14245
14246 /* See language.h. */
14247
14248 const char *struct_too_deep_ellipsis () const override
14249 { return "(...)"; }
14250
14251 /* See language.h. */
14252
14253 bool c_style_arrays_p () const override
14254 { return false; }
14255
14256 /* See language.h. */
14257
14258 bool store_sym_names_in_linkage_form_p () const override
14259 { return true; }
14260
14261 /* See language.h. */
14262
14263 const struct lang_varobj_ops *varobj_ops () const override
14264 { return &ada_varobj_ops; }
14265
14266 /* See language.h. */
14267
14268 const struct exp_descriptor *expression_ops () const override
14269 { return &ada_exp_descriptor; }
14270
14271 /* See language.h. */
14272
14273 const struct op_print *opcode_print_table () const override
14274 { return ada_op_print_tab; }
14275
14276 protected:
14277 /* See language.h. */
14278
14279 symbol_name_matcher_ftype *get_symbol_name_matcher_inner
14280 (const lookup_name_info &lookup_name) const override
14281 {
14282 return ada_get_symbol_name_matcher (lookup_name);
14283 }
14284 };
14285
14286 /* Single instance of the Ada language class. */
14287
14288 static ada_language ada_language_defn;
14289
14290 /* Command-list for the "set/show ada" prefix command. */
14291 static struct cmd_list_element *set_ada_list;
14292 static struct cmd_list_element *show_ada_list;
14293
14294 static void
14295 initialize_ada_catchpoint_ops (void)
14296 {
14297 struct breakpoint_ops *ops;
14298
14299 initialize_breakpoint_ops ();
14300
14301 ops = &catch_exception_breakpoint_ops;
14302 *ops = bkpt_breakpoint_ops;
14303 ops->allocate_location = allocate_location_exception;
14304 ops->re_set = re_set_exception;
14305 ops->check_status = check_status_exception;
14306 ops->print_it = print_it_exception;
14307 ops->print_one = print_one_exception;
14308 ops->print_mention = print_mention_exception;
14309 ops->print_recreate = print_recreate_exception;
14310
14311 ops = &catch_exception_unhandled_breakpoint_ops;
14312 *ops = bkpt_breakpoint_ops;
14313 ops->allocate_location = allocate_location_exception;
14314 ops->re_set = re_set_exception;
14315 ops->check_status = check_status_exception;
14316 ops->print_it = print_it_exception;
14317 ops->print_one = print_one_exception;
14318 ops->print_mention = print_mention_exception;
14319 ops->print_recreate = print_recreate_exception;
14320
14321 ops = &catch_assert_breakpoint_ops;
14322 *ops = bkpt_breakpoint_ops;
14323 ops->allocate_location = allocate_location_exception;
14324 ops->re_set = re_set_exception;
14325 ops->check_status = check_status_exception;
14326 ops->print_it = print_it_exception;
14327 ops->print_one = print_one_exception;
14328 ops->print_mention = print_mention_exception;
14329 ops->print_recreate = print_recreate_exception;
14330
14331 ops = &catch_handlers_breakpoint_ops;
14332 *ops = bkpt_breakpoint_ops;
14333 ops->allocate_location = allocate_location_exception;
14334 ops->re_set = re_set_exception;
14335 ops->check_status = check_status_exception;
14336 ops->print_it = print_it_exception;
14337 ops->print_one = print_one_exception;
14338 ops->print_mention = print_mention_exception;
14339 ops->print_recreate = print_recreate_exception;
14340 }
14341
14342 /* This module's 'new_objfile' observer. */
14343
14344 static void
14345 ada_new_objfile_observer (struct objfile *objfile)
14346 {
14347 ada_clear_symbol_cache ();
14348 }
14349
14350 /* This module's 'free_objfile' observer. */
14351
14352 static void
14353 ada_free_objfile_observer (struct objfile *objfile)
14354 {
14355 ada_clear_symbol_cache ();
14356 }
14357
14358 void _initialize_ada_language ();
14359 void
14360 _initialize_ada_language ()
14361 {
14362 initialize_ada_catchpoint_ops ();
14363
14364 add_basic_prefix_cmd ("ada", no_class,
14365 _("Prefix command for changing Ada-specific settings."),
14366 &set_ada_list, "set ada ", 0, &setlist);
14367
14368 add_show_prefix_cmd ("ada", no_class,
14369 _("Generic command for showing Ada-specific settings."),
14370 &show_ada_list, "show ada ", 0, &showlist);
14371
14372 add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14373 &trust_pad_over_xvs, _("\
14374 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14375 Show whether an optimization trusting PAD types over XVS types is activated."),
14376 _("\
14377 This is related to the encoding used by the GNAT compiler. The debugger\n\
14378 should normally trust the contents of PAD types, but certain older versions\n\
14379 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14380 to be incorrect. Turning this setting \"off\" allows the debugger to\n\
14381 work around this bug. It is always safe to turn this option \"off\", but\n\
14382 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14383 this option to \"off\" unless necessary."),
14384 NULL, NULL, &set_ada_list, &show_ada_list);
14385
14386 add_setshow_boolean_cmd ("print-signatures", class_vars,
14387 &print_signatures, _("\
14388 Enable or disable the output of formal and return types for functions in the \
14389 overloads selection menu."), _("\
14390 Show whether the output of formal and return types for functions in the \
14391 overloads selection menu is activated."),
14392 NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14393
14394 add_catch_command ("exception", _("\
14395 Catch Ada exceptions, when raised.\n\
14396 Usage: catch exception [ARG] [if CONDITION]\n\
14397 Without any argument, stop when any Ada exception is raised.\n\
14398 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14399 being raised does not have a handler (and will therefore lead to the task's\n\
14400 termination).\n\
14401 Otherwise, the catchpoint only stops when the name of the exception being\n\
14402 raised is the same as ARG.\n\
14403 CONDITION is a boolean expression that is evaluated to see whether the\n\
14404 exception should cause a stop."),
14405 catch_ada_exception_command,
14406 catch_ada_completer,
14407 CATCH_PERMANENT,
14408 CATCH_TEMPORARY);
14409
14410 add_catch_command ("handlers", _("\
14411 Catch Ada exceptions, when handled.\n\
14412 Usage: catch handlers [ARG] [if CONDITION]\n\
14413 Without any argument, stop when any Ada exception is handled.\n\
14414 With an argument, catch only exceptions with the given name.\n\
14415 CONDITION is a boolean expression that is evaluated to see whether the\n\
14416 exception should cause a stop."),
14417 catch_ada_handlers_command,
14418 catch_ada_completer,
14419 CATCH_PERMANENT,
14420 CATCH_TEMPORARY);
14421 add_catch_command ("assert", _("\
14422 Catch failed Ada assertions, when raised.\n\
14423 Usage: catch assert [if CONDITION]\n\
14424 CONDITION is a boolean expression that is evaluated to see whether the\n\
14425 exception should cause a stop."),
14426 catch_assert_command,
14427 NULL,
14428 CATCH_PERMANENT,
14429 CATCH_TEMPORARY);
14430
14431 varsize_limit = 65536;
14432 add_setshow_uinteger_cmd ("varsize-limit", class_support,
14433 &varsize_limit, _("\
14434 Set the maximum number of bytes allowed in a variable-size object."), _("\
14435 Show the maximum number of bytes allowed in a variable-size object."), _("\
14436 Attempts to access an object whose size is not a compile-time constant\n\
14437 and exceeds this limit will cause an error."),
14438 NULL, NULL, &setlist, &showlist);
14439
14440 add_info ("exceptions", info_exceptions_command,
14441 _("\
14442 List all Ada exception names.\n\
14443 Usage: info exceptions [REGEXP]\n\
14444 If a regular expression is passed as an argument, only those matching\n\
14445 the regular expression are listed."));
14446
14447 add_basic_prefix_cmd ("ada", class_maintenance,
14448 _("Set Ada maintenance-related variables."),
14449 &maint_set_ada_cmdlist, "maintenance set ada ",
14450 0/*allow-unknown*/, &maintenance_set_cmdlist);
14451
14452 add_show_prefix_cmd ("ada", class_maintenance,
14453 _("Show Ada maintenance-related variables."),
14454 &maint_show_ada_cmdlist, "maintenance show ada ",
14455 0/*allow-unknown*/, &maintenance_show_cmdlist);
14456
14457 add_setshow_boolean_cmd
14458 ("ignore-descriptive-types", class_maintenance,
14459 &ada_ignore_descriptive_types_p,
14460 _("Set whether descriptive types generated by GNAT should be ignored."),
14461 _("Show whether descriptive types generated by GNAT should be ignored."),
14462 _("\
14463 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14464 DWARF attribute."),
14465 NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14466
14467 decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14468 NULL, xcalloc, xfree);
14469
14470 /* The ada-lang observers. */
14471 gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14472 gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14473 gdb::observers::inferior_exit.attach (ada_inferior_exit);
14474 }