Remove per-language op_name functions
[deliverable/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_decoded_op_name (enum exp_opcode);
131
132 static int numeric_type_p (struct type *);
133
134 static int integer_type_p (struct type *);
135
136 static int scalar_type_p (struct type *);
137
138 static int discrete_type_p (struct type *);
139
140 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
141 int, int);
142
143 static struct value *evaluate_subexp_type (struct expression *, int *);
144
145 static struct type *ada_find_parallel_type_with_name (struct type *,
146 const char *);
147
148 static int is_dynamic_field (struct type *, int);
149
150 static struct type *to_fixed_variant_branch_type (struct type *,
151 const gdb_byte *,
152 CORE_ADDR, struct value *);
153
154 static struct type *to_fixed_array_type (struct type *, struct value *, int);
155
156 static struct type *to_fixed_range_type (struct type *, struct value *);
157
158 static struct type *to_static_fixed_type (struct type *);
159 static struct type *static_unwrap_type (struct type *type);
160
161 static struct value *unwrap_value (struct value *);
162
163 static struct type *constrained_packed_array_type (struct type *, long *);
164
165 static struct type *decode_constrained_packed_array_type (struct type *);
166
167 static long decode_packed_array_bitsize (struct type *);
168
169 static struct value *decode_constrained_packed_array (struct value *);
170
171 static int ada_is_unconstrained_packed_array_type (struct type *);
172
173 static struct value *value_subscript_packed (struct value *, int,
174 struct value **);
175
176 static struct value *coerce_unspec_val_to_type (struct value *,
177 struct type *);
178
179 static int lesseq_defined_than (struct symbol *, struct symbol *);
180
181 static int equiv_types (struct type *, struct type *);
182
183 static int is_name_suffix (const char *);
184
185 static int advance_wild_match (const char **, const char *, char);
186
187 static bool wild_match (const char *name, const char *patn);
188
189 static struct value *ada_coerce_ref (struct value *);
190
191 static LONGEST pos_atr (struct value *);
192
193 static struct value *value_pos_atr (struct type *, struct value *);
194
195 static struct value *val_atr (struct type *, LONGEST);
196
197 static struct value *value_val_atr (struct type *, struct value *);
198
199 static struct symbol *standard_lookup (const char *, const struct block *,
200 domain_enum);
201
202 static struct value *ada_search_struct_field (const char *, struct value *, int,
203 struct type *);
204
205 static int find_struct_field (const char *, struct type *, int,
206 struct type **, int *, int *, int *, int *);
207
208 static int ada_resolve_function (struct block_symbol *, int,
209 struct value **, int, const char *,
210 struct type *, int);
211
212 static int ada_is_direct_array_type (struct type *);
213
214 static struct value *ada_index_struct_field (int, struct value *, int,
215 struct type *);
216
217 static struct value *assign_aggregate (struct value *, struct value *,
218 struct expression *,
219 int *, enum noside);
220
221 static void aggregate_assign_from_choices (struct value *, struct value *,
222 struct expression *,
223 int *, LONGEST *, int *,
224 int, LONGEST, LONGEST);
225
226 static void aggregate_assign_positional (struct value *, struct value *,
227 struct expression *,
228 int *, LONGEST *, int *, int,
229 LONGEST, LONGEST);
230
231
232 static void aggregate_assign_others (struct value *, struct value *,
233 struct expression *,
234 int *, LONGEST *, int, LONGEST, LONGEST);
235
236
237 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
238
239
240 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
241 int *, enum noside);
242
243 static void ada_forward_operator_length (struct expression *, int, int *,
244 int *);
245
246 static struct type *ada_find_any_type (const char *name);
247
248 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
249 (const lookup_name_info &lookup_name);
250
251 \f
252
253 /* The result of a symbol lookup to be stored in our symbol cache. */
254
255 struct cache_entry
256 {
257 /* The name used to perform the lookup. */
258 const char *name;
259 /* The namespace used during the lookup. */
260 domain_enum domain;
261 /* The symbol returned by the lookup, or NULL if no matching symbol
262 was found. */
263 struct symbol *sym;
264 /* The block where the symbol was found, or NULL if no matching
265 symbol was found. */
266 const struct block *block;
267 /* A pointer to the next entry with the same hash. */
268 struct cache_entry *next;
269 };
270
271 /* The Ada symbol cache, used to store the result of Ada-mode symbol
272 lookups in the course of executing the user's commands.
273
274 The cache is implemented using a simple, fixed-sized hash.
275 The size is fixed on the grounds that there are not likely to be
276 all that many symbols looked up during any given session, regardless
277 of the size of the symbol table. If we decide to go to a resizable
278 table, let's just use the stuff from libiberty instead. */
279
280 #define HASH_SIZE 1009
281
282 struct ada_symbol_cache
283 {
284 /* An obstack used to store the entries in our cache. */
285 struct obstack cache_space;
286
287 /* The root of the hash table used to implement our symbol cache. */
288 struct cache_entry *root[HASH_SIZE];
289 };
290
291 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
292
293 /* Maximum-sized dynamic type. */
294 static unsigned int varsize_limit;
295
296 static const char ada_completer_word_break_characters[] =
297 #ifdef VMS
298 " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
299 #else
300 " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
301 #endif
302
303 /* The name of the symbol to use to get the name of the main subprogram. */
304 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
305 = "__gnat_ada_main_program_name";
306
307 /* Limit on the number of warnings to raise per expression evaluation. */
308 static int warning_limit = 2;
309
310 /* Number of warning messages issued; reset to 0 by cleanups after
311 expression evaluation. */
312 static int warnings_issued = 0;
313
314 static const char * const known_runtime_file_name_patterns[] = {
315 ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
316 };
317
318 static const char * const known_auxiliary_function_name_patterns[] = {
319 ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
320 };
321
322 /* Maintenance-related settings for this module. */
323
324 static struct cmd_list_element *maint_set_ada_cmdlist;
325 static struct cmd_list_element *maint_show_ada_cmdlist;
326
327 /* The "maintenance ada set/show ignore-descriptive-type" value. */
328
329 static bool ada_ignore_descriptive_types_p = false;
330
331 /* Inferior-specific data. */
332
333 /* Per-inferior data for this module. */
334
335 struct ada_inferior_data
336 {
337 /* The ada__tags__type_specific_data type, which is used when decoding
338 tagged types. With older versions of GNAT, this type was directly
339 accessible through a component ("tsd") in the object tag. But this
340 is no longer the case, so we cache it for each inferior. */
341 struct type *tsd_type = nullptr;
342
343 /* The exception_support_info data. This data is used to determine
344 how to implement support for Ada exception catchpoints in a given
345 inferior. */
346 const struct exception_support_info *exception_info = nullptr;
347 };
348
349 /* Our key to this module's inferior data. */
350 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
351
352 /* Return our inferior data for the given inferior (INF).
353
354 This function always returns a valid pointer to an allocated
355 ada_inferior_data structure. If INF's inferior data has not
356 been previously set, this functions creates a new one with all
357 fields set to zero, sets INF's inferior to it, and then returns
358 a pointer to that newly allocated ada_inferior_data. */
359
360 static struct ada_inferior_data *
361 get_ada_inferior_data (struct inferior *inf)
362 {
363 struct ada_inferior_data *data;
364
365 data = ada_inferior_data.get (inf);
366 if (data == NULL)
367 data = ada_inferior_data.emplace (inf);
368
369 return data;
370 }
371
372 /* Perform all necessary cleanups regarding our module's inferior data
373 that is required after the inferior INF just exited. */
374
375 static void
376 ada_inferior_exit (struct inferior *inf)
377 {
378 ada_inferior_data.clear (inf);
379 }
380
381
382 /* program-space-specific data. */
383
384 /* This module's per-program-space data. */
385 struct ada_pspace_data
386 {
387 ~ada_pspace_data ()
388 {
389 if (sym_cache != NULL)
390 ada_free_symbol_cache (sym_cache);
391 }
392
393 /* The Ada symbol cache. */
394 struct ada_symbol_cache *sym_cache = nullptr;
395 };
396
397 /* Key to our per-program-space data. */
398 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
399
400 /* Return this module's data for the given program space (PSPACE).
401 If not is found, add a zero'ed one now.
402
403 This function always returns a valid object. */
404
405 static struct ada_pspace_data *
406 get_ada_pspace_data (struct program_space *pspace)
407 {
408 struct ada_pspace_data *data;
409
410 data = ada_pspace_data_handle.get (pspace);
411 if (data == NULL)
412 data = ada_pspace_data_handle.emplace (pspace);
413
414 return data;
415 }
416
417 /* Utilities */
418
419 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
420 all typedef layers have been peeled. Otherwise, return TYPE.
421
422 Normally, we really expect a typedef type to only have 1 typedef layer.
423 In other words, we really expect the target type of a typedef type to be
424 a non-typedef type. This is particularly true for Ada units, because
425 the language does not have a typedef vs not-typedef distinction.
426 In that respect, the Ada compiler has been trying to eliminate as many
427 typedef definitions in the debugging information, since they generally
428 do not bring any extra information (we still use typedef under certain
429 circumstances related mostly to the GNAT encoding).
430
431 Unfortunately, we have seen situations where the debugging information
432 generated by the compiler leads to such multiple typedef layers. For
433 instance, consider the following example with stabs:
434
435 .stabs "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
436 .stabs "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
437
438 This is an error in the debugging information which causes type
439 pck__float_array___XUP to be defined twice, and the second time,
440 it is defined as a typedef of a typedef.
441
442 This is on the fringe of legality as far as debugging information is
443 concerned, and certainly unexpected. But it is easy to handle these
444 situations correctly, so we can afford to be lenient in this case. */
445
446 static struct type *
447 ada_typedef_target_type (struct type *type)
448 {
449 while (type->code () == TYPE_CODE_TYPEDEF)
450 type = TYPE_TARGET_TYPE (type);
451 return type;
452 }
453
454 /* Given DECODED_NAME a string holding a symbol name in its
455 decoded form (ie using the Ada dotted notation), returns
456 its unqualified name. */
457
458 static const char *
459 ada_unqualified_name (const char *decoded_name)
460 {
461 const char *result;
462
463 /* If the decoded name starts with '<', it means that the encoded
464 name does not follow standard naming conventions, and thus that
465 it is not your typical Ada symbol name. Trying to unqualify it
466 is therefore pointless and possibly erroneous. */
467 if (decoded_name[0] == '<')
468 return decoded_name;
469
470 result = strrchr (decoded_name, '.');
471 if (result != NULL)
472 result++; /* Skip the dot... */
473 else
474 result = decoded_name;
475
476 return result;
477 }
478
479 /* Return a string starting with '<', followed by STR, and '>'. */
480
481 static std::string
482 add_angle_brackets (const char *str)
483 {
484 return string_printf ("<%s>", str);
485 }
486
487 /* Assuming V points to an array of S objects, make sure that it contains at
488 least M objects, updating V and S as necessary. */
489
490 #define GROW_VECT(v, s, m) \
491 if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
492
493 /* Assuming VECT points to an array of *SIZE objects of size
494 ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
495 updating *SIZE as necessary and returning the (new) array. */
496
497 static void *
498 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
499 {
500 if (*size < min_size)
501 {
502 *size *= 2;
503 if (*size < min_size)
504 *size = min_size;
505 vect = xrealloc (vect, *size * element_size);
506 }
507 return vect;
508 }
509
510 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
511 suffix of FIELD_NAME beginning "___". */
512
513 static int
514 field_name_match (const char *field_name, const char *target)
515 {
516 int len = strlen (target);
517
518 return
519 (strncmp (field_name, target, len) == 0
520 && (field_name[len] == '\0'
521 || (startswith (field_name + len, "___")
522 && strcmp (field_name + strlen (field_name) - 6,
523 "___XVN") != 0)));
524 }
525
526
527 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
528 a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
529 and return its index. This function also handles fields whose name
530 have ___ suffixes because the compiler sometimes alters their name
531 by adding such a suffix to represent fields with certain constraints.
532 If the field could not be found, return a negative number if
533 MAYBE_MISSING is set. Otherwise raise an error. */
534
535 int
536 ada_get_field_index (const struct type *type, const char *field_name,
537 int maybe_missing)
538 {
539 int fieldno;
540 struct type *struct_type = check_typedef ((struct type *) type);
541
542 for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
543 if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
544 return fieldno;
545
546 if (!maybe_missing)
547 error (_("Unable to find field %s in struct %s. Aborting"),
548 field_name, struct_type->name ());
549
550 return -1;
551 }
552
553 /* The length of the prefix of NAME prior to any "___" suffix. */
554
555 int
556 ada_name_prefix_len (const char *name)
557 {
558 if (name == NULL)
559 return 0;
560 else
561 {
562 const char *p = strstr (name, "___");
563
564 if (p == NULL)
565 return strlen (name);
566 else
567 return p - name;
568 }
569 }
570
571 /* Return non-zero if SUFFIX is a suffix of STR.
572 Return zero if STR is null. */
573
574 static int
575 is_suffix (const char *str, const char *suffix)
576 {
577 int len1, len2;
578
579 if (str == NULL)
580 return 0;
581 len1 = strlen (str);
582 len2 = strlen (suffix);
583 return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
584 }
585
586 /* The contents of value VAL, treated as a value of type TYPE. The
587 result is an lval in memory if VAL is. */
588
589 static struct value *
590 coerce_unspec_val_to_type (struct value *val, struct type *type)
591 {
592 type = ada_check_typedef (type);
593 if (value_type (val) == type)
594 return val;
595 else
596 {
597 struct value *result;
598
599 /* Make sure that the object size is not unreasonable before
600 trying to allocate some memory for it. */
601 ada_ensure_varsize_limit (type);
602
603 if (value_lazy (val)
604 || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
605 result = allocate_value_lazy (type);
606 else
607 {
608 result = allocate_value (type);
609 value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
610 }
611 set_value_component_location (result, val);
612 set_value_bitsize (result, value_bitsize (val));
613 set_value_bitpos (result, value_bitpos (val));
614 if (VALUE_LVAL (result) == lval_memory)
615 set_value_address (result, value_address (val));
616 return result;
617 }
618 }
619
620 static const gdb_byte *
621 cond_offset_host (const gdb_byte *valaddr, long offset)
622 {
623 if (valaddr == NULL)
624 return NULL;
625 else
626 return valaddr + offset;
627 }
628
629 static CORE_ADDR
630 cond_offset_target (CORE_ADDR address, long offset)
631 {
632 if (address == 0)
633 return 0;
634 else
635 return address + offset;
636 }
637
638 /* Issue a warning (as for the definition of warning in utils.c, but
639 with exactly one argument rather than ...), unless the limit on the
640 number of warnings has passed during the evaluation of the current
641 expression. */
642
643 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
644 provided by "complaint". */
645 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
646
647 static void
648 lim_warning (const char *format, ...)
649 {
650 va_list args;
651
652 va_start (args, format);
653 warnings_issued += 1;
654 if (warnings_issued <= warning_limit)
655 vwarning (format, args);
656
657 va_end (args);
658 }
659
660 /* Issue an error if the size of an object of type T is unreasonable,
661 i.e. if it would be a bad idea to allocate a value of this type in
662 GDB. */
663
664 void
665 ada_ensure_varsize_limit (const struct type *type)
666 {
667 if (TYPE_LENGTH (type) > varsize_limit)
668 error (_("object size is larger than varsize-limit"));
669 }
670
671 /* Maximum value of a SIZE-byte signed integer type. */
672 static LONGEST
673 max_of_size (int size)
674 {
675 LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
676
677 return top_bit | (top_bit - 1);
678 }
679
680 /* Minimum value of a SIZE-byte signed integer type. */
681 static LONGEST
682 min_of_size (int size)
683 {
684 return -max_of_size (size) - 1;
685 }
686
687 /* Maximum value of a SIZE-byte unsigned integer type. */
688 static ULONGEST
689 umax_of_size (int size)
690 {
691 ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
692
693 return top_bit | (top_bit - 1);
694 }
695
696 /* Maximum value of integral type T, as a signed quantity. */
697 static LONGEST
698 max_of_type (struct type *t)
699 {
700 if (t->is_unsigned ())
701 return (LONGEST) umax_of_size (TYPE_LENGTH (t));
702 else
703 return max_of_size (TYPE_LENGTH (t));
704 }
705
706 /* Minimum value of integral type T, as a signed quantity. */
707 static LONGEST
708 min_of_type (struct type *t)
709 {
710 if (t->is_unsigned ())
711 return 0;
712 else
713 return min_of_size (TYPE_LENGTH (t));
714 }
715
716 /* The largest value in the domain of TYPE, a discrete type, as an integer. */
717 LONGEST
718 ada_discrete_type_high_bound (struct type *type)
719 {
720 type = resolve_dynamic_type (type, {}, 0);
721 switch (type->code ())
722 {
723 case TYPE_CODE_RANGE:
724 {
725 const dynamic_prop &high = type->bounds ()->high;
726
727 if (high.kind () == PROP_CONST)
728 return high.const_val ();
729 else
730 {
731 gdb_assert (high.kind () == PROP_UNDEFINED);
732
733 /* This happens when trying to evaluate a type's dynamic bound
734 without a live target. There is nothing relevant for us to
735 return here, so return 0. */
736 return 0;
737 }
738 }
739 case TYPE_CODE_ENUM:
740 return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
741 case TYPE_CODE_BOOL:
742 return 1;
743 case TYPE_CODE_CHAR:
744 case TYPE_CODE_INT:
745 return max_of_type (type);
746 default:
747 error (_("Unexpected type in ada_discrete_type_high_bound."));
748 }
749 }
750
751 /* The smallest value in the domain of TYPE, a discrete type, as an integer. */
752 LONGEST
753 ada_discrete_type_low_bound (struct type *type)
754 {
755 type = resolve_dynamic_type (type, {}, 0);
756 switch (type->code ())
757 {
758 case TYPE_CODE_RANGE:
759 {
760 const dynamic_prop &low = type->bounds ()->low;
761
762 if (low.kind () == PROP_CONST)
763 return low.const_val ();
764 else
765 {
766 gdb_assert (low.kind () == PROP_UNDEFINED);
767
768 /* This happens when trying to evaluate a type's dynamic bound
769 without a live target. There is nothing relevant for us to
770 return here, so return 0. */
771 return 0;
772 }
773 }
774 case TYPE_CODE_ENUM:
775 return TYPE_FIELD_ENUMVAL (type, 0);
776 case TYPE_CODE_BOOL:
777 return 0;
778 case TYPE_CODE_CHAR:
779 case TYPE_CODE_INT:
780 return min_of_type (type);
781 default:
782 error (_("Unexpected type in ada_discrete_type_low_bound."));
783 }
784 }
785
786 /* The identity on non-range types. For range types, the underlying
787 non-range scalar type. */
788
789 static struct type *
790 get_base_type (struct type *type)
791 {
792 while (type != NULL && type->code () == TYPE_CODE_RANGE)
793 {
794 if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
795 return type;
796 type = TYPE_TARGET_TYPE (type);
797 }
798 return type;
799 }
800
801 /* Return a decoded version of the given VALUE. This means returning
802 a value whose type is obtained by applying all the GNAT-specific
803 encodings, making the resulting type a static but standard description
804 of the initial type. */
805
806 struct value *
807 ada_get_decoded_value (struct value *value)
808 {
809 struct type *type = ada_check_typedef (value_type (value));
810
811 if (ada_is_array_descriptor_type (type)
812 || (ada_is_constrained_packed_array_type (type)
813 && type->code () != TYPE_CODE_PTR))
814 {
815 if (type->code () == TYPE_CODE_TYPEDEF) /* array access type. */
816 value = ada_coerce_to_simple_array_ptr (value);
817 else
818 value = ada_coerce_to_simple_array (value);
819 }
820 else
821 value = ada_to_fixed_value (value);
822
823 return value;
824 }
825
826 /* Same as ada_get_decoded_value, but with the given TYPE.
827 Because there is no associated actual value for this type,
828 the resulting type might be a best-effort approximation in
829 the case of dynamic types. */
830
831 struct type *
832 ada_get_decoded_type (struct type *type)
833 {
834 type = to_static_fixed_type (type);
835 if (ada_is_constrained_packed_array_type (type))
836 type = ada_coerce_to_simple_array_type (type);
837 return type;
838 }
839
840 \f
841
842 /* Language Selection */
843
844 /* If the main program is in Ada, return language_ada, otherwise return LANG
845 (the main program is in Ada iif the adainit symbol is found). */
846
847 static enum language
848 ada_update_initial_language (enum language lang)
849 {
850 if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
851 return language_ada;
852
853 return lang;
854 }
855
856 /* If the main procedure is written in Ada, then return its name.
857 The result is good until the next call. Return NULL if the main
858 procedure doesn't appear to be in Ada. */
859
860 char *
861 ada_main_name (void)
862 {
863 struct bound_minimal_symbol msym;
864 static gdb::unique_xmalloc_ptr<char> main_program_name;
865
866 /* For Ada, the name of the main procedure is stored in a specific
867 string constant, generated by the binder. Look for that symbol,
868 extract its address, and then read that string. If we didn't find
869 that string, then most probably the main procedure is not written
870 in Ada. */
871 msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
872
873 if (msym.minsym != NULL)
874 {
875 CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
876 if (main_program_name_addr == 0)
877 error (_("Invalid address for Ada main program name."));
878
879 main_program_name = target_read_string (main_program_name_addr, 1024);
880 return main_program_name.get ();
881 }
882
883 /* The main procedure doesn't seem to be in Ada. */
884 return NULL;
885 }
886 \f
887 /* Symbols */
888
889 /* Table of Ada operators and their GNAT-encoded names. Last entry is pair
890 of NULLs. */
891
892 const struct ada_opname_map ada_opname_table[] = {
893 {"Oadd", "\"+\"", BINOP_ADD},
894 {"Osubtract", "\"-\"", BINOP_SUB},
895 {"Omultiply", "\"*\"", BINOP_MUL},
896 {"Odivide", "\"/\"", BINOP_DIV},
897 {"Omod", "\"mod\"", BINOP_MOD},
898 {"Orem", "\"rem\"", BINOP_REM},
899 {"Oexpon", "\"**\"", BINOP_EXP},
900 {"Olt", "\"<\"", BINOP_LESS},
901 {"Ole", "\"<=\"", BINOP_LEQ},
902 {"Ogt", "\">\"", BINOP_GTR},
903 {"Oge", "\">=\"", BINOP_GEQ},
904 {"Oeq", "\"=\"", BINOP_EQUAL},
905 {"One", "\"/=\"", BINOP_NOTEQUAL},
906 {"Oand", "\"and\"", BINOP_BITWISE_AND},
907 {"Oor", "\"or\"", BINOP_BITWISE_IOR},
908 {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
909 {"Oconcat", "\"&\"", BINOP_CONCAT},
910 {"Oabs", "\"abs\"", UNOP_ABS},
911 {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
912 {"Oadd", "\"+\"", UNOP_PLUS},
913 {"Osubtract", "\"-\"", UNOP_NEG},
914 {NULL, NULL}
915 };
916
917 /* The "encoded" form of DECODED, according to GNAT conventions. If
918 THROW_ERRORS, throw an error if invalid operator name is found.
919 Otherwise, return the empty string in that case. */
920
921 static std::string
922 ada_encode_1 (const char *decoded, bool throw_errors)
923 {
924 if (decoded == NULL)
925 return {};
926
927 std::string encoding_buffer;
928 for (const char *p = decoded; *p != '\0'; p += 1)
929 {
930 if (*p == '.')
931 encoding_buffer.append ("__");
932 else if (*p == '"')
933 {
934 const struct ada_opname_map *mapping;
935
936 for (mapping = ada_opname_table;
937 mapping->encoded != NULL
938 && !startswith (p, mapping->decoded); mapping += 1)
939 ;
940 if (mapping->encoded == NULL)
941 {
942 if (throw_errors)
943 error (_("invalid Ada operator name: %s"), p);
944 else
945 return {};
946 }
947 encoding_buffer.append (mapping->encoded);
948 break;
949 }
950 else
951 encoding_buffer.push_back (*p);
952 }
953
954 return encoding_buffer;
955 }
956
957 /* The "encoded" form of DECODED, according to GNAT conventions. */
958
959 std::string
960 ada_encode (const char *decoded)
961 {
962 return ada_encode_1 (decoded, true);
963 }
964
965 /* Return NAME folded to lower case, or, if surrounded by single
966 quotes, unfolded, but with the quotes stripped away. Result good
967 to next call. */
968
969 static char *
970 ada_fold_name (gdb::string_view name)
971 {
972 static char *fold_buffer = NULL;
973 static size_t fold_buffer_size = 0;
974
975 int len = name.size ();
976 GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
977
978 if (name[0] == '\'')
979 {
980 strncpy (fold_buffer, name.data () + 1, len - 2);
981 fold_buffer[len - 2] = '\000';
982 }
983 else
984 {
985 int i;
986
987 for (i = 0; i <= len; i += 1)
988 fold_buffer[i] = tolower (name[i]);
989 }
990
991 return fold_buffer;
992 }
993
994 /* Return nonzero if C is either a digit or a lowercase alphabet character. */
995
996 static int
997 is_lower_alphanum (const char c)
998 {
999 return (isdigit (c) || (isalpha (c) && islower (c)));
1000 }
1001
1002 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1003 This function saves in LEN the length of that same symbol name but
1004 without either of these suffixes:
1005 . .{DIGIT}+
1006 . ${DIGIT}+
1007 . ___{DIGIT}+
1008 . __{DIGIT}+.
1009
1010 These are suffixes introduced by the compiler for entities such as
1011 nested subprogram for instance, in order to avoid name clashes.
1012 They do not serve any purpose for the debugger. */
1013
1014 static void
1015 ada_remove_trailing_digits (const char *encoded, int *len)
1016 {
1017 if (*len > 1 && isdigit (encoded[*len - 1]))
1018 {
1019 int i = *len - 2;
1020
1021 while (i > 0 && isdigit (encoded[i]))
1022 i--;
1023 if (i >= 0 && encoded[i] == '.')
1024 *len = i;
1025 else if (i >= 0 && encoded[i] == '$')
1026 *len = i;
1027 else if (i >= 2 && startswith (encoded + i - 2, "___"))
1028 *len = i - 2;
1029 else if (i >= 1 && startswith (encoded + i - 1, "__"))
1030 *len = i - 1;
1031 }
1032 }
1033
1034 /* Remove the suffix introduced by the compiler for protected object
1035 subprograms. */
1036
1037 static void
1038 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1039 {
1040 /* Remove trailing N. */
1041
1042 /* Protected entry subprograms are broken into two
1043 separate subprograms: The first one is unprotected, and has
1044 a 'N' suffix; the second is the protected version, and has
1045 the 'P' suffix. The second calls the first one after handling
1046 the protection. Since the P subprograms are internally generated,
1047 we leave these names undecoded, giving the user a clue that this
1048 entity is internal. */
1049
1050 if (*len > 1
1051 && encoded[*len - 1] == 'N'
1052 && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1053 *len = *len - 1;
1054 }
1055
1056 /* If ENCODED follows the GNAT entity encoding conventions, then return
1057 the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is
1058 replaced by ENCODED. */
1059
1060 std::string
1061 ada_decode (const char *encoded)
1062 {
1063 int i, j;
1064 int len0;
1065 const char *p;
1066 int at_start_name;
1067 std::string decoded;
1068
1069 /* With function descriptors on PPC64, the value of a symbol named
1070 ".FN", if it exists, is the entry point of the function "FN". */
1071 if (encoded[0] == '.')
1072 encoded += 1;
1073
1074 /* The name of the Ada main procedure starts with "_ada_".
1075 This prefix is not part of the decoded name, so skip this part
1076 if we see this prefix. */
1077 if (startswith (encoded, "_ada_"))
1078 encoded += 5;
1079
1080 /* If the name starts with '_', then it is not a properly encoded
1081 name, so do not attempt to decode it. Similarly, if the name
1082 starts with '<', the name should not be decoded. */
1083 if (encoded[0] == '_' || encoded[0] == '<')
1084 goto Suppress;
1085
1086 len0 = strlen (encoded);
1087
1088 ada_remove_trailing_digits (encoded, &len0);
1089 ada_remove_po_subprogram_suffix (encoded, &len0);
1090
1091 /* Remove the ___X.* suffix if present. Do not forget to verify that
1092 the suffix is located before the current "end" of ENCODED. We want
1093 to avoid re-matching parts of ENCODED that have previously been
1094 marked as discarded (by decrementing LEN0). */
1095 p = strstr (encoded, "___");
1096 if (p != NULL && p - encoded < len0 - 3)
1097 {
1098 if (p[3] == 'X')
1099 len0 = p - encoded;
1100 else
1101 goto Suppress;
1102 }
1103
1104 /* Remove any trailing TKB suffix. It tells us that this symbol
1105 is for the body of a task, but that information does not actually
1106 appear in the decoded name. */
1107
1108 if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1109 len0 -= 3;
1110
1111 /* Remove any trailing TB suffix. The TB suffix is slightly different
1112 from the TKB suffix because it is used for non-anonymous task
1113 bodies. */
1114
1115 if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1116 len0 -= 2;
1117
1118 /* Remove trailing "B" suffixes. */
1119 /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */
1120
1121 if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1122 len0 -= 1;
1123
1124 /* Make decoded big enough for possible expansion by operator name. */
1125
1126 decoded.resize (2 * len0 + 1, 'X');
1127
1128 /* Remove trailing __{digit}+ or trailing ${digit}+. */
1129
1130 if (len0 > 1 && isdigit (encoded[len0 - 1]))
1131 {
1132 i = len0 - 2;
1133 while ((i >= 0 && isdigit (encoded[i]))
1134 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1135 i -= 1;
1136 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1137 len0 = i - 1;
1138 else if (encoded[i] == '$')
1139 len0 = i;
1140 }
1141
1142 /* The first few characters that are not alphabetic are not part
1143 of any encoding we use, so we can copy them over verbatim. */
1144
1145 for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1146 decoded[j] = encoded[i];
1147
1148 at_start_name = 1;
1149 while (i < len0)
1150 {
1151 /* Is this a symbol function? */
1152 if (at_start_name && encoded[i] == 'O')
1153 {
1154 int k;
1155
1156 for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1157 {
1158 int op_len = strlen (ada_opname_table[k].encoded);
1159 if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1160 op_len - 1) == 0)
1161 && !isalnum (encoded[i + op_len]))
1162 {
1163 strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1164 at_start_name = 0;
1165 i += op_len;
1166 j += strlen (ada_opname_table[k].decoded);
1167 break;
1168 }
1169 }
1170 if (ada_opname_table[k].encoded != NULL)
1171 continue;
1172 }
1173 at_start_name = 0;
1174
1175 /* Replace "TK__" with "__", which will eventually be translated
1176 into "." (just below). */
1177
1178 if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1179 i += 2;
1180
1181 /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1182 be translated into "." (just below). These are internal names
1183 generated for anonymous blocks inside which our symbol is nested. */
1184
1185 if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1186 && encoded [i+2] == 'B' && encoded [i+3] == '_'
1187 && isdigit (encoded [i+4]))
1188 {
1189 int k = i + 5;
1190
1191 while (k < len0 && isdigit (encoded[k]))
1192 k++; /* Skip any extra digit. */
1193
1194 /* Double-check that the "__B_{DIGITS}+" sequence we found
1195 is indeed followed by "__". */
1196 if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1197 i = k;
1198 }
1199
1200 /* Remove _E{DIGITS}+[sb] */
1201
1202 /* Just as for protected object subprograms, there are 2 categories
1203 of subprograms created by the compiler for each entry. The first
1204 one implements the actual entry code, and has a suffix following
1205 the convention above; the second one implements the barrier and
1206 uses the same convention as above, except that the 'E' is replaced
1207 by a 'B'.
1208
1209 Just as above, we do not decode the name of barrier functions
1210 to give the user a clue that the code he is debugging has been
1211 internally generated. */
1212
1213 if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1214 && isdigit (encoded[i+2]))
1215 {
1216 int k = i + 3;
1217
1218 while (k < len0 && isdigit (encoded[k]))
1219 k++;
1220
1221 if (k < len0
1222 && (encoded[k] == 'b' || encoded[k] == 's'))
1223 {
1224 k++;
1225 /* Just as an extra precaution, make sure that if this
1226 suffix is followed by anything else, it is a '_'.
1227 Otherwise, we matched this sequence by accident. */
1228 if (k == len0
1229 || (k < len0 && encoded[k] == '_'))
1230 i = k;
1231 }
1232 }
1233
1234 /* Remove trailing "N" in [a-z0-9]+N__. The N is added by
1235 the GNAT front-end in protected object subprograms. */
1236
1237 if (i < len0 + 3
1238 && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1239 {
1240 /* Backtrack a bit up until we reach either the begining of
1241 the encoded name, or "__". Make sure that we only find
1242 digits or lowercase characters. */
1243 const char *ptr = encoded + i - 1;
1244
1245 while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1246 ptr--;
1247 if (ptr < encoded
1248 || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1249 i++;
1250 }
1251
1252 if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1253 {
1254 /* This is a X[bn]* sequence not separated from the previous
1255 part of the name with a non-alpha-numeric character (in other
1256 words, immediately following an alpha-numeric character), then
1257 verify that it is placed at the end of the encoded name. If
1258 not, then the encoding is not valid and we should abort the
1259 decoding. Otherwise, just skip it, it is used in body-nested
1260 package names. */
1261 do
1262 i += 1;
1263 while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1264 if (i < len0)
1265 goto Suppress;
1266 }
1267 else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1268 {
1269 /* Replace '__' by '.'. */
1270 decoded[j] = '.';
1271 at_start_name = 1;
1272 i += 2;
1273 j += 1;
1274 }
1275 else
1276 {
1277 /* It's a character part of the decoded name, so just copy it
1278 over. */
1279 decoded[j] = encoded[i];
1280 i += 1;
1281 j += 1;
1282 }
1283 }
1284 decoded.resize (j);
1285
1286 /* Decoded names should never contain any uppercase character.
1287 Double-check this, and abort the decoding if we find one. */
1288
1289 for (i = 0; i < decoded.length(); ++i)
1290 if (isupper (decoded[i]) || decoded[i] == ' ')
1291 goto Suppress;
1292
1293 return decoded;
1294
1295 Suppress:
1296 if (encoded[0] == '<')
1297 decoded = encoded;
1298 else
1299 decoded = '<' + std::string(encoded) + '>';
1300 return decoded;
1301
1302 }
1303
1304 /* Table for keeping permanent unique copies of decoded names. Once
1305 allocated, names in this table are never released. While this is a
1306 storage leak, it should not be significant unless there are massive
1307 changes in the set of decoded names in successive versions of a
1308 symbol table loaded during a single session. */
1309 static struct htab *decoded_names_store;
1310
1311 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1312 in the language-specific part of GSYMBOL, if it has not been
1313 previously computed. Tries to save the decoded name in the same
1314 obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1315 in any case, the decoded symbol has a lifetime at least that of
1316 GSYMBOL).
1317 The GSYMBOL parameter is "mutable" in the C++ sense: logically
1318 const, but nevertheless modified to a semantically equivalent form
1319 when a decoded name is cached in it. */
1320
1321 const char *
1322 ada_decode_symbol (const struct general_symbol_info *arg)
1323 {
1324 struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1325 const char **resultp =
1326 &gsymbol->language_specific.demangled_name;
1327
1328 if (!gsymbol->ada_mangled)
1329 {
1330 std::string decoded = ada_decode (gsymbol->linkage_name ());
1331 struct obstack *obstack = gsymbol->language_specific.obstack;
1332
1333 gsymbol->ada_mangled = 1;
1334
1335 if (obstack != NULL)
1336 *resultp = obstack_strdup (obstack, decoded.c_str ());
1337 else
1338 {
1339 /* Sometimes, we can't find a corresponding objfile, in
1340 which case, we put the result on the heap. Since we only
1341 decode when needed, we hope this usually does not cause a
1342 significant memory leak (FIXME). */
1343
1344 char **slot = (char **) htab_find_slot (decoded_names_store,
1345 decoded.c_str (), INSERT);
1346
1347 if (*slot == NULL)
1348 *slot = xstrdup (decoded.c_str ());
1349 *resultp = *slot;
1350 }
1351 }
1352
1353 return *resultp;
1354 }
1355
1356 static char *
1357 ada_la_decode (const char *encoded, int options)
1358 {
1359 return xstrdup (ada_decode (encoded).c_str ());
1360 }
1361
1362 \f
1363
1364 /* Arrays */
1365
1366 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1367 generated by the GNAT compiler to describe the index type used
1368 for each dimension of an array, check whether it follows the latest
1369 known encoding. If not, fix it up to conform to the latest encoding.
1370 Otherwise, do nothing. This function also does nothing if
1371 INDEX_DESC_TYPE is NULL.
1372
1373 The GNAT encoding used to describe the array index type evolved a bit.
1374 Initially, the information would be provided through the name of each
1375 field of the structure type only, while the type of these fields was
1376 described as unspecified and irrelevant. The debugger was then expected
1377 to perform a global type lookup using the name of that field in order
1378 to get access to the full index type description. Because these global
1379 lookups can be very expensive, the encoding was later enhanced to make
1380 the global lookup unnecessary by defining the field type as being
1381 the full index type description.
1382
1383 The purpose of this routine is to allow us to support older versions
1384 of the compiler by detecting the use of the older encoding, and by
1385 fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1386 we essentially replace each field's meaningless type by the associated
1387 index subtype). */
1388
1389 void
1390 ada_fixup_array_indexes_type (struct type *index_desc_type)
1391 {
1392 int i;
1393
1394 if (index_desc_type == NULL)
1395 return;
1396 gdb_assert (index_desc_type->num_fields () > 0);
1397
1398 /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1399 to check one field only, no need to check them all). If not, return
1400 now.
1401
1402 If our INDEX_DESC_TYPE was generated using the older encoding,
1403 the field type should be a meaningless integer type whose name
1404 is not equal to the field name. */
1405 if (index_desc_type->field (0).type ()->name () != NULL
1406 && strcmp (index_desc_type->field (0).type ()->name (),
1407 TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1408 return;
1409
1410 /* Fixup each field of INDEX_DESC_TYPE. */
1411 for (i = 0; i < index_desc_type->num_fields (); i++)
1412 {
1413 const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1414 struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1415
1416 if (raw_type)
1417 index_desc_type->field (i).set_type (raw_type);
1418 }
1419 }
1420
1421 /* The desc_* routines return primitive portions of array descriptors
1422 (fat pointers). */
1423
1424 /* The descriptor or array type, if any, indicated by TYPE; removes
1425 level of indirection, if needed. */
1426
1427 static struct type *
1428 desc_base_type (struct type *type)
1429 {
1430 if (type == NULL)
1431 return NULL;
1432 type = ada_check_typedef (type);
1433 if (type->code () == TYPE_CODE_TYPEDEF)
1434 type = ada_typedef_target_type (type);
1435
1436 if (type != NULL
1437 && (type->code () == TYPE_CODE_PTR
1438 || type->code () == TYPE_CODE_REF))
1439 return ada_check_typedef (TYPE_TARGET_TYPE (type));
1440 else
1441 return type;
1442 }
1443
1444 /* True iff TYPE indicates a "thin" array pointer type. */
1445
1446 static int
1447 is_thin_pntr (struct type *type)
1448 {
1449 return
1450 is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1451 || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1452 }
1453
1454 /* The descriptor type for thin pointer type TYPE. */
1455
1456 static struct type *
1457 thin_descriptor_type (struct type *type)
1458 {
1459 struct type *base_type = desc_base_type (type);
1460
1461 if (base_type == NULL)
1462 return NULL;
1463 if (is_suffix (ada_type_name (base_type), "___XVE"))
1464 return base_type;
1465 else
1466 {
1467 struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1468
1469 if (alt_type == NULL)
1470 return base_type;
1471 else
1472 return alt_type;
1473 }
1474 }
1475
1476 /* A pointer to the array data for thin-pointer value VAL. */
1477
1478 static struct value *
1479 thin_data_pntr (struct value *val)
1480 {
1481 struct type *type = ada_check_typedef (value_type (val));
1482 struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1483
1484 data_type = lookup_pointer_type (data_type);
1485
1486 if (type->code () == TYPE_CODE_PTR)
1487 return value_cast (data_type, value_copy (val));
1488 else
1489 return value_from_longest (data_type, value_address (val));
1490 }
1491
1492 /* True iff TYPE indicates a "thick" array pointer type. */
1493
1494 static int
1495 is_thick_pntr (struct type *type)
1496 {
1497 type = desc_base_type (type);
1498 return (type != NULL && type->code () == TYPE_CODE_STRUCT
1499 && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1500 }
1501
1502 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1503 pointer to one, the type of its bounds data; otherwise, NULL. */
1504
1505 static struct type *
1506 desc_bounds_type (struct type *type)
1507 {
1508 struct type *r;
1509
1510 type = desc_base_type (type);
1511
1512 if (type == NULL)
1513 return NULL;
1514 else if (is_thin_pntr (type))
1515 {
1516 type = thin_descriptor_type (type);
1517 if (type == NULL)
1518 return NULL;
1519 r = lookup_struct_elt_type (type, "BOUNDS", 1);
1520 if (r != NULL)
1521 return ada_check_typedef (r);
1522 }
1523 else if (type->code () == TYPE_CODE_STRUCT)
1524 {
1525 r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1526 if (r != NULL)
1527 return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1528 }
1529 return NULL;
1530 }
1531
1532 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1533 one, a pointer to its bounds data. Otherwise NULL. */
1534
1535 static struct value *
1536 desc_bounds (struct value *arr)
1537 {
1538 struct type *type = ada_check_typedef (value_type (arr));
1539
1540 if (is_thin_pntr (type))
1541 {
1542 struct type *bounds_type =
1543 desc_bounds_type (thin_descriptor_type (type));
1544 LONGEST addr;
1545
1546 if (bounds_type == NULL)
1547 error (_("Bad GNAT array descriptor"));
1548
1549 /* NOTE: The following calculation is not really kosher, but
1550 since desc_type is an XVE-encoded type (and shouldn't be),
1551 the correct calculation is a real pain. FIXME (and fix GCC). */
1552 if (type->code () == TYPE_CODE_PTR)
1553 addr = value_as_long (arr);
1554 else
1555 addr = value_address (arr);
1556
1557 return
1558 value_from_longest (lookup_pointer_type (bounds_type),
1559 addr - TYPE_LENGTH (bounds_type));
1560 }
1561
1562 else if (is_thick_pntr (type))
1563 {
1564 struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1565 _("Bad GNAT array descriptor"));
1566 struct type *p_bounds_type = value_type (p_bounds);
1567
1568 if (p_bounds_type
1569 && p_bounds_type->code () == TYPE_CODE_PTR)
1570 {
1571 struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1572
1573 if (target_type->is_stub ())
1574 p_bounds = value_cast (lookup_pointer_type
1575 (ada_check_typedef (target_type)),
1576 p_bounds);
1577 }
1578 else
1579 error (_("Bad GNAT array descriptor"));
1580
1581 return p_bounds;
1582 }
1583 else
1584 return NULL;
1585 }
1586
1587 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1588 position of the field containing the address of the bounds data. */
1589
1590 static int
1591 fat_pntr_bounds_bitpos (struct type *type)
1592 {
1593 return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1594 }
1595
1596 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1597 size of the field containing the address of the bounds data. */
1598
1599 static int
1600 fat_pntr_bounds_bitsize (struct type *type)
1601 {
1602 type = desc_base_type (type);
1603
1604 if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1605 return TYPE_FIELD_BITSIZE (type, 1);
1606 else
1607 return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
1608 }
1609
1610 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1611 pointer to one, the type of its array data (a array-with-no-bounds type);
1612 otherwise, NULL. Use ada_type_of_array to get an array type with bounds
1613 data. */
1614
1615 static struct type *
1616 desc_data_target_type (struct type *type)
1617 {
1618 type = desc_base_type (type);
1619
1620 /* NOTE: The following is bogus; see comment in desc_bounds. */
1621 if (is_thin_pntr (type))
1622 return desc_base_type (thin_descriptor_type (type)->field (1).type ());
1623 else if (is_thick_pntr (type))
1624 {
1625 struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1626
1627 if (data_type
1628 && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1629 return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1630 }
1631
1632 return NULL;
1633 }
1634
1635 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1636 its array data. */
1637
1638 static struct value *
1639 desc_data (struct value *arr)
1640 {
1641 struct type *type = value_type (arr);
1642
1643 if (is_thin_pntr (type))
1644 return thin_data_pntr (arr);
1645 else if (is_thick_pntr (type))
1646 return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1647 _("Bad GNAT array descriptor"));
1648 else
1649 return NULL;
1650 }
1651
1652
1653 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1654 position of the field containing the address of the data. */
1655
1656 static int
1657 fat_pntr_data_bitpos (struct type *type)
1658 {
1659 return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1660 }
1661
1662 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1663 size of the field containing the address of the data. */
1664
1665 static int
1666 fat_pntr_data_bitsize (struct type *type)
1667 {
1668 type = desc_base_type (type);
1669
1670 if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1671 return TYPE_FIELD_BITSIZE (type, 0);
1672 else
1673 return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
1674 }
1675
1676 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1677 the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1678 bound, if WHICH is 1. The first bound is I=1. */
1679
1680 static struct value *
1681 desc_one_bound (struct value *bounds, int i, int which)
1682 {
1683 char bound_name[20];
1684 xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1685 which ? 'U' : 'L', i - 1);
1686 return value_struct_elt (&bounds, NULL, bound_name, NULL,
1687 _("Bad GNAT array descriptor bounds"));
1688 }
1689
1690 /* If BOUNDS is an array-bounds structure type, return the bit position
1691 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1692 bound, if WHICH is 1. The first bound is I=1. */
1693
1694 static int
1695 desc_bound_bitpos (struct type *type, int i, int which)
1696 {
1697 return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1698 }
1699
1700 /* If BOUNDS is an array-bounds structure type, return the bit field size
1701 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1702 bound, if WHICH is 1. The first bound is I=1. */
1703
1704 static int
1705 desc_bound_bitsize (struct type *type, int i, int which)
1706 {
1707 type = desc_base_type (type);
1708
1709 if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1710 return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1711 else
1712 return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
1713 }
1714
1715 /* If TYPE is the type of an array-bounds structure, the type of its
1716 Ith bound (numbering from 1). Otherwise, NULL. */
1717
1718 static struct type *
1719 desc_index_type (struct type *type, int i)
1720 {
1721 type = desc_base_type (type);
1722
1723 if (type->code () == TYPE_CODE_STRUCT)
1724 {
1725 char bound_name[20];
1726 xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1727 return lookup_struct_elt_type (type, bound_name, 1);
1728 }
1729 else
1730 return NULL;
1731 }
1732
1733 /* The number of index positions in the array-bounds type TYPE.
1734 Return 0 if TYPE is NULL. */
1735
1736 static int
1737 desc_arity (struct type *type)
1738 {
1739 type = desc_base_type (type);
1740
1741 if (type != NULL)
1742 return type->num_fields () / 2;
1743 return 0;
1744 }
1745
1746 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or
1747 an array descriptor type (representing an unconstrained array
1748 type). */
1749
1750 static int
1751 ada_is_direct_array_type (struct type *type)
1752 {
1753 if (type == NULL)
1754 return 0;
1755 type = ada_check_typedef (type);
1756 return (type->code () == TYPE_CODE_ARRAY
1757 || ada_is_array_descriptor_type (type));
1758 }
1759
1760 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1761 * to one. */
1762
1763 static int
1764 ada_is_array_type (struct type *type)
1765 {
1766 while (type != NULL
1767 && (type->code () == TYPE_CODE_PTR
1768 || type->code () == TYPE_CODE_REF))
1769 type = TYPE_TARGET_TYPE (type);
1770 return ada_is_direct_array_type (type);
1771 }
1772
1773 /* Non-zero iff TYPE is a simple array type or pointer to one. */
1774
1775 int
1776 ada_is_simple_array_type (struct type *type)
1777 {
1778 if (type == NULL)
1779 return 0;
1780 type = ada_check_typedef (type);
1781 return (type->code () == TYPE_CODE_ARRAY
1782 || (type->code () == TYPE_CODE_PTR
1783 && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1784 == TYPE_CODE_ARRAY)));
1785 }
1786
1787 /* Non-zero iff TYPE belongs to a GNAT array descriptor. */
1788
1789 int
1790 ada_is_array_descriptor_type (struct type *type)
1791 {
1792 struct type *data_type = desc_data_target_type (type);
1793
1794 if (type == NULL)
1795 return 0;
1796 type = ada_check_typedef (type);
1797 return (data_type != NULL
1798 && data_type->code () == TYPE_CODE_ARRAY
1799 && desc_arity (desc_bounds_type (type)) > 0);
1800 }
1801
1802 /* Non-zero iff type is a partially mal-formed GNAT array
1803 descriptor. FIXME: This is to compensate for some problems with
1804 debugging output from GNAT. Re-examine periodically to see if it
1805 is still needed. */
1806
1807 int
1808 ada_is_bogus_array_descriptor (struct type *type)
1809 {
1810 return
1811 type != NULL
1812 && type->code () == TYPE_CODE_STRUCT
1813 && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1814 || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1815 && !ada_is_array_descriptor_type (type);
1816 }
1817
1818
1819 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1820 (fat pointer) returns the type of the array data described---specifically,
1821 a pointer-to-array type. If BOUNDS is non-zero, the bounds data are filled
1822 in from the descriptor; otherwise, they are left unspecified. If
1823 the ARR denotes a null array descriptor and BOUNDS is non-zero,
1824 returns NULL. The result is simply the type of ARR if ARR is not
1825 a descriptor. */
1826
1827 static struct type *
1828 ada_type_of_array (struct value *arr, int bounds)
1829 {
1830 if (ada_is_constrained_packed_array_type (value_type (arr)))
1831 return decode_constrained_packed_array_type (value_type (arr));
1832
1833 if (!ada_is_array_descriptor_type (value_type (arr)))
1834 return value_type (arr);
1835
1836 if (!bounds)
1837 {
1838 struct type *array_type =
1839 ada_check_typedef (desc_data_target_type (value_type (arr)));
1840
1841 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1842 TYPE_FIELD_BITSIZE (array_type, 0) =
1843 decode_packed_array_bitsize (value_type (arr));
1844
1845 return array_type;
1846 }
1847 else
1848 {
1849 struct type *elt_type;
1850 int arity;
1851 struct value *descriptor;
1852
1853 elt_type = ada_array_element_type (value_type (arr), -1);
1854 arity = ada_array_arity (value_type (arr));
1855
1856 if (elt_type == NULL || arity == 0)
1857 return ada_check_typedef (value_type (arr));
1858
1859 descriptor = desc_bounds (arr);
1860 if (value_as_long (descriptor) == 0)
1861 return NULL;
1862 while (arity > 0)
1863 {
1864 struct type *range_type = alloc_type_copy (value_type (arr));
1865 struct type *array_type = alloc_type_copy (value_type (arr));
1866 struct value *low = desc_one_bound (descriptor, arity, 0);
1867 struct value *high = desc_one_bound (descriptor, arity, 1);
1868
1869 arity -= 1;
1870 create_static_range_type (range_type, value_type (low),
1871 longest_to_int (value_as_long (low)),
1872 longest_to_int (value_as_long (high)));
1873 elt_type = create_array_type (array_type, elt_type, range_type);
1874
1875 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1876 {
1877 /* We need to store the element packed bitsize, as well as
1878 recompute the array size, because it was previously
1879 computed based on the unpacked element size. */
1880 LONGEST lo = value_as_long (low);
1881 LONGEST hi = value_as_long (high);
1882
1883 TYPE_FIELD_BITSIZE (elt_type, 0) =
1884 decode_packed_array_bitsize (value_type (arr));
1885 /* If the array has no element, then the size is already
1886 zero, and does not need to be recomputed. */
1887 if (lo < hi)
1888 {
1889 int array_bitsize =
1890 (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1891
1892 TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1893 }
1894 }
1895 }
1896
1897 return lookup_pointer_type (elt_type);
1898 }
1899 }
1900
1901 /* If ARR does not represent an array, returns ARR unchanged.
1902 Otherwise, returns either a standard GDB array with bounds set
1903 appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1904 GDB array. Returns NULL if ARR is a null fat pointer. */
1905
1906 struct value *
1907 ada_coerce_to_simple_array_ptr (struct value *arr)
1908 {
1909 if (ada_is_array_descriptor_type (value_type (arr)))
1910 {
1911 struct type *arrType = ada_type_of_array (arr, 1);
1912
1913 if (arrType == NULL)
1914 return NULL;
1915 return value_cast (arrType, value_copy (desc_data (arr)));
1916 }
1917 else if (ada_is_constrained_packed_array_type (value_type (arr)))
1918 return decode_constrained_packed_array (arr);
1919 else
1920 return arr;
1921 }
1922
1923 /* If ARR does not represent an array, returns ARR unchanged.
1924 Otherwise, returns a standard GDB array describing ARR (which may
1925 be ARR itself if it already is in the proper form). */
1926
1927 struct value *
1928 ada_coerce_to_simple_array (struct value *arr)
1929 {
1930 if (ada_is_array_descriptor_type (value_type (arr)))
1931 {
1932 struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1933
1934 if (arrVal == NULL)
1935 error (_("Bounds unavailable for null array pointer."));
1936 ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1937 return value_ind (arrVal);
1938 }
1939 else if (ada_is_constrained_packed_array_type (value_type (arr)))
1940 return decode_constrained_packed_array (arr);
1941 else
1942 return arr;
1943 }
1944
1945 /* If TYPE represents a GNAT array type, return it translated to an
1946 ordinary GDB array type (possibly with BITSIZE fields indicating
1947 packing). For other types, is the identity. */
1948
1949 struct type *
1950 ada_coerce_to_simple_array_type (struct type *type)
1951 {
1952 if (ada_is_constrained_packed_array_type (type))
1953 return decode_constrained_packed_array_type (type);
1954
1955 if (ada_is_array_descriptor_type (type))
1956 return ada_check_typedef (desc_data_target_type (type));
1957
1958 return type;
1959 }
1960
1961 /* Non-zero iff TYPE represents a standard GNAT packed-array type. */
1962
1963 static int
1964 ada_is_gnat_encoded_packed_array_type (struct type *type)
1965 {
1966 if (type == NULL)
1967 return 0;
1968 type = desc_base_type (type);
1969 type = ada_check_typedef (type);
1970 return
1971 ada_type_name (type) != NULL
1972 && strstr (ada_type_name (type), "___XP") != NULL;
1973 }
1974
1975 /* Non-zero iff TYPE represents a standard GNAT constrained
1976 packed-array type. */
1977
1978 int
1979 ada_is_constrained_packed_array_type (struct type *type)
1980 {
1981 return ada_is_gnat_encoded_packed_array_type (type)
1982 && !ada_is_array_descriptor_type (type);
1983 }
1984
1985 /* Non-zero iff TYPE represents an array descriptor for a
1986 unconstrained packed-array type. */
1987
1988 static int
1989 ada_is_unconstrained_packed_array_type (struct type *type)
1990 {
1991 if (!ada_is_array_descriptor_type (type))
1992 return 0;
1993
1994 if (ada_is_gnat_encoded_packed_array_type (type))
1995 return 1;
1996
1997 /* If we saw GNAT encodings, then the above code is sufficient.
1998 However, with minimal encodings, we will just have a thick
1999 pointer instead. */
2000 if (is_thick_pntr (type))
2001 {
2002 type = desc_base_type (type);
2003 /* The structure's first field is a pointer to an array, so this
2004 fetches the array type. */
2005 type = TYPE_TARGET_TYPE (type->field (0).type ());
2006 /* Now we can see if the array elements are packed. */
2007 return TYPE_FIELD_BITSIZE (type, 0) > 0;
2008 }
2009
2010 return 0;
2011 }
2012
2013 /* Return true if TYPE is a (Gnat-encoded) constrained packed array
2014 type, or if it is an ordinary (non-Gnat-encoded) packed array. */
2015
2016 static bool
2017 ada_is_any_packed_array_type (struct type *type)
2018 {
2019 return (ada_is_constrained_packed_array_type (type)
2020 || (type->code () == TYPE_CODE_ARRAY
2021 && TYPE_FIELD_BITSIZE (type, 0) % 8 != 0));
2022 }
2023
2024 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2025 return the size of its elements in bits. */
2026
2027 static long
2028 decode_packed_array_bitsize (struct type *type)
2029 {
2030 const char *raw_name;
2031 const char *tail;
2032 long bits;
2033
2034 /* Access to arrays implemented as fat pointers are encoded as a typedef
2035 of the fat pointer type. We need the name of the fat pointer type
2036 to do the decoding, so strip the typedef layer. */
2037 if (type->code () == TYPE_CODE_TYPEDEF)
2038 type = ada_typedef_target_type (type);
2039
2040 raw_name = ada_type_name (ada_check_typedef (type));
2041 if (!raw_name)
2042 raw_name = ada_type_name (desc_base_type (type));
2043
2044 if (!raw_name)
2045 return 0;
2046
2047 tail = strstr (raw_name, "___XP");
2048 if (tail == nullptr)
2049 {
2050 gdb_assert (is_thick_pntr (type));
2051 /* The structure's first field is a pointer to an array, so this
2052 fetches the array type. */
2053 type = TYPE_TARGET_TYPE (type->field (0).type ());
2054 /* Now we can see if the array elements are packed. */
2055 return TYPE_FIELD_BITSIZE (type, 0);
2056 }
2057
2058 if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2059 {
2060 lim_warning
2061 (_("could not understand bit size information on packed array"));
2062 return 0;
2063 }
2064
2065 return bits;
2066 }
2067
2068 /* Given that TYPE is a standard GDB array type with all bounds filled
2069 in, and that the element size of its ultimate scalar constituents
2070 (that is, either its elements, or, if it is an array of arrays, its
2071 elements' elements, etc.) is *ELT_BITS, return an identical type,
2072 but with the bit sizes of its elements (and those of any
2073 constituent arrays) recorded in the BITSIZE components of its
2074 TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2075 in bits.
2076
2077 Note that, for arrays whose index type has an XA encoding where
2078 a bound references a record discriminant, getting that discriminant,
2079 and therefore the actual value of that bound, is not possible
2080 because none of the given parameters gives us access to the record.
2081 This function assumes that it is OK in the context where it is being
2082 used to return an array whose bounds are still dynamic and where
2083 the length is arbitrary. */
2084
2085 static struct type *
2086 constrained_packed_array_type (struct type *type, long *elt_bits)
2087 {
2088 struct type *new_elt_type;
2089 struct type *new_type;
2090 struct type *index_type_desc;
2091 struct type *index_type;
2092 LONGEST low_bound, high_bound;
2093
2094 type = ada_check_typedef (type);
2095 if (type->code () != TYPE_CODE_ARRAY)
2096 return type;
2097
2098 index_type_desc = ada_find_parallel_type (type, "___XA");
2099 if (index_type_desc)
2100 index_type = to_fixed_range_type (index_type_desc->field (0).type (),
2101 NULL);
2102 else
2103 index_type = type->index_type ();
2104
2105 new_type = alloc_type_copy (type);
2106 new_elt_type =
2107 constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2108 elt_bits);
2109 create_array_type (new_type, new_elt_type, index_type);
2110 TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2111 new_type->set_name (ada_type_name (type));
2112
2113 if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2114 && is_dynamic_type (check_typedef (index_type)))
2115 || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2116 low_bound = high_bound = 0;
2117 if (high_bound < low_bound)
2118 *elt_bits = TYPE_LENGTH (new_type) = 0;
2119 else
2120 {
2121 *elt_bits *= (high_bound - low_bound + 1);
2122 TYPE_LENGTH (new_type) =
2123 (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2124 }
2125
2126 new_type->set_is_fixed_instance (true);
2127 return new_type;
2128 }
2129
2130 /* The array type encoded by TYPE, where
2131 ada_is_constrained_packed_array_type (TYPE). */
2132
2133 static struct type *
2134 decode_constrained_packed_array_type (struct type *type)
2135 {
2136 const char *raw_name = ada_type_name (ada_check_typedef (type));
2137 char *name;
2138 const char *tail;
2139 struct type *shadow_type;
2140 long bits;
2141
2142 if (!raw_name)
2143 raw_name = ada_type_name (desc_base_type (type));
2144
2145 if (!raw_name)
2146 return NULL;
2147
2148 name = (char *) alloca (strlen (raw_name) + 1);
2149 tail = strstr (raw_name, "___XP");
2150 type = desc_base_type (type);
2151
2152 memcpy (name, raw_name, tail - raw_name);
2153 name[tail - raw_name] = '\000';
2154
2155 shadow_type = ada_find_parallel_type_with_name (type, name);
2156
2157 if (shadow_type == NULL)
2158 {
2159 lim_warning (_("could not find bounds information on packed array"));
2160 return NULL;
2161 }
2162 shadow_type = check_typedef (shadow_type);
2163
2164 if (shadow_type->code () != TYPE_CODE_ARRAY)
2165 {
2166 lim_warning (_("could not understand bounds "
2167 "information on packed array"));
2168 return NULL;
2169 }
2170
2171 bits = decode_packed_array_bitsize (type);
2172 return constrained_packed_array_type (shadow_type, &bits);
2173 }
2174
2175 /* Helper function for decode_constrained_packed_array. Set the field
2176 bitsize on a series of packed arrays. Returns the number of
2177 elements in TYPE. */
2178
2179 static LONGEST
2180 recursively_update_array_bitsize (struct type *type)
2181 {
2182 gdb_assert (type->code () == TYPE_CODE_ARRAY);
2183
2184 LONGEST low, high;
2185 if (get_discrete_bounds (type->index_type (), &low, &high) < 0
2186 || low > high)
2187 return 0;
2188 LONGEST our_len = high - low + 1;
2189
2190 struct type *elt_type = TYPE_TARGET_TYPE (type);
2191 if (elt_type->code () == TYPE_CODE_ARRAY)
2192 {
2193 LONGEST elt_len = recursively_update_array_bitsize (elt_type);
2194 LONGEST elt_bitsize = elt_len * TYPE_FIELD_BITSIZE (elt_type, 0);
2195 TYPE_FIELD_BITSIZE (type, 0) = elt_bitsize;
2196
2197 TYPE_LENGTH (type) = ((our_len * elt_bitsize + HOST_CHAR_BIT - 1)
2198 / HOST_CHAR_BIT);
2199 }
2200
2201 return our_len;
2202 }
2203
2204 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2205 array, returns a simple array that denotes that array. Its type is a
2206 standard GDB array type except that the BITSIZEs of the array
2207 target types are set to the number of bits in each element, and the
2208 type length is set appropriately. */
2209
2210 static struct value *
2211 decode_constrained_packed_array (struct value *arr)
2212 {
2213 struct type *type;
2214
2215 /* If our value is a pointer, then dereference it. Likewise if
2216 the value is a reference. Make sure that this operation does not
2217 cause the target type to be fixed, as this would indirectly cause
2218 this array to be decoded. The rest of the routine assumes that
2219 the array hasn't been decoded yet, so we use the basic "coerce_ref"
2220 and "value_ind" routines to perform the dereferencing, as opposed
2221 to using "ada_coerce_ref" or "ada_value_ind". */
2222 arr = coerce_ref (arr);
2223 if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2224 arr = value_ind (arr);
2225
2226 type = decode_constrained_packed_array_type (value_type (arr));
2227 if (type == NULL)
2228 {
2229 error (_("can't unpack array"));
2230 return NULL;
2231 }
2232
2233 /* Decoding the packed array type could not correctly set the field
2234 bitsizes for any dimension except the innermost, because the
2235 bounds may be variable and were not passed to that function. So,
2236 we further resolve the array bounds here and then update the
2237 sizes. */
2238 const gdb_byte *valaddr = value_contents_for_printing (arr);
2239 CORE_ADDR address = value_address (arr);
2240 gdb::array_view<const gdb_byte> view
2241 = gdb::make_array_view (valaddr, TYPE_LENGTH (type));
2242 type = resolve_dynamic_type (type, view, address);
2243 recursively_update_array_bitsize (type);
2244
2245 if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2246 && ada_is_modular_type (value_type (arr)))
2247 {
2248 /* This is a (right-justified) modular type representing a packed
2249 array with no wrapper. In order to interpret the value through
2250 the (left-justified) packed array type we just built, we must
2251 first left-justify it. */
2252 int bit_size, bit_pos;
2253 ULONGEST mod;
2254
2255 mod = ada_modulus (value_type (arr)) - 1;
2256 bit_size = 0;
2257 while (mod > 0)
2258 {
2259 bit_size += 1;
2260 mod >>= 1;
2261 }
2262 bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2263 arr = ada_value_primitive_packed_val (arr, NULL,
2264 bit_pos / HOST_CHAR_BIT,
2265 bit_pos % HOST_CHAR_BIT,
2266 bit_size,
2267 type);
2268 }
2269
2270 return coerce_unspec_val_to_type (arr, type);
2271 }
2272
2273
2274 /* The value of the element of packed array ARR at the ARITY indices
2275 given in IND. ARR must be a simple array. */
2276
2277 static struct value *
2278 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2279 {
2280 int i;
2281 int bits, elt_off, bit_off;
2282 long elt_total_bit_offset;
2283 struct type *elt_type;
2284 struct value *v;
2285
2286 bits = 0;
2287 elt_total_bit_offset = 0;
2288 elt_type = ada_check_typedef (value_type (arr));
2289 for (i = 0; i < arity; i += 1)
2290 {
2291 if (elt_type->code () != TYPE_CODE_ARRAY
2292 || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2293 error
2294 (_("attempt to do packed indexing of "
2295 "something other than a packed array"));
2296 else
2297 {
2298 struct type *range_type = elt_type->index_type ();
2299 LONGEST lowerbound, upperbound;
2300 LONGEST idx;
2301
2302 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2303 {
2304 lim_warning (_("don't know bounds of array"));
2305 lowerbound = upperbound = 0;
2306 }
2307
2308 idx = pos_atr (ind[i]);
2309 if (idx < lowerbound || idx > upperbound)
2310 lim_warning (_("packed array index %ld out of bounds"),
2311 (long) idx);
2312 bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2313 elt_total_bit_offset += (idx - lowerbound) * bits;
2314 elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2315 }
2316 }
2317 elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2318 bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2319
2320 v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2321 bits, elt_type);
2322 return v;
2323 }
2324
2325 /* Non-zero iff TYPE includes negative integer values. */
2326
2327 static int
2328 has_negatives (struct type *type)
2329 {
2330 switch (type->code ())
2331 {
2332 default:
2333 return 0;
2334 case TYPE_CODE_INT:
2335 return !type->is_unsigned ();
2336 case TYPE_CODE_RANGE:
2337 return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
2338 }
2339 }
2340
2341 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2342 unpack that data into UNPACKED. UNPACKED_LEN is the size in bytes of
2343 the unpacked buffer.
2344
2345 The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2346 enough to contain at least BIT_OFFSET bits. If not, an error is raised.
2347
2348 IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2349 zero otherwise.
2350
2351 IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2352
2353 IS_SCALAR is nonzero if the data corresponds to a signed type. */
2354
2355 static void
2356 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2357 gdb_byte *unpacked, int unpacked_len,
2358 int is_big_endian, int is_signed_type,
2359 int is_scalar)
2360 {
2361 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2362 int src_idx; /* Index into the source area */
2363 int src_bytes_left; /* Number of source bytes left to process. */
2364 int srcBitsLeft; /* Number of source bits left to move */
2365 int unusedLS; /* Number of bits in next significant
2366 byte of source that are unused */
2367
2368 int unpacked_idx; /* Index into the unpacked buffer */
2369 int unpacked_bytes_left; /* Number of bytes left to set in unpacked. */
2370
2371 unsigned long accum; /* Staging area for bits being transferred */
2372 int accumSize; /* Number of meaningful bits in accum */
2373 unsigned char sign;
2374
2375 /* Transmit bytes from least to most significant; delta is the direction
2376 the indices move. */
2377 int delta = is_big_endian ? -1 : 1;
2378
2379 /* Make sure that unpacked is large enough to receive the BIT_SIZE
2380 bits from SRC. .*/
2381 if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2382 error (_("Cannot unpack %d bits into buffer of %d bytes"),
2383 bit_size, unpacked_len);
2384
2385 srcBitsLeft = bit_size;
2386 src_bytes_left = src_len;
2387 unpacked_bytes_left = unpacked_len;
2388 sign = 0;
2389
2390 if (is_big_endian)
2391 {
2392 src_idx = src_len - 1;
2393 if (is_signed_type
2394 && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2395 sign = ~0;
2396
2397 unusedLS =
2398 (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2399 % HOST_CHAR_BIT;
2400
2401 if (is_scalar)
2402 {
2403 accumSize = 0;
2404 unpacked_idx = unpacked_len - 1;
2405 }
2406 else
2407 {
2408 /* Non-scalar values must be aligned at a byte boundary... */
2409 accumSize =
2410 (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2411 /* ... And are placed at the beginning (most-significant) bytes
2412 of the target. */
2413 unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2414 unpacked_bytes_left = unpacked_idx + 1;
2415 }
2416 }
2417 else
2418 {
2419 int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2420
2421 src_idx = unpacked_idx = 0;
2422 unusedLS = bit_offset;
2423 accumSize = 0;
2424
2425 if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2426 sign = ~0;
2427 }
2428
2429 accum = 0;
2430 while (src_bytes_left > 0)
2431 {
2432 /* Mask for removing bits of the next source byte that are not
2433 part of the value. */
2434 unsigned int unusedMSMask =
2435 (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2436 1;
2437 /* Sign-extend bits for this byte. */
2438 unsigned int signMask = sign & ~unusedMSMask;
2439
2440 accum |=
2441 (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2442 accumSize += HOST_CHAR_BIT - unusedLS;
2443 if (accumSize >= HOST_CHAR_BIT)
2444 {
2445 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2446 accumSize -= HOST_CHAR_BIT;
2447 accum >>= HOST_CHAR_BIT;
2448 unpacked_bytes_left -= 1;
2449 unpacked_idx += delta;
2450 }
2451 srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2452 unusedLS = 0;
2453 src_bytes_left -= 1;
2454 src_idx += delta;
2455 }
2456 while (unpacked_bytes_left > 0)
2457 {
2458 accum |= sign << accumSize;
2459 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2460 accumSize -= HOST_CHAR_BIT;
2461 if (accumSize < 0)
2462 accumSize = 0;
2463 accum >>= HOST_CHAR_BIT;
2464 unpacked_bytes_left -= 1;
2465 unpacked_idx += delta;
2466 }
2467 }
2468
2469 /* Create a new value of type TYPE from the contents of OBJ starting
2470 at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2471 proceeding for BIT_SIZE bits. If OBJ is an lval in memory, then
2472 assigning through the result will set the field fetched from.
2473 VALADDR is ignored unless OBJ is NULL, in which case,
2474 VALADDR+OFFSET must address the start of storage containing the
2475 packed value. The value returned in this case is never an lval.
2476 Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT. */
2477
2478 struct value *
2479 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2480 long offset, int bit_offset, int bit_size,
2481 struct type *type)
2482 {
2483 struct value *v;
2484 const gdb_byte *src; /* First byte containing data to unpack */
2485 gdb_byte *unpacked;
2486 const int is_scalar = is_scalar_type (type);
2487 const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2488 gdb::byte_vector staging;
2489
2490 type = ada_check_typedef (type);
2491
2492 if (obj == NULL)
2493 src = valaddr + offset;
2494 else
2495 src = value_contents (obj) + offset;
2496
2497 if (is_dynamic_type (type))
2498 {
2499 /* The length of TYPE might by dynamic, so we need to resolve
2500 TYPE in order to know its actual size, which we then use
2501 to create the contents buffer of the value we return.
2502 The difficulty is that the data containing our object is
2503 packed, and therefore maybe not at a byte boundary. So, what
2504 we do, is unpack the data into a byte-aligned buffer, and then
2505 use that buffer as our object's value for resolving the type. */
2506 int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2507 staging.resize (staging_len);
2508
2509 ada_unpack_from_contents (src, bit_offset, bit_size,
2510 staging.data (), staging.size (),
2511 is_big_endian, has_negatives (type),
2512 is_scalar);
2513 type = resolve_dynamic_type (type, staging, 0);
2514 if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2515 {
2516 /* This happens when the length of the object is dynamic,
2517 and is actually smaller than the space reserved for it.
2518 For instance, in an array of variant records, the bit_size
2519 we're given is the array stride, which is constant and
2520 normally equal to the maximum size of its element.
2521 But, in reality, each element only actually spans a portion
2522 of that stride. */
2523 bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2524 }
2525 }
2526
2527 if (obj == NULL)
2528 {
2529 v = allocate_value (type);
2530 src = valaddr + offset;
2531 }
2532 else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2533 {
2534 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2535 gdb_byte *buf;
2536
2537 v = value_at (type, value_address (obj) + offset);
2538 buf = (gdb_byte *) alloca (src_len);
2539 read_memory (value_address (v), buf, src_len);
2540 src = buf;
2541 }
2542 else
2543 {
2544 v = allocate_value (type);
2545 src = value_contents (obj) + offset;
2546 }
2547
2548 if (obj != NULL)
2549 {
2550 long new_offset = offset;
2551
2552 set_value_component_location (v, obj);
2553 set_value_bitpos (v, bit_offset + value_bitpos (obj));
2554 set_value_bitsize (v, bit_size);
2555 if (value_bitpos (v) >= HOST_CHAR_BIT)
2556 {
2557 ++new_offset;
2558 set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2559 }
2560 set_value_offset (v, new_offset);
2561
2562 /* Also set the parent value. This is needed when trying to
2563 assign a new value (in inferior memory). */
2564 set_value_parent (v, obj);
2565 }
2566 else
2567 set_value_bitsize (v, bit_size);
2568 unpacked = value_contents_writeable (v);
2569
2570 if (bit_size == 0)
2571 {
2572 memset (unpacked, 0, TYPE_LENGTH (type));
2573 return v;
2574 }
2575
2576 if (staging.size () == TYPE_LENGTH (type))
2577 {
2578 /* Small short-cut: If we've unpacked the data into a buffer
2579 of the same size as TYPE's length, then we can reuse that,
2580 instead of doing the unpacking again. */
2581 memcpy (unpacked, staging.data (), staging.size ());
2582 }
2583 else
2584 ada_unpack_from_contents (src, bit_offset, bit_size,
2585 unpacked, TYPE_LENGTH (type),
2586 is_big_endian, has_negatives (type), is_scalar);
2587
2588 return v;
2589 }
2590
2591 /* Store the contents of FROMVAL into the location of TOVAL.
2592 Return a new value with the location of TOVAL and contents of
2593 FROMVAL. Handles assignment into packed fields that have
2594 floating-point or non-scalar types. */
2595
2596 static struct value *
2597 ada_value_assign (struct value *toval, struct value *fromval)
2598 {
2599 struct type *type = value_type (toval);
2600 int bits = value_bitsize (toval);
2601
2602 toval = ada_coerce_ref (toval);
2603 fromval = ada_coerce_ref (fromval);
2604
2605 if (ada_is_direct_array_type (value_type (toval)))
2606 toval = ada_coerce_to_simple_array (toval);
2607 if (ada_is_direct_array_type (value_type (fromval)))
2608 fromval = ada_coerce_to_simple_array (fromval);
2609
2610 if (!deprecated_value_modifiable (toval))
2611 error (_("Left operand of assignment is not a modifiable lvalue."));
2612
2613 if (VALUE_LVAL (toval) == lval_memory
2614 && bits > 0
2615 && (type->code () == TYPE_CODE_FLT
2616 || type->code () == TYPE_CODE_STRUCT))
2617 {
2618 int len = (value_bitpos (toval)
2619 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2620 int from_size;
2621 gdb_byte *buffer = (gdb_byte *) alloca (len);
2622 struct value *val;
2623 CORE_ADDR to_addr = value_address (toval);
2624
2625 if (type->code () == TYPE_CODE_FLT)
2626 fromval = value_cast (type, fromval);
2627
2628 read_memory (to_addr, buffer, len);
2629 from_size = value_bitsize (fromval);
2630 if (from_size == 0)
2631 from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2632
2633 const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2634 ULONGEST from_offset = 0;
2635 if (is_big_endian && is_scalar_type (value_type (fromval)))
2636 from_offset = from_size - bits;
2637 copy_bitwise (buffer, value_bitpos (toval),
2638 value_contents (fromval), from_offset,
2639 bits, is_big_endian);
2640 write_memory_with_notification (to_addr, buffer, len);
2641
2642 val = value_copy (toval);
2643 memcpy (value_contents_raw (val), value_contents (fromval),
2644 TYPE_LENGTH (type));
2645 deprecated_set_value_type (val, type);
2646
2647 return val;
2648 }
2649
2650 return value_assign (toval, fromval);
2651 }
2652
2653
2654 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2655 CONTAINER, assign the contents of VAL to COMPONENTS's place in
2656 CONTAINER. Modifies the VALUE_CONTENTS of CONTAINER only, not
2657 COMPONENT, and not the inferior's memory. The current contents
2658 of COMPONENT are ignored.
2659
2660 Although not part of the initial design, this function also works
2661 when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2662 had a null address, and COMPONENT had an address which is equal to
2663 its offset inside CONTAINER. */
2664
2665 static void
2666 value_assign_to_component (struct value *container, struct value *component,
2667 struct value *val)
2668 {
2669 LONGEST offset_in_container =
2670 (LONGEST) (value_address (component) - value_address (container));
2671 int bit_offset_in_container =
2672 value_bitpos (component) - value_bitpos (container);
2673 int bits;
2674
2675 val = value_cast (value_type (component), val);
2676
2677 if (value_bitsize (component) == 0)
2678 bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2679 else
2680 bits = value_bitsize (component);
2681
2682 if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2683 {
2684 int src_offset;
2685
2686 if (is_scalar_type (check_typedef (value_type (component))))
2687 src_offset
2688 = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2689 else
2690 src_offset = 0;
2691 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2692 value_bitpos (container) + bit_offset_in_container,
2693 value_contents (val), src_offset, bits, 1);
2694 }
2695 else
2696 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2697 value_bitpos (container) + bit_offset_in_container,
2698 value_contents (val), 0, bits, 0);
2699 }
2700
2701 /* Determine if TYPE is an access to an unconstrained array. */
2702
2703 bool
2704 ada_is_access_to_unconstrained_array (struct type *type)
2705 {
2706 return (type->code () == TYPE_CODE_TYPEDEF
2707 && is_thick_pntr (ada_typedef_target_type (type)));
2708 }
2709
2710 /* The value of the element of array ARR at the ARITY indices given in IND.
2711 ARR may be either a simple array, GNAT array descriptor, or pointer
2712 thereto. */
2713
2714 struct value *
2715 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2716 {
2717 int k;
2718 struct value *elt;
2719 struct type *elt_type;
2720
2721 elt = ada_coerce_to_simple_array (arr);
2722
2723 elt_type = ada_check_typedef (value_type (elt));
2724 if (elt_type->code () == TYPE_CODE_ARRAY
2725 && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2726 return value_subscript_packed (elt, arity, ind);
2727
2728 for (k = 0; k < arity; k += 1)
2729 {
2730 struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2731
2732 if (elt_type->code () != TYPE_CODE_ARRAY)
2733 error (_("too many subscripts (%d expected)"), k);
2734
2735 elt = value_subscript (elt, pos_atr (ind[k]));
2736
2737 if (ada_is_access_to_unconstrained_array (saved_elt_type)
2738 && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2739 {
2740 /* The element is a typedef to an unconstrained array,
2741 except that the value_subscript call stripped the
2742 typedef layer. The typedef layer is GNAT's way to
2743 specify that the element is, at the source level, an
2744 access to the unconstrained array, rather than the
2745 unconstrained array. So, we need to restore that
2746 typedef layer, which we can do by forcing the element's
2747 type back to its original type. Otherwise, the returned
2748 value is going to be printed as the array, rather
2749 than as an access. Another symptom of the same issue
2750 would be that an expression trying to dereference the
2751 element would also be improperly rejected. */
2752 deprecated_set_value_type (elt, saved_elt_type);
2753 }
2754
2755 elt_type = ada_check_typedef (value_type (elt));
2756 }
2757
2758 return elt;
2759 }
2760
2761 /* Assuming ARR is a pointer to a GDB array, the value of the element
2762 of *ARR at the ARITY indices given in IND.
2763 Does not read the entire array into memory.
2764
2765 Note: Unlike what one would expect, this function is used instead of
2766 ada_value_subscript for basically all non-packed array types. The reason
2767 for this is that a side effect of doing our own pointer arithmetics instead
2768 of relying on value_subscript is that there is no implicit typedef peeling.
2769 This is important for arrays of array accesses, where it allows us to
2770 preserve the fact that the array's element is an array access, where the
2771 access part os encoded in a typedef layer. */
2772
2773 static struct value *
2774 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2775 {
2776 int k;
2777 struct value *array_ind = ada_value_ind (arr);
2778 struct type *type
2779 = check_typedef (value_enclosing_type (array_ind));
2780
2781 if (type->code () == TYPE_CODE_ARRAY
2782 && TYPE_FIELD_BITSIZE (type, 0) > 0)
2783 return value_subscript_packed (array_ind, arity, ind);
2784
2785 for (k = 0; k < arity; k += 1)
2786 {
2787 LONGEST lwb, upb;
2788
2789 if (type->code () != TYPE_CODE_ARRAY)
2790 error (_("too many subscripts (%d expected)"), k);
2791 arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2792 value_copy (arr));
2793 get_discrete_bounds (type->index_type (), &lwb, &upb);
2794 arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2795 type = TYPE_TARGET_TYPE (type);
2796 }
2797
2798 return value_ind (arr);
2799 }
2800
2801 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2802 actual type of ARRAY_PTR is ignored), returns the Ada slice of
2803 HIGH'Pos-LOW'Pos+1 elements starting at index LOW. The lower bound of
2804 this array is LOW, as per Ada rules. */
2805 static struct value *
2806 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2807 int low, int high)
2808 {
2809 struct type *type0 = ada_check_typedef (type);
2810 struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2811 struct type *index_type
2812 = create_static_range_type (NULL, base_index_type, low, high);
2813 struct type *slice_type = create_array_type_with_stride
2814 (NULL, TYPE_TARGET_TYPE (type0), index_type,
2815 type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2816 TYPE_FIELD_BITSIZE (type0, 0));
2817 int base_low = ada_discrete_type_low_bound (type0->index_type ());
2818 LONGEST base_low_pos, low_pos;
2819 CORE_ADDR base;
2820
2821 if (!discrete_position (base_index_type, low, &low_pos)
2822 || !discrete_position (base_index_type, base_low, &base_low_pos))
2823 {
2824 warning (_("unable to get positions in slice, use bounds instead"));
2825 low_pos = low;
2826 base_low_pos = base_low;
2827 }
2828
2829 ULONGEST stride = TYPE_FIELD_BITSIZE (slice_type, 0) / 8;
2830 if (stride == 0)
2831 stride = TYPE_LENGTH (TYPE_TARGET_TYPE (type0));
2832
2833 base = value_as_address (array_ptr) + (low_pos - base_low_pos) * stride;
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 /* As for operator_length, but assumes PC is pointing at the first
13291 element of the operator, and gives meaningful results only for the
13292 Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */
13293
13294 static void
13295 ada_forward_operator_length (struct expression *exp, int pc,
13296 int *oplenp, int *argsp)
13297 {
13298 switch (exp->elts[pc].opcode)
13299 {
13300 default:
13301 *oplenp = *argsp = 0;
13302 break;
13303
13304 #define OP_DEFN(op, len, args, binop) \
13305 case op: *oplenp = len; *argsp = args; break;
13306 ADA_OPERATORS;
13307 #undef OP_DEFN
13308
13309 case OP_AGGREGATE:
13310 *oplenp = 3;
13311 *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13312 break;
13313
13314 case OP_CHOICES:
13315 *oplenp = 3;
13316 *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13317 break;
13318
13319 case OP_STRING:
13320 case OP_NAME:
13321 {
13322 int len = longest_to_int (exp->elts[pc + 1].longconst);
13323
13324 *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13325 *argsp = 0;
13326 break;
13327 }
13328 }
13329 }
13330
13331 static int
13332 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13333 {
13334 enum exp_opcode op = exp->elts[elt].opcode;
13335 int oplen, nargs;
13336 int pc = elt;
13337 int i;
13338
13339 ada_forward_operator_length (exp, elt, &oplen, &nargs);
13340
13341 switch (op)
13342 {
13343 /* Ada attributes ('Foo). */
13344 case OP_ATR_FIRST:
13345 case OP_ATR_LAST:
13346 case OP_ATR_LENGTH:
13347 case OP_ATR_IMAGE:
13348 case OP_ATR_MAX:
13349 case OP_ATR_MIN:
13350 case OP_ATR_MODULUS:
13351 case OP_ATR_POS:
13352 case OP_ATR_SIZE:
13353 case OP_ATR_TAG:
13354 case OP_ATR_VAL:
13355 break;
13356
13357 case UNOP_IN_RANGE:
13358 case UNOP_QUAL:
13359 /* XXX: gdb_sprint_host_address, type_sprint */
13360 fprintf_filtered (stream, _("Type @"));
13361 gdb_print_host_address (exp->elts[pc + 1].type, stream);
13362 fprintf_filtered (stream, " (");
13363 type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13364 fprintf_filtered (stream, ")");
13365 break;
13366 case BINOP_IN_BOUNDS:
13367 fprintf_filtered (stream, " (%d)",
13368 longest_to_int (exp->elts[pc + 2].longconst));
13369 break;
13370 case TERNOP_IN_RANGE:
13371 break;
13372
13373 case OP_AGGREGATE:
13374 case OP_OTHERS:
13375 case OP_DISCRETE_RANGE:
13376 case OP_POSITIONAL:
13377 case OP_CHOICES:
13378 break;
13379
13380 case OP_NAME:
13381 case OP_STRING:
13382 {
13383 char *name = &exp->elts[elt + 2].string;
13384 int len = longest_to_int (exp->elts[elt + 1].longconst);
13385
13386 fprintf_filtered (stream, "Text: `%.*s'", len, name);
13387 break;
13388 }
13389
13390 default:
13391 return dump_subexp_body_standard (exp, stream, elt);
13392 }
13393
13394 elt += oplen;
13395 for (i = 0; i < nargs; i += 1)
13396 elt = dump_subexp (exp, stream, elt);
13397
13398 return elt;
13399 }
13400
13401 /* The Ada extension of print_subexp (q.v.). */
13402
13403 static void
13404 ada_print_subexp (struct expression *exp, int *pos,
13405 struct ui_file *stream, enum precedence prec)
13406 {
13407 int oplen, nargs, i;
13408 int pc = *pos;
13409 enum exp_opcode op = exp->elts[pc].opcode;
13410
13411 ada_forward_operator_length (exp, pc, &oplen, &nargs);
13412
13413 *pos += oplen;
13414 switch (op)
13415 {
13416 default:
13417 *pos -= oplen;
13418 print_subexp_standard (exp, pos, stream, prec);
13419 return;
13420
13421 case OP_VAR_VALUE:
13422 fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13423 return;
13424
13425 case BINOP_IN_BOUNDS:
13426 /* XXX: sprint_subexp */
13427 print_subexp (exp, pos, stream, PREC_SUFFIX);
13428 fputs_filtered (" in ", stream);
13429 print_subexp (exp, pos, stream, PREC_SUFFIX);
13430 fputs_filtered ("'range", stream);
13431 if (exp->elts[pc + 1].longconst > 1)
13432 fprintf_filtered (stream, "(%ld)",
13433 (long) exp->elts[pc + 1].longconst);
13434 return;
13435
13436 case TERNOP_IN_RANGE:
13437 if (prec >= PREC_EQUAL)
13438 fputs_filtered ("(", stream);
13439 /* XXX: sprint_subexp */
13440 print_subexp (exp, pos, stream, PREC_SUFFIX);
13441 fputs_filtered (" in ", stream);
13442 print_subexp (exp, pos, stream, PREC_EQUAL);
13443 fputs_filtered (" .. ", stream);
13444 print_subexp (exp, pos, stream, PREC_EQUAL);
13445 if (prec >= PREC_EQUAL)
13446 fputs_filtered (")", stream);
13447 return;
13448
13449 case OP_ATR_FIRST:
13450 case OP_ATR_LAST:
13451 case OP_ATR_LENGTH:
13452 case OP_ATR_IMAGE:
13453 case OP_ATR_MAX:
13454 case OP_ATR_MIN:
13455 case OP_ATR_MODULUS:
13456 case OP_ATR_POS:
13457 case OP_ATR_SIZE:
13458 case OP_ATR_TAG:
13459 case OP_ATR_VAL:
13460 if (exp->elts[*pos].opcode == OP_TYPE)
13461 {
13462 if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13463 LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13464 &type_print_raw_options);
13465 *pos += 3;
13466 }
13467 else
13468 print_subexp (exp, pos, stream, PREC_SUFFIX);
13469 fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13470 if (nargs > 1)
13471 {
13472 int tem;
13473
13474 for (tem = 1; tem < nargs; tem += 1)
13475 {
13476 fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13477 print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13478 }
13479 fputs_filtered (")", stream);
13480 }
13481 return;
13482
13483 case UNOP_QUAL:
13484 type_print (exp->elts[pc + 1].type, "", stream, 0);
13485 fputs_filtered ("'(", stream);
13486 print_subexp (exp, pos, stream, PREC_PREFIX);
13487 fputs_filtered (")", stream);
13488 return;
13489
13490 case UNOP_IN_RANGE:
13491 /* XXX: sprint_subexp */
13492 print_subexp (exp, pos, stream, PREC_SUFFIX);
13493 fputs_filtered (" in ", stream);
13494 LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13495 &type_print_raw_options);
13496 return;
13497
13498 case OP_DISCRETE_RANGE:
13499 print_subexp (exp, pos, stream, PREC_SUFFIX);
13500 fputs_filtered ("..", stream);
13501 print_subexp (exp, pos, stream, PREC_SUFFIX);
13502 return;
13503
13504 case OP_OTHERS:
13505 fputs_filtered ("others => ", stream);
13506 print_subexp (exp, pos, stream, PREC_SUFFIX);
13507 return;
13508
13509 case OP_CHOICES:
13510 for (i = 0; i < nargs-1; i += 1)
13511 {
13512 if (i > 0)
13513 fputs_filtered ("|", stream);
13514 print_subexp (exp, pos, stream, PREC_SUFFIX);
13515 }
13516 fputs_filtered (" => ", stream);
13517 print_subexp (exp, pos, stream, PREC_SUFFIX);
13518 return;
13519
13520 case OP_POSITIONAL:
13521 print_subexp (exp, pos, stream, PREC_SUFFIX);
13522 return;
13523
13524 case OP_AGGREGATE:
13525 fputs_filtered ("(", stream);
13526 for (i = 0; i < nargs; i += 1)
13527 {
13528 if (i > 0)
13529 fputs_filtered (", ", stream);
13530 print_subexp (exp, pos, stream, PREC_SUFFIX);
13531 }
13532 fputs_filtered (")", stream);
13533 return;
13534 }
13535 }
13536
13537 /* Table mapping opcodes into strings for printing operators
13538 and precedences of the operators. */
13539
13540 static const struct op_print ada_op_print_tab[] = {
13541 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13542 {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13543 {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13544 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13545 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13546 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13547 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13548 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13549 {"<=", BINOP_LEQ, PREC_ORDER, 0},
13550 {">=", BINOP_GEQ, PREC_ORDER, 0},
13551 {">", BINOP_GTR, PREC_ORDER, 0},
13552 {"<", BINOP_LESS, PREC_ORDER, 0},
13553 {">>", BINOP_RSH, PREC_SHIFT, 0},
13554 {"<<", BINOP_LSH, PREC_SHIFT, 0},
13555 {"+", BINOP_ADD, PREC_ADD, 0},
13556 {"-", BINOP_SUB, PREC_ADD, 0},
13557 {"&", BINOP_CONCAT, PREC_ADD, 0},
13558 {"*", BINOP_MUL, PREC_MUL, 0},
13559 {"/", BINOP_DIV, PREC_MUL, 0},
13560 {"rem", BINOP_REM, PREC_MUL, 0},
13561 {"mod", BINOP_MOD, PREC_MUL, 0},
13562 {"**", BINOP_EXP, PREC_REPEAT, 0},
13563 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13564 {"-", UNOP_NEG, PREC_PREFIX, 0},
13565 {"+", UNOP_PLUS, PREC_PREFIX, 0},
13566 {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13567 {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13568 {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13569 {".all", UNOP_IND, PREC_SUFFIX, 1},
13570 {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13571 {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13572 {NULL, OP_NULL, PREC_SUFFIX, 0}
13573 };
13574 \f
13575 /* Language vector */
13576
13577 static const struct exp_descriptor ada_exp_descriptor = {
13578 ada_print_subexp,
13579 ada_operator_length,
13580 ada_operator_check,
13581 ada_dump_subexp_body,
13582 ada_evaluate_subexp
13583 };
13584
13585 /* symbol_name_matcher_ftype adapter for wild_match. */
13586
13587 static bool
13588 do_wild_match (const char *symbol_search_name,
13589 const lookup_name_info &lookup_name,
13590 completion_match_result *comp_match_res)
13591 {
13592 return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13593 }
13594
13595 /* symbol_name_matcher_ftype adapter for full_match. */
13596
13597 static bool
13598 do_full_match (const char *symbol_search_name,
13599 const lookup_name_info &lookup_name,
13600 completion_match_result *comp_match_res)
13601 {
13602 return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13603 }
13604
13605 /* symbol_name_matcher_ftype for exact (verbatim) matches. */
13606
13607 static bool
13608 do_exact_match (const char *symbol_search_name,
13609 const lookup_name_info &lookup_name,
13610 completion_match_result *comp_match_res)
13611 {
13612 return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13613 }
13614
13615 /* Build the Ada lookup name for LOOKUP_NAME. */
13616
13617 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13618 {
13619 gdb::string_view user_name = lookup_name.name ();
13620
13621 if (user_name[0] == '<')
13622 {
13623 if (user_name.back () == '>')
13624 m_encoded_name
13625 = gdb::to_string (user_name.substr (1, user_name.size () - 2));
13626 else
13627 m_encoded_name
13628 = gdb::to_string (user_name.substr (1, user_name.size () - 1));
13629 m_encoded_p = true;
13630 m_verbatim_p = true;
13631 m_wild_match_p = false;
13632 m_standard_p = false;
13633 }
13634 else
13635 {
13636 m_verbatim_p = false;
13637
13638 m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13639
13640 if (!m_encoded_p)
13641 {
13642 const char *folded = ada_fold_name (user_name);
13643 m_encoded_name = ada_encode_1 (folded, false);
13644 if (m_encoded_name.empty ())
13645 m_encoded_name = gdb::to_string (user_name);
13646 }
13647 else
13648 m_encoded_name = gdb::to_string (user_name);
13649
13650 /* Handle the 'package Standard' special case. See description
13651 of m_standard_p. */
13652 if (startswith (m_encoded_name.c_str (), "standard__"))
13653 {
13654 m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13655 m_standard_p = true;
13656 }
13657 else
13658 m_standard_p = false;
13659
13660 /* If the name contains a ".", then the user is entering a fully
13661 qualified entity name, and the match must not be done in wild
13662 mode. Similarly, if the user wants to complete what looks
13663 like an encoded name, the match must not be done in wild
13664 mode. Also, in the standard__ special case always do
13665 non-wild matching. */
13666 m_wild_match_p
13667 = (lookup_name.match_type () != symbol_name_match_type::FULL
13668 && !m_encoded_p
13669 && !m_standard_p
13670 && user_name.find ('.') == std::string::npos);
13671 }
13672 }
13673
13674 /* symbol_name_matcher_ftype method for Ada. This only handles
13675 completion mode. */
13676
13677 static bool
13678 ada_symbol_name_matches (const char *symbol_search_name,
13679 const lookup_name_info &lookup_name,
13680 completion_match_result *comp_match_res)
13681 {
13682 return lookup_name.ada ().matches (symbol_search_name,
13683 lookup_name.match_type (),
13684 comp_match_res);
13685 }
13686
13687 /* A name matcher that matches the symbol name exactly, with
13688 strcmp. */
13689
13690 static bool
13691 literal_symbol_name_matcher (const char *symbol_search_name,
13692 const lookup_name_info &lookup_name,
13693 completion_match_result *comp_match_res)
13694 {
13695 gdb::string_view name_view = lookup_name.name ();
13696
13697 if (lookup_name.completion_mode ()
13698 ? (strncmp (symbol_search_name, name_view.data (),
13699 name_view.size ()) == 0)
13700 : symbol_search_name == name_view)
13701 {
13702 if (comp_match_res != NULL)
13703 comp_match_res->set_match (symbol_search_name);
13704 return true;
13705 }
13706 else
13707 return false;
13708 }
13709
13710 /* Implement the "get_symbol_name_matcher" language_defn method for
13711 Ada. */
13712
13713 static symbol_name_matcher_ftype *
13714 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13715 {
13716 if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13717 return literal_symbol_name_matcher;
13718
13719 if (lookup_name.completion_mode ())
13720 return ada_symbol_name_matches;
13721 else
13722 {
13723 if (lookup_name.ada ().wild_match_p ())
13724 return do_wild_match;
13725 else if (lookup_name.ada ().verbatim_p ())
13726 return do_exact_match;
13727 else
13728 return do_full_match;
13729 }
13730 }
13731
13732 /* Class representing the Ada language. */
13733
13734 class ada_language : public language_defn
13735 {
13736 public:
13737 ada_language ()
13738 : language_defn (language_ada)
13739 { /* Nothing. */ }
13740
13741 /* See language.h. */
13742
13743 const char *name () const override
13744 { return "ada"; }
13745
13746 /* See language.h. */
13747
13748 const char *natural_name () const override
13749 { return "Ada"; }
13750
13751 /* See language.h. */
13752
13753 const std::vector<const char *> &filename_extensions () const override
13754 {
13755 static const std::vector<const char *> extensions
13756 = { ".adb", ".ads", ".a", ".ada", ".dg" };
13757 return extensions;
13758 }
13759
13760 /* Print an array element index using the Ada syntax. */
13761
13762 void print_array_index (struct type *index_type,
13763 LONGEST index,
13764 struct ui_file *stream,
13765 const value_print_options *options) const override
13766 {
13767 struct value *index_value = val_atr (index_type, index);
13768
13769 value_print (index_value, stream, options);
13770 fprintf_filtered (stream, " => ");
13771 }
13772
13773 /* Implement the "read_var_value" language_defn method for Ada. */
13774
13775 struct value *read_var_value (struct symbol *var,
13776 const struct block *var_block,
13777 struct frame_info *frame) const override
13778 {
13779 /* The only case where default_read_var_value is not sufficient
13780 is when VAR is a renaming... */
13781 if (frame != nullptr)
13782 {
13783 const struct block *frame_block = get_frame_block (frame, NULL);
13784 if (frame_block != nullptr && ada_is_renaming_symbol (var))
13785 return ada_read_renaming_var_value (var, frame_block);
13786 }
13787
13788 /* This is a typical case where we expect the default_read_var_value
13789 function to work. */
13790 return language_defn::read_var_value (var, var_block, frame);
13791 }
13792
13793 /* See language.h. */
13794 void language_arch_info (struct gdbarch *gdbarch,
13795 struct language_arch_info *lai) const override
13796 {
13797 const struct builtin_type *builtin = builtin_type (gdbarch);
13798
13799 /* Helper function to allow shorter lines below. */
13800 auto add = [&] (struct type *t)
13801 {
13802 lai->add_primitive_type (t);
13803 };
13804
13805 add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13806 0, "integer"));
13807 add (arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13808 0, "long_integer"));
13809 add (arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13810 0, "short_integer"));
13811 struct type *char_type = arch_character_type (gdbarch, TARGET_CHAR_BIT,
13812 0, "character");
13813 lai->set_string_char_type (char_type);
13814 add (char_type);
13815 add (arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13816 "float", gdbarch_float_format (gdbarch)));
13817 add (arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13818 "long_float", gdbarch_double_format (gdbarch)));
13819 add (arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13820 0, "long_long_integer"));
13821 add (arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13822 "long_long_float",
13823 gdbarch_long_double_format (gdbarch)));
13824 add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13825 0, "natural"));
13826 add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13827 0, "positive"));
13828 add (builtin->builtin_void);
13829
13830 struct type *system_addr_ptr
13831 = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13832 "void"));
13833 system_addr_ptr->set_name ("system__address");
13834 add (system_addr_ptr);
13835
13836 /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13837 type. This is a signed integral type whose size is the same as
13838 the size of addresses. */
13839 unsigned int addr_length = TYPE_LENGTH (system_addr_ptr);
13840 add (arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13841 "storage_offset"));
13842
13843 lai->set_bool_type (builtin->builtin_bool);
13844 }
13845
13846 /* See language.h. */
13847
13848 bool iterate_over_symbols
13849 (const struct block *block, const lookup_name_info &name,
13850 domain_enum domain,
13851 gdb::function_view<symbol_found_callback_ftype> callback) const override
13852 {
13853 std::vector<struct block_symbol> results;
13854
13855 ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
13856 for (block_symbol &sym : results)
13857 {
13858 if (!callback (&sym))
13859 return false;
13860 }
13861
13862 return true;
13863 }
13864
13865 /* See language.h. */
13866 bool sniff_from_mangled_name (const char *mangled,
13867 char **out) const override
13868 {
13869 std::string demangled = ada_decode (mangled);
13870
13871 *out = NULL;
13872
13873 if (demangled != mangled && demangled[0] != '<')
13874 {
13875 /* Set the gsymbol language to Ada, but still return 0.
13876 Two reasons for that:
13877
13878 1. For Ada, we prefer computing the symbol's decoded name
13879 on the fly rather than pre-compute it, in order to save
13880 memory (Ada projects are typically very large).
13881
13882 2. There are some areas in the definition of the GNAT
13883 encoding where, with a bit of bad luck, we might be able
13884 to decode a non-Ada symbol, generating an incorrect
13885 demangled name (Eg: names ending with "TB" for instance
13886 are identified as task bodies and so stripped from
13887 the decoded name returned).
13888
13889 Returning true, here, but not setting *DEMANGLED, helps us get
13890 a little bit of the best of both worlds. Because we're last,
13891 we should not affect any of the other languages that were
13892 able to demangle the symbol before us; we get to correctly
13893 tag Ada symbols as such; and even if we incorrectly tagged a
13894 non-Ada symbol, which should be rare, any routing through the
13895 Ada language should be transparent (Ada tries to behave much
13896 like C/C++ with non-Ada symbols). */
13897 return true;
13898 }
13899
13900 return false;
13901 }
13902
13903 /* See language.h. */
13904
13905 char *demangle_symbol (const char *mangled, int options) const override
13906 {
13907 return ada_la_decode (mangled, options);
13908 }
13909
13910 /* See language.h. */
13911
13912 void print_type (struct type *type, const char *varstring,
13913 struct ui_file *stream, int show, int level,
13914 const struct type_print_options *flags) const override
13915 {
13916 ada_print_type (type, varstring, stream, show, level, flags);
13917 }
13918
13919 /* See language.h. */
13920
13921 const char *word_break_characters (void) const override
13922 {
13923 return ada_completer_word_break_characters;
13924 }
13925
13926 /* See language.h. */
13927
13928 void collect_symbol_completion_matches (completion_tracker &tracker,
13929 complete_symbol_mode mode,
13930 symbol_name_match_type name_match_type,
13931 const char *text, const char *word,
13932 enum type_code code) const override
13933 {
13934 struct symbol *sym;
13935 const struct block *b, *surrounding_static_block = 0;
13936 struct block_iterator iter;
13937
13938 gdb_assert (code == TYPE_CODE_UNDEF);
13939
13940 lookup_name_info lookup_name (text, name_match_type, true);
13941
13942 /* First, look at the partial symtab symbols. */
13943 expand_symtabs_matching (NULL,
13944 lookup_name,
13945 NULL,
13946 NULL,
13947 ALL_DOMAIN);
13948
13949 /* At this point scan through the misc symbol vectors and add each
13950 symbol you find to the list. Eventually we want to ignore
13951 anything that isn't a text symbol (everything else will be
13952 handled by the psymtab code above). */
13953
13954 for (objfile *objfile : current_program_space->objfiles ())
13955 {
13956 for (minimal_symbol *msymbol : objfile->msymbols ())
13957 {
13958 QUIT;
13959
13960 if (completion_skip_symbol (mode, msymbol))
13961 continue;
13962
13963 language symbol_language = msymbol->language ();
13964
13965 /* Ada minimal symbols won't have their language set to Ada. If
13966 we let completion_list_add_name compare using the
13967 default/C-like matcher, then when completing e.g., symbols in a
13968 package named "pck", we'd match internal Ada symbols like
13969 "pckS", which are invalid in an Ada expression, unless you wrap
13970 them in '<' '>' to request a verbatim match.
13971
13972 Unfortunately, some Ada encoded names successfully demangle as
13973 C++ symbols (using an old mangling scheme), such as "name__2Xn"
13974 -> "Xn::name(void)" and thus some Ada minimal symbols end up
13975 with the wrong language set. Paper over that issue here. */
13976 if (symbol_language == language_auto
13977 || symbol_language == language_cplus)
13978 symbol_language = language_ada;
13979
13980 completion_list_add_name (tracker,
13981 symbol_language,
13982 msymbol->linkage_name (),
13983 lookup_name, text, word);
13984 }
13985 }
13986
13987 /* Search upwards from currently selected frame (so that we can
13988 complete on local vars. */
13989
13990 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
13991 {
13992 if (!BLOCK_SUPERBLOCK (b))
13993 surrounding_static_block = b; /* For elmin of dups */
13994
13995 ALL_BLOCK_SYMBOLS (b, iter, sym)
13996 {
13997 if (completion_skip_symbol (mode, sym))
13998 continue;
13999
14000 completion_list_add_name (tracker,
14001 sym->language (),
14002 sym->linkage_name (),
14003 lookup_name, text, word);
14004 }
14005 }
14006
14007 /* Go through the symtabs and check the externs and statics for
14008 symbols which match. */
14009
14010 for (objfile *objfile : current_program_space->objfiles ())
14011 {
14012 for (compunit_symtab *s : objfile->compunits ())
14013 {
14014 QUIT;
14015 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
14016 ALL_BLOCK_SYMBOLS (b, iter, sym)
14017 {
14018 if (completion_skip_symbol (mode, sym))
14019 continue;
14020
14021 completion_list_add_name (tracker,
14022 sym->language (),
14023 sym->linkage_name (),
14024 lookup_name, text, word);
14025 }
14026 }
14027 }
14028
14029 for (objfile *objfile : current_program_space->objfiles ())
14030 {
14031 for (compunit_symtab *s : objfile->compunits ())
14032 {
14033 QUIT;
14034 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
14035 /* Don't do this block twice. */
14036 if (b == surrounding_static_block)
14037 continue;
14038 ALL_BLOCK_SYMBOLS (b, iter, sym)
14039 {
14040 if (completion_skip_symbol (mode, sym))
14041 continue;
14042
14043 completion_list_add_name (tracker,
14044 sym->language (),
14045 sym->linkage_name (),
14046 lookup_name, text, word);
14047 }
14048 }
14049 }
14050 }
14051
14052 /* See language.h. */
14053
14054 gdb::unique_xmalloc_ptr<char> watch_location_expression
14055 (struct type *type, CORE_ADDR addr) const override
14056 {
14057 type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
14058 std::string name = type_to_string (type);
14059 return gdb::unique_xmalloc_ptr<char>
14060 (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
14061 }
14062
14063 /* See language.h. */
14064
14065 void value_print (struct value *val, struct ui_file *stream,
14066 const struct value_print_options *options) const override
14067 {
14068 return ada_value_print (val, stream, options);
14069 }
14070
14071 /* See language.h. */
14072
14073 void value_print_inner
14074 (struct value *val, struct ui_file *stream, int recurse,
14075 const struct value_print_options *options) const override
14076 {
14077 return ada_value_print_inner (val, stream, recurse, options);
14078 }
14079
14080 /* See language.h. */
14081
14082 struct block_symbol lookup_symbol_nonlocal
14083 (const char *name, const struct block *block,
14084 const domain_enum domain) const override
14085 {
14086 struct block_symbol sym;
14087
14088 sym = ada_lookup_symbol (name, block_static_block (block), domain);
14089 if (sym.symbol != NULL)
14090 return sym;
14091
14092 /* If we haven't found a match at this point, try the primitive
14093 types. In other languages, this search is performed before
14094 searching for global symbols in order to short-circuit that
14095 global-symbol search if it happens that the name corresponds
14096 to a primitive type. But we cannot do the same in Ada, because
14097 it is perfectly legitimate for a program to declare a type which
14098 has the same name as a standard type. If looking up a type in
14099 that situation, we have traditionally ignored the primitive type
14100 in favor of user-defined types. This is why, unlike most other
14101 languages, we search the primitive types this late and only after
14102 having searched the global symbols without success. */
14103
14104 if (domain == VAR_DOMAIN)
14105 {
14106 struct gdbarch *gdbarch;
14107
14108 if (block == NULL)
14109 gdbarch = target_gdbarch ();
14110 else
14111 gdbarch = block_gdbarch (block);
14112 sym.symbol
14113 = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
14114 if (sym.symbol != NULL)
14115 return sym;
14116 }
14117
14118 return {};
14119 }
14120
14121 /* See language.h. */
14122
14123 int parser (struct parser_state *ps) const override
14124 {
14125 warnings_issued = 0;
14126 return ada_parse (ps);
14127 }
14128
14129 /* See language.h.
14130
14131 Same as evaluate_type (*EXP), but resolves ambiguous symbol references
14132 (marked by OP_VAR_VALUE nodes in which the symbol has an undefined
14133 namespace) and converts operators that are user-defined into
14134 appropriate function calls. If CONTEXT_TYPE is non-null, it provides
14135 a preferred result type [at the moment, only type void has any
14136 effect---causing procedures to be preferred over functions in calls].
14137 A null CONTEXT_TYPE indicates that a non-void return type is
14138 preferred. May change (expand) *EXP. */
14139
14140 void post_parser (expression_up *expp, int void_context_p, int completing,
14141 innermost_block_tracker *tracker) const override
14142 {
14143 struct type *context_type = NULL;
14144 int pc = 0;
14145
14146 if (void_context_p)
14147 context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
14148
14149 resolve_subexp (expp, &pc, 1, context_type, completing, tracker);
14150 }
14151
14152 /* See language.h. */
14153
14154 void emitchar (int ch, struct type *chtype,
14155 struct ui_file *stream, int quoter) const override
14156 {
14157 ada_emit_char (ch, chtype, stream, quoter, 1);
14158 }
14159
14160 /* See language.h. */
14161
14162 void printchar (int ch, struct type *chtype,
14163 struct ui_file *stream) const override
14164 {
14165 ada_printchar (ch, chtype, stream);
14166 }
14167
14168 /* See language.h. */
14169
14170 void printstr (struct ui_file *stream, struct type *elttype,
14171 const gdb_byte *string, unsigned int length,
14172 const char *encoding, int force_ellipses,
14173 const struct value_print_options *options) const override
14174 {
14175 ada_printstr (stream, elttype, string, length, encoding,
14176 force_ellipses, options);
14177 }
14178
14179 /* See language.h. */
14180
14181 void print_typedef (struct type *type, struct symbol *new_symbol,
14182 struct ui_file *stream) const override
14183 {
14184 ada_print_typedef (type, new_symbol, stream);
14185 }
14186
14187 /* See language.h. */
14188
14189 bool is_string_type_p (struct type *type) const override
14190 {
14191 return ada_is_string_type (type);
14192 }
14193
14194 /* See language.h. */
14195
14196 const char *struct_too_deep_ellipsis () const override
14197 { return "(...)"; }
14198
14199 /* See language.h. */
14200
14201 bool c_style_arrays_p () const override
14202 { return false; }
14203
14204 /* See language.h. */
14205
14206 bool store_sym_names_in_linkage_form_p () const override
14207 { return true; }
14208
14209 /* See language.h. */
14210
14211 const struct lang_varobj_ops *varobj_ops () const override
14212 { return &ada_varobj_ops; }
14213
14214 /* See language.h. */
14215
14216 const struct exp_descriptor *expression_ops () const override
14217 { return &ada_exp_descriptor; }
14218
14219 /* See language.h. */
14220
14221 const struct op_print *opcode_print_table () const override
14222 { return ada_op_print_tab; }
14223
14224 protected:
14225 /* See language.h. */
14226
14227 symbol_name_matcher_ftype *get_symbol_name_matcher_inner
14228 (const lookup_name_info &lookup_name) const override
14229 {
14230 return ada_get_symbol_name_matcher (lookup_name);
14231 }
14232 };
14233
14234 /* Single instance of the Ada language class. */
14235
14236 static ada_language ada_language_defn;
14237
14238 /* Command-list for the "set/show ada" prefix command. */
14239 static struct cmd_list_element *set_ada_list;
14240 static struct cmd_list_element *show_ada_list;
14241
14242 static void
14243 initialize_ada_catchpoint_ops (void)
14244 {
14245 struct breakpoint_ops *ops;
14246
14247 initialize_breakpoint_ops ();
14248
14249 ops = &catch_exception_breakpoint_ops;
14250 *ops = bkpt_breakpoint_ops;
14251 ops->allocate_location = allocate_location_exception;
14252 ops->re_set = re_set_exception;
14253 ops->check_status = check_status_exception;
14254 ops->print_it = print_it_exception;
14255 ops->print_one = print_one_exception;
14256 ops->print_mention = print_mention_exception;
14257 ops->print_recreate = print_recreate_exception;
14258
14259 ops = &catch_exception_unhandled_breakpoint_ops;
14260 *ops = bkpt_breakpoint_ops;
14261 ops->allocate_location = allocate_location_exception;
14262 ops->re_set = re_set_exception;
14263 ops->check_status = check_status_exception;
14264 ops->print_it = print_it_exception;
14265 ops->print_one = print_one_exception;
14266 ops->print_mention = print_mention_exception;
14267 ops->print_recreate = print_recreate_exception;
14268
14269 ops = &catch_assert_breakpoint_ops;
14270 *ops = bkpt_breakpoint_ops;
14271 ops->allocate_location = allocate_location_exception;
14272 ops->re_set = re_set_exception;
14273 ops->check_status = check_status_exception;
14274 ops->print_it = print_it_exception;
14275 ops->print_one = print_one_exception;
14276 ops->print_mention = print_mention_exception;
14277 ops->print_recreate = print_recreate_exception;
14278
14279 ops = &catch_handlers_breakpoint_ops;
14280 *ops = bkpt_breakpoint_ops;
14281 ops->allocate_location = allocate_location_exception;
14282 ops->re_set = re_set_exception;
14283 ops->check_status = check_status_exception;
14284 ops->print_it = print_it_exception;
14285 ops->print_one = print_one_exception;
14286 ops->print_mention = print_mention_exception;
14287 ops->print_recreate = print_recreate_exception;
14288 }
14289
14290 /* This module's 'new_objfile' observer. */
14291
14292 static void
14293 ada_new_objfile_observer (struct objfile *objfile)
14294 {
14295 ada_clear_symbol_cache ();
14296 }
14297
14298 /* This module's 'free_objfile' observer. */
14299
14300 static void
14301 ada_free_objfile_observer (struct objfile *objfile)
14302 {
14303 ada_clear_symbol_cache ();
14304 }
14305
14306 void _initialize_ada_language ();
14307 void
14308 _initialize_ada_language ()
14309 {
14310 initialize_ada_catchpoint_ops ();
14311
14312 add_basic_prefix_cmd ("ada", no_class,
14313 _("Prefix command for changing Ada-specific settings."),
14314 &set_ada_list, "set ada ", 0, &setlist);
14315
14316 add_show_prefix_cmd ("ada", no_class,
14317 _("Generic command for showing Ada-specific settings."),
14318 &show_ada_list, "show ada ", 0, &showlist);
14319
14320 add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14321 &trust_pad_over_xvs, _("\
14322 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14323 Show whether an optimization trusting PAD types over XVS types is activated."),
14324 _("\
14325 This is related to the encoding used by the GNAT compiler. The debugger\n\
14326 should normally trust the contents of PAD types, but certain older versions\n\
14327 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14328 to be incorrect. Turning this setting \"off\" allows the debugger to\n\
14329 work around this bug. It is always safe to turn this option \"off\", but\n\
14330 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14331 this option to \"off\" unless necessary."),
14332 NULL, NULL, &set_ada_list, &show_ada_list);
14333
14334 add_setshow_boolean_cmd ("print-signatures", class_vars,
14335 &print_signatures, _("\
14336 Enable or disable the output of formal and return types for functions in the \
14337 overloads selection menu."), _("\
14338 Show whether the output of formal and return types for functions in the \
14339 overloads selection menu is activated."),
14340 NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14341
14342 add_catch_command ("exception", _("\
14343 Catch Ada exceptions, when raised.\n\
14344 Usage: catch exception [ARG] [if CONDITION]\n\
14345 Without any argument, stop when any Ada exception is raised.\n\
14346 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14347 being raised does not have a handler (and will therefore lead to the task's\n\
14348 termination).\n\
14349 Otherwise, the catchpoint only stops when the name of the exception being\n\
14350 raised is the same as ARG.\n\
14351 CONDITION is a boolean expression that is evaluated to see whether the\n\
14352 exception should cause a stop."),
14353 catch_ada_exception_command,
14354 catch_ada_completer,
14355 CATCH_PERMANENT,
14356 CATCH_TEMPORARY);
14357
14358 add_catch_command ("handlers", _("\
14359 Catch Ada exceptions, when handled.\n\
14360 Usage: catch handlers [ARG] [if CONDITION]\n\
14361 Without any argument, stop when any Ada exception is handled.\n\
14362 With an argument, catch only exceptions with the given name.\n\
14363 CONDITION is a boolean expression that is evaluated to see whether the\n\
14364 exception should cause a stop."),
14365 catch_ada_handlers_command,
14366 catch_ada_completer,
14367 CATCH_PERMANENT,
14368 CATCH_TEMPORARY);
14369 add_catch_command ("assert", _("\
14370 Catch failed Ada assertions, when raised.\n\
14371 Usage: catch assert [if CONDITION]\n\
14372 CONDITION is a boolean expression that is evaluated to see whether the\n\
14373 exception should cause a stop."),
14374 catch_assert_command,
14375 NULL,
14376 CATCH_PERMANENT,
14377 CATCH_TEMPORARY);
14378
14379 varsize_limit = 65536;
14380 add_setshow_uinteger_cmd ("varsize-limit", class_support,
14381 &varsize_limit, _("\
14382 Set the maximum number of bytes allowed in a variable-size object."), _("\
14383 Show the maximum number of bytes allowed in a variable-size object."), _("\
14384 Attempts to access an object whose size is not a compile-time constant\n\
14385 and exceeds this limit will cause an error."),
14386 NULL, NULL, &setlist, &showlist);
14387
14388 add_info ("exceptions", info_exceptions_command,
14389 _("\
14390 List all Ada exception names.\n\
14391 Usage: info exceptions [REGEXP]\n\
14392 If a regular expression is passed as an argument, only those matching\n\
14393 the regular expression are listed."));
14394
14395 add_basic_prefix_cmd ("ada", class_maintenance,
14396 _("Set Ada maintenance-related variables."),
14397 &maint_set_ada_cmdlist, "maintenance set ada ",
14398 0/*allow-unknown*/, &maintenance_set_cmdlist);
14399
14400 add_show_prefix_cmd ("ada", class_maintenance,
14401 _("Show Ada maintenance-related variables."),
14402 &maint_show_ada_cmdlist, "maintenance show ada ",
14403 0/*allow-unknown*/, &maintenance_show_cmdlist);
14404
14405 add_setshow_boolean_cmd
14406 ("ignore-descriptive-types", class_maintenance,
14407 &ada_ignore_descriptive_types_p,
14408 _("Set whether descriptive types generated by GNAT should be ignored."),
14409 _("Show whether descriptive types generated by GNAT should be ignored."),
14410 _("\
14411 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14412 DWARF attribute."),
14413 NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14414
14415 decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14416 NULL, xcalloc, xfree);
14417
14418 /* The ada-lang observers. */
14419 gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14420 gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14421 gdb::observers::inferior_exit.attach (ada_inferior_exit);
14422 }
This page took 0.357969 seconds and 5 git commands to generate.